From bacafc67c9ce7aa4ead94cf5f74d6132a561ec8d Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 21 Aug 2021 20:45:24 +0900 Subject: [PATCH] =?UTF-8?q?build:=20util.ts=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/js/battle_simulator.js | 2 +- hwe/js/battle_simulator.js.map | 2 +- hwe/js/betting.js | 2 +- hwe/js/betting.js.map | 2 +- hwe/js/chiefCenter.js | 2 +- hwe/js/chiefCenter.js.map | 2 +- hwe/js/common.js | 2 +- hwe/js/common.js.map | 2 +- hwe/js/defaultSelectCityByMap.js | 2 +- hwe/js/defaultSelectCityByMap.js.map | 2 +- hwe/js/defaultSelectNationByMap.js | 2 +- hwe/js/defaultSelectNationByMap.js.map | 2 +- hwe/js/inheritPoint.js | 2 +- hwe/js/inheritPoint.js.map | 2 +- hwe/js/map.js | 2 +- hwe/js/map.js.map | 2 +- hwe/js/processing.js | 2 +- hwe/js/processing.js.map | 2 +- hwe/js/recent_map.js | 2 +- hwe/js/recent_map.js.map | 2 +- hwe/js/recruitCrewForm.js | 2 +- hwe/js/recruitCrewForm.js.map | 2 +- hwe/js/select_npc.js | 2 +- hwe/js/select_npc.js.map | 2 +- hwe/js/troop.js | 2 +- hwe/js/troop.js.map | 2 +- js/common.js | 2 +- js/common.js.map | 2 +- js/entrance.js | 2 +- js/entrance.js.map | 2 +- js/user_info.js | 2 +- js/user_info.js.map | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/hwe/js/battle_simulator.js b/hwe/js/battle_simulator.js index 7c1d2006..53ce90a9 100644 --- a/hwe/js/battle_simulator.js +++ b/hwe/js/battle_simulator.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={2890:(e,t,r)=>{r(2526),r(1817),r(1539),r(2165),r(6992),r(8783),r(3948),r(7042),r(1038);var n=r(3754),a=r.n(n),o=(r(9826),r(1058),r(1249),r(9720),r(2222),r(4678),r(2707),r(7941),r(9755)),l=r.n(o),i=(r(3734),r(9490)),c=r(3729),f=r.n(c);function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"";return d(this,a),k(v(e=n.call(this,t)),"name","RuntimeError"),e.message=t,e}return t=a,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&s(t.prototype,r),a}(y(Error)));function j(e){if(null==e)throw new x;return e}r(4916),r(5306),r(2479),r(189),r(4723),r(3123),r(3210);var S=r(9669);function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return l=e.done,e},e:function(e){i=!0,o=e},f:function(){try{l||null==r.return||r.return()}finally{if(i)throw o}}}}(e.keys());try{for(a.s();!(r=a.n()).done;){var o=r.value,l=e[o];n[o]=I(l,t)}}catch(e){a.e(e)}finally{a.f()}return n}function M(){alert("작업을 실패했습니다.")}function D(e){if(null==e)throw new x;return e}function A(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=N(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return l=e.done,e},e:function(e){i=!0,o=e},f:function(){try{l||null==r.return||r.return()}finally{if(i)throw o}}}}function R(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o=[],l=!0,i=!1;try{for(r=r.call(e);!(l=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,a=e}finally{try{l||null==r.return||r.return()}finally{if(i)throw a}}return o}}(e,t)||N(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(e,t){if(e){if("string"==typeof e)return C(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?C(e,t):void 0}}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1048576)return alert("파일이 너무 큽니다!"),!1;if(""===t.type)return alert("폴더를 업로드할 수 없습니다!"),!1;var r=new FileReader;r.onload=function(){var e;try{e=JSON.parse(D(r.result))}catch(e){return alert("올바르지 않은 파일 형식입니다"),!1}return"objType"in e?"battle"!=e.objType?(alert("전투 데이터가 아닙니다"),!1):(b(e.data),!0):(alert("파일 형식을 확인할 수 없습니다"),!1)};try{r.readAsText(t)}catch(e){return alert("파일을 읽는데 실패했습니다."),!1}return!0},s=function(e,t){if(void 0===t&&(t=g()),null===e)return alert("파일 에러!"),!1;if(e.length<1)return alert("파일 에러!"),!1;var r=e[0];if(r.size>1048576)return alert("파일이 너무 큽니다!"),!1;if(""===r.type)return alert("폴더를 업로드할 수 없습니다!"),!1;var n=new FileReader;n.onload=function(){var e;try{e=JSON.parse(D(n.result))}catch(e){return alert("올바르지 않은 파일 형식입니다"),!1}return"objType"in e?"battle"==e.objType?(b(e.data),!0):"general"!=e.objType?(alert("장수 데이터가 아닙니다"),!1):(t.find(".form_load_general_file").val(""),c(t,e.data),!0):(alert("파일 형식을 확인할 수 없습니다"),!1)};try{n.readAsText(r)}catch(e){return alert("파일을 읽는데 실패했습니다."),!1}return!0},p=function(t){var r={nation:t.no<=1?1:2,city:t.no<=1?1:3,turntime:"2018-08-26 12:00",special:window.defaultSpecialDomestic,leadership_exp:0,strength_exp:0,intel_exp:0,gold:1e4,dedication:0,recent_war:"2018-08-26 12:00",experience:Math.pow(t.explevel,2)};return e.extend({},t,r)},m=function(e){return e.closest(".general_form")},_=function(e){return m(e).find(".general_detail")},v=function(e){return parseInt(m(e).data("general_no"))},y=function(e,t){if(1==t)return!1;if(t in o)return!1;var r=m(e);return r.data("general_no",t),o[t]=r,!0},h=function(){for(;;){var e=Math.floor(Math.random()*(1<<24))+2;if(!(e in o))return e}},g=function(a){var o=e('
');return void 0===a?n.append(o):a.after(o),o.append(r.clone(!0,!0)),o.append(t.clone(!0,!0)),y(o,h()),o},b=function(t){e(".form_load_battle_file").val(""),console.log(t);var r=e(".attacker_nation"),n=e(".defender_nation"),a=t.attackerGeneral,o=t.attackerCity,l=t.attackerNation,i=t.defenderGenerals,f=t.defenderCity,u=t.defenderNation;e("#year").val(t.year),e("#month").val(t.month),e("#repeat_cnt").val(t.repeatCnt),e(".delete-defender").trigger("click"),r.find(".form_nation_type").val(l.type),r.find(".form_tech").val(Math.floor(l.tech/1e3)),r.find(".form_nation_level").val(l.level),1==l.capital?r.find(".form_is_capital:first").trigger("click"):r.find(".form_is_capital:last").trigger("click"),r.find(".form_city_level").val(o.level),c(e(".attacker_form"),a),n.find(".form_nation_type").val(u.type),n.find(".form_tech").val(Math.floor(u.tech/1e3)),n.find(".form_nation_level").val(u.level),1==u.capital?n.find(".form_is_capital:first").trigger("click"):n.find(".form_is_capital:last").trigger("click"),n.find(".form_city_level").val(f.level),e("#city_def").val(f.def),e("#city_wall").val(f.wall),e.each(i,(function(e,t){var r=g();c(r,t)}))},w=function(){var t=e(".attacker_nation"),r=e(".defender_nation");return{attackerGeneral:u(e(".attacker_form")),attackerCity:{level:parseInt(t.find(".form_city_level").val())},attackerNation:{type:D(t.find(".form_nation_type").val()),tech:1e3*parseInt(t.find(".form_tech").val()),level:parseInt(t.find(".form_nation_level").val()),capital:"1"==t.find(".form_is_capital:checked").val()?1:2},defenderGenerals:e(".defender_form").map((function(){return u(e(this))})).toArray(),defenderCity:{def:parseInt(e("#city_def").val()),wall:parseInt(e("#city_wall").val()),level:parseInt(r.find(".form_city_level").val())},defenderNation:{type:D(r.find(".form_nation_type").val()),tech:1e3*parseInt(D(r.find(".form_tech").val())),level:parseInt(D(r.find(".form_nation_level").val())),capital:"1"==r.find(".form_is_capital:checked").val()?3:4},year:parseInt(D(e("#year").val())),month:parseInt(D(e("#month").val())),repeatCnt:parseInt(D(e("#repeat_cnt").val()))}},k=function(t){var r={nation:0,name:"재야",capital:0,level:0,gold:0,rice:2e3,type:"None",tech:0,gennum:200},n={nation:0,supply:1,name:"도시",pop:5e5,agri:1e4,comm:1e4,secu:1e4,def:1e3,wall:1e3,trust:100,pop_max:6e5,agri_max:12e3,comm_max:12e3,secu_max:1e4,def_max:12e3,wall_max:12e3,dead:0,state:0,conflict:"{}"},a=e.extend({},r,t.attackerNation);a.nation=1,a.name="출병국";var o=e.extend({},n,t.attackerCity);o.nation=1,o.city=1;var l=p(t.attackerGeneral);2<=l.officer_level&&l.officer_level<=4?l.officer_city=1:l.officer_city=0;var i=e.extend({},r,t.defenderNation);i.nation=2,i.name="수비국";var c=e.extend({},n,t.defenderCity);c.nation=2,c.city=3,c.wall_max=Math.floor(c.wall/5*6),c.def_max=Math.floor(c.def/5*6);var f=[];return e.each(t.defenderGenerals,(function(){var e=p(this);2<=e.officer_level&&e.officer_level<=4?e.officer_city=3:e.officer_city=0,f.push(e)})),e.extend({},t,{attackerGeneral:l,attackerCity:o,attackerNation:a,defenderGenerals:f,defenderCity:c,defenderNation:i})},x=function(e){for(var t=[],r=0,n=Object.entries(e);rt.name?1:0}));var o=e(''));o.css("background-color",a),o.css("color",function(e){var t,r=j((t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e))?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null);return.299*r.r+.587*r.g+.114*r.b>140}(a)?"black":"white");var l,i,c=A(t);try{for(c.s();!(l=c.n()).done;){var f=l.value,u=e('"));f.npc?u.css("color",j((i=f.npc)>=2?"cyan":1==i?"skyblue":null)):u.css("color","white"),u.css("background-color","black"),o.append(u)}}catch(e){c.e(e)}finally{c.f()}r.append(o)};e.post({url:"j_get_basic_general_list.php",dataType:"json",data:{req:2}}).then((function(t){if(!t.result)return alert(t.reason),e("#importModal").modal("hide"),!1;var a=t.nation,o=t.nationID;r.empty(),0 in t.list&&(a[0]={nation:0,name:"재야",color:"#000000"}),n(T(t.list[o],t.column),a[o].name,a[o].color);for(var l=0,i=Object.keys(t.list);l60?(a="위독",o="red"):n>40?(a="심각",o="magenta"):n>20?(a="중상",o="orange"):n>0&&(a="경상",o="yellow"),r.html(a).css("color",o)})),e(".export_general").on("click",(function(){var t=e(this),r=_(t),n=u(r);console.log(n)})),e(".delete-defender").on("click",(function(){!function(e){!function(e){var t=m(e);t.removeData("general_no");var r=v(t);delete o[r]}(e),e.detach()}(m(e(this)))})),e(".copy-defender").on("click",(function(){!function(e){var t=_(e),r=u(t),n=g(e);c(_(n),r)}(m(e(this)))})),e(".add-defender").on("click",(function(){g()})),e(".btn-general-load").on("click",(function(){e(this).prev()[0].click()})),e(".form_load_general_file").on("change",(function(t){t.preventDefault();var r=e(this),n=m(r),a=j(t.target.files);return s(a,n),!1})),e(".btn-general-import-server").on("click",(function(){var t=e(this),r=m(t),n=e("#importModal");n.data("target",r),n.modal("show")})),e(".btn-general-save").on("click",(function(){var t=e(this),r=_(t),n=u(r),a="general_".concat(n.name,".json"),o=JSON.stringify({objType:"general",data:n},null,4);f()(o,a,"application/json")})),e(".btn-battle-load").on("click",(function(){e(this).prev()[0].click()})),e(".form_load_battle_file").on("change",(function(e){e.preventDefault();var t=j(e.target.files);return d(t),!1})),e(".btn-battle-save").on("click",(function(){var e=w(),t=i.ou.now().toFormat("yyyyMMdd_HHmmss"),r="battle_".concat(t,".json"),n=JSON.stringify({objType:"battle",data:e},null,4);f()(n,r,"application/json")}));var t=e(".general_detail");t.on("dragover dragleave",(function(e){e.stopPropagation(),e.preventDefault()})),t.on("drop",(function(t){t.preventDefault();var r=e(this),n=m(r),a=j(j(t.originalEvent).dataTransfer).files;return s(a,n),!1}));var r=e(".dragpad_battle");r.on("dragover dragleave",(function(e){e.stopPropagation(),e.preventDefault()})),r.on("drop",(function(e){e.preventDefault();var t=j(j(e.originalEvent).dataTransfer).files;return d(t),!1}))}(),l.append(t.clone(!0,!0)),g(),e(".btn-begin_battle").on("click",(function(){var t;t=k(w()),console.log(t),e.ajax({type:"post",url:"j_simulate_battle.php",dataType:"json",data:{action:"battle",query:JSON.stringify(t)}}).then((function(t){console.log(t),t.result?function(t){e("#result_datetime").html(t.datetime),e("#result_warcnt").html(S(t.avgWar)),e("#result_phase").html(S(t.phase)),e("#result_killed").html(S(t.killed)),t.minKilled!=t.maxKilled?(e("#result_maxKilled").html(S(t.maxKilled)),e("#result_minKilled").html(S(t.minKilled)),e("#result_varKilled").show()):e("#result_varKilled").hide(),e("#result_dead").html(S(t.dead)),t.minDead!=t.maxDead?(e("#result_maxDead").html(S(t.maxDead)),e("#result_minDead").html(S(t.minDead)),e("#result_varDead").show()):e("#result_varDead").hide(),e("#result_attackerRice").html(S(t.attackerRice)),e("#result_defenderRice").html(S(t.defenderRice)),e("#result_attackerSkills").html(x(t.attackerSkills)),e(".result_defenderSkills").detach();for(var r=e("#battle_result_summary"),n=0,a=Object.entries(t.defendersSkills);n수비자".concat(parseInt(l)+1," 스킬"));c.find("td").html(x(i)),r.append(c)}e("#generalBattleResultLog").html(t.lastWarLog.generalBattleResultLog),e("#generalBattleDetailLog").html(t.lastWarLog.generalBattleDetailLog)}(t):alert(t.reason)}),(function(e){alert("전투 개시 실패!")}))})),e(".btn-reorder_defender").on("click",(function(){var t;t=k(w()),console.log(t),e.ajax({type:"post",url:"j_simulate_battle.php",dataType:"json",data:{action:"reorder",query:JSON.stringify(t)}}).then((function(e){console.log(e),e.result?function(e){var t,r=A(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;if(!(a in o))return alert("".concat(a,"이 수비자 리스트에 없습니다. 버그인 듯 합니다.")),!0;var l=o[a];l.detach(),n.append(l)}}catch(e){r.e(e)}finally{r.f()}}(e.order):alert(e.reason)}),(function(e){alert("재정렬 실패!")}))}))}))}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}n.m=t,e=[],n.O=(t,r,a,o)=>{if(!r){var l=1/0;for(u=0;u=o)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(i=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.j=871,(()=>{var e={871:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,[l,i,c]=r,f=0;for(a in i)n.o(i,a)&&(n.m[a]=i[a]);if(c)var u=c(n);for(t&&t(r);fn(2890)));a=n.O(a)})(); +(()=>{"use strict";var e,t={2890:(e,t,r)=>{r(2526),r(1817),r(1539),r(2165),r(6992),r(8783),r(3948),r(7042),r(1038);var n=r(3754),a=r.n(n),o=(r(9826),r(1058),r(1249),r(9720),r(2222),r(4678),r(2707),r(7941),r(9755)),l=r.n(o),i=(r(3734),r(9490)),c=r(3729),f=r.n(c);function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){return!t||"object"!==u(t)&&"function"!=typeof t?p(e):t}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){var t="function"==typeof Map?new Map:void 0;return(m=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return _(e,arguments,h(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),y(n,e)})(e)}function _(e,t,r){return(_=v()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&y(a,r.prototype),a}).apply(null,arguments)}function v(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function y(e,t){return(y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function g(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}r(8304),r(489),r(2772),r(9714),r(2419),r(1532),Error;var b=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&y(e,t)}(a,e);var t,r,n=(t=a,r=v(),function(){var e,n=h(t);if(r){var a=h(this).constructor;e=Reflect.construct(n,arguments,a)}else e=n.apply(this,arguments);return s(this,e)});function a(){var e;d(this,a);for(var t=arguments.length,r=new Array(t),o=0;oe.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return l=e.done,e},e:function(e){i=!0,o=e},f:function(){try{l||null==r.return||r.return()}finally{if(i)throw o}}}}(e.keys());try{for(a.s();!(r=a.n()).done;){var o=r.value,l=e[o];n[o]=j(l,t)}}catch(e){a.e(e)}finally{a.f()}return n}function O(){alert("작업을 실패했습니다.")}function I(e){if(null==e)throw new b;return e}function T(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=D(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return l=e.done,e},e:function(e){i=!0,o=e},f:function(){try{l||null==r.return||r.return()}finally{if(i)throw o}}}}function M(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o=[],l=!0,i=!1;try{for(r=r.call(e);!(l=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,a=e}finally{try{l||null==r.return||r.return()}finally{if(i)throw a}}return o}}(e,t)||D(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function D(e,t){if(e){if("string"==typeof e)return A(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?A(e,t):void 0}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1048576)return alert("파일이 너무 큽니다!"),!1;if(""===t.type)return alert("폴더를 업로드할 수 없습니다!"),!1;var r=new FileReader;r.onload=function(){var e;try{e=JSON.parse(I(r.result))}catch(e){return alert("올바르지 않은 파일 형식입니다"),!1}return"objType"in e?"battle"!=e.objType?(alert("전투 데이터가 아닙니다"),!1):(b(e.data),!0):(alert("파일 형식을 확인할 수 없습니다"),!1)};try{r.readAsText(t)}catch(e){return alert("파일을 읽는데 실패했습니다."),!1}return!0},s=function(e,t){if(void 0===t&&(t=g()),null===e)return alert("파일 에러!"),!1;if(e.length<1)return alert("파일 에러!"),!1;var r=e[0];if(r.size>1048576)return alert("파일이 너무 큽니다!"),!1;if(""===r.type)return alert("폴더를 업로드할 수 없습니다!"),!1;var n=new FileReader;n.onload=function(){var e;try{e=JSON.parse(I(n.result))}catch(e){return alert("올바르지 않은 파일 형식입니다"),!1}return"objType"in e?"battle"==e.objType?(b(e.data),!0):"general"!=e.objType?(alert("장수 데이터가 아닙니다"),!1):(t.find(".form_load_general_file").val(""),c(t,e.data),!0):(alert("파일 형식을 확인할 수 없습니다"),!1)};try{n.readAsText(r)}catch(e){return alert("파일을 읽는데 실패했습니다."),!1}return!0},p=function(t){var r={nation:t.no<=1?1:2,city:t.no<=1?1:3,turntime:"2018-08-26 12:00",special:window.defaultSpecialDomestic,leadership_exp:0,strength_exp:0,intel_exp:0,gold:1e4,dedication:0,recent_war:"2018-08-26 12:00",experience:Math.pow(t.explevel,2)};return e.extend({},t,r)},m=function(e){return e.closest(".general_form")},_=function(e){return m(e).find(".general_detail")},v=function(e){return parseInt(m(e).data("general_no"))},y=function(e,t){if(1==t)return!1;if(t in o)return!1;var r=m(e);return r.data("general_no",t),o[t]=r,!0},h=function(){for(;;){var e=Math.floor(Math.random()*(1<<24))+2;if(!(e in o))return e}},g=function(a){var o=e('
');return void 0===a?n.append(o):a.after(o),o.append(r.clone(!0,!0)),o.append(t.clone(!0,!0)),y(o,h()),o},b=function(t){e(".form_load_battle_file").val(""),console.log(t);var r=e(".attacker_nation"),n=e(".defender_nation"),a=t.attackerGeneral,o=t.attackerCity,l=t.attackerNation,i=t.defenderGenerals,f=t.defenderCity,u=t.defenderNation;e("#year").val(t.year),e("#month").val(t.month),e("#repeat_cnt").val(t.repeatCnt),e(".delete-defender").trigger("click"),r.find(".form_nation_type").val(l.type),r.find(".form_tech").val(Math.floor(l.tech/1e3)),r.find(".form_nation_level").val(l.level),1==l.capital?r.find(".form_is_capital:first").trigger("click"):r.find(".form_is_capital:last").trigger("click"),r.find(".form_city_level").val(o.level),c(e(".attacker_form"),a),n.find(".form_nation_type").val(u.type),n.find(".form_tech").val(Math.floor(u.tech/1e3)),n.find(".form_nation_level").val(u.level),1==u.capital?n.find(".form_is_capital:first").trigger("click"):n.find(".form_is_capital:last").trigger("click"),n.find(".form_city_level").val(f.level),e("#city_def").val(f.def),e("#city_wall").val(f.wall),e.each(i,(function(e,t){var r=g();c(r,t)}))},k=function(){var t=e(".attacker_nation"),r=e(".defender_nation");return{attackerGeneral:u(e(".attacker_form")),attackerCity:{level:parseInt(t.find(".form_city_level").val())},attackerNation:{type:I(t.find(".form_nation_type").val()),tech:1e3*parseInt(t.find(".form_tech").val()),level:parseInt(t.find(".form_nation_level").val()),capital:"1"==t.find(".form_is_capital:checked").val()?1:2},defenderGenerals:e(".defender_form").map((function(){return u(e(this))})).toArray(),defenderCity:{def:parseInt(e("#city_def").val()),wall:parseInt(e("#city_wall").val()),level:parseInt(r.find(".form_city_level").val())},defenderNation:{type:I(r.find(".form_nation_type").val()),tech:1e3*parseInt(I(r.find(".form_tech").val())),level:parseInt(I(r.find(".form_nation_level").val())),capital:"1"==r.find(".form_is_capital:checked").val()?3:4},year:parseInt(I(e("#year").val())),month:parseInt(I(e("#month").val())),repeatCnt:parseInt(I(e("#repeat_cnt").val()))}},x=function(t){var r={nation:0,name:"재야",capital:0,level:0,gold:0,rice:2e3,type:"None",tech:0,gennum:200},n={nation:0,supply:1,name:"도시",pop:5e5,agri:1e4,comm:1e4,secu:1e4,def:1e3,wall:1e3,trust:100,pop_max:6e5,agri_max:12e3,comm_max:12e3,secu_max:1e4,def_max:12e3,wall_max:12e3,dead:0,state:0,conflict:"{}"},a=e.extend({},r,t.attackerNation);a.nation=1,a.name="출병국";var o=e.extend({},n,t.attackerCity);o.nation=1,o.city=1;var l=p(t.attackerGeneral);2<=l.officer_level&&l.officer_level<=4?l.officer_city=1:l.officer_city=0;var i=e.extend({},r,t.defenderNation);i.nation=2,i.name="수비국";var c=e.extend({},n,t.defenderCity);c.nation=2,c.city=3,c.wall_max=Math.floor(c.wall/5*6),c.def_max=Math.floor(c.def/5*6);var f=[];return e.each(t.defenderGenerals,(function(){var e=p(this);2<=e.officer_level&&e.officer_level<=4?e.officer_city=3:e.officer_city=0,f.push(e)})),e.extend({},t,{attackerGeneral:l,attackerCity:o,attackerNation:a,defenderGenerals:f,defenderCity:c,defenderNation:i})},j=function(e){for(var t=[],r=0,n=Object.entries(e);rt.name?1:0}));var o=e(''));o.css("background-color",a),o.css("color",function(e){var t,r=w((t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e))?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null);return.299*r.r+.587*r.g+.114*r.b>140}(a)?"black":"white");var l,i,c=T(t);try{for(c.s();!(l=c.n()).done;){var f=l.value,u=e('"));f.npc?u.css("color",w((i=f.npc)>=2?"cyan":1==i?"skyblue":null)):u.css("color","white"),u.css("background-color","black"),o.append(u)}}catch(e){c.e(e)}finally{c.f()}r.append(o)};e.post({url:"j_get_basic_general_list.php",dataType:"json",data:{req:2}}).then((function(t){if(!t.result)return alert(t.reason),e("#importModal").modal("hide"),!1;var a=t.nation,o=t.nationID;r.empty(),0 in t.list&&(a[0]={nation:0,name:"재야",color:"#000000"}),n(S(t.list[o],t.column),a[o].name,a[o].color);for(var l=0,i=Object.keys(t.list);l60?(a="위독",o="red"):n>40?(a="심각",o="magenta"):n>20?(a="중상",o="orange"):n>0&&(a="경상",o="yellow"),r.html(a).css("color",o)})),e(".export_general").on("click",(function(){var t=e(this),r=_(t),n=u(r);console.log(n)})),e(".delete-defender").on("click",(function(){!function(e){!function(e){var t=m(e);t.removeData("general_no");var r=v(t);delete o[r]}(e),e.detach()}(m(e(this)))})),e(".copy-defender").on("click",(function(){!function(e){var t=_(e),r=u(t),n=g(e);c(_(n),r)}(m(e(this)))})),e(".add-defender").on("click",(function(){g()})),e(".btn-general-load").on("click",(function(){e(this).prev()[0].click()})),e(".form_load_general_file").on("change",(function(t){t.preventDefault();var r=e(this),n=m(r),a=w(t.target.files);return s(a,n),!1})),e(".btn-general-import-server").on("click",(function(){var t=e(this),r=m(t),n=e("#importModal");n.data("target",r),n.modal("show")})),e(".btn-general-save").on("click",(function(){var t=e(this),r=_(t),n=u(r),a="general_".concat(n.name,".json"),o=JSON.stringify({objType:"general",data:n},null,4);f()(o,a,"application/json")})),e(".btn-battle-load").on("click",(function(){e(this).prev()[0].click()})),e(".form_load_battle_file").on("change",(function(e){e.preventDefault();var t=w(e.target.files);return d(t),!1})),e(".btn-battle-save").on("click",(function(){var e=k(),t=i.ou.now().toFormat("yyyyMMdd_HHmmss"),r="battle_".concat(t,".json"),n=JSON.stringify({objType:"battle",data:e},null,4);f()(n,r,"application/json")}));var t=e(".general_detail");t.on("dragover dragleave",(function(e){e.stopPropagation(),e.preventDefault()})),t.on("drop",(function(t){t.preventDefault();var r=e(this),n=m(r),a=w(w(t.originalEvent).dataTransfer).files;return s(a,n),!1}));var r=e(".dragpad_battle");r.on("dragover dragleave",(function(e){e.stopPropagation(),e.preventDefault()})),r.on("drop",(function(e){e.preventDefault();var t=w(w(e.originalEvent).dataTransfer).files;return d(t),!1}))}(),l.append(t.clone(!0,!0)),g(),e(".btn-begin_battle").on("click",(function(){var t;t=x(k()),console.log(t),e.ajax({type:"post",url:"j_simulate_battle.php",dataType:"json",data:{action:"battle",query:JSON.stringify(t)}}).then((function(t){console.log(t),t.result?function(t){e("#result_datetime").html(t.datetime),e("#result_warcnt").html(D(t.avgWar)),e("#result_phase").html(D(t.phase)),e("#result_killed").html(D(t.killed)),t.minKilled!=t.maxKilled?(e("#result_maxKilled").html(D(t.maxKilled)),e("#result_minKilled").html(D(t.minKilled)),e("#result_varKilled").show()):e("#result_varKilled").hide(),e("#result_dead").html(D(t.dead)),t.minDead!=t.maxDead?(e("#result_maxDead").html(D(t.maxDead)),e("#result_minDead").html(D(t.minDead)),e("#result_varDead").show()):e("#result_varDead").hide(),e("#result_attackerRice").html(D(t.attackerRice)),e("#result_defenderRice").html(D(t.defenderRice)),e("#result_attackerSkills").html(j(t.attackerSkills)),e(".result_defenderSkills").detach();for(var r=e("#battle_result_summary"),n=0,a=Object.entries(t.defendersSkills);n수비자".concat(parseInt(l)+1," 스킬"));c.find("td").html(j(i)),r.append(c)}e("#generalBattleResultLog").html(t.lastWarLog.generalBattleResultLog),e("#generalBattleDetailLog").html(t.lastWarLog.generalBattleDetailLog)}(t):alert(t.reason)}),(function(e){alert("전투 개시 실패!")}))})),e(".btn-reorder_defender").on("click",(function(){var t;t=x(k()),console.log(t),e.ajax({type:"post",url:"j_simulate_battle.php",dataType:"json",data:{action:"reorder",query:JSON.stringify(t)}}).then((function(e){console.log(e),e.result?function(e){var t,r=T(e);try{for(r.s();!(t=r.n()).done;){var a=t.value;if(!(a in o))return alert("".concat(a,"이 수비자 리스트에 없습니다. 버그인 듯 합니다.")),!0;var l=o[a];l.detach(),n.append(l)}}catch(e){r.e(e)}finally{r.f()}}(e.order):alert(e.reason)}),(function(e){alert("재정렬 실패!")}))}))}))}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}n.m=t,e=[],n.O=(t,r,a,o)=>{if(!r){var l=1/0;for(u=0;u=o)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(i=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.j=871,(()=>{var e={871:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,[l,i,c]=r,f=0;for(a in i)n.o(i,a)&&(n.m[a]=i[a]);if(c)var u=c(n);for(t&&t(r);fn(2890)));a=n.O(a)})(); //# sourceMappingURL=battle_simulator.js.map \ No newline at end of file diff --git a/hwe/js/battle_simulator.js.map b/hwe/js/battle_simulator.js.map index bc2c94ba..87c3e893 100644 --- a/hwe/js/battle_simulator.js.map +++ b/hwe/js/battle_simulator.js.map @@ -1 +1 @@ -{"version":3,"file":"battle_simulator.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/battle_simulator.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import $ from 'jquery';\r\nimport 'bootstrap';\r\nimport { DateTime } from 'luxon';\r\nimport download from 'downloadjs';\r\nimport { unwrap } from './util';\r\nimport { isInteger } from 'lodash';\r\nimport { combineArray, errUnknown, getNpcColor, isBrightColor, numberWithCommas } from './common_legacy';\r\nimport { unwrap_any } from './util/unwrap_any';\r\nimport { BasicGeneralListResponse, InvalidResponse } from './defs';\r\n\r\ntype CityAttackerInfo = {\r\n level: number,\r\n}\r\n\r\ntype CityBasicInfo = {\r\n nation?: number,\r\n level: number,\r\n def: number,\r\n wall: number,\r\n city?: number,\r\n}\r\n\r\ntype NationBasicInfo = {\r\n level: number,\r\n type: string,\r\n tech: number,\r\n capital: number,\r\n}\r\n\r\ntype GeneralInfo = {\r\n no: number,\r\n npc?: number\r\n name: string,\r\n officer_level: number,\r\n explevel: number,\r\n\r\n leadership: number,\r\n horse: string,\r\n strength: number,\r\n weapon: string,\r\n intel: number,\r\n book: string,\r\n item: string,\r\n\r\n injury: number,\r\n\r\n rice: number,\r\n\r\n personal: string,\r\n special2: string,\r\n\r\n crew: number,\r\n crewtype: number,\r\n atmos: number,\r\n train: number,\r\n\r\n dex1: number,\r\n dex2: number,\r\n dex3: number,\r\n dex4: number,\r\n dex5: number,\r\n\r\n defence_train: number,\r\n\r\n warnum: number,\r\n killnum: number,\r\n killcrew: number,\r\n\r\n officer_city?: number,\r\n};\r\n\r\ntype BattleInfo = {\r\n attackerGeneral: GeneralInfo,\r\n attackerCity: CityAttackerInfo|CityBasicInfo,\r\n attackerNation: NationBasicInfo,\r\n defenderGenerals: GeneralInfo[],\r\n defenderCity: CityBasicInfo,\r\n defenderNation: NationBasicInfo,\r\n year: number,\r\n month: number,\r\n repeatCnt: number,\r\n};\r\n\r\ntype ExportedGeneralInfo = {\r\n objType: 'general',\r\n data: GeneralInfo,\r\n}\r\n\r\ntype ExportedBattleInfo = {\r\n objType: 'battle',\r\n data: BattleInfo\r\n}\r\ntype ExportedInfo = ExportedGeneralInfo | ExportedBattleInfo;\r\n\r\ntype BattleResult = {\r\n result:true,\r\n datetime:string,\r\n lastWarLog:{\r\n generalBattleResultLog: string,\r\n generalBattleDetailLog: string,\r\n },\r\n avgWar:number,\r\n phase:number,\r\n killed:number,\r\n maxKilled:number,\r\n minKilled:number,\r\n dead:number,\r\n maxDead:number,\r\n minDead:number,\r\n attackerRice:number,\r\n defenderRice:number,\r\n attackerSkills:Record,\r\n defendersSkills:Record[],\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n nation?: NationBasicInfo,\r\n city?: CityBasicInfo,\r\n defaultSpecialDomestic: string,\r\n }\r\n}\r\n\r\n$(function ($) {\r\n\r\n\r\n const $generalForm = $('.form_sample .general_detail');\r\n const $defenderHeaderForm = $('.form_sample .card-header');\r\n const $defenderColumn = $('.defender-column');\r\n\r\n const defenderNoList: Record> = {};\r\n\r\n const $attackerCard = $('.attacker_form');\r\n\r\n const initBasicEvent = function () {\r\n\r\n if (window.nation && window.city) {\r\n $('.form_city_level').val(window.city.level);\r\n $('.form_def').val(window.city.def);\r\n $('.form_wall').val(window.city.wall);\r\n $('.form_nation_type').val(window.nation.type);\r\n $('.form_nation_level').val(window.nation.level);\r\n $('.form_tech').val(window.nation.tech / 1000);\r\n if (window.nation.capital == window.city.city) {\r\n $('.attacker_nation .form_is_capital:first').trigger('click');\r\n $('.defender_nation .form_is_capital:first').trigger('click');\r\n } else {\r\n $('.attacker_nation .form_is_capital:last').trigger('click');\r\n $('.defender_nation .form_is_capital:last').trigger('click');\r\n }\r\n } else {\r\n $('.attacker_nation .form_is_capital:last').trigger('click');\r\n $('.defender_nation .form_is_capital:last').trigger('click');\r\n }\r\n\r\n $('.form_injury').on('change', function () {\r\n const $this = $(this) as JQuery;\r\n const $general = getGeneralDetail($this);\r\n const $helptext = $general.find('.injury_helptext');\r\n\r\n const injury = parseInt($this.val() as string);\r\n //FIXME: PHP 코드와 항상 일치하도록 변경\r\n let text = '건강';\r\n let color = 'white';\r\n if (injury > 60) {\r\n text = '위독';\r\n color = 'red';\r\n } else if (injury > 40) {\r\n text = '심각';\r\n color = 'magenta';\r\n } else if (injury > 20) {\r\n text = '중상';\r\n color = 'orange';\r\n } else if (injury > 0) {\r\n text = '경상';\r\n color = 'yellow';\r\n }\r\n $helptext.html(text).css('color', color);\r\n });\r\n\r\n $('.export_general').on('click', function () {\r\n const $btn = $(this);\r\n const $general = getGeneralDetail($btn);\r\n\r\n const values = exportGeneralInfo($general);\r\n console.log(values);\r\n });\r\n $('.delete-defender').on('click', function () {\r\n const $card = getGeneralFrame($(this));\r\n deleteDefender($card);\r\n });\r\n $('.copy-defender').on('click', function () {\r\n const $card = getGeneralFrame($(this));\r\n copyDefender($card);\r\n });\r\n\r\n $('.add-defender').on('click', function () {\r\n addDefender();\r\n });\r\n\r\n $('.btn-general-load').on('click', function () {\r\n const $file = $(this).prev();\r\n $file[0].click();\r\n })\r\n\r\n $('.form_load_general_file').on('change', function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const $card = getGeneralFrame($this);\r\n\r\n const files = unwrap(e.target.files);\r\n\r\n importGeneralInfoByFile(files, $card);\r\n return false;\r\n });\r\n\r\n $('.btn-general-import-server').on('click', function () {\r\n const $this = $(this);\r\n const $card = getGeneralFrame($this);\r\n\r\n const $modal = $('#importModal');\r\n $modal.data('target', $card);\r\n $modal.modal('show');\r\n });\r\n\r\n $('.btn-general-save').on('click', function () {\r\n const $this = $(this);\r\n const $general = getGeneralDetail($this);\r\n const generalData = exportGeneralInfo($general);\r\n\r\n const filename = `general_${generalData.name}.json`;\r\n const saveData = JSON.stringify({\r\n objType: 'general',\r\n data: generalData\r\n }, null, 4);\r\n\r\n download(saveData, filename, 'application/json');\r\n });\r\n\r\n $('.btn-battle-load').on('click', function () {\r\n const $file = $(this).prev();\r\n $file[0].click();\r\n })\r\n\r\n $('.form_load_battle_file').on('change', function (e) {\r\n e.preventDefault();\r\n const files = unwrap(e.target.files);\r\n\r\n importBattleInfoByFile(files);\r\n return false;\r\n });\r\n\r\n $('.btn-battle-save').on('click', function () {\r\n const battleData = exportAllData();\r\n const dateText = DateTime.now().toFormat('yyyyMMdd_HHmmss');\r\n const filename = `battle_${dateText}.json`;\r\n const saveData = JSON.stringify({\r\n objType: 'battle',\r\n data: battleData\r\n }, null, 4);\r\n\r\n download(saveData, filename, 'application/json');\r\n })\r\n\r\n const $generals = $('.general_detail');\r\n $generals.on('dragover dragleave', function (e) {\r\n e.stopPropagation()\r\n e.preventDefault()\r\n })\r\n $generals.on('drop', function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const $card = getGeneralFrame($this);\r\n\r\n const files = unwrap((unwrap(e.originalEvent) as DragEvent).dataTransfer).files;\r\n\r\n importGeneralInfoByFile(files, $card);\r\n return false;\r\n });\r\n\r\n const $battlePad = $('.dragpad_battle');\r\n $battlePad.on('dragover dragleave', function (e) {\r\n e.stopPropagation()\r\n e.preventDefault()\r\n })\r\n $battlePad.on('drop', function (e) {\r\n e.preventDefault();\r\n\r\n const files = unwrap((unwrap(e.originalEvent) as DragEvent).dataTransfer).files;\r\n\r\n importBattleInfoByFile(files);\r\n return false;\r\n });\r\n }\r\n\r\n const importGeneralInfo = function ($general: JQuery, data: GeneralInfo) {\r\n const setVal = function (query: string, val: string | number) {\r\n $general.find(query).val(val).trigger('change');\r\n }\r\n\r\n setVal('.form_general_name', data.name);\r\n\r\n setVal('.form_officer_level', data.officer_level);\r\n setVal('.form_exp_level', data.explevel);\r\n\r\n setVal('.form_leadership', data.leadership);\r\n setVal('.form_general_horse', data.horse);\r\n setVal('.form_strength', data.strength);\r\n setVal('.form_general_weap', data.weapon);\r\n setVal('.form_intel', data.intel);\r\n setVal('.form_general_book', data.book);\r\n setVal('.form_general_item', data.item);\r\n\r\n setVal('.form_injury', data.injury);\r\n\r\n setVal('.form_rice', data.rice);\r\n\r\n setVal('.form_general_character', data.personal);\r\n setVal('.form_general_special_war', data.special2);\r\n\r\n setVal('.form_crew', data.crew);\r\n setVal('.form_crewtype', data.crewtype);\r\n setVal('.form_atmos', data.atmos);\r\n setVal('.form_train', data.train);\r\n\r\n setVal('.form_dex1', data.dex1);\r\n setVal('.form_dex2', data.dex2);\r\n setVal('.form_dex3', data.dex3);\r\n setVal('.form_dex4', data.dex4);\r\n setVal('.form_dex5', data.dex5);\r\n setVal('.form_defence_train', data.defence_train);\r\n\r\n setVal('.form_warnum', data.warnum);\r\n setVal('.form_killnum', data.killnum);\r\n setVal('.form_killcrew', data.killcrew);\r\n\r\n if (!setGeneralNo($general, data.no)) {\r\n setGeneralNo($general, generateNewGeneralNo());\r\n }\r\n }\r\n\r\n const exportGeneralInfo = function ($general: JQuery): GeneralInfo {\r\n const getInt = function (query: string): number {\r\n return parseInt(unwrap_any($general.find(query).val()));\r\n }\r\n\r\n const getVal = function (query: string): string {\r\n return unwrap_any($general.find(query).val());\r\n }\r\n\r\n return {\r\n no: getGeneralNo($general),\r\n name: getVal('.form_general_name'),\r\n officer_level: getInt('.form_officer_level'),\r\n explevel: getInt('.form_exp_level'),\r\n\r\n leadership: getInt('.form_leadership'),\r\n horse: getVal('.form_general_horse'),\r\n strength: getInt('.form_strength'),\r\n weapon: getVal('.form_general_weap'),\r\n intel: getInt('.form_intel'),\r\n book: getVal('.form_general_book'),\r\n item: getVal('.form_general_item'),\r\n\r\n injury: getInt('.form_injury'),\r\n\r\n rice: getInt('.form_rice'),\r\n\r\n personal: getVal('.form_general_character'),\r\n special2: getVal('.form_general_special_war'),\r\n\r\n crew: getInt('.form_crew'),\r\n crewtype: getInt('.form_crewtype'),\r\n atmos: getInt('.form_atmos'),\r\n train: getInt('.form_train'),\r\n\r\n dex1: getInt('.form_dex1'),\r\n dex2: getInt('.form_dex2'),\r\n dex3: getInt('.form_dex3'),\r\n dex4: getInt('.form_dex4'),\r\n dex5: getInt('.form_dex5'),\r\n\r\n defence_train: getInt('.form_defence_train'),\r\n\r\n warnum: getInt('.form_warnum'),\r\n killnum: getInt('.form_killnum'),\r\n killcrew: getInt('.form_killcrew'),\r\n\r\n };\r\n }\r\n\r\n const importBattleInfoByFile = function (files: FileList) {\r\n if (files === null) {\r\n alert('파일 에러!');\r\n return false;\r\n }\r\n\r\n if (files.length < 1) {\r\n alert(\"파일 에러!\");\r\n return false;\r\n }\r\n\r\n\r\n const file = files[0];\r\n if (file.size > 1024 * 1024) {\r\n alert('파일이 너무 큽니다!');\r\n return false;\r\n }\r\n if (file.type === '') {\r\n alert('폴더를 업로드할 수 없습니다!');\r\n return false;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onload = function () {\r\n let battleData: ExportedInfo;\r\n try {\r\n battleData = JSON.parse(unwrap_any(reader.result));\r\n } catch (e) {\r\n alert('올바르지 않은 파일 형식입니다');\r\n return false;\r\n }\r\n\r\n if (!('objType' in battleData)) {\r\n alert('파일 형식을 확인할 수 없습니다');\r\n return false;\r\n }\r\n\r\n if (battleData.objType != 'battle') {\r\n alert('전투 데이터가 아닙니다');\r\n return false;\r\n }\r\n\r\n importBattleInfo(battleData.data);\r\n return true;\r\n };\r\n\r\n try {\r\n\r\n reader.readAsText(file);\r\n } catch (e) {\r\n alert('파일을 읽는데 실패했습니다.');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n const importGeneralInfoByFile = function (files: FileList, $card: JQuery) {\r\n if ($card === undefined) {\r\n $card = addDefender();\r\n }\r\n\r\n if (files === null) {\r\n alert('파일 에러!');\r\n return false;\r\n }\r\n\r\n if (files.length < 1) {\r\n alert(\"파일 에러!\");\r\n return false;\r\n }\r\n\r\n\r\n const file = files[0];\r\n if (file.size > 1024 * 1024) {\r\n alert('파일이 너무 큽니다!');\r\n return false;\r\n }\r\n if (file.type === '') {\r\n alert('폴더를 업로드할 수 없습니다!');\r\n return false;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onload = function () {\r\n let generalData: ExportedInfo;\r\n try {\r\n generalData = JSON.parse(unwrap_any(reader.result));\r\n } catch (e) {\r\n alert('올바르지 않은 파일 형식입니다');\r\n return false;\r\n }\r\n\r\n if (!('objType' in generalData)) {\r\n alert('파일 형식을 확인할 수 없습니다');\r\n return false;\r\n }\r\n\r\n if (generalData.objType == 'battle') {\r\n importBattleInfo(generalData.data);\r\n return true;\r\n }\r\n if (generalData.objType != 'general') {\r\n alert('장수 데이터가 아닙니다');\r\n return false;\r\n }\r\n\r\n $card.find('.form_load_general_file').val('');\r\n\r\n importGeneralInfo($card, generalData.data);\r\n return true;\r\n };\r\n\r\n try {\r\n\r\n reader.readAsText(file);\r\n } catch (e) {\r\n alert('파일을 읽는데 실패했습니다.');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n const extendGeneralInfoForDB = function (generalData: GeneralInfo) {\r\n\r\n const dbVal = {\r\n nation: (generalData.no) <= 1 ? 1 : 2,\r\n city: (generalData.no) <= 1 ? 1 : 3,\r\n turntime: '2018-08-26 12:00',\r\n special: window.defaultSpecialDomestic,\r\n leadership_exp: 0,\r\n strength_exp: 0,\r\n intel_exp: 0,\r\n\r\n gold: 10000,\r\n\r\n dedication: 0,\r\n\r\n recent_war: '2018-08-26 12:00',\r\n experience: Math.pow(generalData.explevel, 2),\r\n };\r\n\r\n return $.extend({}, generalData, dbVal);\r\n }\r\n\r\n const getGeneralFrame = function ($btn: JQuery) {\r\n const $card = $btn.closest('.general_form');\r\n return $card;\r\n }\r\n\r\n const getGeneralDetail = function ($btn: JQuery) {\r\n const $card = getGeneralFrame($btn);\r\n const $general = $card.find('.general_detail');\r\n return $general;\r\n }\r\n\r\n const getGeneralNo = function ($btn: JQuery) {\r\n return parseInt(getGeneralFrame($btn).data('general_no'));\r\n }\r\n\r\n const setGeneralNo = function ($btn: JQuery, value: number) {\r\n if (value == 1) {\r\n //1번은 무조건 공격자임\r\n return false;\r\n }\r\n if (value in defenderNoList) {\r\n return false;\r\n }\r\n const $card = getGeneralFrame($btn);\r\n $card.data('general_no', value);\r\n defenderNoList[value] = $card;\r\n return true;\r\n }\r\n\r\n const generateNewGeneralNo = function () {\r\n for (; ;) {\r\n const newGeneralNo = Math.floor(Math.random() * (1 << 24)) + 2;\r\n if (newGeneralNo in defenderNoList) {\r\n continue;\r\n }\r\n return newGeneralNo;\r\n }\r\n }\r\n\r\n const deleteGeneralNo = function ($btn: JQuery) {\r\n const $card = getGeneralFrame($btn);\r\n $card.removeData('general_no');\r\n const generalNo = getGeneralNo($card);\r\n delete defenderNoList[generalNo];\r\n }\r\n\r\n const addDefender = function ($cardAfter?: JQuery) {\r\n const $newCard = $('
');\r\n\r\n if ($cardAfter === undefined) {\r\n $defenderColumn.append($newCard);\r\n } else {\r\n $cardAfter.after($newCard);\r\n }\r\n\r\n $newCard.append($defenderHeaderForm.clone(true, true));\r\n $newCard.append($generalForm.clone(true, true));\r\n\r\n //$newGeneral = getGeneralDetail($newCard);\r\n setGeneralNo($newCard, generateNewGeneralNo());\r\n\r\n return $newCard;\r\n }\r\n\r\n const deleteDefender = function ($card: JQuery) {\r\n deleteGeneralNo($card);\r\n $card.detach();\r\n }\r\n\r\n const copyDefender = function ($card: JQuery) {\r\n const $general = getGeneralDetail($card);\r\n\r\n const generalData = exportGeneralInfo($general);\r\n const $newObj = addDefender($card);\r\n importGeneralInfo(getGeneralDetail($newObj), generalData);\r\n }\r\n\r\n const importBattleInfo = function (battleData: BattleInfo) {\r\n\r\n $('.form_load_battle_file').val('');\r\n console.log(battleData);\r\n\r\n const $attackerNation = $('.attacker_nation');\r\n const $defenderNation = $('.defender_nation');\r\n\r\n const attackerGeneral = battleData.attackerGeneral;\r\n const attackerCity = battleData.attackerCity;\r\n const attackerNation = battleData.attackerNation;\r\n\r\n const defenderGenerals = battleData.defenderGenerals;\r\n const defenderCity = battleData.defenderCity;\r\n const defenderNation = battleData.defenderNation;\r\n\r\n $('#year').val(battleData.year);\r\n $('#month').val(battleData.month);\r\n $('#repeat_cnt').val(battleData.repeatCnt);\r\n\r\n $('.delete-defender').trigger('click');\r\n\r\n $attackerNation.find('.form_nation_type').val(attackerNation.type);\r\n $attackerNation.find('.form_tech').val(Math.floor(attackerNation.tech / 1000));\r\n $attackerNation.find('.form_nation_level').val(attackerNation.level);\r\n if (attackerNation.capital == 1) {\r\n $attackerNation.find('.form_is_capital:first').trigger('click');\r\n } else {\r\n $attackerNation.find('.form_is_capital:last').trigger('click');\r\n }\r\n $attackerNation.find('.form_city_level').val(attackerCity.level);\r\n\r\n importGeneralInfo($('.attacker_form'), attackerGeneral);\r\n\r\n $defenderNation.find('.form_nation_type').val(defenderNation.type);\r\n $defenderNation.find('.form_tech').val(Math.floor(defenderNation.tech / 1000));\r\n $defenderNation.find('.form_nation_level').val(defenderNation.level);\r\n if (defenderNation.capital == 1) {\r\n $defenderNation.find('.form_is_capital:first').trigger('click');\r\n } else {\r\n $defenderNation.find('.form_is_capital:last').trigger('click');\r\n }\r\n $defenderNation.find('.form_city_level').val(defenderCity.level);\r\n $('#city_def').val(defenderCity.def);\r\n $('#city_wall').val(defenderCity.wall);\r\n\r\n $.each(defenderGenerals, function (idx, defenderGeneral) {\r\n const $card = addDefender();\r\n importGeneralInfo($card, defenderGeneral);\r\n });\r\n }\r\n\r\n const exportAllData = function (): BattleInfo {\r\n const $attackerNation = $('.attacker_nation');\r\n const $defenderNation = $('.defender_nation');\r\n\r\n const attackerGeneral = exportGeneralInfo($('.attacker_form'));\r\n\r\n const attackerCity = {\r\n level: parseInt($attackerNation.find('.form_city_level').val() as string),\r\n };\r\n\r\n const attackerNation = {\r\n type: unwrap_any($attackerNation.find('.form_nation_type').val()),\r\n tech: parseInt($attackerNation.find('.form_tech').val() as string) * 1000,\r\n level: parseInt($attackerNation.find('.form_nation_level').val() as string),\r\n capital: $attackerNation.find('.form_is_capital:checked').val() == '1' ? 1 : 2,\r\n }\r\n\r\n const defenderGenerals = $('.defender_form').map(function () {\r\n return exportGeneralInfo($(this));\r\n }).toArray();\r\n\r\n const defenderCity = {\r\n def: parseInt($('#city_def').val() as string),\r\n wall: parseInt($('#city_wall').val() as string),\r\n level: parseInt($defenderNation.find('.form_city_level').val() as string),\r\n };\r\n\r\n const defenderNation = {\r\n type: unwrap_any($defenderNation.find('.form_nation_type').val()),\r\n tech: parseInt(unwrap_any($defenderNation.find('.form_tech').val())) * 1000,\r\n level: parseInt(unwrap_any($defenderNation.find('.form_nation_level').val())),\r\n capital: $defenderNation.find('.form_is_capital:checked').val() == '1' ? 3 : 4,\r\n }\r\n\r\n const year = parseInt(unwrap_any($('#year').val()));\r\n const month = parseInt(unwrap_any($('#month').val()));\r\n const repeatCnt = parseInt(unwrap_any($('#repeat_cnt').val()));\r\n\r\n return {\r\n attackerGeneral: attackerGeneral,\r\n attackerCity: attackerCity,\r\n attackerNation: attackerNation,\r\n\r\n defenderGenerals: defenderGenerals,\r\n defenderCity: defenderCity,\r\n defenderNation: defenderNation,\r\n\r\n year: year,\r\n month: month,\r\n repeatCnt: repeatCnt,\r\n };\r\n }\r\n\r\n const extendAllDataForDB = function (allData: BattleInfo): BattleInfo {\r\n const defaultNation = {\r\n nation: 0,\r\n name: '재야',\r\n capital: 0,\r\n level: 0,\r\n gold: 0,\r\n rice: 2000,\r\n type: 'None',\r\n tech: 0,\r\n gennum: 200,\r\n };\r\n\r\n const defaultCity = {\r\n nation: 0,\r\n supply: 1,\r\n name: '도시',\r\n\r\n pop: 500000,\r\n agri: 10000,\r\n comm: 10000,\r\n secu: 10000,\r\n def: 1000,\r\n wall: 1000,\r\n\r\n trust: 100,\r\n\r\n pop_max: 600000,\r\n agri_max: 12000,\r\n comm_max: 12000,\r\n secu_max: 10000,\r\n def_max: 12000,\r\n wall_max: 12000,\r\n\r\n dead: 0,\r\n\r\n state: 0,\r\n\r\n conflict: '{}',\r\n };\r\n\r\n const attackerNation = $.extend({}, defaultNation, allData.attackerNation);\r\n attackerNation.nation = 1;\r\n attackerNation.name = '출병국';\r\n\r\n const attackerCity = $.extend({}, defaultCity, allData.attackerCity) as CityBasicInfo;\r\n attackerCity.nation = 1;\r\n attackerCity.city = 1;\r\n\r\n const attackerGeneral = extendGeneralInfoForDB(allData.attackerGeneral);\r\n if (2 <= attackerGeneral.officer_level && attackerGeneral.officer_level <= 4) {\r\n attackerGeneral.officer_city = 1;\r\n } else {\r\n attackerGeneral.officer_city = 0;\r\n }\r\n\r\n const defenderNation = $.extend({}, defaultNation, allData.defenderNation);\r\n defenderNation.nation = 2;\r\n defenderNation.name = '수비국';\r\n\r\n const defenderCity = $.extend({}, defaultCity, allData.defenderCity);\r\n defenderCity.nation = 2;\r\n defenderCity.city = 3;\r\n defenderCity.wall_max = Math.floor(defenderCity.wall / 5 * 6);\r\n defenderCity.def_max = Math.floor(defenderCity.def / 5 * 6);\r\n\r\n const defenderGenerals: GeneralInfo[] = [];\r\n $.each(allData.defenderGenerals, function () {\r\n const defenderGeneral = extendGeneralInfoForDB(this);\r\n if (2 <= defenderGeneral.officer_level && defenderGeneral.officer_level <= 4) {\r\n defenderGeneral.officer_city = 3;\r\n } else {\r\n defenderGeneral.officer_city = 0;\r\n }\r\n\r\n defenderGenerals.push(defenderGeneral);\r\n });\r\n\r\n\r\n return $.extend({}, allData, {\r\n attackerGeneral: attackerGeneral,\r\n attackerCity: attackerCity,\r\n attackerNation: attackerNation,\r\n\r\n defenderGenerals: defenderGenerals,\r\n defenderCity: defenderCity,\r\n defenderNation: defenderNation,\r\n });\r\n }\r\n\r\n const parseSkillCount = function (skills: Record) {\r\n const result: string[] = [];\r\n for (const [key, value] of Object.entries(skills)) {\r\n result.push(`${key}(${toPretty(value)}회)`);\r\n }\r\n\r\n if (result.length == 0) {\r\n return '-';\r\n }\r\n return result.join(', ');\r\n }\r\n\r\n const toPretty = function (number: number) {\r\n if (isInteger(number)) {\r\n number = Math.floor(number);\r\n } else {\r\n number = parseFloat(number.toFixed(2));\r\n }\r\n return numberWithCommas(number);\r\n }\r\n\r\n const showBattleResult = function (result: BattleResult) {\r\n $('#result_datetime').html(result.datetime);\r\n $('#result_warcnt').html(toPretty(result.avgWar));\r\n $('#result_phase').html(toPretty(result.phase));\r\n $('#result_killed').html(toPretty(result.killed));\r\n if (result.minKilled != result.maxKilled) {\r\n $('#result_maxKilled').html(toPretty(result.maxKilled));\r\n $('#result_minKilled').html(toPretty(result.minKilled));\r\n $('#result_varKilled').show();\r\n } else {\r\n $('#result_varKilled').hide();\r\n }\r\n $('#result_dead').html(toPretty(result.dead));\r\n if (result.minDead != result.maxDead) {\r\n $('#result_maxDead').html(toPretty(result.maxDead));\r\n $('#result_minDead').html(toPretty(result.minDead));\r\n $('#result_varDead').show();\r\n } else {\r\n $('#result_varDead').hide();\r\n }\r\n\r\n $('#result_attackerRice').html(toPretty(result.attackerRice));\r\n $('#result_defenderRice').html(toPretty(result.defenderRice));\r\n $('#result_attackerSkills').html(parseSkillCount(result.attackerSkills));\r\n\r\n $('.result_defenderSkills').detach();\r\n\r\n const $summary = $('#battle_result_summary');\r\n\r\n for (const [idx, defenderSkills] of Object.entries(result.defendersSkills)) {\r\n console.log(defenderSkills);\r\n const $result = $(`수비자${parseInt(idx) + 1} 스킬`);\r\n $result.find('td').html(parseSkillCount(defenderSkills));\r\n $summary.append($result);\r\n }\r\n\r\n $('#generalBattleResultLog').html(result.lastWarLog.generalBattleResultLog);\r\n $('#generalBattleDetailLog').html(result.lastWarLog.generalBattleDetailLog);\r\n\r\n }\r\n\r\n const beginBattle = function () {\r\n const data = extendAllDataForDB(exportAllData());\r\n console.log(data);\r\n $.ajax({\r\n type: 'post',\r\n url: 'j_simulate_battle.php',\r\n dataType: 'json',\r\n data: {\r\n action: 'battle',\r\n query: JSON.stringify(data),\r\n }\r\n }).then(function (result) {\r\n console.log(result);\r\n if (!result.result) {\r\n alert(result.reason);\r\n return;\r\n }\r\n showBattleResult(result);\r\n\r\n }, function (result) {\r\n alert('전투 개시 실패!');\r\n });\r\n }\r\n\r\n\r\n const reorderDefender = function (defenderOrder: number[]) {\r\n for (const generalNo of defenderOrder) {\r\n\r\n if (!(generalNo in defenderNoList)) {\r\n //음..?\r\n alert(`${generalNo}이 수비자 리스트에 없습니다. 버그인 듯 합니다.`);\r\n return true;\r\n }\r\n\r\n const $defenderObj = defenderNoList[generalNo];\r\n $defenderObj.detach();\r\n $defenderColumn.append($defenderObj);\r\n }\r\n }\r\n\r\n const requestReorderDefender = function () {\r\n const data = extendAllDataForDB(exportAllData());\r\n console.log(data);\r\n $.ajax({\r\n type: 'post',\r\n url: 'j_simulate_battle.php',\r\n dataType: 'json',\r\n data: {\r\n action: 'reorder',\r\n query: JSON.stringify(data),\r\n }\r\n }).then(function (result) {\r\n console.log(result);\r\n if (!result.result) {\r\n alert(result.reason);\r\n return;\r\n }\r\n reorderDefender(result.order);\r\n\r\n }, function (result) {\r\n alert('재정렬 실패!');\r\n });\r\n }\r\n\r\n let initGeneralList = false;\r\n\r\n $('#importFromDB').on('click', function () {\r\n const generalID = $('#modalSelector').val();\r\n console.log(generalID);\r\n\r\n\r\n $.post({\r\n url: 'j_export_simulator_object.php',\r\n dataType: 'json',\r\n data: {\r\n destGeneralID: generalID\r\n }\r\n }).then(function (data) {\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n return false;\r\n }\r\n\r\n const $modal = $('#importModal');\r\n const $card = $modal.data('target');\r\n importGeneralInfo($card, data.general);\r\n\r\n $modal.modal('hide');\r\n }, errUnknown);\r\n\r\n\r\n });\r\n\r\n $('#importModal').on('show.bs.modal', function (e) {\r\n if (!initGeneralList) {\r\n const $list = $('#modalSelector');\r\n\r\n const addNation = function (generalList: GeneralInfo[], nationName: string, color: string) {\r\n\r\n generalList.sort(function (lhs, rhs) {\r\n if (lhs.npc != rhs.npc) {\r\n return (lhs.npc??0) - (rhs.npc??0);\r\n }\r\n if (lhs.name < rhs.name) {\r\n return -1;\r\n }\r\n if (lhs.name > rhs.name) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n const $optGroup = $(``);\r\n $optGroup.css('background-color', color);\r\n $optGroup.css('color', isBrightColor(color) ? 'black' : 'white');\r\n\r\n for(const general of generalList){\r\n const $item = $(``);\r\n if (general.npc) {\r\n $item.css('color', unwrap(getNpcColor(general.npc)));\r\n } else {\r\n $item.css('color', 'white');\r\n }\r\n $item.css('background-color', 'black');\r\n $optGroup.append($item);\r\n }\r\n $list.append($optGroup);\r\n }\r\n $.post({\r\n url: 'j_get_basic_general_list.php',\r\n dataType: 'json',\r\n data: {\r\n req: 2,\r\n }\r\n }).then(function (data: BasicGeneralListResponse|InvalidResponse) {\r\n if (!data.result) {\r\n alert(data.reason);\r\n $('#importModal').modal('hide');\r\n return false;\r\n }\r\n\r\n const nations = data.nation;\r\n const myNationID = data.nationID;\r\n\r\n $list.empty();\r\n //자국 먼저\r\n\r\n if (0 in data.list) {\r\n nations[0] = {\r\n nation: 0,\r\n name: '재야',\r\n color: '#000000'\r\n };\r\n }\r\n\r\n\r\n\r\n addNation(combineArray(data.list[myNationID], data.column) as GeneralInfo[], nations[myNationID].name, nations[myNationID].color);\r\n\r\n for (const nationID of Object.keys(data.list)) {\r\n if (parseInt(nationID) == myNationID) {\r\n continue;\r\n }\r\n addNation(combineArray(data.list[nationID], data.column) as GeneralInfo[], nations[nationID].name, nations[nationID].color);\r\n }\r\n initGeneralList = true;\r\n }, errUnknown);\r\n }\r\n\r\n });\r\n\r\n initBasicEvent();\r\n $attackerCard.append($generalForm.clone(true, true));\r\n addDefender();\r\n\r\n $('.btn-begin_battle').on('click', function () {\r\n beginBattle();\r\n });\r\n\r\n $('.btn-reorder_defender').on('click', function () {\r\n requestReorderDefender();\r\n })\r\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 871;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t871: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(2890)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","unwrap","result","combineObject","item","columnList","newItem","columnIdx","combineArray","array","keys","key","errUnknown","alert","unwrap_any","String","prototype","format","args","replace","match","number","toString","$","$generalForm","$defenderHeaderForm","$defenderColumn","defenderNoList","$attackerCard","importGeneralInfo","$general","data","setVal","query","val","find","trigger","officer_level","explevel","leadership","horse","strength","weapon","intel","book","injury","rice","personal","special2","crew","crewtype","atmos","train","dex1","dex2","dex3","dex4","dex5","defence_train","warnum","killnum","killcrew","setGeneralNo","no","generateNewGeneralNo","exportGeneralInfo","getInt","parseInt","getVal","getGeneralNo","importBattleInfoByFile","files","length","file","size","type","reader","FileReader","onload","battleData","JSON","parse","e","objType","importBattleInfo","readAsText","importGeneralInfoByFile","$card","undefined","addDefender","generalData","extendGeneralInfoForDB","dbVal","nation","city","turntime","special","window","defaultSpecialDomestic","leadership_exp","strength_exp","intel_exp","gold","dedication","recent_war","experience","Math","pow","extend","getGeneralFrame","$btn","closest","getGeneralDetail","value","newGeneralNo","floor","random","$cardAfter","$newCard","append","after","clone","console","log","$attackerNation","$defenderNation","attackerGeneral","attackerCity","attackerNation","defenderGenerals","defenderCity","defenderNation","year","month","repeatCnt","tech","level","capital","def","wall","each","idx","defenderGeneral","exportAllData","map","toArray","extendAllDataForDB","allData","defaultNation","gennum","defaultCity","supply","pop","agri","comm","secu","trust","pop_max","agri_max","comm_max","secu_max","def_max","wall_max","dead","state","conflict","officer_city","push","parseSkillCount","skills","Object","entries","toPretty","join","parseFloat","toFixed","initGeneralList","on","generalID","post","url","dataType","destGeneralID","then","reason","$modal","general","modal","$list","addNation","generalList","nationName","color","sort","lhs","rhs","npc","$optGroup","css","cv","exec","r","g","b","isBrightColor","npcType","$item","req","nations","myNationID","nationID","empty","list","column","$this","$helptext","text","html","values","removeData","generalNo","deleteGeneralNo","detach","deleteDefender","$newObj","copyDefender","prev","click","preventDefault","target","filename","saveData","stringify","dateText","toFormat","$generals","stopPropagation","originalEvent","dataTransfer","$battlePad","initBasicEvent","ajax","action","datetime","avgWar","phase","killed","minKilled","maxKilled","show","hide","minDead","maxDead","attackerRice","defenderRice","attackerSkills","$summary","defendersSkills","defenderSkills","$result","lastWarLog","generalBattleResultLog","generalBattleDetailLog","showBattleResult","defenderOrder","$defenderObj","reorderDefender","order","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","Function","obj","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"battle_simulator.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/battle_simulator.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import $ from 'jquery';\r\nimport 'bootstrap';\r\nimport { DateTime } from 'luxon';\r\nimport download from 'downloadjs';\r\nimport { unwrap } from './util';\r\nimport { isInteger } from 'lodash';\r\nimport { combineArray, errUnknown, getNpcColor, isBrightColor, numberWithCommas } from './common_legacy';\r\nimport { unwrap_any } from './util/unwrap_any';\r\nimport { BasicGeneralListResponse, InvalidResponse } from './defs';\r\n\r\ntype CityAttackerInfo = {\r\n level: number,\r\n}\r\n\r\ntype CityBasicInfo = {\r\n nation?: number,\r\n level: number,\r\n def: number,\r\n wall: number,\r\n city?: number,\r\n}\r\n\r\ntype NationBasicInfo = {\r\n level: number,\r\n type: string,\r\n tech: number,\r\n capital: number,\r\n}\r\n\r\ntype GeneralInfo = {\r\n no: number,\r\n npc?: number\r\n name: string,\r\n officer_level: number,\r\n explevel: number,\r\n\r\n leadership: number,\r\n horse: string,\r\n strength: number,\r\n weapon: string,\r\n intel: number,\r\n book: string,\r\n item: string,\r\n\r\n injury: number,\r\n\r\n rice: number,\r\n\r\n personal: string,\r\n special2: string,\r\n\r\n crew: number,\r\n crewtype: number,\r\n atmos: number,\r\n train: number,\r\n\r\n dex1: number,\r\n dex2: number,\r\n dex3: number,\r\n dex4: number,\r\n dex5: number,\r\n\r\n defence_train: number,\r\n\r\n warnum: number,\r\n killnum: number,\r\n killcrew: number,\r\n\r\n officer_city?: number,\r\n};\r\n\r\ntype BattleInfo = {\r\n attackerGeneral: GeneralInfo,\r\n attackerCity: CityAttackerInfo|CityBasicInfo,\r\n attackerNation: NationBasicInfo,\r\n defenderGenerals: GeneralInfo[],\r\n defenderCity: CityBasicInfo,\r\n defenderNation: NationBasicInfo,\r\n year: number,\r\n month: number,\r\n repeatCnt: number,\r\n};\r\n\r\ntype ExportedGeneralInfo = {\r\n objType: 'general',\r\n data: GeneralInfo,\r\n}\r\n\r\ntype ExportedBattleInfo = {\r\n objType: 'battle',\r\n data: BattleInfo\r\n}\r\ntype ExportedInfo = ExportedGeneralInfo | ExportedBattleInfo;\r\n\r\ntype BattleResult = {\r\n result:true,\r\n datetime:string,\r\n lastWarLog:{\r\n generalBattleResultLog: string,\r\n generalBattleDetailLog: string,\r\n },\r\n avgWar:number,\r\n phase:number,\r\n killed:number,\r\n maxKilled:number,\r\n minKilled:number,\r\n dead:number,\r\n maxDead:number,\r\n minDead:number,\r\n attackerRice:number,\r\n defenderRice:number,\r\n attackerSkills:Record,\r\n defendersSkills:Record[],\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n nation?: NationBasicInfo,\r\n city?: CityBasicInfo,\r\n defaultSpecialDomestic: string,\r\n }\r\n}\r\n\r\n$(function ($) {\r\n\r\n\r\n const $generalForm = $('.form_sample .general_detail');\r\n const $defenderHeaderForm = $('.form_sample .card-header');\r\n const $defenderColumn = $('.defender-column');\r\n\r\n const defenderNoList: Record> = {};\r\n\r\n const $attackerCard = $('.attacker_form');\r\n\r\n const initBasicEvent = function () {\r\n\r\n if (window.nation && window.city) {\r\n $('.form_city_level').val(window.city.level);\r\n $('.form_def').val(window.city.def);\r\n $('.form_wall').val(window.city.wall);\r\n $('.form_nation_type').val(window.nation.type);\r\n $('.form_nation_level').val(window.nation.level);\r\n $('.form_tech').val(window.nation.tech / 1000);\r\n if (window.nation.capital == window.city.city) {\r\n $('.attacker_nation .form_is_capital:first').trigger('click');\r\n $('.defender_nation .form_is_capital:first').trigger('click');\r\n } else {\r\n $('.attacker_nation .form_is_capital:last').trigger('click');\r\n $('.defender_nation .form_is_capital:last').trigger('click');\r\n }\r\n } else {\r\n $('.attacker_nation .form_is_capital:last').trigger('click');\r\n $('.defender_nation .form_is_capital:last').trigger('click');\r\n }\r\n\r\n $('.form_injury').on('change', function () {\r\n const $this = $(this) as JQuery;\r\n const $general = getGeneralDetail($this);\r\n const $helptext = $general.find('.injury_helptext');\r\n\r\n const injury = parseInt($this.val() as string);\r\n //FIXME: PHP 코드와 항상 일치하도록 변경\r\n let text = '건강';\r\n let color = 'white';\r\n if (injury > 60) {\r\n text = '위독';\r\n color = 'red';\r\n } else if (injury > 40) {\r\n text = '심각';\r\n color = 'magenta';\r\n } else if (injury > 20) {\r\n text = '중상';\r\n color = 'orange';\r\n } else if (injury > 0) {\r\n text = '경상';\r\n color = 'yellow';\r\n }\r\n $helptext.html(text).css('color', color);\r\n });\r\n\r\n $('.export_general').on('click', function () {\r\n const $btn = $(this);\r\n const $general = getGeneralDetail($btn);\r\n\r\n const values = exportGeneralInfo($general);\r\n console.log(values);\r\n });\r\n $('.delete-defender').on('click', function () {\r\n const $card = getGeneralFrame($(this));\r\n deleteDefender($card);\r\n });\r\n $('.copy-defender').on('click', function () {\r\n const $card = getGeneralFrame($(this));\r\n copyDefender($card);\r\n });\r\n\r\n $('.add-defender').on('click', function () {\r\n addDefender();\r\n });\r\n\r\n $('.btn-general-load').on('click', function () {\r\n const $file = $(this).prev();\r\n $file[0].click();\r\n })\r\n\r\n $('.form_load_general_file').on('change', function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const $card = getGeneralFrame($this);\r\n\r\n const files = unwrap(e.target.files);\r\n\r\n importGeneralInfoByFile(files, $card);\r\n return false;\r\n });\r\n\r\n $('.btn-general-import-server').on('click', function () {\r\n const $this = $(this);\r\n const $card = getGeneralFrame($this);\r\n\r\n const $modal = $('#importModal');\r\n $modal.data('target', $card);\r\n $modal.modal('show');\r\n });\r\n\r\n $('.btn-general-save').on('click', function () {\r\n const $this = $(this);\r\n const $general = getGeneralDetail($this);\r\n const generalData = exportGeneralInfo($general);\r\n\r\n const filename = `general_${generalData.name}.json`;\r\n const saveData = JSON.stringify({\r\n objType: 'general',\r\n data: generalData\r\n }, null, 4);\r\n\r\n download(saveData, filename, 'application/json');\r\n });\r\n\r\n $('.btn-battle-load').on('click', function () {\r\n const $file = $(this).prev();\r\n $file[0].click();\r\n })\r\n\r\n $('.form_load_battle_file').on('change', function (e) {\r\n e.preventDefault();\r\n const files = unwrap(e.target.files);\r\n\r\n importBattleInfoByFile(files);\r\n return false;\r\n });\r\n\r\n $('.btn-battle-save').on('click', function () {\r\n const battleData = exportAllData();\r\n const dateText = DateTime.now().toFormat('yyyyMMdd_HHmmss');\r\n const filename = `battle_${dateText}.json`;\r\n const saveData = JSON.stringify({\r\n objType: 'battle',\r\n data: battleData\r\n }, null, 4);\r\n\r\n download(saveData, filename, 'application/json');\r\n })\r\n\r\n const $generals = $('.general_detail');\r\n $generals.on('dragover dragleave', function (e) {\r\n e.stopPropagation()\r\n e.preventDefault()\r\n })\r\n $generals.on('drop', function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n const $card = getGeneralFrame($this);\r\n\r\n const files = unwrap((unwrap(e.originalEvent) as DragEvent).dataTransfer).files;\r\n\r\n importGeneralInfoByFile(files, $card);\r\n return false;\r\n });\r\n\r\n const $battlePad = $('.dragpad_battle');\r\n $battlePad.on('dragover dragleave', function (e) {\r\n e.stopPropagation()\r\n e.preventDefault()\r\n })\r\n $battlePad.on('drop', function (e) {\r\n e.preventDefault();\r\n\r\n const files = unwrap((unwrap(e.originalEvent) as DragEvent).dataTransfer).files;\r\n\r\n importBattleInfoByFile(files);\r\n return false;\r\n });\r\n }\r\n\r\n const importGeneralInfo = function ($general: JQuery, data: GeneralInfo) {\r\n const setVal = function (query: string, val: string | number) {\r\n $general.find(query).val(val).trigger('change');\r\n }\r\n\r\n setVal('.form_general_name', data.name);\r\n\r\n setVal('.form_officer_level', data.officer_level);\r\n setVal('.form_exp_level', data.explevel);\r\n\r\n setVal('.form_leadership', data.leadership);\r\n setVal('.form_general_horse', data.horse);\r\n setVal('.form_strength', data.strength);\r\n setVal('.form_general_weap', data.weapon);\r\n setVal('.form_intel', data.intel);\r\n setVal('.form_general_book', data.book);\r\n setVal('.form_general_item', data.item);\r\n\r\n setVal('.form_injury', data.injury);\r\n\r\n setVal('.form_rice', data.rice);\r\n\r\n setVal('.form_general_character', data.personal);\r\n setVal('.form_general_special_war', data.special2);\r\n\r\n setVal('.form_crew', data.crew);\r\n setVal('.form_crewtype', data.crewtype);\r\n setVal('.form_atmos', data.atmos);\r\n setVal('.form_train', data.train);\r\n\r\n setVal('.form_dex1', data.dex1);\r\n setVal('.form_dex2', data.dex2);\r\n setVal('.form_dex3', data.dex3);\r\n setVal('.form_dex4', data.dex4);\r\n setVal('.form_dex5', data.dex5);\r\n setVal('.form_defence_train', data.defence_train);\r\n\r\n setVal('.form_warnum', data.warnum);\r\n setVal('.form_killnum', data.killnum);\r\n setVal('.form_killcrew', data.killcrew);\r\n\r\n if (!setGeneralNo($general, data.no)) {\r\n setGeneralNo($general, generateNewGeneralNo());\r\n }\r\n }\r\n\r\n const exportGeneralInfo = function ($general: JQuery): GeneralInfo {\r\n const getInt = function (query: string): number {\r\n return parseInt(unwrap_any($general.find(query).val()));\r\n }\r\n\r\n const getVal = function (query: string): string {\r\n return unwrap_any($general.find(query).val());\r\n }\r\n\r\n return {\r\n no: getGeneralNo($general),\r\n name: getVal('.form_general_name'),\r\n officer_level: getInt('.form_officer_level'),\r\n explevel: getInt('.form_exp_level'),\r\n\r\n leadership: getInt('.form_leadership'),\r\n horse: getVal('.form_general_horse'),\r\n strength: getInt('.form_strength'),\r\n weapon: getVal('.form_general_weap'),\r\n intel: getInt('.form_intel'),\r\n book: getVal('.form_general_book'),\r\n item: getVal('.form_general_item'),\r\n\r\n injury: getInt('.form_injury'),\r\n\r\n rice: getInt('.form_rice'),\r\n\r\n personal: getVal('.form_general_character'),\r\n special2: getVal('.form_general_special_war'),\r\n\r\n crew: getInt('.form_crew'),\r\n crewtype: getInt('.form_crewtype'),\r\n atmos: getInt('.form_atmos'),\r\n train: getInt('.form_train'),\r\n\r\n dex1: getInt('.form_dex1'),\r\n dex2: getInt('.form_dex2'),\r\n dex3: getInt('.form_dex3'),\r\n dex4: getInt('.form_dex4'),\r\n dex5: getInt('.form_dex5'),\r\n\r\n defence_train: getInt('.form_defence_train'),\r\n\r\n warnum: getInt('.form_warnum'),\r\n killnum: getInt('.form_killnum'),\r\n killcrew: getInt('.form_killcrew'),\r\n\r\n };\r\n }\r\n\r\n const importBattleInfoByFile = function (files: FileList) {\r\n if (files === null) {\r\n alert('파일 에러!');\r\n return false;\r\n }\r\n\r\n if (files.length < 1) {\r\n alert(\"파일 에러!\");\r\n return false;\r\n }\r\n\r\n\r\n const file = files[0];\r\n if (file.size > 1024 * 1024) {\r\n alert('파일이 너무 큽니다!');\r\n return false;\r\n }\r\n if (file.type === '') {\r\n alert('폴더를 업로드할 수 없습니다!');\r\n return false;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onload = function () {\r\n let battleData: ExportedInfo;\r\n try {\r\n battleData = JSON.parse(unwrap_any(reader.result));\r\n } catch (e) {\r\n alert('올바르지 않은 파일 형식입니다');\r\n return false;\r\n }\r\n\r\n if (!('objType' in battleData)) {\r\n alert('파일 형식을 확인할 수 없습니다');\r\n return false;\r\n }\r\n\r\n if (battleData.objType != 'battle') {\r\n alert('전투 데이터가 아닙니다');\r\n return false;\r\n }\r\n\r\n importBattleInfo(battleData.data);\r\n return true;\r\n };\r\n\r\n try {\r\n\r\n reader.readAsText(file);\r\n } catch (e) {\r\n alert('파일을 읽는데 실패했습니다.');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n const importGeneralInfoByFile = function (files: FileList, $card: JQuery) {\r\n if ($card === undefined) {\r\n $card = addDefender();\r\n }\r\n\r\n if (files === null) {\r\n alert('파일 에러!');\r\n return false;\r\n }\r\n\r\n if (files.length < 1) {\r\n alert(\"파일 에러!\");\r\n return false;\r\n }\r\n\r\n\r\n const file = files[0];\r\n if (file.size > 1024 * 1024) {\r\n alert('파일이 너무 큽니다!');\r\n return false;\r\n }\r\n if (file.type === '') {\r\n alert('폴더를 업로드할 수 없습니다!');\r\n return false;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onload = function () {\r\n let generalData: ExportedInfo;\r\n try {\r\n generalData = JSON.parse(unwrap_any(reader.result));\r\n } catch (e) {\r\n alert('올바르지 않은 파일 형식입니다');\r\n return false;\r\n }\r\n\r\n if (!('objType' in generalData)) {\r\n alert('파일 형식을 확인할 수 없습니다');\r\n return false;\r\n }\r\n\r\n if (generalData.objType == 'battle') {\r\n importBattleInfo(generalData.data);\r\n return true;\r\n }\r\n if (generalData.objType != 'general') {\r\n alert('장수 데이터가 아닙니다');\r\n return false;\r\n }\r\n\r\n $card.find('.form_load_general_file').val('');\r\n\r\n importGeneralInfo($card, generalData.data);\r\n return true;\r\n };\r\n\r\n try {\r\n\r\n reader.readAsText(file);\r\n } catch (e) {\r\n alert('파일을 읽는데 실패했습니다.');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n const extendGeneralInfoForDB = function (generalData: GeneralInfo) {\r\n\r\n const dbVal = {\r\n nation: (generalData.no) <= 1 ? 1 : 2,\r\n city: (generalData.no) <= 1 ? 1 : 3,\r\n turntime: '2018-08-26 12:00',\r\n special: window.defaultSpecialDomestic,\r\n leadership_exp: 0,\r\n strength_exp: 0,\r\n intel_exp: 0,\r\n\r\n gold: 10000,\r\n\r\n dedication: 0,\r\n\r\n recent_war: '2018-08-26 12:00',\r\n experience: Math.pow(generalData.explevel, 2),\r\n };\r\n\r\n return $.extend({}, generalData, dbVal);\r\n }\r\n\r\n const getGeneralFrame = function ($btn: JQuery) {\r\n const $card = $btn.closest('.general_form');\r\n return $card;\r\n }\r\n\r\n const getGeneralDetail = function ($btn: JQuery) {\r\n const $card = getGeneralFrame($btn);\r\n const $general = $card.find('.general_detail');\r\n return $general;\r\n }\r\n\r\n const getGeneralNo = function ($btn: JQuery) {\r\n return parseInt(getGeneralFrame($btn).data('general_no'));\r\n }\r\n\r\n const setGeneralNo = function ($btn: JQuery, value: number) {\r\n if (value == 1) {\r\n //1번은 무조건 공격자임\r\n return false;\r\n }\r\n if (value in defenderNoList) {\r\n return false;\r\n }\r\n const $card = getGeneralFrame($btn);\r\n $card.data('general_no', value);\r\n defenderNoList[value] = $card;\r\n return true;\r\n }\r\n\r\n const generateNewGeneralNo = function () {\r\n for (; ;) {\r\n const newGeneralNo = Math.floor(Math.random() * (1 << 24)) + 2;\r\n if (newGeneralNo in defenderNoList) {\r\n continue;\r\n }\r\n return newGeneralNo;\r\n }\r\n }\r\n\r\n const deleteGeneralNo = function ($btn: JQuery) {\r\n const $card = getGeneralFrame($btn);\r\n $card.removeData('general_no');\r\n const generalNo = getGeneralNo($card);\r\n delete defenderNoList[generalNo];\r\n }\r\n\r\n const addDefender = function ($cardAfter?: JQuery) {\r\n const $newCard = $('
');\r\n\r\n if ($cardAfter === undefined) {\r\n $defenderColumn.append($newCard);\r\n } else {\r\n $cardAfter.after($newCard);\r\n }\r\n\r\n $newCard.append($defenderHeaderForm.clone(true, true));\r\n $newCard.append($generalForm.clone(true, true));\r\n\r\n //$newGeneral = getGeneralDetail($newCard);\r\n setGeneralNo($newCard, generateNewGeneralNo());\r\n\r\n return $newCard;\r\n }\r\n\r\n const deleteDefender = function ($card: JQuery) {\r\n deleteGeneralNo($card);\r\n $card.detach();\r\n }\r\n\r\n const copyDefender = function ($card: JQuery) {\r\n const $general = getGeneralDetail($card);\r\n\r\n const generalData = exportGeneralInfo($general);\r\n const $newObj = addDefender($card);\r\n importGeneralInfo(getGeneralDetail($newObj), generalData);\r\n }\r\n\r\n const importBattleInfo = function (battleData: BattleInfo) {\r\n\r\n $('.form_load_battle_file').val('');\r\n console.log(battleData);\r\n\r\n const $attackerNation = $('.attacker_nation');\r\n const $defenderNation = $('.defender_nation');\r\n\r\n const attackerGeneral = battleData.attackerGeneral;\r\n const attackerCity = battleData.attackerCity;\r\n const attackerNation = battleData.attackerNation;\r\n\r\n const defenderGenerals = battleData.defenderGenerals;\r\n const defenderCity = battleData.defenderCity;\r\n const defenderNation = battleData.defenderNation;\r\n\r\n $('#year').val(battleData.year);\r\n $('#month').val(battleData.month);\r\n $('#repeat_cnt').val(battleData.repeatCnt);\r\n\r\n $('.delete-defender').trigger('click');\r\n\r\n $attackerNation.find('.form_nation_type').val(attackerNation.type);\r\n $attackerNation.find('.form_tech').val(Math.floor(attackerNation.tech / 1000));\r\n $attackerNation.find('.form_nation_level').val(attackerNation.level);\r\n if (attackerNation.capital == 1) {\r\n $attackerNation.find('.form_is_capital:first').trigger('click');\r\n } else {\r\n $attackerNation.find('.form_is_capital:last').trigger('click');\r\n }\r\n $attackerNation.find('.form_city_level').val(attackerCity.level);\r\n\r\n importGeneralInfo($('.attacker_form'), attackerGeneral);\r\n\r\n $defenderNation.find('.form_nation_type').val(defenderNation.type);\r\n $defenderNation.find('.form_tech').val(Math.floor(defenderNation.tech / 1000));\r\n $defenderNation.find('.form_nation_level').val(defenderNation.level);\r\n if (defenderNation.capital == 1) {\r\n $defenderNation.find('.form_is_capital:first').trigger('click');\r\n } else {\r\n $defenderNation.find('.form_is_capital:last').trigger('click');\r\n }\r\n $defenderNation.find('.form_city_level').val(defenderCity.level);\r\n $('#city_def').val(defenderCity.def);\r\n $('#city_wall').val(defenderCity.wall);\r\n\r\n $.each(defenderGenerals, function (idx, defenderGeneral) {\r\n const $card = addDefender();\r\n importGeneralInfo($card, defenderGeneral);\r\n });\r\n }\r\n\r\n const exportAllData = function (): BattleInfo {\r\n const $attackerNation = $('.attacker_nation');\r\n const $defenderNation = $('.defender_nation');\r\n\r\n const attackerGeneral = exportGeneralInfo($('.attacker_form'));\r\n\r\n const attackerCity = {\r\n level: parseInt($attackerNation.find('.form_city_level').val() as string),\r\n };\r\n\r\n const attackerNation = {\r\n type: unwrap_any($attackerNation.find('.form_nation_type').val()),\r\n tech: parseInt($attackerNation.find('.form_tech').val() as string) * 1000,\r\n level: parseInt($attackerNation.find('.form_nation_level').val() as string),\r\n capital: $attackerNation.find('.form_is_capital:checked').val() == '1' ? 1 : 2,\r\n }\r\n\r\n const defenderGenerals = $('.defender_form').map(function () {\r\n return exportGeneralInfo($(this));\r\n }).toArray();\r\n\r\n const defenderCity = {\r\n def: parseInt($('#city_def').val() as string),\r\n wall: parseInt($('#city_wall').val() as string),\r\n level: parseInt($defenderNation.find('.form_city_level').val() as string),\r\n };\r\n\r\n const defenderNation = {\r\n type: unwrap_any($defenderNation.find('.form_nation_type').val()),\r\n tech: parseInt(unwrap_any($defenderNation.find('.form_tech').val())) * 1000,\r\n level: parseInt(unwrap_any($defenderNation.find('.form_nation_level').val())),\r\n capital: $defenderNation.find('.form_is_capital:checked').val() == '1' ? 3 : 4,\r\n }\r\n\r\n const year = parseInt(unwrap_any($('#year').val()));\r\n const month = parseInt(unwrap_any($('#month').val()));\r\n const repeatCnt = parseInt(unwrap_any($('#repeat_cnt').val()));\r\n\r\n return {\r\n attackerGeneral: attackerGeneral,\r\n attackerCity: attackerCity,\r\n attackerNation: attackerNation,\r\n\r\n defenderGenerals: defenderGenerals,\r\n defenderCity: defenderCity,\r\n defenderNation: defenderNation,\r\n\r\n year: year,\r\n month: month,\r\n repeatCnt: repeatCnt,\r\n };\r\n }\r\n\r\n const extendAllDataForDB = function (allData: BattleInfo): BattleInfo {\r\n const defaultNation = {\r\n nation: 0,\r\n name: '재야',\r\n capital: 0,\r\n level: 0,\r\n gold: 0,\r\n rice: 2000,\r\n type: 'None',\r\n tech: 0,\r\n gennum: 200,\r\n };\r\n\r\n const defaultCity = {\r\n nation: 0,\r\n supply: 1,\r\n name: '도시',\r\n\r\n pop: 500000,\r\n agri: 10000,\r\n comm: 10000,\r\n secu: 10000,\r\n def: 1000,\r\n wall: 1000,\r\n\r\n trust: 100,\r\n\r\n pop_max: 600000,\r\n agri_max: 12000,\r\n comm_max: 12000,\r\n secu_max: 10000,\r\n def_max: 12000,\r\n wall_max: 12000,\r\n\r\n dead: 0,\r\n\r\n state: 0,\r\n\r\n conflict: '{}',\r\n };\r\n\r\n const attackerNation = $.extend({}, defaultNation, allData.attackerNation);\r\n attackerNation.nation = 1;\r\n attackerNation.name = '출병국';\r\n\r\n const attackerCity = $.extend({}, defaultCity, allData.attackerCity) as CityBasicInfo;\r\n attackerCity.nation = 1;\r\n attackerCity.city = 1;\r\n\r\n const attackerGeneral = extendGeneralInfoForDB(allData.attackerGeneral);\r\n if (2 <= attackerGeneral.officer_level && attackerGeneral.officer_level <= 4) {\r\n attackerGeneral.officer_city = 1;\r\n } else {\r\n attackerGeneral.officer_city = 0;\r\n }\r\n\r\n const defenderNation = $.extend({}, defaultNation, allData.defenderNation);\r\n defenderNation.nation = 2;\r\n defenderNation.name = '수비국';\r\n\r\n const defenderCity = $.extend({}, defaultCity, allData.defenderCity);\r\n defenderCity.nation = 2;\r\n defenderCity.city = 3;\r\n defenderCity.wall_max = Math.floor(defenderCity.wall / 5 * 6);\r\n defenderCity.def_max = Math.floor(defenderCity.def / 5 * 6);\r\n\r\n const defenderGenerals: GeneralInfo[] = [];\r\n $.each(allData.defenderGenerals, function () {\r\n const defenderGeneral = extendGeneralInfoForDB(this);\r\n if (2 <= defenderGeneral.officer_level && defenderGeneral.officer_level <= 4) {\r\n defenderGeneral.officer_city = 3;\r\n } else {\r\n defenderGeneral.officer_city = 0;\r\n }\r\n\r\n defenderGenerals.push(defenderGeneral);\r\n });\r\n\r\n\r\n return $.extend({}, allData, {\r\n attackerGeneral: attackerGeneral,\r\n attackerCity: attackerCity,\r\n attackerNation: attackerNation,\r\n\r\n defenderGenerals: defenderGenerals,\r\n defenderCity: defenderCity,\r\n defenderNation: defenderNation,\r\n });\r\n }\r\n\r\n const parseSkillCount = function (skills: Record) {\r\n const result: string[] = [];\r\n for (const [key, value] of Object.entries(skills)) {\r\n result.push(`${key}(${toPretty(value)}회)`);\r\n }\r\n\r\n if (result.length == 0) {\r\n return '-';\r\n }\r\n return result.join(', ');\r\n }\r\n\r\n const toPretty = function (number: number) {\r\n if (isInteger(number)) {\r\n number = Math.floor(number);\r\n } else {\r\n number = parseFloat(number.toFixed(2));\r\n }\r\n return numberWithCommas(number);\r\n }\r\n\r\n const showBattleResult = function (result: BattleResult) {\r\n $('#result_datetime').html(result.datetime);\r\n $('#result_warcnt').html(toPretty(result.avgWar));\r\n $('#result_phase').html(toPretty(result.phase));\r\n $('#result_killed').html(toPretty(result.killed));\r\n if (result.minKilled != result.maxKilled) {\r\n $('#result_maxKilled').html(toPretty(result.maxKilled));\r\n $('#result_minKilled').html(toPretty(result.minKilled));\r\n $('#result_varKilled').show();\r\n } else {\r\n $('#result_varKilled').hide();\r\n }\r\n $('#result_dead').html(toPretty(result.dead));\r\n if (result.minDead != result.maxDead) {\r\n $('#result_maxDead').html(toPretty(result.maxDead));\r\n $('#result_minDead').html(toPretty(result.minDead));\r\n $('#result_varDead').show();\r\n } else {\r\n $('#result_varDead').hide();\r\n }\r\n\r\n $('#result_attackerRice').html(toPretty(result.attackerRice));\r\n $('#result_defenderRice').html(toPretty(result.defenderRice));\r\n $('#result_attackerSkills').html(parseSkillCount(result.attackerSkills));\r\n\r\n $('.result_defenderSkills').detach();\r\n\r\n const $summary = $('#battle_result_summary');\r\n\r\n for (const [idx, defenderSkills] of Object.entries(result.defendersSkills)) {\r\n console.log(defenderSkills);\r\n const $result = $(`수비자${parseInt(idx) + 1} 스킬`);\r\n $result.find('td').html(parseSkillCount(defenderSkills));\r\n $summary.append($result);\r\n }\r\n\r\n $('#generalBattleResultLog').html(result.lastWarLog.generalBattleResultLog);\r\n $('#generalBattleDetailLog').html(result.lastWarLog.generalBattleDetailLog);\r\n\r\n }\r\n\r\n const beginBattle = function () {\r\n const data = extendAllDataForDB(exportAllData());\r\n console.log(data);\r\n $.ajax({\r\n type: 'post',\r\n url: 'j_simulate_battle.php',\r\n dataType: 'json',\r\n data: {\r\n action: 'battle',\r\n query: JSON.stringify(data),\r\n }\r\n }).then(function (result) {\r\n console.log(result);\r\n if (!result.result) {\r\n alert(result.reason);\r\n return;\r\n }\r\n showBattleResult(result);\r\n\r\n }, function (result) {\r\n alert('전투 개시 실패!');\r\n });\r\n }\r\n\r\n\r\n const reorderDefender = function (defenderOrder: number[]) {\r\n for (const generalNo of defenderOrder) {\r\n\r\n if (!(generalNo in defenderNoList)) {\r\n //음..?\r\n alert(`${generalNo}이 수비자 리스트에 없습니다. 버그인 듯 합니다.`);\r\n return true;\r\n }\r\n\r\n const $defenderObj = defenderNoList[generalNo];\r\n $defenderObj.detach();\r\n $defenderColumn.append($defenderObj);\r\n }\r\n }\r\n\r\n const requestReorderDefender = function () {\r\n const data = extendAllDataForDB(exportAllData());\r\n console.log(data);\r\n $.ajax({\r\n type: 'post',\r\n url: 'j_simulate_battle.php',\r\n dataType: 'json',\r\n data: {\r\n action: 'reorder',\r\n query: JSON.stringify(data),\r\n }\r\n }).then(function (result) {\r\n console.log(result);\r\n if (!result.result) {\r\n alert(result.reason);\r\n return;\r\n }\r\n reorderDefender(result.order);\r\n\r\n }, function (result) {\r\n alert('재정렬 실패!');\r\n });\r\n }\r\n\r\n let initGeneralList = false;\r\n\r\n $('#importFromDB').on('click', function () {\r\n const generalID = $('#modalSelector').val();\r\n console.log(generalID);\r\n\r\n\r\n $.post({\r\n url: 'j_export_simulator_object.php',\r\n dataType: 'json',\r\n data: {\r\n destGeneralID: generalID\r\n }\r\n }).then(function (data) {\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n return false;\r\n }\r\n\r\n const $modal = $('#importModal');\r\n const $card = $modal.data('target');\r\n importGeneralInfo($card, data.general);\r\n\r\n $modal.modal('hide');\r\n }, errUnknown);\r\n\r\n\r\n });\r\n\r\n $('#importModal').on('show.bs.modal', function (e) {\r\n if (!initGeneralList) {\r\n const $list = $('#modalSelector');\r\n\r\n const addNation = function (generalList: GeneralInfo[], nationName: string, color: string) {\r\n\r\n generalList.sort(function (lhs, rhs) {\r\n if (lhs.npc != rhs.npc) {\r\n return (lhs.npc??0) - (rhs.npc??0);\r\n }\r\n if (lhs.name < rhs.name) {\r\n return -1;\r\n }\r\n if (lhs.name > rhs.name) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n const $optGroup = $(``);\r\n $optGroup.css('background-color', color);\r\n $optGroup.css('color', isBrightColor(color) ? 'black' : 'white');\r\n\r\n for(const general of generalList){\r\n const $item = $(``);\r\n if (general.npc) {\r\n $item.css('color', unwrap(getNpcColor(general.npc)));\r\n } else {\r\n $item.css('color', 'white');\r\n }\r\n $item.css('background-color', 'black');\r\n $optGroup.append($item);\r\n }\r\n $list.append($optGroup);\r\n }\r\n $.post({\r\n url: 'j_get_basic_general_list.php',\r\n dataType: 'json',\r\n data: {\r\n req: 2,\r\n }\r\n }).then(function (data: BasicGeneralListResponse|InvalidResponse) {\r\n if (!data.result) {\r\n alert(data.reason);\r\n $('#importModal').modal('hide');\r\n return false;\r\n }\r\n\r\n const nations = data.nation;\r\n const myNationID = data.nationID;\r\n\r\n $list.empty();\r\n //자국 먼저\r\n\r\n if (0 in data.list) {\r\n nations[0] = {\r\n nation: 0,\r\n name: '재야',\r\n color: '#000000'\r\n };\r\n }\r\n\r\n\r\n\r\n addNation(combineArray(data.list[myNationID], data.column) as GeneralInfo[], nations[myNationID].name, nations[myNationID].color);\r\n\r\n for (const nationID of Object.keys(data.list)) {\r\n if (parseInt(nationID) == myNationID) {\r\n continue;\r\n }\r\n addNation(combineArray(data.list[nationID], data.column) as GeneralInfo[], nations[nationID].name, nations[nationID].color);\r\n }\r\n initGeneralList = true;\r\n }, errUnknown);\r\n }\r\n\r\n });\r\n\r\n initBasicEvent();\r\n $attackerCard.append($generalForm.clone(true, true));\r\n addDefender();\r\n\r\n $('.btn-begin_battle').on('click', function () {\r\n beginBattle();\r\n });\r\n\r\n $('.btn-reorder_defender').on('click', function () {\r\n requestReorderDefender();\r\n })\r\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 871;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t871: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(2890)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Error","NotNullExpected","TypeError","unwrap","result","combineObject","item","columnList","newItem","columnIdx","combineArray","array","keys","key","errUnknown","alert","unwrap_any","String","prototype","format","args","this","replace","match","number","toString","$","$generalForm","$defenderHeaderForm","$defenderColumn","defenderNoList","$attackerCard","importGeneralInfo","$general","data","setVal","query","val","find","trigger","name","officer_level","explevel","leadership","horse","strength","weapon","intel","book","injury","rice","personal","special2","crew","crewtype","atmos","train","dex1","dex2","dex3","dex4","dex5","defence_train","warnum","killnum","killcrew","setGeneralNo","no","generateNewGeneralNo","exportGeneralInfo","getInt","parseInt","getVal","getGeneralNo","importBattleInfoByFile","files","length","file","size","type","reader","FileReader","onload","battleData","JSON","parse","e","objType","importBattleInfo","readAsText","importGeneralInfoByFile","$card","undefined","addDefender","generalData","extendGeneralInfoForDB","dbVal","nation","city","turntime","special","window","defaultSpecialDomestic","leadership_exp","strength_exp","intel_exp","gold","dedication","recent_war","experience","Math","pow","extend","getGeneralFrame","$btn","closest","getGeneralDetail","value","newGeneralNo","floor","random","$cardAfter","$newCard","append","after","clone","console","log","$attackerNation","$defenderNation","attackerGeneral","attackerCity","attackerNation","defenderGenerals","defenderCity","defenderNation","year","month","repeatCnt","tech","level","capital","def","wall","each","idx","defenderGeneral","exportAllData","map","toArray","extendAllDataForDB","allData","defaultNation","gennum","defaultCity","supply","pop","agri","comm","secu","trust","pop_max","agri_max","comm_max","secu_max","def_max","wall_max","dead","state","conflict","officer_city","push","parseSkillCount","skills","Object","entries","toPretty","join","parseFloat","toFixed","initGeneralList","on","generalID","post","url","dataType","destGeneralID","then","reason","$modal","general","modal","$list","addNation","generalList","nationName","color","sort","lhs","rhs","npc","$optGroup","css","cv","exec","r","g","b","isBrightColor","npcType","$item","req","nations","myNationID","nationID","empty","list","column","$this","$helptext","text","html","values","removeData","generalNo","deleteGeneralNo","detach","deleteDefender","$newObj","copyDefender","prev","click","preventDefault","target","filename","saveData","stringify","dateText","toFormat","$generals","stopPropagation","originalEvent","dataTransfer","$battlePad","initBasicEvent","ajax","action","datetime","avgWar","phase","killed","minKilled","maxKilled","show","hide","minDead","maxDead","attackerRice","defenderRice","attackerSkills","$summary","defendersSkills","defenderSkills","$result","lastWarLog","generalBattleResultLog","generalBattleDetailLog","showBattleResult","defenderOrder","$defenderObj","reorderDefender","order","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","Function","obj","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/betting.js b/hwe/js/betting.js index a7410515..3d5dcc28 100644 --- a/hwe/js/betting.js +++ b/hwe/js/betting.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={502:(t,e,r)=>{r(5666),r(1058),r(1539),r(8674);var n=r(9755),o=r.n(n),a=r(9669),u=r.n(a),i=r(1584),c=r.n(i),l=r(1763),f=r.n(l),s=r(7037),p=r.n(s),y=r(1469),h=r.n(y);function v(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=b(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,i=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){i=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(i)throw a}}}}function b(t,e){if(t){if("string"==typeof t)return d(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,e):void 0}}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:"";return w(this,o),A(_(t=n.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=o,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&O(e.prototype,r),o}(P(Error)));function M(t){if(null==t)throw new I;return t}function C(t,e,r,n,o,a,u){try{var i=t[a](u),c=i.value}catch(t){return void r(t)}i.done?e(c):Promise.resolve(c).then(n,o)}o()((function(t){u().defaults.headers.common["X-Requested-With"]="XMLHttpRequest",t(".submitBtn").on("click",function(){var e,r=(e=regeneratorRuntime.mark((function e(r){var n,o,a,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r.preventDefault(),n=t(this),o=parseInt(n.data("target")),a=parseInt(M(t("#target_".concat(o)).val())),e.prev=4,e.next=7,u()({url:"j_betting.php",responseType:"json",method:"post",data:m({target:o,amount:a})});case 7:c=e.sent,i=c.data,e.next=17;break;case 11:return e.prev=11,e.t0=e.catch(4),console.error(e.t0),alert("에러: ".concat(e.t0)),location.reload(),e.abrupt("return");case 17:if(i.result){e.next=21;break}return alert("베팅을 실패했습니다: ".concat(i.reason)),location.reload(),e.abrupt("return");case 21:return location.reload(),e.abrupt("return");case 23:case"end":return e.stop()}}),e,this,[[4,11]])})),function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function u(t){C(a,n,o,u,i,"next",t)}function i(t){C(a,n,o,u,i,"throw",t)}u(void 0)}))});return function(t){return r.apply(this,arguments)}}())}))}},r={};function n(t){var o=r[t];if(void 0!==o)return o.exports;var a=r[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}n.m=e,t=[],n.O=(e,r,o,a)=>{if(!r){var u=1/0;for(f=0;f=a)&&Object.keys(n.O).every((t=>n.O[t](r[c])))?r.splice(c--,1):(i=!1,a0&&t[f-1][2]>a;f--)t[f]=t[f-1];t[f]=[r,o,a]},n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),n.j=375,(()=>{var t={375:0};n.O.j=e=>0===t[e];var e=(e,r)=>{var o,a,[u,i,c]=r,l=0;for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(c)var f=c(n);for(e&&e(r);ln(502)));o=n.O(o)})(); +(()=>{"use strict";var t,r={502:(t,r,e)=>{e(5666),e(1058),e(1539),e(8674);var n=e(9755),o=e.n(n),a=e(9669),u=e.n(a),i=e(1584),c=e.n(i),l=e(1763),f=e.n(l),p=e(7037),s=e.n(p),y=e(1469),d=e.n(y);function h(t,r){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=v(t))||r&&t&&"number"==typeof t.length){e&&(t=e);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,i=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return u=t.done,t},e:function(t){i=!0,a=t},f:function(){try{u||null==e.return||e.return()}finally{if(i)throw a}}}}function v(t,r){if(t){if("string"==typeof t)return b(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?b(t,r):void 0}}function b(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e{if(!e){var u=1/0;for(f=0;f=a)&&Object.keys(n.O).every((t=>n.O[t](e[c])))?e.splice(c--,1):(i=!1,a0&&t[f-1][2]>a;f--)t[f]=t[f-1];t[f]=[e,o,a]},n.n=t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return n.d(r,{a:r}),r},n.d=(t,r)=>{for(var e in r)n.o(r,e)&&!n.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:r[e]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,r)=>Object.prototype.hasOwnProperty.call(t,r),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),n.j=375,(()=>{var t={375:0};n.O.j=r=>0===t[r];var r=(r,e)=>{var o,a,[u,i,c]=e,l=0;for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(c)var f=c(n);for(r&&r(e);ln(502)));o=n.O(o)})(); //# sourceMappingURL=betting.js.map \ No newline at end of file diff --git a/hwe/js/betting.js.map b/hwe/js/betting.js.map index be817968..08ba729e 100644 --- a/hwe/js/betting.js.map +++ b/hwe/js/betting.js.map @@ -1 +1 @@ -{"version":3,"file":"betting.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/betting.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import $ from 'jquery';\nimport axios from 'axios';\nimport { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';\nimport { InvalidResponse } from './defs';\nimport { convertFormData } from './util/convertFormData';\nimport { unwrap_any } from './util/unwrap_any';\n\n$(function($){\n setAxiosXMLHttpRequest();\n\n $('.submitBtn').on('click', async function(e){\n e.preventDefault();\n\n const $this = $(this);\n const target = parseInt($this.data('target'));\n const amount = parseInt(unwrap_any($(`#target_${target}`).val()));\n\n let result: InvalidResponse;\n\n try{\n const response = await axios({\n url: 'j_betting.php',\n responseType: 'json',\n method: 'post',\n data: convertFormData({\n target: target,\n amount: amount\n })\n });\n result = response.data;\n }catch(e){\n console.error(e);\n alert(`에러: ${e}`);\n location.reload();\n return;\n }\n\n if(!result.result){\n alert(`베팅을 실패했습니다: ${result.reason}`);\n location.reload();\n return;\n }\n\n location.reload();\n return;\n });\n});","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 375;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t375: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(502)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertFormData","values","formData","FormData","simpleConv","v","toString","TypeError","Object","entries","key","value","arrKey","subValue","append","NotNullExpected","message","this","name","Error","unwrap_any","result","$","on","e","preventDefault","$this","target","parseInt","data","amount","val","url","responseType","method","response","console","error","alert","location","reload","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"betting.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/betting.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import $ from 'jquery';\nimport axios from 'axios';\nimport { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';\nimport { InvalidResponse } from './defs';\nimport { convertFormData } from './util/convertFormData';\nimport { unwrap_any } from './util/unwrap_any';\n\n$(function($){\n setAxiosXMLHttpRequest();\n\n $('.submitBtn').on('click', async function(e){\n e.preventDefault();\n\n const $this = $(this);\n const target = parseInt($this.data('target'));\n const amount = parseInt(unwrap_any($(`#target_${target}`).val()));\n\n let result: InvalidResponse;\n\n try{\n const response = await axios({\n url: 'j_betting.php',\n responseType: 'json',\n method: 'post',\n data: convertFormData({\n target: target,\n amount: amount\n })\n });\n result = response.data;\n }catch(e){\n console.error(e);\n alert(`에러: ${e}`);\n location.reload();\n return;\n }\n\n if(!result.result){\n alert(`베팅을 실패했습니다: ${result.reason}`);\n location.reload();\n return;\n }\n\n location.reload();\n return;\n });\n});","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 375;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t375: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(502)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertFormData","values","formData","FormData","simpleConv","v","toString","TypeError","Object","entries","key","value","arrKey","subValue","append","Error","NotNullExpected","unwrap_any","result","$","on","e","preventDefault","$this","this","target","parseInt","data","amount","val","url","responseType","method","response","console","error","alert","location","reload","reason","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/chiefCenter.js b/hwe/js/chiefCenter.js index 9326f93f..fff319d6 100644 --- a/hwe/js/chiefCenter.js +++ b/hwe/js/chiefCenter.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={1329:(e,t,r)=>{r(7042),r(1539),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948),r(8674);var n=r(6026),o=r.n(n),i=(r(5666),r(9826),r(1249),r(1058),r(9669)),a=r.n(i),u=r(9755),c=r.n(u),f=r(9490);function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"";return s(this,o),T(d(e=n.call(this,t)),"name","RuntimeError"),e.message=t,e}return t=o,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&p(t.prototype,r),o}(m(Error)));function O(e){if(null==e)throw new j;return e}function S(){alert("작업을 실패했습니다.")}function _(e){return e>=2?"cyan":1==e?"skyblue":null}r(3734),a().defaults.headers.common["X-Requested-With"]="XMLHttpRequest",String.prototype.format=function(){for(var e=arguments.length,t=new Array(e),r=0;r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function F(e,t){if(e){if("string"==typeof e)return N(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{0}".format(t.name)),u=_(t.npcType);u&&a.css("color",u),i.name.empty().append(a)}else i.name.html("");i.officerLevelText.text(t.officerLevelText),t.turnTime&&(o=f.ou.fromSQL(t.turnTime));var l=i.turn;c().each(t.turn,(function(e,t){o?l[e].turnTime.text(o.toFormat("HH:mm")):l[e].turnTime.text(""),l[e].turnText.html(t).css("font-size","13px");var n=O(l[e].turnPad.innerWidth()),i=O(l[e].turnText.outerWidth());if(i>.95*n){var a=13*n/i*.9;l[e].turnText.css("font-size","{0}px".format(a))}o&&(o=o.plus({minutes:r}))}))})),i=z(o()(5,13)),e.prev=11,i.s();case 13:if((u=i.n()).done){e.next=20;break}if(!((l=u.value)in n)){e.next=17;break}return e.abrupt("continue",18);case 17:l in Q&&X(l);case 18:e.next=13;break;case 20:e.next=25;break;case 22:e.prev=22,e.t0=e.catch(11),i.e(e.t0);case 25:return e.prev=25,i.f(),e.finish(25);case 28:Q=n;case 29:case"end":return e.stop()}}),e,null,[[11,22,25,28]])})))).apply(this,arguments)}function J(){return(J=W(regeneratorRuntime.mark((function e(t,r){var n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log(t,r),e.prev=1,e.next=4,a()({url:"j_set_chief_command.php",responseType:"json",method:"post",data:q({turnList:t,action:r})});case 4:return n=e.sent,(o=n.data).result||alert(o.reason),e.next=9,$();case 9:e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),console.error(e.t0),S();case 15:case"end":return e.stop()}}),e,null,[[1,11]])})))).apply(this,arguments)}function K(e){return V.apply(this,arguments)}function V(){return(V=W(regeneratorRuntime.mark((function e(t){var r,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a()({url:"j_chief_turn.php",responseType:"json",method:"post",data:q({amount:t})});case 3:return r=e.sent,(n=r.data).result||alert(n.reason),e.next=8,$();case 8:e.next=14;break;case 10:e.prev=10,e.t0=e.catch(0),console.error(e.t0),S();case 14:case"end":return e.stop()}}),e,null,[[0,10]])})))).apply(this,arguments)}jQuery((function(e){U=function(){var e,t={btns:c()("#turnPush,#turnPull,#setCommand")},r=z(o()(5,13));try{for(r.s();!(e=r.n()).done;){var n,i=e.value,a=c()("#chief_{0}".format(i)),u=a.find(".chiefLevelText"),f=a.find(".chiefName"),l=[],s=z(o()(maxChiefTurn));try{for(s.s();!(n=s.n()).done;){var p=n.value,h=a.find(".turn{0}".format(p)),v=h.find(".chiefTurnTime"),y=h.find(".chiefTurnPad"),d=h.find(".chiefTurnText");l.push({turnTime:v,turnPad:y,turnText:d})}}catch(e){s.e(e)}finally{s.f()}t[i]={officerLevelText:u,name:f,turn:l}}}catch(e){r.e(e)}finally{r.f()}return t}(),$(),e("#reloadTable").on("click",$),e("#setCommand").on("click",(function(){var t=B(e("#chiefTurnSelector").val()).map((function(e){return parseInt(e)})),r=e("#chiefCommandList option:selected");return r.data("reqarg")?e.redirect("b_processing.php",{command:O(r.val()),turnList:t.join("_"),is_chief:!0},"GET"):function(e,t){J.apply(this,arguments)}(t,B(r.val())),!1})),e("#turnPush").on("click",(function(){return K(1),!1})),e("#turnPull").on("click",(function(){return K(-1),!1}))}))}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.m=t,e=[],n.O=(t,r,o,i)=>{if(!r){var a=1/0;for(l=0;l=i)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(u=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[r,o,i]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.j=310,(()=>{var e={310:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,i,[a,u,c]=r,f=0;for(o in u)n.o(u,o)&&(n.m[o]=u[o]);if(c)var l=c(n);for(t&&t(r);fn(1329)));o=n.O(o)})(); +(()=>{"use strict";var e,t={1329:(e,t,r)=>{r(7042),r(1539),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948),r(8674);var n=r(6026),o=r.n(n),i=(r(5666),r(9826),r(1249),r(1058),r(9669)),u=r.n(i),a=r(9755),c=r.n(a),f=r(9490);function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){return!t||"object"!==l(t)&&"function"!=typeof t?h(e):t}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e){var t="function"==typeof Map?new Map:void 0;return(y=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return v(e,arguments,b(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),m(n,e)})(e)}function v(e,t,r){return(v=d()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&m(o,r.prototype),o}).apply(null,arguments)}function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function g(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}r(4916),r(5306),r(2479),r(9714),r(189),r(4723),r(3123),r(3210),r(2222),r(8304),r(489),r(2772),r(2419),r(1532),Error;var w=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}(o,e);var t,r,n=(t=o,r=d(),function(){var e,n=b(t);if(r){var o=b(this).constructor;e=Reflect.construct(n,arguments,o)}else e=n.apply(this,arguments);return p(this,e)});function o(){var e;s(this,o);for(var t=arguments.length,r=new Array(t),i=0;i=2?"cyan":1==e?"skyblue":null}r(3734),u().defaults.headers.common["X-Requested-With"]="XMLHttpRequest",String.prototype.format=function(){for(var e=arguments.length,t=new Array(e),r=0;r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){a=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(a)throw i}}}}function L(e,t){if(e){if("string"==typeof e)return I(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?I(e,t):void 0}}function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){a=!0,i=e},f:function(){try{u||null==r.return||r.return()}finally{if(a)throw i}}}}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{0}".format(t.name)),a=j(t.npcType);a&&u.css("color",a),i.name.empty().append(u)}else i.name.html("");i.officerLevelText.text(t.officerLevelText),t.turnTime&&(o=f.ou.fromSQL(t.turnTime));var l=i.turn;c().each(t.turn,(function(e,t){o?l[e].turnTime.text(o.toFormat("HH:mm")):l[e].turnTime.text(""),l[e].turnText.html(t).css("font-size","13px");var n=x(l[e].turnPad.innerWidth()),i=x(l[e].turnText.outerWidth());if(i>.95*n){var u=13*n/i*.9;l[e].turnText.css("font-size","{0}px".format(u))}o&&(o=o.plus({minutes:r}))}))})),i=B(o()(5,13)),e.prev=11,i.s();case 13:if((a=i.n()).done){e.next=20;break}if(!((l=a.value)in n)){e.next=17;break}return e.abrupt("continue",18);case 17:l in W&&D(l);case 18:e.next=13;break;case 20:e.next=25;break;case 22:e.prev=22,e.t0=e.catch(11),i.e(e.t0);case 25:return e.prev=25,i.f(),e.finish(25);case 28:W=n;case 29:case"end":return e.stop()}}),e,null,[[11,22,25,28]])})))).apply(this,arguments)}function X(){return(X=q(regeneratorRuntime.mark((function e(t,r){var n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log(t,r),e.prev=1,e.next=4,u()({url:"j_set_chief_command.php",responseType:"json",method:"post",data:M({turnList:t,action:r})});case 4:return n=e.sent,(o=n.data).result||alert(o.reason),e.next=9,Q();case 9:e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),console.error(e.t0),T();case 15:case"end":return e.stop()}}),e,null,[[1,11]])})))).apply(this,arguments)}function $(e){return G.apply(this,arguments)}function G(){return(G=q(regeneratorRuntime.mark((function e(t){var r,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,u()({url:"j_chief_turn.php",responseType:"json",method:"post",data:M({amount:t})});case 3:return r=e.sent,(n=r.data).result||alert(n.reason),e.next=8,Q();case 8:e.next=14;break;case 10:e.prev=10,e.t0=e.catch(0),console.error(e.t0),T();case 14:case"end":return e.stop()}}),e,null,[[0,10]])})))).apply(this,arguments)}jQuery((function(e){z=function(){var e,t={btns:c()("#turnPush,#turnPull,#setCommand")},r=B(o()(5,13));try{for(r.s();!(e=r.n()).done;){var n,i=e.value,u=c()("#chief_{0}".format(i)),a=u.find(".chiefLevelText"),f=u.find(".chiefName"),l=[],s=B(o()(maxChiefTurn));try{for(s.s();!(n=s.n()).done;){var p=n.value,h=u.find(".turn{0}".format(p)),y=h.find(".chiefTurnTime"),v=h.find(".chiefTurnPad"),d=h.find(".chiefTurnText");l.push({turnTime:y,turnPad:v,turnText:d})}}catch(e){s.e(e)}finally{s.f()}t[i]={officerLevelText:a,name:f,turn:l}}}catch(e){r.e(e)}finally{r.f()}return t}(),Q(),e("#reloadTable").on("click",Q),e("#setCommand").on("click",(function(){var t=F(e("#chiefTurnSelector").val()).map((function(e){return parseInt(e)})),r=e("#chiefCommandList option:selected");return r.data("reqarg")?e.redirect("b_processing.php",{command:x(r.val()),turnList:t.join("_"),is_chief:!0},"GET"):function(e,t){X.apply(this,arguments)}(t,F(r.val())),!1})),e("#turnPush").on("click",(function(){return $(1),!1})),e("#turnPull").on("click",(function(){return $(-1),!1}))}))}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.m=t,e=[],n.O=(t,r,o,i)=>{if(!r){var u=1/0;for(l=0;l=i)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(a=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[r,o,i]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.j=310,(()=>{var e={310:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,i,[u,a,c]=r,f=0;for(o in a)n.o(a,o)&&(n.m[o]=a[o]);if(c)var l=c(n);for(t&&t(r);fn(1329)));o=n.O(o)})(); //# sourceMappingURL=chiefCenter.js.map \ No newline at end of file diff --git a/hwe/js/chiefCenter.js.map b/hwe/js/chiefCenter.js.map index 9a06344a..6e0c49db 100644 --- a/hwe/js/chiefCenter.js.map +++ b/hwe/js/chiefCenter.js.map @@ -1 +1 @@ -{"version":3,"file":"chiefCenter.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/chiefCenter.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { range } from 'lodash';\r\nimport { DateTime } from 'luxon';\r\nimport { errUnknown, getNpcColor } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { unwrap_any } from \"./util/unwrap_any\";\r\n\r\ndeclare const maxChiefTurn: number;\r\n\r\ntype TurnDOMObj = {\r\n turnTime: JQuery,\r\n turnPad: JQuery,\r\n turnText: JQuery\r\n};\r\n\r\ntype TableObj = {\r\n btns: JQuery;\r\n [key: number]: {\r\n officerLevelText: JQuery,\r\n name: JQuery,\r\n turn: TurnDOMObj[],\r\n }\r\n}\r\n\r\ntype ChiefResponse = InvalidResponse | {\r\n result: true,\r\n date: string,\r\n nationTurnBrief: {\r\n name:string|null,\r\n turnTime:string|null,\r\n officerLevelText:string,\r\n npcType:number,\r\n turn:string\r\n }[],\r\n isChief: boolean,\r\n turnTerm: number\r\n}\r\n\r\nlet filledChiefList: Record = {};\r\nlet chiefTableObj: TableObj = undefined as unknown as TableObj;//TODO: 매우 지저분하다. class 기반으로 고치던가 할 것\r\n\r\n/*\r\nfunction clearTable() {\r\n $('.chiefLevelText').html('-');\r\n $('.chiefTurnTime, .chiefTurnText, .chiefName').html(' ');\r\n}\r\n*/\r\n\r\nfunction genChiefTableObj(): TableObj {\r\n const objTable: TableObj = {\r\n btns: $('#turnPush,#turnPull,#setCommand')\r\n };\r\n\r\n for (const chiefIdx of range(5, 13)) {\r\n const $plate = $('#chief_{0}'.format(chiefIdx));\r\n const $officerLevelText = $plate.find('.chiefLevelText');\r\n const $name = $plate.find('.chiefName');\r\n const turn: TurnDOMObj[] = [];\r\n for (const turnIdx of range(maxChiefTurn)) {\r\n const $turn = $plate.find('.turn{0}'.format(turnIdx));\r\n const $turnTime = $turn.find('.chiefTurnTime');\r\n const $turnPad = $turn.find('.chiefTurnPad');\r\n const $turnText = $turn.find('.chiefTurnText');\r\n turn.push({ turnTime: $turnTime, turnPad: $turnPad, turnText: $turnText });\r\n }\r\n objTable[chiefIdx] = {\r\n officerLevelText: $officerLevelText,\r\n name: $name,\r\n turn: turn\r\n };\r\n }\r\n\r\n return objTable;\r\n}\r\n\r\n\r\n\r\nfunction clearChief(chiefIdx: number): void {\r\n const $plate = $('#chief_{0}'.format(chiefIdx));\r\n $plate.find('.chiefLevelText').html('-');\r\n $plate.find('.chiefTurnTime, .chiefTurnText, .chiefName').html(' ');\r\n}\r\n\r\nasync function reloadTable() {\r\n\r\n const data: ChiefResponse = await (async () => {\r\n try {\r\n const response = await axios({\r\n url: 'j_getChiefTurn.php',\r\n responseType: 'json'\r\n });\r\n return response.data;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n errUnknown();\r\n }\r\n })();\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n return;\r\n }\r\n const turnTerm = data.turnTerm;\r\n const tmpFilledChiefList:Record = {};\r\n\r\n if (data.isChief) {\r\n chiefTableObj.btns.css('visibility', 'visible');\r\n }\r\n else {\r\n chiefTableObj.btns.css('visibility', 'hidden');\r\n }\r\n $.each(data.nationTurnBrief, function (chiefIdx, chiefInfo) {\r\n tmpFilledChiefList[chiefIdx] = true;\r\n filledChiefList[chiefIdx] = true;\r\n\r\n const plateObj = chiefTableObj[chiefIdx];\r\n if (chiefInfo.name) {\r\n const $name = $('{0}'.format(chiefInfo.name));\r\n const nameColor = getNpcColor(chiefInfo.npcType);\r\n if (nameColor) {\r\n $name.css('color', nameColor);\r\n }\r\n plateObj.name.empty().append($name);\r\n }\r\n else {\r\n plateObj.name.html('');\r\n }\r\n\r\n plateObj.officerLevelText.text(chiefInfo.officerLevelText);\r\n\r\n let turnTimeObj: DateTime|undefined;\r\n\r\n if (chiefInfo.turnTime) {\r\n turnTimeObj = DateTime.fromSQL(chiefInfo.turnTime);\r\n }\r\n\r\n const turnList = plateObj.turn;\r\n $.each(chiefInfo.turn, function (turnIdx, turnText) {\r\n if (turnTimeObj) {\r\n turnList[turnIdx].turnTime.text(turnTimeObj.toFormat('HH:mm'));\r\n }\r\n else {\r\n turnList[turnIdx].turnTime.text('');\r\n }\r\n\r\n turnList[turnIdx].turnText.html(turnText).css('font-size', '13px');\r\n const oWidth = unwrap(turnList[turnIdx].turnPad.innerWidth());\r\n const iWidth = unwrap(turnList[turnIdx].turnText.outerWidth());\r\n if (iWidth > oWidth * 0.95) {\r\n const newFontSize = 13 * oWidth / iWidth * 0.9;\r\n turnList[turnIdx].turnText.css('font-size', '{0}px'.format(newFontSize));\r\n }\r\n if (turnTimeObj) {\r\n turnTimeObj = turnTimeObj.plus({'minutes': turnTerm});\r\n }\r\n\r\n });\r\n });\r\n\r\n for (const idx of range(5, 13)) {\r\n if (idx in tmpFilledChiefList) {\r\n continue;\r\n }\r\n if (idx in filledChiefList) {\r\n clearChief(idx);\r\n }\r\n }\r\n filledChiefList = tmpFilledChiefList;\r\n}\r\n\r\nasync function reserveTurn(turnList: number[], command: string) {\r\n console.log(turnList, command);\r\n try{\r\n\r\n const response = await axios({\r\n url: 'j_set_chief_command.php',\r\n responseType:'json',\r\n method: 'post',\r\n data: convertFormData({\r\n turnList,\r\n action: command\r\n })\r\n });\r\n\r\n const data: InvalidResponse = response.data;\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n }\r\n await reloadTable();\r\n }\r\n catch(e){\r\n console.error(e);\r\n errUnknown();\r\n }\r\n}\r\n\r\nasync function pushTurn(turnCnt: number) {\r\n try {\r\n const response = await axios({\r\n url: 'j_chief_turn.php',\r\n responseType: 'json',\r\n method: 'post',\r\n data: convertFormData({\r\n amount: turnCnt\r\n })\r\n });\r\n const data = response.data;\r\n if (!data.result) {\r\n alert(data.reason);\r\n }\r\n await reloadTable();\r\n }\r\n catch (e) {\r\n console.error(e);\r\n errUnknown();\r\n }\r\n}\r\n\r\njQuery(function ($) {\r\n\r\n chiefTableObj = genChiefTableObj();\r\n void reloadTable();\r\n $('#reloadTable').on('click', reloadTable);\r\n $('#setCommand').on('click', function () {\r\n const turnList = unwrap_any($('#chiefTurnSelector').val()).map(function (v) { return parseInt(v); });\r\n const $command = $('#chiefCommandList option:selected');\r\n if ($command.data('reqarg')) {\r\n $.redirect(\r\n \"b_processing.php\", {\r\n command: unwrap($command.val()),\r\n turnList: turnList.join('_'),\r\n is_chief: true\r\n }, \"GET\");\r\n }\r\n else {\r\n void reserveTurn(turnList, unwrap_any($command.val()));\r\n }\r\n return false;\r\n });\r\n\r\n $('#turnPush').on('click', function () {\r\n void pushTurn(1);\r\n return false;\r\n });\r\n\r\n $('#turnPull').on('click', function () {\r\n void pushTurn(-1);\r\n return false;\r\n });\r\n\r\n})","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 310;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t310: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","result","errUnknown","alert","getNpcColor","npcType","String","prototype","format","args","replace","match","number","toString","convertFormData","values","formData","FormData","simpleConv","v","TypeError","Object","entries","key","value","arrKey","subValue","append","unwrap_any","filledChiefList","chiefTableObj","undefined","clearChief","chiefIdx","$plate","find","html","reloadTable","url","responseType","response","data","console","error","reason","turnTerm","tmpFilledChiefList","isChief","btns","css","nationTurnBrief","chiefInfo","turnTimeObj","plateObj","$name","nameColor","empty","officerLevelText","text","turnTime","turnList","turn","turnIdx","turnText","toFormat","oWidth","turnPad","innerWidth","iWidth","outerWidth","newFontSize","plus","idx","command","log","method","action","pushTurn","turnCnt","amount","jQuery","$","objTable","$officerLevelText","maxChiefTurn","$turn","$turnTime","$turnPad","$turnText","push","genChiefTableObj","on","val","map","parseInt","$command","redirect","join","is_chief","reserveTurn","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"chiefCenter.js","mappings":"uBAAIA,E,+jECG8BC,MAA3B,IAeMC,EAAb,a,kOAAA,U,IAAA,G,EAAA,E,mJAAA,2JACkB,mBADlB,cAAqCC,YAI/B,SAAU,EAAUC,GACtB,GAAIA,MAAAA,EACA,MAAM,IAAIF,EAEd,OAAOE,ECwRL,SAAUC,IACZC,MAAM,eAgCJ,SAAUC,EAAYC,GACxB,OAAIA,GAAW,EACJ,OAEI,GAAXA,EACO,UAEJ,K,QAnVX,gDAAoD,iBA6HpDC,OAAOC,UAAUC,OAAS,WAAsC,2BAAzBC,EAAyB,yBAAzBA,EAAyB,gBAC5D,OAAOC,KAAKC,QAAQ,YAAY,SAAUC,EAAOC,GAC7C,YAA+B,IAAhBJ,EAAKI,GAA0BJ,EAAKI,GAAQC,WAAaF,M,0lCCpI1E,SAAUG,EAAgBC,GAgB5B,IAfA,IAAMC,EAAW,IAAIC,SAEfC,EAAa,SAACC,GAChB,GAAG,IAASA,GACR,OAAOA,EAEX,GAAG,IAASA,GACR,OAAOA,EAAEN,WAEb,GAAG,IAAUM,GACT,OAAOA,EAAE,OAAO,QAEpB,MAAM,IAAIpB,UAAU,0BAGxB,MAA0BqB,OAAOC,QAAQN,GAAzC,eAAiD,CAA7C,O,EAAA,K,EAAA,E,miBAAOO,EAAP,KAAYC,EAAZ,KACA,GAAG,IAAQA,GAAX,CACI,IADc,EACRC,EAAS,GAAH,OAAMF,EAAN,MADE,IAEQC,GAFR,IAEd,2BAA4B,KAAlBE,EAAkB,QACxBT,EAASU,OAAOF,EAAQN,EAAWO,KAHzB,oCAQlBT,EAASU,OAAOJ,EAAKJ,EAAWK,I,QAGpC,OAAOP,EC3BL,SAAUW,EAAc3B,GAC1B,GAAIA,MAAAA,EACA,MAAM,IAAIF,EAEd,OAAOE,E,20CCkCX,IAAI4B,EAA2C,GAC3CC,OAA0BC,EAsC9B,SAASC,EAAWC,GAChB,IAAMC,EAAS,IAAE,aAAa1B,OAAOyB,IACrCC,EAAOC,KAAK,mBAAmBC,KAAK,KACpCF,EAAOC,KAAK,8CAA8CC,KAAK,U,SAGpDC,I,gFAAf,6HAEsC,2BAAC,4HAEJ,IAAM,CACzBC,IAAK,qBACLC,aAAc,SAJS,cAErBC,EAFqB,yBAMpBA,EAASC,MANW,gCAS3BC,QAAQC,MAAR,MACAzC,IAV2B,wDAAD,GAFtC,WAEUuC,EAFV,QAgBcxC,OAhBd,uBAiBQE,MAAMsC,EAAKG,QAjBnB,0BAoBUC,EAAWJ,EAAKI,SAChBC,EAA6C,GAE/CL,EAAKM,QACLjB,EAAckB,KAAKC,IAAI,aAAc,WAGrCnB,EAAckB,KAAKC,IAAI,aAAc,UAEzC,SAAOR,EAAKS,iBAAiB,SAAUjB,EAAUkB,GAC7CL,EAAmBb,IAAY,EAC/BJ,EAAgBI,IAAY,EAE5B,IAeImB,EAfEC,EAAWvB,EAAcG,GAC/B,GAAIkB,EAAUG,KAAM,CAChB,IAAMC,EAAQ,IAAE,mBAAmB/C,OAAO2C,EAAUG,OAC9CE,EAAYpD,EAAY+C,EAAU9C,SACpCmD,GACAD,EAAMN,IAAI,QAASO,GAEvBH,EAASC,KAAKG,QAAQ9B,OAAO4B,QAG7BF,EAASC,KAAKlB,KAAK,IAGvBiB,EAASK,iBAAiBC,KAAKR,EAAUO,kBAIrCP,EAAUS,WACVR,EAAc,aAAiBD,EAAUS,WAG7C,IAAMC,EAAWR,EAASS,KAC1B,SAAOX,EAAUW,MAAM,SAAUC,EAASC,GAClCZ,EACAS,EAASE,GAASH,SAASD,KAAKP,EAAYa,SAAS,UAGrDJ,EAASE,GAASH,SAASD,KAAK,IAGpCE,EAASE,GAASC,SAAS5B,KAAK4B,GAAUf,IAAI,YAAa,QAC3D,IAAMiB,EAAS,EAAOL,EAASE,GAASI,QAAQC,cAC1CC,EAAS,EAAOR,EAASE,GAASC,SAASM,cACjD,GAAID,EAAkB,IAATH,EAAe,CACxB,IAAMK,EAAc,GAAKL,EAASG,EAAS,GAC3CR,EAASE,GAASC,SAASf,IAAI,YAAa,QAAQzC,OAAO+D,IAE3DnB,IACAA,EAAcA,EAAYoB,KAAK,CAAC,QAAW3B,WAvE3D,IA6EsB,IAAM,EAAG,KA7E/B,iEA6Ee4B,EA7Ef,WA8EmB3B,GA9EnB,wDAiFY2B,KAAO5C,GACPG,EAAWyC,GAlFvB,iJAqFI5C,EAAkBiB,EArFtB,kE,uEAwFA,WAA2Be,EAAoBa,GAA/C,+FACIhC,QAAQiC,IAAId,EAAUa,GAD1B,kBAI+B,IAAM,CACzBpC,IAAK,0BACLC,aAAa,OACbqC,OAAQ,OACRnC,KAAM1B,EAAgB,CAClB8C,SAAAA,EACAgB,OAAQH,MAVxB,cAIclC,EAJd,QAccC,EAAwBD,EAASC,MAE7BxC,QACNE,MAAMsC,EAAKG,QAjBvB,SAmBcP,IAnBd,yDAsBQK,QAAQC,MAAR,MACAzC,IAvBR,2D,+BA2Be4E,EAAS,G,gFAAxB,WAAwBC,GAAxB,iHAE+B,IAAM,CACzBzC,IAAK,mBACLC,aAAc,OACdqC,OAAQ,OACRnC,KAAM1B,EAAgB,CAClBiE,OAAQD,MAPxB,cAEcvC,EAFd,QAUcC,EAAOD,EAASC,MACZxC,QACNE,MAAMsC,EAAKG,QAZvB,SAccP,IAdd,yDAiBQK,QAAQC,MAAR,MACAzC,IAlBR,2D,sBAsBA+E,QAAO,SAAUC,GAEbpD,EA9KJ,WACI,IADqB,EACfqD,EAAqB,CACvBnC,KAAM,IAAE,oCAFS,IAKE,IAAM,EAAG,KALX,IAKrB,2BAAqC,OAA1Bf,EAA0B,QAC3BC,EAAS,IAAE,aAAa1B,OAAOyB,IAC/BmD,EAAoBlD,EAAOC,KAAK,mBAChCoB,EAAQrB,EAAOC,KAAK,cACpB2B,EAAqB,GAJM,IAKX,IAAMuB,eALK,IAKjC,2BAA2C,KAAhCtB,EAAgC,QACjCuB,EAAQpD,EAAOC,KAAK,WAAW3B,OAAOuD,IACtCwB,EAAYD,EAAMnD,KAAK,kBACvBqD,EAAWF,EAAMnD,KAAK,iBACtBsD,EAAYH,EAAMnD,KAAK,kBAC7B2B,EAAK4B,KAAK,CAAE9B,SAAU2B,EAAWpB,QAASqB,EAAUxB,SAAUyB,KAVjC,8BAYjCN,EAASlD,GAAY,CACjByB,iBAAkB0B,EAClB9B,KAAMC,EACNO,KAAMA,IApBO,8BAwBrB,OAAOqB,EAsJSQ,GACXtD,IACL6C,EAAE,gBAAgBU,GAAG,QAASvD,GAC9B6C,EAAE,eAAeU,GAAG,SAAS,WACzB,IAAM/B,EAAWjC,EAAqBsD,EAAE,sBAAsBW,OAAOC,KAAI,SAAU1E,GAAK,OAAO2E,SAAS3E,MAClG4E,EAAWd,EAAE,qCAYnB,OAXIc,EAASvD,KAAK,UACdyC,EAAEe,SACE,mBAAoB,CACpBvB,QAAS,EAAOsB,EAASH,OACzBhC,SAAUA,EAASqC,KAAK,KACxBC,UAAU,GACX,O,SA/DY,EAAZ,G,wBAkEEC,CAAYvC,EAAUjC,EAAmBoE,EAASH,SAEpD,KAGXX,EAAE,aAAaU,GAAG,SAAS,WAEvB,OADKd,EAAS,IACP,KAGXI,EAAE,aAAaU,GAAG,SAAS,WAEvB,OADKd,GAAU,IACR,UC3PXuB,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBxE,IAAjByE,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CACjDI,GAAIJ,EACJK,QAAQ,EACRH,QAAS,IAUV,OANAI,EAAoBN,GAAUO,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG3EI,EAAOE,QAAS,EAGTF,EAAOD,QAIfH,EAAoBS,EAAIF,EN5BpBhH,EAAW,GACfyG,EAAoBU,EAAI,CAAC/G,EAAQgH,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIzH,EAAS0H,OAAQD,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAYtH,EAASyH,GACpCE,GAAY,EACPC,EAAI,EAAGA,EAAIR,EAASM,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAa9F,OAAOqG,KAAKpB,EAAoBU,GAAGW,OAAOpG,GAAS+E,EAAoBU,EAAEzF,GAAK0F,EAASQ,MAC9IR,EAASW,OAAOH,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACb3H,EAAS+H,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACEnF,IAAN8F,IAAiB5H,EAAS4H,IAGhC,OAAO5H,EAvBNkH,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIzH,EAAS0H,OAAQD,EAAI,GAAKzH,EAASyH,EAAI,GAAG,GAAKH,EAAUG,IAAKzH,EAASyH,GAAKzH,EAASyH,EAAI,GACrGzH,EAASyH,GAAK,CAACL,EAAUC,EAAIC,IOJ/Bb,EAAoBwB,EAAKpB,IACxB,IAAIqB,EAASrB,GAAUA,EAAOsB,WAC7B,IAAOtB,EAAiB,QACxB,IAAM,EAEP,OADAJ,EAAoB2B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRzB,EAAoB2B,EAAI,CAACxB,EAAS0B,KACjC,IAAI,IAAI5G,KAAO4G,EACX7B,EAAoB8B,EAAED,EAAY5G,KAAS+E,EAAoB8B,EAAE3B,EAASlF,IAC5EF,OAAOgH,eAAe5B,EAASlF,EAAK,CAAE+G,YAAY,EAAMC,IAAKJ,EAAW5G,MCJ3E+E,EAAoBkC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO/H,MAAQ,IAAIgI,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAXC,OAAqB,OAAOA,QALjB,GCAxBtC,EAAoB8B,EAAI,CAACS,EAAKC,IAAUzH,OAAOd,UAAUwI,eAAejC,KAAK+B,EAAKC,GCClFxC,EAAoBuB,EAAKpB,IACH,oBAAXuC,QAA0BA,OAAOC,aAC1C5H,OAAOgH,eAAe5B,EAASuC,OAAOC,YAAa,CAAEzH,MAAO,WAE7DH,OAAOgH,eAAe5B,EAAS,aAAc,CAAEjF,OAAO,KCLvD8E,EAAoB4C,IAAOxC,IAC1BA,EAAOyC,MAAQ,GACVzC,EAAO0C,WAAU1C,EAAO0C,SAAW,IACjC1C,GCHRJ,EAAoBmB,EAAI,I,MCKxB,IAAI4B,EAAkB,CACrB,IAAK,GAaN/C,EAAoBU,EAAES,EAAK6B,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4B/G,KACvD,IAGI8D,EAAU+C,GAHTrC,EAAUwC,EAAaC,GAAWjH,EAGhB6E,EAAI,EAC3B,IAAIf,KAAYkD,EACZnD,EAAoB8B,EAAEqB,EAAalD,KACrCD,EAAoBS,EAAER,GAAYkD,EAAYlD,IAGhD,GAAGmD,EAAS,IAAIzJ,EAASyJ,EAAQpD,GAEjC,IADGkD,GAA4BA,EAA2B/G,GACrD6E,EAAIL,EAASM,OAAQD,IACzBgC,EAAUrC,EAASK,GAChBhB,EAAoB8B,EAAEiB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBpC,EAASK,IAAM,EAEhC,OAAOhB,EAAoBU,EAAE/G,IAG1B0J,EAAqBC,KAA6B,uBAAIA,KAA6B,wBAAK,GAC5FD,EAAmBE,QAAQN,EAAqBO,KAAK,KAAM,IAC3DH,EAAmBjE,KAAO6D,EAAqBO,KAAK,KAAMH,EAAmBjE,KAAKoE,KAAKH,K,GC3CvF,IAAII,EAAsBzD,EAAoBU,OAAEjF,EAAW,CAAC,MAAM,IAAOuE,EAAoB,QAC7FyD,EAAsBzD,EAAoBU,EAAE+C,I","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/chiefCenter.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { range } from 'lodash';\r\nimport { DateTime } from 'luxon';\r\nimport { errUnknown, getNpcColor } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { unwrap_any } from \"./util/unwrap_any\";\r\n\r\ndeclare const maxChiefTurn: number;\r\n\r\ntype TurnDOMObj = {\r\n turnTime: JQuery,\r\n turnPad: JQuery,\r\n turnText: JQuery\r\n};\r\n\r\ntype TableObj = {\r\n btns: JQuery;\r\n [key: number]: {\r\n officerLevelText: JQuery,\r\n name: JQuery,\r\n turn: TurnDOMObj[],\r\n }\r\n}\r\n\r\ntype ChiefResponse = InvalidResponse | {\r\n result: true,\r\n date: string,\r\n nationTurnBrief: {\r\n name:string|null,\r\n turnTime:string|null,\r\n officerLevelText:string,\r\n npcType:number,\r\n turn:string\r\n }[],\r\n isChief: boolean,\r\n turnTerm: number\r\n}\r\n\r\nlet filledChiefList: Record = {};\r\nlet chiefTableObj: TableObj = undefined as unknown as TableObj;//TODO: 매우 지저분하다. class 기반으로 고치던가 할 것\r\n\r\n/*\r\nfunction clearTable() {\r\n $('.chiefLevelText').html('-');\r\n $('.chiefTurnTime, .chiefTurnText, .chiefName').html(' ');\r\n}\r\n*/\r\n\r\nfunction genChiefTableObj(): TableObj {\r\n const objTable: TableObj = {\r\n btns: $('#turnPush,#turnPull,#setCommand')\r\n };\r\n\r\n for (const chiefIdx of range(5, 13)) {\r\n const $plate = $('#chief_{0}'.format(chiefIdx));\r\n const $officerLevelText = $plate.find('.chiefLevelText');\r\n const $name = $plate.find('.chiefName');\r\n const turn: TurnDOMObj[] = [];\r\n for (const turnIdx of range(maxChiefTurn)) {\r\n const $turn = $plate.find('.turn{0}'.format(turnIdx));\r\n const $turnTime = $turn.find('.chiefTurnTime');\r\n const $turnPad = $turn.find('.chiefTurnPad');\r\n const $turnText = $turn.find('.chiefTurnText');\r\n turn.push({ turnTime: $turnTime, turnPad: $turnPad, turnText: $turnText });\r\n }\r\n objTable[chiefIdx] = {\r\n officerLevelText: $officerLevelText,\r\n name: $name,\r\n turn: turn\r\n };\r\n }\r\n\r\n return objTable;\r\n}\r\n\r\n\r\n\r\nfunction clearChief(chiefIdx: number): void {\r\n const $plate = $('#chief_{0}'.format(chiefIdx));\r\n $plate.find('.chiefLevelText').html('-');\r\n $plate.find('.chiefTurnTime, .chiefTurnText, .chiefName').html(' ');\r\n}\r\n\r\nasync function reloadTable() {\r\n\r\n const data: ChiefResponse = await (async () => {\r\n try {\r\n const response = await axios({\r\n url: 'j_getChiefTurn.php',\r\n responseType: 'json'\r\n });\r\n return response.data;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n errUnknown();\r\n }\r\n })();\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n return;\r\n }\r\n const turnTerm = data.turnTerm;\r\n const tmpFilledChiefList:Record = {};\r\n\r\n if (data.isChief) {\r\n chiefTableObj.btns.css('visibility', 'visible');\r\n }\r\n else {\r\n chiefTableObj.btns.css('visibility', 'hidden');\r\n }\r\n $.each(data.nationTurnBrief, function (chiefIdx, chiefInfo) {\r\n tmpFilledChiefList[chiefIdx] = true;\r\n filledChiefList[chiefIdx] = true;\r\n\r\n const plateObj = chiefTableObj[chiefIdx];\r\n if (chiefInfo.name) {\r\n const $name = $('{0}'.format(chiefInfo.name));\r\n const nameColor = getNpcColor(chiefInfo.npcType);\r\n if (nameColor) {\r\n $name.css('color', nameColor);\r\n }\r\n plateObj.name.empty().append($name);\r\n }\r\n else {\r\n plateObj.name.html('');\r\n }\r\n\r\n plateObj.officerLevelText.text(chiefInfo.officerLevelText);\r\n\r\n let turnTimeObj: DateTime|undefined;\r\n\r\n if (chiefInfo.turnTime) {\r\n turnTimeObj = DateTime.fromSQL(chiefInfo.turnTime);\r\n }\r\n\r\n const turnList = plateObj.turn;\r\n $.each(chiefInfo.turn, function (turnIdx, turnText) {\r\n if (turnTimeObj) {\r\n turnList[turnIdx].turnTime.text(turnTimeObj.toFormat('HH:mm'));\r\n }\r\n else {\r\n turnList[turnIdx].turnTime.text('');\r\n }\r\n\r\n turnList[turnIdx].turnText.html(turnText).css('font-size', '13px');\r\n const oWidth = unwrap(turnList[turnIdx].turnPad.innerWidth());\r\n const iWidth = unwrap(turnList[turnIdx].turnText.outerWidth());\r\n if (iWidth > oWidth * 0.95) {\r\n const newFontSize = 13 * oWidth / iWidth * 0.9;\r\n turnList[turnIdx].turnText.css('font-size', '{0}px'.format(newFontSize));\r\n }\r\n if (turnTimeObj) {\r\n turnTimeObj = turnTimeObj.plus({'minutes': turnTerm});\r\n }\r\n\r\n });\r\n });\r\n\r\n for (const idx of range(5, 13)) {\r\n if (idx in tmpFilledChiefList) {\r\n continue;\r\n }\r\n if (idx in filledChiefList) {\r\n clearChief(idx);\r\n }\r\n }\r\n filledChiefList = tmpFilledChiefList;\r\n}\r\n\r\nasync function reserveTurn(turnList: number[], command: string) {\r\n console.log(turnList, command);\r\n try{\r\n\r\n const response = await axios({\r\n url: 'j_set_chief_command.php',\r\n responseType:'json',\r\n method: 'post',\r\n data: convertFormData({\r\n turnList,\r\n action: command\r\n })\r\n });\r\n\r\n const data: InvalidResponse = response.data;\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n }\r\n await reloadTable();\r\n }\r\n catch(e){\r\n console.error(e);\r\n errUnknown();\r\n }\r\n}\r\n\r\nasync function pushTurn(turnCnt: number) {\r\n try {\r\n const response = await axios({\r\n url: 'j_chief_turn.php',\r\n responseType: 'json',\r\n method: 'post',\r\n data: convertFormData({\r\n amount: turnCnt\r\n })\r\n });\r\n const data = response.data;\r\n if (!data.result) {\r\n alert(data.reason);\r\n }\r\n await reloadTable();\r\n }\r\n catch (e) {\r\n console.error(e);\r\n errUnknown();\r\n }\r\n}\r\n\r\njQuery(function ($) {\r\n\r\n chiefTableObj = genChiefTableObj();\r\n void reloadTable();\r\n $('#reloadTable').on('click', reloadTable);\r\n $('#setCommand').on('click', function () {\r\n const turnList = unwrap_any($('#chiefTurnSelector').val()).map(function (v) { return parseInt(v); });\r\n const $command = $('#chiefCommandList option:selected');\r\n if ($command.data('reqarg')) {\r\n $.redirect(\r\n \"b_processing.php\", {\r\n command: unwrap($command.val()),\r\n turnList: turnList.join('_'),\r\n is_chief: true\r\n }, \"GET\");\r\n }\r\n else {\r\n void reserveTurn(turnList, unwrap_any($command.val()));\r\n }\r\n return false;\r\n });\r\n\r\n $('#turnPush').on('click', function () {\r\n void pushTurn(1);\r\n return false;\r\n });\r\n\r\n $('#turnPull').on('click', function () {\r\n void pushTurn(-1);\r\n return false;\r\n });\r\n\r\n})","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 310;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t310: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Error","NotNullExpected","TypeError","result","errUnknown","alert","getNpcColor","npcType","String","prototype","format","args","this","replace","match","number","toString","convertFormData","values","formData","FormData","simpleConv","v","Object","entries","key","value","arrKey","subValue","append","unwrap_any","filledChiefList","chiefTableObj","undefined","clearChief","chiefIdx","$plate","find","html","reloadTable","url","responseType","response","data","console","error","reason","turnTerm","tmpFilledChiefList","isChief","btns","css","nationTurnBrief","chiefInfo","turnTimeObj","plateObj","name","$name","nameColor","empty","officerLevelText","text","turnTime","turnList","turn","turnIdx","turnText","toFormat","oWidth","turnPad","innerWidth","iWidth","outerWidth","newFontSize","plus","idx","command","log","method","action","pushTurn","turnCnt","amount","jQuery","$","objTable","$officerLevelText","maxChiefTurn","$turn","$turnTime","$turnPad","$turnText","push","genChiefTableObj","on","val","map","parseInt","$command","redirect","join","is_chief","reserveTurn","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/common.js b/hwe/js/common.js index 58b498fd..93bcf9c1 100644 --- a/hwe/js/common.js +++ b/hwe/js/common.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,n={9003:(t,n,r)=>{function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function i(t,n){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"";return o(this,c),v(l(t=e.call(this,n)),"name","RuntimeError"),t.message=n,t}return n=c,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&i(n.prototype,r),c}(f(Error))),y=r(9755),b=r.n(y),m=(r(3734),r(9669));function g(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,e=new Array(n);r":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return F[t]}))});function O(t){for(var n=t.length,r=0,e=0;e');r.text(n),r.appendTo(t("head"))}})),window.escapeHtml=j,window.isInt=function(t){return+t===t&&!(t%1)},window.mb_strwidth=O,window.mb_strimwidth=function(t,n,r){for(var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=O(e),i=t.length,a=0,u=[],c=n;cr){u.push(e);break}}return u.join("")},window.convertDictById=function(t){for(var n={},r=0,e=Object.values(t);r140},window.convColorValue=function(t){return"#"==t.charAt(0)&&(t=t.substr(1)),t=t.toUpperCase(),new Set(["000080","0000FF","008000","008080","00BFFF","00FF00","00FFFF","20B2AA","2E8B57","483D8B","6495ED","7B68EE","7CFC00","7FFFD4","800000","800080","808000","87CEEB","A0522D","A9A9A9","AFEEEE","BA55D3","E0FFFF","F5F5DC","FF0000","FF00FF","FF6347","FFA500","FFC0CB","FFD700","FFDAB9","FFFF00","FFFFFF"]).has(t)?t:"000000"},window.numberWithCommas=function(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},window.linkifyStrWithOpt=_,window.TemplateEngine=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=/<%(.+?)%>/g,e=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,o=["with(obj) { var r=[];\n"],i=0,a=function t(n,r){return r?o.push(n.match(e)?n+"\n":"r.push("+n+");\n"):o.push(""!=n?'r.push("'+n.replace(/"/g,'\\"')+'");\n':""),t};for(n.e=j,n.linkifyStr=_;;){var u=r.exec(t);if(!u)break;a(t.slice(i,u.index))(u[1],!0),i=u.index+u[0].length}a(t.substr(i,t.length-i)),o.push('return r.join(""); }');var c=o.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",c).apply(n,[n])}catch(t){throw console.error("'"+t.message+"'"," in \n\nCode:\n",o,"\n"),t}},window.getIconPath=function(t,n){return t?window.pathConfig.root+"/d_pic/"+n:window.pathConfig.sharedIcon+"/"+n},window.activeFlip=x,window.combineObject=A,window.combineArray=function(t,n){var r,e=[],o=function(t,n){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,n){if(t){if("string"==typeof t)return g(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?g(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){r&&(t=r);var e=0,o=function(){};return{s:o,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(t.keys());try{for(o.s();!(r=o.n()).done;){var i=r.value,a=t[i];e[i]=A(a,n)}}catch(t){o.e(t)}finally{o.f()}return e},window.activeFlipItem=C,window.errUnknown=function(){alert("작업을 실패했습니다.")},window.errUnknownToast=function(){b().toast({title:"에러!",content:"작업을 실패했습니다.",type:"danger",delay:5e3})},window.quickReject=function(t){void 0===t&&(t="작업을 실패했습니다.");var n=$.Deferred();return n.reject(t),n.promise()},window.nl2br=function(t){return t.replace(/\n/g,"
")},window.getNpcColor=function(t){return t>=2?"cyan":1==t?"skyblue":null},window.initTooltip=E}},r={};function e(t){var o=r[t];if(void 0!==o)return o.exports;var i=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}e.m=n,t=[],e.O=(n,r,o,i)=>{if(!r){var a=1/0;for(f=0;f=i)&&Object.keys(e.O).every((t=>e.O[t](r[c])))?r.splice(c--,1):(u=!1,i0&&t[f-1][2]>i;f--)t[f]=t[f-1];t[f]=[r,o,i]},e.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),e.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),e.j=592,(()=>{var t={592:0};e.O.j=n=>0===t[n];var n=(n,r)=>{var o,i,[a,u,c]=r,l=0;for(o in u)e.o(u,o)&&(e.m[o]=u[o]);if(c)var f=c(e);for(n&&n(r);le(9003)));o=e.O(o)})(); +(()=>{"use strict";var t,n={9003:(t,n,r)=>{function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function i(t,n){return!n||"object"!==e(n)&&"function"!=typeof n?a(t):n}function a(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function u(t){var n="function"==typeof Map?new Map:void 0;return(u=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,e)}function e(){return c(t,arguments,p(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),f(e,t)})(t)}function c(t,n,r){return(c=l()?Reflect.construct:function(t,n,r){var e=[null];e.push.apply(e,n);var o=new(Function.bind.apply(t,e));return r&&f(o,r.prototype),o}).apply(null,arguments)}function l(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function f(t,n){return(f=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,n,r){return n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}r(4916),r(5306),r(2479),r(1539),r(9714),r(1058),r(6992),r(189),r(8783),r(3948),r(4723),r(7042),r(9826),r(3123),r(3210),r(1038),r(2526),r(1817),r(2165),r(2222),r(8304),r(489),r(2772),r(2419),r(1532),Error;var d=function(t){!function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),n&&f(t,n)}(u,t);var n,r,e=(n=u,r=l(),function(){var t,e=p(n);if(r){var o=p(this).constructor;t=Reflect.construct(e,arguments,o)}else t=e.apply(this,arguments);return i(this,t)});function u(){var t;o(this,u);for(var n=arguments.length,r=new Array(n),i=0;it.length)&&(n=t.length);for(var r=0,e=new Array(n);r":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return b[t]}))});function m(t){for(var n=t.length,r=0,e=0;e');r.text(n),r.appendTo(t("head"))}})),window.escapeHtml=g,window.isInt=function(t){return+t===t&&!(t%1)},window.mb_strwidth=m,window.mb_strimwidth=function(t,n,r){for(var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=m(e),i=t.length,a=0,u=[],c=n;cr){u.push(e);break}}return u.join("")},window.convertDictById=function(t){for(var n={},r=0,e=Object.values(t);r140},window.convColorValue=function(t){return"#"==t.charAt(0)&&(t=t.substr(1)),t=t.toUpperCase(),new Set(["000080","0000FF","008000","008080","00BFFF","00FF00","00FFFF","20B2AA","2E8B57","483D8B","6495ED","7B68EE","7CFC00","7FFFD4","800000","800080","808000","87CEEB","A0522D","A9A9A9","AFEEEE","BA55D3","E0FFFF","F5F5DC","FF0000","FF00FF","FF6347","FFA500","FFC0CB","FFD700","FFDAB9","FFFF00","FFFFFF"]).has(t)?t:"000000"},window.numberWithCommas=function(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},window.linkifyStrWithOpt=j,window.TemplateEngine=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=/<%(.+?)%>/g,e=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,o=["with(obj) { var r=[];\n"],i=0,a=function t(n,r){return r?o.push(n.match(e)?n+"\n":"r.push("+n+");\n"):o.push(""!=n?'r.push("'+n.replace(/"/g,'\\"')+'");\n':""),t};for(n.e=g,n.linkifyStr=j;;){var u=r.exec(t);if(!u)break;a(t.slice(i,u.index))(u[1],!0),i=u.index+u[0].length}a(t.substr(i,t.length-i)),o.push('return r.join(""); }');var c=o.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",c).apply(n,[n])}catch(t){throw console.error("'"+t.message+"'"," in \n\nCode:\n",o,"\n"),t}},window.getIconPath=function(t,n){return t?window.pathConfig.root+"/d_pic/"+n:window.pathConfig.sharedIcon+"/"+n},window.activeFlip=O,window.combineObject=_,window.combineArray=function(t,n){var r,e=[],o=function(t,n){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,n){if(t){if("string"==typeof t)return y(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){r&&(t=r);var e=0,o=function(){};return{s:o,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(t.keys());try{for(o.s();!(r=o.n()).done;){var i=r.value,a=t[i];e[i]=_(a,n)}}catch(t){o.e(t)}finally{o.f()}return e},window.activeFlipItem=S,window.errUnknown=function(){alert("작업을 실패했습니다.")},window.errUnknownToast=function(){v().toast({title:"에러!",content:"작업을 실패했습니다.",type:"danger",delay:5e3})},window.quickReject=function(t){void 0===t&&(t="작업을 실패했습니다.");var n=$.Deferred();return n.reject(t),n.promise()},window.nl2br=function(t){return t.replace(/\n/g,"
")},window.getNpcColor=function(t){return t>=2?"cyan":1==t?"skyblue":null},window.initTooltip=x}},r={};function e(t){var o=r[t];if(void 0!==o)return o.exports;var i=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}e.m=n,t=[],e.O=(n,r,o,i)=>{if(!r){var a=1/0;for(f=0;f=i)&&Object.keys(e.O).every((t=>e.O[t](r[c])))?r.splice(c--,1):(u=!1,i0&&t[f-1][2]>i;f--)t[f]=t[f-1];t[f]=[r,o,i]},e.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),e.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),e.j=592,(()=>{var t={592:0};e.O.j=n=>0===t[n];var n=(n,r)=>{var o,i,[a,u,c]=r,l=0;for(o in u)e.o(u,o)&&(e.m[o]=u[o]);if(c)var f=c(e);for(n&&n(r);le(9003)));o=e.O(o)})(); //# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/hwe/js/common.js.map b/hwe/js/common.js.map index 62cc5f64..19f6eb89 100644 --- a/hwe/js/common.js.map +++ b/hwe/js/common.js.map @@ -1 +1 @@ -{"version":3,"file":"common.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/common_deprecated.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { activeFlip, escapeHtml, isInt, mb_strwidth, mb_strimwidth, convertDictById, convertSet, hexToRgb, isBrightColor, convColorValue, numberWithCommas, linkifyStrWithOpt, TemplateEngine, getIconPath, combineObject, combineArray, activeFlipItem, errUnknown, errUnknownToast, quickReject, nl2br, getNpcColor, initTooltip } from \"./common_legacy\";\nimport jQuery from \"jquery\";\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\njQuery(function ($) {\n initTooltip();\n activeFlip();\n\n const customCSS = localStorage.getItem('sam_customCSS');\n if (customCSS) {\n const $style = $('');\n $style.text(customCSS);\n $style.appendTo($('head'));\n }\n});\n\ndeclare global {\n interface Window {\n $: typeof jQuery;\n jQuery: typeof jQuery;\n /** @deprecated Module 사용할 것 */\n escapeHtml: typeof escapeHtml;\n /** @deprecated Module 사용할 것 */\n isInt: typeof isInt;\n /** @deprecated Module 사용할 것 */\n mb_strwidth: typeof mb_strwidth;\n /** @deprecated Module 사용할 것 */\n mb_strimwidth: typeof mb_strimwidth;\n /** @deprecated Module 사용할 것 */\n convertDictById: typeof convertDictById;\n /** @deprecated Module 사용할 것 */\n convertSet: typeof convertSet;\n /** @deprecated Module 사용할 것 */\n hexToRgb: typeof hexToRgb;\n /** @deprecated Module 사용할 것 */\n isBrightColor: typeof isBrightColor;\n /** @deprecated Module 사용할 것 */\n convColorValue: typeof convColorValue;\n /** @deprecated Module 사용할 것 */\n numberWithCommas: typeof numberWithCommas;\n /** @deprecated Module 사용할 것 */\n linkifyStrWithOpt: typeof linkifyStrWithOpt;\n /** @deprecated Module 사용할 것 */\n TemplateEngine: typeof TemplateEngine;\n /** @deprecated Module 사용할 것 */\n getIconPath: typeof getIconPath;\n /** @deprecated Module 사용할 것 */\n activeFlip: typeof activeFlip;\n /** @deprecated Module 사용할 것 */\n combineObject: typeof combineObject;\n /** @deprecated Module 사용할 것 */\n combineArray: typeof combineArray;\n /** @deprecated Module 사용할 것 */\n activeFlipItem: typeof activeFlipItem;\n /** @deprecated Module 사용할 것 */\n errUnknown: typeof errUnknown;\n /** @deprecated Module 사용할 것 */\n errUnknownToast: typeof errUnknownToast;\n /** @deprecated Module 사용할 것 */\n quickReject: typeof quickReject;\n /** @deprecated Module 사용할 것 */\n nl2br: typeof nl2br;\n /** @deprecated Module 사용할 것 */\n getNpcColor: typeof getNpcColor;\n /** @deprecated Module 사용할 것 */\n initTooltip: typeof initTooltip;\n }\n}\n\nwindow.escapeHtml = escapeHtml;\nwindow.isInt = isInt;\nwindow.mb_strwidth = mb_strwidth;\nwindow.mb_strimwidth = mb_strimwidth;\nwindow.convertDictById = convertDictById;\nwindow.convertSet = convertSet;\nwindow.hexToRgb = hexToRgb;\nwindow.isBrightColor = isBrightColor;\nwindow.convColorValue = convColorValue;\nwindow.numberWithCommas = numberWithCommas;\nwindow.linkifyStrWithOpt = linkifyStrWithOpt;\nwindow.TemplateEngine = TemplateEngine;\nwindow.getIconPath = getIconPath;\nwindow.activeFlip = activeFlip;\nwindow.combineObject = combineObject;\nwindow.combineArray = combineArray;\nwindow.activeFlipItem = activeFlipItem;\nwindow.errUnknown = errUnknown;\nwindow.errUnknownToast = errUnknownToast;\nwindow.quickReject = quickReject;\nwindow.nl2br = nl2br;\nwindow.getNpcColor = getNpcColor;\nwindow.initTooltip = initTooltip;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 592;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t592: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(9003)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","entityMap","escapeHtml","string","String","replace","s","mb_strwidth","str","l","length","i","c","charCodeAt","hexToRgb","hex","result","exec","r","parseInt","g","b","linkifyStrWithOpt","text","window","linkifyStr","activeFlip","$obj","undefined","$","find","each","activeFlipItem","combineObject","item","columnList","newItem","columnIdx","$img","imageList","push","attr","data","split","idx","value","trim","click","arr","css","initTooltip","hasClass","console","log","$target","mouseover","$objTooltip","tooltipClassText","template","format","tooltip","title","html","prototype","args","match","number","toString","jQuery","customCSS","localStorage","getItem","$style","appendTo","isInt","n","mb_strimwidth","start","width","trimmarker","trimmakerWidth","trimmedLength","trimmedStr","charAt","charWidth","next","nextWidth","join","convertDictById","Object","values","v","id","convertSet","isBrightColor","color","cv","unwrap","convColorValue","substr","toUpperCase","Set","has","numberWithCommas","x","TemplateEngine","options","re","reExp","code","cursor","add","line","js","e","slice","index","compiledCode","Function","apply","err","error","getIconPath","imgsvr","picture","pathConfig","root","sharedIcon","combineArray","array","keys","key","errUnknown","alert","errUnknownToast","content","type","delay","quickReject","errMsg","Deferred","reject","promise","nl2br","getNpcColor","npcType","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","obj","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"common.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/common_deprecated.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { activeFlip, escapeHtml, isInt, mb_strwidth, mb_strimwidth, convertDictById, convertSet, hexToRgb, isBrightColor, convColorValue, numberWithCommas, linkifyStrWithOpt, TemplateEngine, getIconPath, combineObject, combineArray, activeFlipItem, errUnknown, errUnknownToast, quickReject, nl2br, getNpcColor, initTooltip } from \"./common_legacy\";\nimport jQuery from \"jquery\";\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\njQuery(function ($) {\n initTooltip();\n activeFlip();\n\n const customCSS = localStorage.getItem('sam_customCSS');\n if (customCSS) {\n const $style = $('');\n $style.text(customCSS);\n $style.appendTo($('head'));\n }\n});\n\ndeclare global {\n interface Window {\n $: typeof jQuery;\n jQuery: typeof jQuery;\n /** @deprecated Module 사용할 것 */\n escapeHtml: typeof escapeHtml;\n /** @deprecated Module 사용할 것 */\n isInt: typeof isInt;\n /** @deprecated Module 사용할 것 */\n mb_strwidth: typeof mb_strwidth;\n /** @deprecated Module 사용할 것 */\n mb_strimwidth: typeof mb_strimwidth;\n /** @deprecated Module 사용할 것 */\n convertDictById: typeof convertDictById;\n /** @deprecated Module 사용할 것 */\n convertSet: typeof convertSet;\n /** @deprecated Module 사용할 것 */\n hexToRgb: typeof hexToRgb;\n /** @deprecated Module 사용할 것 */\n isBrightColor: typeof isBrightColor;\n /** @deprecated Module 사용할 것 */\n convColorValue: typeof convColorValue;\n /** @deprecated Module 사용할 것 */\n numberWithCommas: typeof numberWithCommas;\n /** @deprecated Module 사용할 것 */\n linkifyStrWithOpt: typeof linkifyStrWithOpt;\n /** @deprecated Module 사용할 것 */\n TemplateEngine: typeof TemplateEngine;\n /** @deprecated Module 사용할 것 */\n getIconPath: typeof getIconPath;\n /** @deprecated Module 사용할 것 */\n activeFlip: typeof activeFlip;\n /** @deprecated Module 사용할 것 */\n combineObject: typeof combineObject;\n /** @deprecated Module 사용할 것 */\n combineArray: typeof combineArray;\n /** @deprecated Module 사용할 것 */\n activeFlipItem: typeof activeFlipItem;\n /** @deprecated Module 사용할 것 */\n errUnknown: typeof errUnknown;\n /** @deprecated Module 사용할 것 */\n errUnknownToast: typeof errUnknownToast;\n /** @deprecated Module 사용할 것 */\n quickReject: typeof quickReject;\n /** @deprecated Module 사용할 것 */\n nl2br: typeof nl2br;\n /** @deprecated Module 사용할 것 */\n getNpcColor: typeof getNpcColor;\n /** @deprecated Module 사용할 것 */\n initTooltip: typeof initTooltip;\n }\n}\n\nwindow.escapeHtml = escapeHtml;\nwindow.isInt = isInt;\nwindow.mb_strwidth = mb_strwidth;\nwindow.mb_strimwidth = mb_strimwidth;\nwindow.convertDictById = convertDictById;\nwindow.convertSet = convertSet;\nwindow.hexToRgb = hexToRgb;\nwindow.isBrightColor = isBrightColor;\nwindow.convColorValue = convColorValue;\nwindow.numberWithCommas = numberWithCommas;\nwindow.linkifyStrWithOpt = linkifyStrWithOpt;\nwindow.TemplateEngine = TemplateEngine;\nwindow.getIconPath = getIconPath;\nwindow.activeFlip = activeFlip;\nwindow.combineObject = combineObject;\nwindow.combineArray = combineArray;\nwindow.activeFlipItem = activeFlipItem;\nwindow.errUnknown = errUnknown;\nwindow.errUnknownToast = errUnknownToast;\nwindow.quickReject = quickReject;\nwindow.nl2br = nl2br;\nwindow.getNpcColor = getNpcColor;\nwindow.initTooltip = initTooltip;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 592;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t592: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(9003)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Error","NotNullExpected","TypeError","entityMap","escapeHtml","string","String","replace","s","mb_strwidth","str","l","length","i","c","charCodeAt","hexToRgb","hex","result","exec","r","parseInt","g","b","linkifyStrWithOpt","text","window","linkifyStr","activeFlip","$obj","undefined","$","find","each","activeFlipItem","this","combineObject","item","columnList","newItem","columnIdx","$img","imageList","push","attr","data","split","idx","value","trim","click","arr","css","initTooltip","hasClass","console","log","$target","mouseover","$objTooltip","tooltipClassText","template","format","tooltip","title","html","prototype","args","match","number","toString","jQuery","customCSS","localStorage","getItem","$style","appendTo","isInt","n","mb_strimwidth","start","width","trimmarker","trimmakerWidth","trimmedLength","trimmedStr","charAt","charWidth","next","nextWidth","join","convertDictById","Object","values","v","id","convertSet","isBrightColor","color","cv","unwrap","convColorValue","substr","toUpperCase","Set","has","numberWithCommas","x","TemplateEngine","options","re","reExp","code","cursor","add","line","js","e","slice","index","compiledCode","Function","apply","err","error","message","getIconPath","imgsvr","picture","pathConfig","root","sharedIcon","combineArray","array","keys","key","errUnknown","alert","errUnknownToast","content","type","delay","quickReject","errMsg","Deferred","reject","promise","nl2br","getNpcColor","npcType","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","obj","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/defaultSelectCityByMap.js b/hwe/js/defaultSelectCityByMap.js index 21fe0bd5..858a6e19 100644 --- a/hwe/js/defaultSelectCityByMap.js +++ b/hwe/js/defaultSelectCityByMap.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={5438:(t,e,n)=>{var r=n(7413),a=n(1827);$((function(){var t;t=$("#destCityID"),console.log("target",t),(0,r.x)({isDetailMap:!1,clickableAll:!0,neutralView:!0,useCachedMap:!0,selectCallback:function(e){var n=function(t){if(null==t)throw new a.mM;return t}(t.val());return t.val(e.id).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1}})}))},7413:(t,e,n)=>{n.d(e,{x:()=>A}),n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),u=n(9755),s=n.n(u),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},D=function(t){var r=s()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=s()(n+" .city_link"),c=s()(n+" .map_body");return!e.neutralView&&I()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=s()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=s()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,u=c.data("scale");if(u&&(i/=u,l/=u),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(s()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=s()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=s()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},A=function(t){var e=s()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;s()(".city_base_".concat(n)).detach();var r=s()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=s()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=s()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=s()('
'));o.append(c)}if(t.isCapital){var l=s()('
');o.append(l)}var u=s()(''.concat(t.name,"").format());o.append(u),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},M=function(t){var e=s()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;s()(".city_base_".concat(n)).detach();var r=s()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=s()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=s()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=s()('
'));if(o.append(i),t.state>0){var c=s()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",u=s()('
'));if(t.isCapital){var p=s()('
'));u.append(p)}i.append(u)}var m=s()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=T(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,u,s,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},s=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},u=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(u).map(s).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=T(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,u?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=s()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=T(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=$.length>1&&void 0!==$[1]?$[1]:".world_map",0!=(r=s()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,u=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),B=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,B.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,N=s()(n+" .map_body"),B.click((function(){B.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(N.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),u?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,W=J.data,t.next=40,w(W).then(C).then(x).then(u?M:A).then(D).then(E).then(P);case 40:if(Y=t.sent,e.callback&&e.callback(Y,W),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,T(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(u?M:A).then(D).then(E).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return q=localStorage.getItem(b),V=q?JSON.parse(q):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=A,s()((function(t){I()&&t(".map_body .map_toggle_single_tap").show()}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;nh,Wg:()=>v}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165);var h=function(t){i(n,t);var e=c(n);function n(){var t;a(this,n);for(var r=arguments.length,o=new Array(r),i=0;i0&&void 0!==arguments[0]?arguments[0]:"";return a(this,l),y(u(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=l,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&o(e.prototype,n),l}(s(Error)));function v(t){if(null==t)throw new h;return t}}},n={};function r(t){var a=n[t];if(void 0!==a)return a.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=e,t=[],r.O=(e,n,a,o)=>{if(!n){var i=1/0;for(s=0;s=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[s-1][2]>o;s--)t[s]=t[s-1];t[s]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=878,(()=>{var t={878:0,842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,u=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var s=l(r);for(e&&e(n);ur(5438)));a=r.O(a)})(); +(()=>{"use strict";var t,e={5438:(t,e,n)=>{var r=n(7413),a=n(1827);$((function(){var t;t=$("#destCityID"),console.log("target",t),(0,r.x)({isDetailMap:!1,clickableAll:!0,neutralView:!0,useCachedMap:!0,selectCallback:function(e){var n=function(t){if(null==t)throw new a.mM;return t}(t.val());return t.val(e.id).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1}})}))},7413:(t,e,n)=>{n.d(e,{x:()=>A}),n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),s=n(9755),u=n.n(s),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},D=function(t){var r=u()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=u()(n+" .city_link"),c=u()(n+" .map_body");return!e.neutralView&&I()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=u()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=u()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,s=c.data("scale");if(s&&(i/=s,l/=s),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(u()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=u()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=u()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},A=function(t){var e=u()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=u()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=u()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=u()('
'));o.append(c)}if(t.isCapital){var l=u()('
');o.append(l)}var s=u()(''.concat(t.name,"").format());o.append(s),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},M=function(t){var e=u()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=u()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=u()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=u()('
'));if(o.append(i),t.state>0){var c=u()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",s=u()('
'));if(t.isCapital){var p=u()('
'));s.append(p)}i.append(s)}var m=u()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=T(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,s,u,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},u=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},s=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(s).map(u).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=T(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,s?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=u()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=T(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=$.length>1&&void 0!==$[1]?$[1]:".world_map",0!=(r=u()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,s=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),B=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,B.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,N=u()(n+" .map_body"),B.click((function(){B.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(N.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),s?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,W=J.data,t.next=40,w(W).then(C).then(x).then(s?M:A).then(D).then(E).then(P);case 40:if(Y=t.sent,e.callback&&e.callback(Y,W),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,T(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(s?M:A).then(D).then(E).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return q=localStorage.getItem(b),V=q?JSON.parse(q):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=A,u()((function(t){I()&&t(".map_body .map_toggle_single_tap").show()}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?i(t):e}function i(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t){var e="function"==typeof Map?new Map:void 0;return(c=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return l(t,arguments,f(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),u(r,t)})(t)}function l(t,e,n){return(l=s()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var a=new(Function.bind.apply(t,r));return n&&u(a,n.prototype),a}).apply(null,arguments)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{mM:()=>d,Wg:()=>m}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165),Error;var d=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}(c,t);var e,n,r=(e=c,n=s(),function(){var t,r=f(e);if(n){var a=f(this).constructor;t=Reflect.construct(r,arguments,a)}else t=r.apply(this,arguments);return o(this,t)});function c(){var t;a(this,c);for(var e=arguments.length,n=new Array(e),o=0;o{if(!n){var i=1/0;for(u=0;u=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=878,(()=>{var t={878:0,842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,s=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var u=l(r);for(e&&e(n);sr(5438)));a=r.O(a)})(); //# sourceMappingURL=defaultSelectCityByMap.js.map \ No newline at end of file diff --git a/hwe/js/defaultSelectCityByMap.js.map b/hwe/js/defaultSelectCityByMap.js.map index 5e8c004e..74aab7c5 100644 --- a/hwe/js/defaultSelectCityByMap.js.map +++ b/hwe/js/defaultSelectCityByMap.js.map @@ -1 +1 @@ -{"version":3,"file":"defaultSelectCityByMap.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/defaultSelectCityByMap.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { reloadWorldMap } from \"./map\";\r\nimport { unwrap_any } from \"./util/unwrap_any\";\r\n/*import $ from 'jquery';\r\nimport 'select2';*///TODO: processing\r\n\r\n\r\nexport function loadPlugin(): void {\r\n const $target = $(\"#destCityID\");\r\n console.log('target', $target);\r\n void reloadWorldMap({\r\n isDetailMap: false,\r\n clickableAll: true,\r\n neutralView: true,\r\n useCachedMap: true,\r\n selectCallback: function (city) {\r\n const currVal = unwrap_any($target.val());\r\n $target.val(city.id).trigger(\"change\");\r\n if ($target.val() === null) {\r\n $target.val(currVal).trigger(\"change\");\r\n }\r\n return false;\r\n }\r\n });\r\n}\r\n\r\n$(function () {\r\n loadPlugin();\r\n});","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 878;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t878: 0,\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(5438)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","$","$target","console","log","isDetailMap","clickableAll","neutralView","useCachedMap","selectCallback","city","currVal","result","unwrap_any","val","id","trigger","convertDictById","arr","Object","values","v","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","reloadWorldMap","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","$cityLink","find","clickable","attr","hrefTemplate","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","nationID","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","NotNullExpected","message","Error","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"defaultSelectCityByMap.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/defaultSelectCityByMap.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { reloadWorldMap } from \"./map\";\r\nimport { unwrap_any } from \"./util/unwrap_any\";\r\n/*import $ from 'jquery';\r\nimport 'select2';*///TODO: processing\r\n\r\n\r\nexport function loadPlugin(): void {\r\n const $target = $(\"#destCityID\");\r\n console.log('target', $target);\r\n void reloadWorldMap({\r\n isDetailMap: false,\r\n clickableAll: true,\r\n neutralView: true,\r\n useCachedMap: true,\r\n selectCallback: function (city) {\r\n const currVal = unwrap_any($target.val());\r\n $target.val(city.id).trigger(\"change\");\r\n if ($target.val() === null) {\r\n $target.val(currVal).trigger(\"change\");\r\n }\r\n return false;\r\n }\r\n });\r\n}\r\n\r\n$(function () {\r\n loadPlugin();\r\n});","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 878;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t878: 0,\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(5438)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","$","$target","console","log","isDetailMap","clickableAll","neutralView","useCachedMap","selectCallback","city","currVal","result","unwrap_any","val","id","trigger","convertDictById","arr","Object","values","v","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","reloadWorldMap","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","$cityLink","find","clickable","attr","hrefTemplate","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","nationID","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","Error","NotNullExpected","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/defaultSelectNationByMap.js b/hwe/js/defaultSelectNationByMap.js index 20522465..9d4edbcd 100644 --- a/hwe/js/defaultSelectNationByMap.js +++ b/hwe/js/defaultSelectNationByMap.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={3489:(t,e,n)=>{var r=n(7413),a=n(1827);$((function(){var t;t=$("#destNationID"),(0,r.x)({isDetailMap:!1,clickableAll:!0,neutralView:!0,useCachedMap:!0,selectCallback:function(e){var n=function(t){if(null==t)throw new a.mM;return t}(t.val());return!!e.nationID&&(t.val(e.nationID).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1)}})}))},7413:(t,e,n)=>{n.d(e,{x:()=>D}),n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),u=n(9755),s=n.n(u),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},A=function(t){var r=s()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=s()(n+" .city_link"),c=s()(n+" .map_body");return!e.neutralView&&T()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=s()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=s()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,u=c.data("scale");if(u&&(i/=u,l/=u),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(s()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=s()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=s()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},D=function(t){var e=s()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;s()(".city_base_".concat(n)).detach();var r=s()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=s()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=s()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=s()('
'));o.append(c)}if(t.isCapital){var l=s()('
');o.append(l)}var u=s()(''.concat(t.name,"").format());o.append(u),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},M=function(t){var e=s()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;s()(".city_base_".concat(n)).detach();var r=s()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=s()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=s()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=s()('
'));if(o.append(i),t.state>0){var c=s()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",u=s()('
'));if(t.isCapital){var p=s()('
'));u.append(p)}i.append(u)}var m=s()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=I(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,u,s,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},s=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},u=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(u).map(s).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=I(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,u?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=s()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=I(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=$.length>1&&void 0!==$[1]?$[1]:".world_map",0!=(r=s()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,u=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),N=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,N.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,B=s()(n+" .map_body"),N.click((function(){N.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(B.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),u?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,W=J.data,t.next=40,w(W).then(C).then(x).then(u?M:D).then(A).then(E).then(P);case 40:if(Y=t.sent,e.callback&&e.callback(Y,W),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,I(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(u?M:D).then(A).then(E).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return q=localStorage.getItem(b),V=q?JSON.parse(q):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=D,s()((function(t){T()&&t(".map_body .map_toggle_single_tap").show()}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;nh,Wg:()=>v}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165);var h=function(t){i(n,t);var e=c(n);function n(){var t;a(this,n);for(var r=arguments.length,o=new Array(r),i=0;i0&&void 0!==arguments[0]?arguments[0]:"";return a(this,l),y(u(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=l,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&o(e.prototype,n),l}(s(Error)));function v(t){if(null==t)throw new h;return t}}},n={};function r(t){var a=n[t];if(void 0!==a)return a.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=e,t=[],r.O=(e,n,a,o)=>{if(!n){var i=1/0;for(s=0;s=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[s-1][2]>o;s--)t[s]=t[s-1];t[s]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=969,(()=>{var t={969:0,842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,u=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var s=l(r);for(e&&e(n);ur(3489)));a=r.O(a)})(); +(()=>{"use strict";var t,e={3489:(t,e,n)=>{var r=n(7413),a=n(1827);$((function(){var t;t=$("#destNationID"),(0,r.x)({isDetailMap:!1,clickableAll:!0,neutralView:!0,useCachedMap:!0,selectCallback:function(e){var n=function(t){if(null==t)throw new a.mM;return t}(t.val());return!!e.nationID&&(t.val(e.nationID).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1)}})}))},7413:(t,e,n)=>{n.d(e,{x:()=>D}),n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),u=n(9755),s=n.n(u),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},A=function(t){var r=s()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=s()(n+" .city_link"),c=s()(n+" .map_body");return!e.neutralView&&I()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=s()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=s()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,u=c.data("scale");if(u&&(i/=u,l/=u),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(s()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=s()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=s()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},D=function(t){var e=s()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;s()(".city_base_".concat(n)).detach();var r=s()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=s()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=s()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=s()('
'));o.append(c)}if(t.isCapital){var l=s()('
');o.append(l)}var u=s()(''.concat(t.name,"").format());o.append(u),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},M=function(t){var e=s()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;s()(".city_base_".concat(n)).detach();var r=s()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=s()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=s()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=s()('
'));if(o.append(i),t.state>0){var c=s()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",u=s()('
'));if(t.isCapital){var p=s()('
'));u.append(p)}i.append(u)}var m=s()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=T(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,u,s,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},s=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},u=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(u).map(s).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=T(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,u?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=s()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=T(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=$.length>1&&void 0!==$[1]?$[1]:".world_map",0!=(r=s()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,u=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),N=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,N.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,B=s()(n+" .map_body"),N.click((function(){N.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(B.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),u?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,W=J.data,t.next=40,w(W).then(C).then(x).then(u?M:D).then(A).then(E).then(P);case 40:if(Y=t.sent,e.callback&&e.callback(Y,W),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,T(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(u?M:D).then(A).then(E).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return q=localStorage.getItem(b),V=q?JSON.parse(q):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=D,s()((function(t){I()&&t(".map_body .map_toggle_single_tap").show()}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?i(t):e}function i(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t){var e="function"==typeof Map?new Map:void 0;return(c=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return l(t,arguments,f(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),s(r,t)})(t)}function l(t,e,n){return(l=u()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var a=new(Function.bind.apply(t,r));return n&&s(a,n.prototype),a}).apply(null,arguments)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{mM:()=>d,Wg:()=>m}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165),Error;var d=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(c,t);var e,n,r=(e=c,n=u(),function(){var t,r=f(e);if(n){var a=f(this).constructor;t=Reflect.construct(r,arguments,a)}else t=r.apply(this,arguments);return o(this,t)});function c(){var t;a(this,c);for(var e=arguments.length,n=new Array(e),o=0;o{if(!n){var i=1/0;for(s=0;s=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[s-1][2]>o;s--)t[s]=t[s-1];t[s]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=969,(()=>{var t={969:0,842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,u=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var s=l(r);for(e&&e(n);ur(3489)));a=r.O(a)})(); //# sourceMappingURL=defaultSelectNationByMap.js.map \ No newline at end of file diff --git a/hwe/js/defaultSelectNationByMap.js.map b/hwe/js/defaultSelectNationByMap.js.map index b1440eb3..c6fdd73c 100644 --- a/hwe/js/defaultSelectNationByMap.js.map +++ b/hwe/js/defaultSelectNationByMap.js.map @@ -1 +1 @@ -{"version":3,"file":"defaultSelectNationByMap.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/defaultSelectNationByMap.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { reloadWorldMap } from \"./map\";\r\nimport { unwrap_any } from \"./util/unwrap_any\";\r\n/*import $ from 'jquery';\r\nimport 'select2';*///TODO: processing\r\n\r\nexport function loadPlugin(): void{\r\n const $target = $(\"#destNationID\");\r\n void reloadWorldMap({\r\n isDetailMap: false,\r\n clickableAll: true,\r\n neutralView: true,\r\n useCachedMap: true,\r\n selectCallback: (city)=>{\r\n const currVal = unwrap_any($target.val());\r\n if(!city.nationID){\r\n return false;\r\n }\r\n $target.val(city.nationID).trigger(\"change\");\r\n if ($target.val() === null) {\r\n $target.val(currVal).trigger(\"change\");\r\n }\r\n return false;\r\n }\r\n });\r\n}\r\n\r\n$(function() {\r\n loadPlugin();\r\n});","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 969;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t969: 0,\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(3489)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","$","$target","isDetailMap","clickableAll","neutralView","useCachedMap","selectCallback","city","currVal","result","unwrap_any","val","nationID","trigger","convertDictById","arr","Object","values","v","id","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","reloadWorldMap","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","$cityLink","find","clickable","attr","hrefTemplate","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","NotNullExpected","message","Error","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"defaultSelectNationByMap.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/defaultSelectNationByMap.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { reloadWorldMap } from \"./map\";\r\nimport { unwrap_any } from \"./util/unwrap_any\";\r\n/*import $ from 'jquery';\r\nimport 'select2';*///TODO: processing\r\n\r\nexport function loadPlugin(): void{\r\n const $target = $(\"#destNationID\");\r\n void reloadWorldMap({\r\n isDetailMap: false,\r\n clickableAll: true,\r\n neutralView: true,\r\n useCachedMap: true,\r\n selectCallback: (city)=>{\r\n const currVal = unwrap_any($target.val());\r\n if(!city.nationID){\r\n return false;\r\n }\r\n $target.val(city.nationID).trigger(\"change\");\r\n if ($target.val() === null) {\r\n $target.val(currVal).trigger(\"change\");\r\n }\r\n return false;\r\n }\r\n });\r\n}\r\n\r\n$(function() {\r\n loadPlugin();\r\n});","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 969;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t969: 0,\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(3489)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","$","$target","isDetailMap","clickableAll","neutralView","useCachedMap","selectCallback","city","currVal","result","unwrap_any","val","nationID","trigger","convertDictById","arr","Object","values","v","id","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","reloadWorldMap","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","$cityLink","find","clickable","attr","hrefTemplate","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","Error","NotNullExpected","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/inheritPoint.js b/hwe/js/inheritPoint.js index 566c2dc0..f861e8a8 100644 --- a/hwe/js/inheritPoint.js +++ b/hwe/js/inheritPoint.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={1165:(e,t,r)=>{var n=r(2297),o=r.n(n);function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"";return u(this,o),d(s(e=n.call(this,t)),"name","RuntimeError"),e.message=t,e}return t=o,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&l(t.prototype,r),o}(p(Error)));function g(e){if(null==e)throw new m;return e}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i=[],u=!0,l=!1;try{for(r=r.call(e);!(u=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{u||null==r.return||r.return()}finally{if(l)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return O(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?O(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{if(!r){var u=1/0;for(f=0;f=i)&&Object.keys(n.O).every((e=>n.O[e](r[a])))?r.splice(a--,1):(l=!1,i0&&e[f-1][2]>i;f--)e[f]=e[f-1];e[f]=[r,o,i]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.j=334,(()=>{var e={334:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,i,[u,l,a]=r,c=0;for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(a)var f=a(n);for(t&&t(r);cn(1165)));o=n.O(o)})(); +(()=>{"use strict";var t,e={1165:(t,e,r)=>{var n=r(2297),o=r.n(n);function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?l(t):e}function l(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function a(t){var e="function"==typeof Map?new Map:void 0;return(a=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return f(t,arguments,y(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),s(n,t)})(t)}function f(t,e,r){return(f=p()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var o=new(Function.bind.apply(t,n));return r&&s(o,r.prototype),o}).apply(null,arguments)}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function y(t){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function h(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}r(2479),r(9720),r(2526),r(1817),r(1539),r(2165),r(6992),r(8783),r(3948),r(7042),r(1038),r(2222),r(8304),r(489),r(2772),r(9714),r(2419),r(1532),Error;var v=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(o,t);var e,r,n=(e=o,r=p(),function(){var t,n=y(e);if(r){var o=y(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return c(this,t)});function o(){var t;u(this,o);for(var e=arguments.length,r=new Array(e),i=0;it.length)&&(e=t.length);for(var r=0,n=new Array(e);r{if(!r){var u=1/0;for(f=0;f=i)&&Object.keys(n.O).every((t=>n.O[t](r[l])))?r.splice(l--,1):(c=!1,i0&&t[f-1][2]>i;f--)t[f]=t[f-1];t[f]=[r,o,i]},n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),n.j=334,(()=>{var t={334:0};n.O.j=e=>0===t[e];var e=(e,r)=>{var o,i,[u,c,l]=r,a=0;for(o in c)n.o(c,o)&&(n.m[o]=c[o]);if(l)var f=l(n);for(e&&e(r);an(1165)));o=n.O(o)})(); //# sourceMappingURL=inheritPoint.js.map \ No newline at end of file diff --git a/hwe/js/inheritPoint.js.map b/hwe/js/inheritPoint.js.map index b0809122..3f81eeef 100644 --- a/hwe/js/inheritPoint.js.map +++ b/hwe/js/inheritPoint.js.map @@ -1 +1 @@ -{"version":3,"file":"inheritPoint.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/inheritPoint.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import \"../scss/inheritPoint.scss\";\n\nimport { sum } from \"lodash\";\nimport { unwrap } from \"./util\";\ndeclare global {\n interface Window { \n formStart: ()=>void;\n items: {[name: string]:number};\n helpText: {[name: string]:string};\n }\n}\n\nfunction formStart() {\n\n const dSum = unwrap(document.querySelector('#inherit_sum_value')) as HTMLInputElement ;\n const dOld = unwrap(document.querySelector('#inherit_previous_value')) as HTMLInputElement;\n const dNew = unwrap(document.querySelector('#inherit_new_value')) as HTMLInputElement;\n\n const sumPoint = Math.floor(sum(Object.values(window.items)));\n const oldPoint = Math.floor(window.items['previous']);\n const sumNewPoint = sumPoint - oldPoint;\n\n dSum.value = sumPoint.toLocaleString();\n dOld.value = oldPoint.toLocaleString();\n dNew.value = sumNewPoint.toLocaleString();\n\n for(const [key, val] of Object.entries(window.items)){\n const dItem = unwrap(document.querySelector(`#inherit_${key}_value`)) as HTMLInputElement ;\n dItem.value = Math.floor(val).toLocaleString();\n }\n\n for(const [key, text] of Object.entries(window.helpText)){\n const dText = unwrap(document.querySelector(`#inherit_${key} small.form-text`)) as HTMLElement;\n dText.innerHTML = text;\n }\n}\n\nformStart();","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 334;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t334: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1165)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","unwrap","result","dSum","document","querySelector","dOld","dNew","sumPoint","Math","floor","Object","values","window","items","oldPoint","sumNewPoint","value","toLocaleString","entries","key","val","helpText","text","innerHTML","formStart","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"inheritPoint.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/inheritPoint.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import \"../scss/inheritPoint.scss\";\n\nimport { sum } from \"lodash\";\nimport { unwrap } from \"./util\";\ndeclare global {\n interface Window { \n formStart: ()=>void;\n items: {[name: string]:number};\n helpText: {[name: string]:string};\n }\n}\n\nfunction formStart() {\n\n const dSum = unwrap(document.querySelector('#inherit_sum_value')) as HTMLInputElement ;\n const dOld = unwrap(document.querySelector('#inherit_previous_value')) as HTMLInputElement;\n const dNew = unwrap(document.querySelector('#inherit_new_value')) as HTMLInputElement;\n\n const sumPoint = Math.floor(sum(Object.values(window.items)));\n const oldPoint = Math.floor(window.items['previous']);\n const sumNewPoint = sumPoint - oldPoint;\n\n dSum.value = sumPoint.toLocaleString();\n dOld.value = oldPoint.toLocaleString();\n dNew.value = sumNewPoint.toLocaleString();\n\n for(const [key, val] of Object.entries(window.items)){\n const dItem = unwrap(document.querySelector(`#inherit_${key}_value`)) as HTMLInputElement ;\n dItem.value = Math.floor(val).toLocaleString();\n }\n\n for(const [key, text] of Object.entries(window.helpText)){\n const dText = unwrap(document.querySelector(`#inherit_${key} small.form-text`)) as HTMLElement;\n dText.innerHTML = text;\n }\n}\n\nformStart();","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 334;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t334: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1165)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Error","NotNullExpected","TypeError","unwrap","result","dSum","document","querySelector","dOld","dNew","sumPoint","Math","floor","Object","values","window","items","oldPoint","sumNewPoint","value","toLocaleString","entries","key","val","helpText","text","innerHTML","formStart","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/map.js b/hwe/js/map.js index 7f3e7ef7..bd6edb62 100644 --- a/hwe/js/map.js +++ b/hwe/js/map.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={7413:(t,e,n)=>{n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),s=n(9755),u=n.n(s),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},E=function(t){var r=u()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=u()(n+" .city_link"),c=u()(n+" .map_body");return!e.neutralView&&I()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=u()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=u()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,s=c.data("scale");if(s&&(i/=s,l/=s),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(u()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=u()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=u()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},A=function(t){var e=u()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=u()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=u()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=u()('
'));o.append(c)}if(t.isCapital){var l=u()('
');o.append(l)}var s=u()(''.concat(t.name,"").format());o.append(s),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},T=function(t){var e=u()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=u()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=u()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=u()('
'));if(o.append(i),t.state>0){var c=u()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",s=u()('
'));if(t.isCapital){var p=u()('
'));s.append(p)}i.append(s)}var m=u()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=M(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,s,u,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},u=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},s=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(s).map(u).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=M(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,s?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=u()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=M(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=U.length>1&&void 0!==U[1]?U[1]:".world_map",0!=(r=u()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,s=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),B=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,B.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,N=u()(n+" .map_body"),B.click((function(){B.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(N.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),s?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,W=J.data,t.next=40,w(W).then(C).then(x).then(s?T:A).then(E).then(D).then(P);case 40:if(Y=t.sent,e.callback&&e.callback(Y,W),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,M(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(s?T:A).then(E).then(D).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return q=localStorage.getItem(b),V=q?JSON.parse(q):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=function(t){return A.apply(this,arguments)},u()((function(t){I()&&t(".map_body .map_toggle_single_tap").show()}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;nv}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165);var h=function(t){i(n,t);var e=c(n);function n(){var t;a(this,n);for(var r=arguments.length,o=new Array(r),i=0;i0&&void 0!==arguments[0]?arguments[0]:"";return a(this,l),y(s(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=l,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&o(e.prototype,n),l}(u(Error)));function v(t){if(null==t)throw new h;return t}}},n={};function r(t){var a=n[t];if(void 0!==a)return a.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=e,t=[],r.O=(e,n,a,o)=>{if(!n){var i=1/0;for(u=0;u=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=842,(()=>{var t={842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,s=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var u=l(r);for(e&&e(n);sr(7413)));a=r.O(a)})(); +(()=>{"use strict";var t,e={7413:(t,e,n)=>{n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),s=n(9755),u=n.n(s),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},E=function(t){var r=u()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=u()(n+" .city_link"),c=u()(n+" .map_body");return!e.neutralView&&I()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=u()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=u()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,s=c.data("scale");if(s&&(i/=s,l/=s),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(u()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=u()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=u()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},A=function(t){var e=u()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=u()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=u()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=u()('
'));o.append(c)}if(t.isCapital){var l=u()('
');o.append(l)}var s=u()(''.concat(t.name,"").format());o.append(s),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},T=function(t){var e=u()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=u()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=u()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=u()('
'));if(o.append(i),t.state>0){var c=u()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",s=u()('
'));if(t.isCapital){var p=u()('
'));s.append(p)}i.append(s)}var m=u()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=M(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,s,u,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},u=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},s=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(s).map(u).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=M(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,s?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=u()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=M(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=U.length>1&&void 0!==U[1]?U[1]:".world_map",0!=(r=u()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,s=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),B=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,B.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,N=u()(n+" .map_body"),B.click((function(){B.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(N.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),s?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,W=J.data,t.next=40,w(W).then(C).then(x).then(s?T:A).then(E).then(D).then(P);case 40:if(Y=t.sent,e.callback&&e.callback(Y,W),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,M(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(s?T:A).then(E).then(D).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return q=localStorage.getItem(b),V=q?JSON.parse(q):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=function(t){return A.apply(this,arguments)},u()((function(t){I()&&t(".map_body .map_toggle_single_tap").show()}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?i(t):e}function i(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t){var e="function"==typeof Map?new Map:void 0;return(c=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return l(t,arguments,f(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),u(r,t)})(t)}function l(t,e,n){return(l=s()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var a=new(Function.bind.apply(t,r));return n&&u(a,n.prototype),a}).apply(null,arguments)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{Wg:()=>m}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165),Error;var d=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}(c,t);var e,n,r=(e=c,n=s(),function(){var t,r=f(e);if(n){var a=f(this).constructor;t=Reflect.construct(r,arguments,a)}else t=r.apply(this,arguments);return o(this,t)});function c(){var t;a(this,c);for(var e=arguments.length,n=new Array(e),o=0;o{if(!n){var i=1/0;for(u=0;u=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=842,(()=>{var t={842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,s=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var u=l(r);for(e&&e(n);sr(7413)));a=r.O(a)})(); //# sourceMappingURL=map.js.map \ No newline at end of file diff --git a/hwe/js/map.js.map b/hwe/js/map.js.map index 16eca667..ec3c73d8 100644 --- a/hwe/js/map.js.map +++ b/hwe/js/map.js.map @@ -1 +1 @@ -{"version":3,"file":"map.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 842;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(7413)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertDictById","arr","result","Object","values","v","id","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","city","$cityLink","find","clickable","attr","hrefTemplate","selectCallback","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","neutralView","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","nationID","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","clickableAll","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","isDetailMap","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","useCachedMap","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","reloadWorldMap","$","NotNullExpected","message","Error","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"map.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 842;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(7413)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertDictById","arr","result","Object","values","v","id","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","city","$cityLink","find","clickable","attr","hrefTemplate","selectCallback","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","neutralView","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","nationID","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","clickableAll","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","isDetailMap","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","useCachedMap","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","reloadWorldMap","$","Error","NotNullExpected","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/processing.js b/hwe/js/processing.js index 28a376d9..d3f7d1de 100644 --- a/hwe/js/processing.js +++ b/hwe/js/processing.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={8329:(e,t,n)=>{n(5666),n(3210),n(1058),n(7941),n(2707),n(4916),n(5306),n(1539),n(8674),n(7042),n(1038),n(8783),n(2526),n(1817),n(2165),n(6992),n(3948);var r=n(9669),o=n.n(r),a=n(1584),i=n.n(a),c=n(1763),l=n.n(c),s=n(7037),u=n.n(s),f=n(1469),p=n.n(f);function d(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=y(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){c=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw a}}}}function y(e,t){if(e){if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:"";return v(this,o),A(k(e=r.call(this,t)),"name","RuntimeError"),e.message=t,e}return t=o,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&g(t.prototype,n),o}(O(Error)));function R(e){if(null==e)throw new I;return e}function E(e){if(null==e)throw new I;return e}function P(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return D(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?D(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){c=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw a}}}}function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n  {2}".format(r,o,t.text))},templateResult:function(t){if(t.disabled)return t.text;var n=t.element;if(!n)throw"invalid type";var r=R(n.dataset.color),o=R(n.dataset.fontColor);return e("
{2}
".format(r,o,t.text))},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"no-padding simple-select2-align-center bg-secondary text-secondary"});var a=e("#nationType");a.length&&a.select2({theme:"bootstrap4",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var i=e("#destCityID");i.length&&i.select2({theme:"bootstrap4",placeholder:"도시를 선택해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var c=e("#destNationID");c.length&&c.select2({theme:"bootstrap4",placeholder:"국가를 선택해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var l=e("#destGeneralID");l.length&&l.select2({theme:"bootstrap4",placeholder:"장수를 선택해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var s=e("#isGold");s.length&&s.select2({theme:"bootstrap4",placeholder:"분량을 지정해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},minimumResultsForSearch:-1,containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var u=e("#amount:not([type=hidden])");u.length&&u.select2({theme:"bootstrap4",placeholder:"분량을 지정해 주세요.",allowClear:!1,language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},tags:!0,sorter:function(e){return e.sort((function(e,t){return parseInt(e.id)-parseInt(t.id)})),e},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"select2-only-number simple-select2-align-center bg-secondary text-secondary"}),e(document).on("keypress",".select2-only-number .select2-search__field",(function(t){e(this).val(E(e(this).val()).replace(/[^\d].+/,"")),(t.which<48||t.which>57)&&t.preventDefault()}))}))}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=t,e=[],r.O=(t,n,o,a)=>{if(!n){var i=1/0;for(u=0;u=a)&&Object.keys(r.O).every((e=>r.O[e](n[l])))?n.splice(l--,1):(c=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,o,a]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=500,(()=>{var e={500:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var o,a,[i,c,l]=n,s=0;for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(l)var u=l(r);for(t&&t(n);sr(8329)));o=r.O(o)})(); +(()=>{"use strict";var e,t={8329:(e,t,n)=>{n(5666),n(3210),n(1058),n(7941),n(2707),n(4916),n(5306),n(1539),n(8674),n(7042),n(1038),n(8783),n(2526),n(1817),n(2165),n(6992),n(3948);var r=n(9669),o=n.n(r),a=n(1584),i=n.n(a),c=n(1763),l=n.n(c),s=n(7037),u=n.n(s),f=n(1469),p=n.n(f);function d(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=y(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){c=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw a}}}}function y(e,t){if(e){if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){c=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw a}}}}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n  {2}".format(r,o,t.text))},templateResult:function(t){if(t.disabled)return t.text;var n=t.element;if(!n)throw"invalid type";var r=_(n.dataset.color),o=_(n.dataset.fontColor);return e("
{2}
".format(r,o,t.text))},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"no-padding simple-select2-align-center bg-secondary text-secondary"});var a=e("#nationType");a.length&&a.select2({theme:"bootstrap4",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var i=e("#destCityID");i.length&&i.select2({theme:"bootstrap4",placeholder:"도시를 선택해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var c=e("#destNationID");c.length&&c.select2({theme:"bootstrap4",placeholder:"국가를 선택해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var l=e("#destGeneralID");l.length&&l.select2({theme:"bootstrap4",placeholder:"장수를 선택해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var s=e("#isGold");s.length&&s.select2({theme:"bootstrap4",placeholder:"분량을 지정해 주세요.",language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},minimumResultsForSearch:-1,containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"simple-select2-align-center bg-secondary text-secondary"});var u=e("#amount:not([type=hidden])");u.length&&u.select2({theme:"bootstrap4",placeholder:"분량을 지정해 주세요.",allowClear:!1,language:"ko",containerCss:{display:"inline-block !important",color:"white !important"},tags:!0,sorter:function(e){return e.sort((function(e,t){return parseInt(e.id)-parseInt(t.id)})),e},containerCssClass:"simple-select2-align-center bg-secondary text-secondary",dropdownCssClass:"select2-only-number simple-select2-align-center bg-secondary text-secondary"}),e(document).on("keypress",".select2-only-number .select2-search__field",(function(t){e(this).val(A(e(this).val()).replace(/[^\d].+/,"")),(t.which<48||t.which>57)&&t.preventDefault()}))}))}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=t,e=[],r.O=(t,n,o,a)=>{if(!n){var i=1/0;for(u=0;u=a)&&Object.keys(r.O).every((e=>r.O[e](n[l])))?n.splice(l--,1):(c=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,o,a]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=500,(()=>{var e={500:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var o,a,[i,c,l]=n,s=0;for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(l)var u=l(r);for(t&&t(n);sr(8329)));o=r.O(o)})(); //# sourceMappingURL=processing.js.map \ No newline at end of file diff --git a/hwe/js/processing.js.map b/hwe/js/processing.js.map index c6d01734..ddce9036 100644 --- a/hwe/js/processing.js.map +++ b/hwe/js/processing.js.map @@ -1 +1 @@ -{"version":3,"file":"processing.js","mappings":"uBAAIA,E,uwCCEE,SAAUC,EAAgBC,GAgB5B,IAfA,IAAMC,EAAW,IAAIC,SAEfC,EAAa,SAACC,GAChB,GAAG,IAASA,GACR,OAAOA,EAEX,GAAG,IAASA,GACR,OAAOA,EAAEC,WAEb,GAAG,IAAUD,GACT,OAAOA,EAAE,OAAO,QAEpB,MAAM,IAAIE,UAAU,0BAGxB,MAA0BC,OAAOC,QAAQR,GAAzC,eAAiD,CAA7C,O,EAAA,K,EAAA,E,miBAAOS,EAAP,KAAYC,EAAZ,KACA,GAAG,IAAQA,GAAX,CACI,IADc,EACRC,EAAS,GAAH,OAAMF,EAAN,MADE,IAEQC,GAFR,IAEd,2BAA4B,KAAlBE,EAAkB,QACxBX,EAASY,OAAOF,EAAQR,EAAWS,KAHzB,oCAQlBX,EAASY,OAAOJ,EAAKN,EAAWO,I,QAGpC,OAAOT,E,03EC3BJ,IAeMa,EAAb,yLACkB,mBADlB,YAfA,uB,IAAA,OAEI,aAAuC,MAApBC,EAAoB,uDAAF,GAAE,qBACnC,cAAMA,IAD6B,OADzB,gBACK,EAAAA,QAAAA,EAAoB,EAF3C,O,EAAA,G,EAAA,uBAKI,WACI,OAAIC,KAAKD,QACEC,KAAKC,KAAO,KAAOD,KAAKD,QAGxBC,KAAKC,U,iBAVxB,KAAkCC,SAmB5B,SAAUC,EAAUC,GACtB,GAAIA,MAAAA,EACA,MAAM,IAAIN,EAEd,OAAOM,ECvBL,SAAUC,EAAcD,GAC1B,GAAIA,MAAAA,EACA,MAAM,IAAIN,EAEd,OAAOM,E,40CCaIE,EAAY,EAAZ,K,gFAAf,WAA2BC,EAAoBC,EAAiBC,GAAhE,iGACUC,EAASC,YAAc,0BAA4B,4BAD7D,kBAK+B,IAAM,CACzBC,IAAKF,EACLG,aAAc,OACdC,OAAQ,OACRC,KAAMhC,EAAgB,CAClBiC,OAAQR,EACRD,SAAUA,EACVE,IAAKQ,KAAKC,UAAUT,OAZpC,OAKcU,EALd,OAeQJ,EAAOI,EAASJ,KAfxB,uDAkBQK,QAAQC,MAAR,MACAC,MAAM,eAAD,cAnBb,8BAuBSP,EAAKX,OAvBd,wBAwBQkB,MAAMP,EAAKQ,QAxBnB,2BA4BSZ,YAGDa,OAAOC,SAASC,KAAO,oBAFvBF,OAAOC,SAASC,KAAO,KA7B/B,0D,sBAmCAC,GAAE,SAAUA,GCpDR,gDAAoD,iBDuDpD,IAAMC,EAAwB,CAC1B,OAAU,CACN,aAAc,aAAc,WAAY,aAAc,WAAY,eAEtE,IAAO,CACH,WAAY,gBAAiB,aAAc,eAC3C,SAAU,YACV,OAAQ,QACR,aAAc,eAElB,QAAW,CACP,SAAU,WAEd,aAAgB,CACZ,mBAAoB,oBAAqB,eAO3CC,EAA+E,CACjF,OAAU,SAAUC,GAChB,OAAOH,EAAEI,KAAK1B,EAAmByB,EAAKE,GAAG,GAAGC,SAEhD,IAAO,SAAUH,GACb,OAAOI,SAAS7B,EAAmByB,EAAKE,GAAG,GAAGC,SAElD,QAAW,SAAUH,GACjB,OAAQzB,EAAmByB,EAAKE,GAAG,GAAGC,OAAOE,eACzC,IAAK,OACL,IAAK,MACL,IAAK,IACD,OAAO,EACX,IAAK,QACL,IAAK,KACL,IAAK,IACD,OAAO,EACX,QACI,MAAM,IAAIjC,MAAM,sDAG5B,aAAgB,SAAU4B,GACtB,IAAM1B,EAAmB,GAIzB,OAHA0B,EAAKM,MAAK,WACNhC,EAAOiC,KAAKH,SAAS7B,EAAmBsB,EAAE3B,MAAMiC,YAE7C7B,IAIfoB,OAAOc,aAAP,2BAAsB,iHACZC,EAAsC,GAD1B,MAEKhD,OAAOiD,KAAKZ,GAFjB,yCAEPa,EAFO,SAGGb,EAAsBa,IAHzB,4DAIHC,EAJG,QAMS,IADfZ,EAAOH,EAAE,IAAMe,IACVC,OANC,oBAQa,IADnBb,EAAOH,EAAE,IAAMe,IACNC,OARH,wDAaVJ,EAASG,GAAWb,EAAYY,GAAUX,GAbhC,iLAiBlBV,QAAQwB,IAAIL,GAjBM,UAkBZjC,EAAYkB,OAAOjB,SAAUiB,OAAOhB,QAAS+B,GAlBjC,gEAqBtBZ,EAAE,iBAAiBkB,GAAG,QAASrB,OAAOc,cAEtC,IAAMQ,EAAanB,EAAE,cACjBmB,EAAWH,QACXG,EAAWC,QAAQ,CACfC,MAAO,aACPC,YAAa,eACbC,SAAU,KACVC,aAAc,CACVC,QAAS,0BACTC,MAAO,oBAEXC,kBAAmB,SAAUC,GACzB,GAAKA,EAAoBC,SACrB,OAAOD,EAAKE,KAEhB,IAAMC,EAAWH,EAAoBG,QACrC,IAAIA,EACA,KAAM,eAEV,IAAMC,EAAUxD,EAAOuD,EAAQE,QAAQP,OACjCQ,EAAU1D,EAAOuD,EAAQE,QAAQE,WACvC,OAAOnC,EAAE,+EAA+EoC,OACpFJ,EAASE,EAASN,EAAKE,QAG/BO,eAAgB,SAAUT,GACtB,GAAKA,EAAoBC,SACrB,OAAOD,EAAKE,KAEhB,IAAMC,EAAWH,EAAoBG,QACrC,IAAIA,EACA,KAAM,eAEV,IAAMC,EAAUxD,EAAOuD,EAAQE,QAAQP,OACjCQ,EAAU1D,EAAOuD,EAAQE,QAAQE,WACvC,OAAOnC,EAAE,oFAAoFoC,OACzFJ,EAASE,EAASN,EAAKE,QAG/BQ,kBAAmB,0DACnBC,iBAAkB,uEAI1B,IAAMC,EAAcxC,EAAE,eAClBwC,EAAYxB,QACZwB,EAAYpB,QAAQ,CAChBC,MAAO,aACPE,SAAU,KACVC,aAAc,CACVC,QAAS,0BACTC,MAAO,oBAEXY,kBAAmB,0DACnBC,iBAAkB,4DAI1B,IAAME,EAAczC,EAAE,eAClByC,EAAYzB,QACZyB,EAAYrB,QAAQ,CAChBC,MAAO,aACPC,YAAa,eACbC,SAAU,KACVC,aAAc,CACVC,QAAS,0BACTC,MAAO,oBAEXY,kBAAmB,0DACnBC,iBAAkB,4DAI1B,IAAMG,EAAgB1C,EAAE,iBACpB0C,EAAc1B,QACd0B,EAActB,QAAQ,CAClBC,MAAO,aACPC,YAAa,eACbC,SAAU,KACVC,aAAc,CACVC,QAAS,0BACTC,MAAO,oBAEXY,kBAAmB,0DACnBC,iBAAkB,4DAI1B,IAAMI,EAAiB3C,EAAE,kBACrB2C,EAAe3B,QACf2B,EAAevB,QAAQ,CACnBC,MAAO,aACPC,YAAa,eACbC,SAAU,KACVC,aAAc,CACVC,QAAS,0BACTC,MAAO,oBAEXY,kBAAmB,0DACnBC,iBAAkB,4DAI1B,IAAMK,EAAU5C,EAAE,WACd4C,EAAQ5B,QACR4B,EAAQxB,QAAQ,CACZC,MAAO,aACPC,YAAa,eACbC,SAAU,KACVC,aAAc,CACVC,QAAS,0BACTC,MAAO,oBAEXmB,yBAA0B,EAC1BP,kBAAmB,0DACnBC,iBAAkB,4DAI1B,IAAMO,EAAU9C,EAAE,8BACd8C,EAAQ9B,QACR8B,EAAQ1B,QAAQ,CACZC,MAAO,aACPC,YAAa,eACbyB,YAAY,EACZxB,SAAU,KACVC,aAAc,CACVC,QAAS,0BACTC,MAAO,oBAEXsB,MAAM,EACNC,OAAQ,SAAUC,GAId,OAHCA,EAAuBC,MAAK,SAAUC,EAAKC,GACxC,OAAO9C,SAAS6C,EAAIE,IAAM/C,SAAS8C,EAAIC,OAEpCJ,GAEXZ,kBAAmB,0DACnBC,iBAAkB,gFAI1BvC,EAAEuD,UAAUrC,GAAG,WAAY,+CAA+C,SAAUsC,GAChFxD,EAAE3B,MAAMiC,IAAI5B,EAAmBsB,EAAE3B,MAAMiC,OAAOmD,QAAQ,UAAW,MAC5DD,EAAEE,MAAQ,IAAMF,EAAEE,MAAQ,KAC3BF,EAAEG,yBEnRVC,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CACjDR,GAAIQ,EACJK,QAAQ,EACRF,QAAS,IAUV,OANAG,EAAoBN,GAAUO,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAG3EK,EAAOC,QAAS,EAGTD,EAAOD,QAIfJ,EAAoBS,EAAIF,EN5BpBjH,EAAW,GACf0G,EAAoBU,EAAI,CAAC9F,EAAQ+F,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAI1H,EAAS6D,OAAQ6D,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAYvH,EAAS0H,GACpCC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASxD,OAAQ+D,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa9G,OAAOiD,KAAKgD,EAAoBU,GAAGS,OAAOlH,GAAS+F,EAAoBU,EAAEzG,GAAK0G,EAASO,MAC9IP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb3H,EAAS8H,OAAOJ,IAAK,GACrB,IAAIK,EAAIT,SACET,IAANkB,IAAiBzG,EAASyG,IAGhC,OAAOzG,EAvBNiG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI1H,EAAS6D,OAAQ6D,EAAI,GAAK1H,EAAS0H,EAAI,GAAG,GAAKH,EAAUG,IAAK1H,EAAS0H,GAAK1H,EAAS0H,EAAI,GACrG1H,EAAS0H,GAAK,CAACL,EAAUC,EAAIC,IOJ/Bb,EAAoBsB,EAAKjB,IACxB,IAAIkB,EAASlB,GAAUA,EAAOmB,WAC7B,IAAOnB,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoByB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRvB,EAAoByB,EAAI,CAACrB,EAASuB,KACjC,IAAI,IAAI1H,KAAO0H,EACX3B,EAAoB4B,EAAED,EAAY1H,KAAS+F,EAAoB4B,EAAExB,EAASnG,IAC5EF,OAAO8H,eAAezB,EAASnG,EAAK,CAAE6H,YAAY,EAAMC,IAAKJ,EAAW1H,MCJ3E+F,EAAoBgC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOzH,MAAQ,IAAI0H,SAAS,cAAb,GACd,MAAOvC,GACR,GAAsB,iBAAX3D,OAAqB,OAAOA,QALjB,GCAxBgE,EAAoB4B,EAAI,CAACO,EAAKC,IAAUrI,OAAOsI,UAAUC,eAAe9B,KAAK2B,EAAKC,GCClFpC,EAAoBqB,EAAKjB,IACH,oBAAXmC,QAA0BA,OAAOC,aAC1CzI,OAAO8H,eAAezB,EAASmC,OAAOC,YAAa,CAAEtI,MAAO,WAE7DH,OAAO8H,eAAezB,EAAS,aAAc,CAAElG,OAAO,KCLvD8F,EAAoByC,IAAOpC,IAC1BA,EAAOqC,MAAQ,GACVrC,EAAOsC,WAAUtC,EAAOsC,SAAW,IACjCtC,GCHRL,EAAoBkB,EAAI,I,MCKxB,IAAI0B,EAAkB,CACrB,IAAK,GAaN5C,EAAoBU,EAAEQ,EAAK2B,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BxH,KACvD,IAGI0E,EAAU4C,GAHTlC,EAAUqC,EAAaC,GAAW1H,EAGhByF,EAAI,EAC3B,IAAIf,KAAY+C,EACZhD,EAAoB4B,EAAEoB,EAAa/C,KACrCD,EAAoBS,EAAER,GAAY+C,EAAY/C,IAGhD,GAAGgD,EAAS,IAAIrI,EAASqI,EAAQjD,GAEjC,IADG+C,GAA4BA,EAA2BxH,GACrDyF,EAAIL,EAASxD,OAAQ6D,IACzB6B,EAAUlC,EAASK,GAChBhB,EAAoB4B,EAAEgB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBjC,EAASK,IAAM,EAEhC,OAAOhB,EAAoBU,EAAE9F,IAG1BsI,EAAqBC,KAA6B,uBAAIA,KAA6B,wBAAK,GAC5FD,EAAmBE,QAAQN,EAAqBO,KAAK,KAAM,IAC3DH,EAAmBrG,KAAOiG,EAAqBO,KAAK,KAAMH,EAAmBrG,KAAKwG,KAAKH,K,GC3CvF,IAAII,EAAsBtD,EAAoBU,OAAEP,EAAW,CAAC,MAAM,IAAOH,EAAoB,QAC7FsD,EAAsBtD,EAAoBU,EAAE4C,I","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/processing.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","//import $ from 'jquery';\r\n//import 'bootstrap';\r\nimport axios from 'axios';\r\n//import 'select2';\r\nimport { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap_any } from './util/unwrap_any';\r\nimport { DataFormat, IdTextPair, OptionData } from 'select2';\r\nimport { unwrap } from './util';\r\n\r\ndeclare const isChiefTurn: boolean;\r\ndeclare global {\r\n interface Window {\r\n submitAction: () => Promise;\r\n turnList: number[],\r\n command: string,\r\n }\r\n}\r\n\r\nasync function reserveTurn(turnList: number[], command: string, arg: Record) {\r\n const target = isChiefTurn ? 'j_set_chief_command.php' : 'j_set_general_command.php';\r\n\r\n let data: InvalidResponse;\r\n try {\r\n const response = await axios({\r\n url: target,\r\n responseType: 'json',\r\n method: 'post',\r\n data: convertFormData({\r\n action: command,\r\n turnList: turnList,\r\n arg: JSON.stringify(arg)\r\n })\r\n });\r\n data = response.data;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n alert(`에러가 발생했습니다: ${e}`);\r\n return;\r\n }\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n return;\r\n }\r\n\r\n if (!isChiefTurn) {\r\n window.location.href = './';\r\n } else {\r\n window.location.href = 'b_chiefcenter.php';\r\n }\r\n}\r\n\r\n$(function ($) {\r\n setAxiosXMLHttpRequest();\r\n //checkCommandArg 참고\r\n const availableArgumentList = {\r\n 'string': [\r\n 'nationName', 'optionText', 'itemType', 'nationType', 'itemCode', 'commandType',\r\n ],\r\n 'int': [\r\n 'crewType', 'destGeneralID', 'destCityID', 'destNationID',\r\n 'amount', 'colorType',\r\n 'year', 'month',\r\n 'srcArmType', 'destArmType', //숙련전환 전용\r\n ],\r\n 'boolean': [\r\n 'isGold', 'buyRice',\r\n ],\r\n 'integerArray': [\r\n 'destNationIDList', 'destGeneralIDList', 'amountList'\r\n ]\r\n }\r\n\r\n type argTypes = keyof typeof availableArgumentList;\r\n type argValues = string | number | boolean | number[];\r\n\r\n const handlerList: Record) => argValues> = {\r\n 'string': function ($obj: JQuery) {\r\n return $.trim(unwrap_any($obj.eq(0).val()));\r\n },\r\n 'int': function ($obj: JQuery) {\r\n return parseInt(unwrap_any($obj.eq(0).val()));\r\n },\r\n 'boolean': function ($obj: JQuery) {\r\n switch (unwrap_any($obj.eq(0).val()).toLowerCase()) {\r\n case \"true\":\r\n case \"yes\":\r\n case \"1\":\r\n return true;\r\n case \"false\":\r\n case \"no\":\r\n case \"0\":\r\n return false;\r\n default:\r\n throw new Error(\"Boolean.parse: Cannot convert string to boolean.\");\r\n }\r\n },\r\n 'integerArray': function ($obj: JQuery) {\r\n const result: number[] = [];\r\n $obj.each(function () {\r\n result.push(parseInt(unwrap_any($(this).val())));\r\n });\r\n return result;\r\n }\r\n }\r\n\r\n window.submitAction = async function (): Promise {\r\n const argument: Record = {};\r\n for (const typeName of Object.keys(availableArgumentList) as argTypes[]) {\r\n const typeKeys = availableArgumentList[typeName];\r\n for (const typeKey of typeKeys) {\r\n let $obj = $('#' + typeKey) as JQuery;\r\n if ($obj.length == 0) {\r\n $obj = $('.' + typeKey);\r\n if ($obj.length == 0) {\r\n continue;\r\n }\r\n }\r\n\r\n argument[typeKey] = handlerList[typeName]($obj);\r\n }\r\n }\r\n\r\n console.log(argument);\r\n await reserveTurn(window.turnList, window.command, argument);\r\n };\r\n\r\n $('#commonSubmit').on('click', window.submitAction);\r\n\r\n const $colorType = $('#colorType');\r\n if ($colorType.length) {\r\n $colorType.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"색상을 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n templateSelection: function (item) {\r\n if ((item as DataFormat).disabled) {\r\n return item.text;\r\n }\r\n const element = (item as OptionData).element;\r\n if(!element){\r\n throw 'invalid type';\r\n }\r\n const bgcolor = unwrap(element.dataset.color);\r\n const fgcolor = unwrap(element.dataset.fontColor);\r\n return $(\"  {2}\".format(\r\n bgcolor, fgcolor, item.text\r\n ));\r\n },\r\n templateResult: function (item) {\r\n if ((item as DataFormat).disabled) {\r\n return item.text;\r\n }\r\n const element = (item as OptionData).element;\r\n if(!element){\r\n throw 'invalid type';\r\n }\r\n const bgcolor = unwrap(element.dataset.color);\r\n const fgcolor = unwrap(element.dataset.fontColor);\r\n return $(\"
{2}
\".format(\r\n bgcolor, fgcolor, item.text\r\n ));\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'no-padding simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $nationType = $('#nationType');\r\n if ($nationType.length) {\r\n $nationType.select2({\r\n theme: 'bootstrap4',\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $destCityID = $('#destCityID');\r\n if ($destCityID.length) {\r\n $destCityID.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"도시를 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $destNationID = $('#destNationID');\r\n if ($destNationID.length) {\r\n $destNationID.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"국가를 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $destGeneralID = $('#destGeneralID');\r\n if ($destGeneralID.length) {\r\n $destGeneralID.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"장수를 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $isGold = $('#isGold');\r\n if ($isGold.length) {\r\n $isGold.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"분량을 지정해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n minimumResultsForSearch: -1,\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $amount = $('#amount:not([type=hidden])');\r\n if ($amount.length) {\r\n $amount.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"분량을 지정해 주세요.\",\r\n allowClear: false,\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n tags: true,\r\n sorter: function (items) {\r\n (items as IdTextPair[]).sort(function (lhs, rhs) {\r\n return parseInt(lhs.id) - parseInt(rhs.id);\r\n })\r\n return items;\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'select2-only-number simple-select2-align-center bg-secondary text-secondary',\r\n })\r\n }\r\n\r\n $(document).on('keypress', '.select2-only-number .select2-search__field', function (e) {\r\n $(this).val(unwrap_any($(this).val()).replace(/[^\\d].+/, \"\"));\r\n if ((e.which < 48 || e.which > 57)) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n});","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 500;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t500: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(8329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertFormData","values","formData","FormData","simpleConv","v","toString","TypeError","Object","entries","key","value","arrKey","subValue","append","NotNullExpected","message","this","name","Error","unwrap","result","unwrap_any","reserveTurn","turnList","command","arg","target","isChiefTurn","url","responseType","method","data","action","JSON","stringify","response","console","error","alert","reason","window","location","href","$","availableArgumentList","handlerList","$obj","trim","eq","val","parseInt","toLowerCase","each","push","submitAction","argument","keys","typeName","typeKey","length","log","on","$colorType","select2","theme","placeholder","language","containerCss","display","color","templateSelection","item","disabled","text","element","bgcolor","dataset","fgcolor","fontColor","format","templateResult","containerCssClass","dropdownCssClass","$nationType","$destCityID","$destNationID","$destGeneralID","$isGold","minimumResultsForSearch","$amount","allowClear","tags","sorter","items","sort","lhs","rhs","id","document","e","replace","which","preventDefault","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"processing.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/processing.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","//import $ from 'jquery';\r\n//import 'bootstrap';\r\nimport axios from 'axios';\r\n//import 'select2';\r\nimport { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap_any } from './util/unwrap_any';\r\nimport { DataFormat, IdTextPair, OptionData } from 'select2';\r\nimport { unwrap } from './util';\r\n\r\ndeclare const isChiefTurn: boolean;\r\ndeclare global {\r\n interface Window {\r\n submitAction: () => Promise;\r\n turnList: number[],\r\n command: string,\r\n }\r\n}\r\n\r\nasync function reserveTurn(turnList: number[], command: string, arg: Record) {\r\n const target = isChiefTurn ? 'j_set_chief_command.php' : 'j_set_general_command.php';\r\n\r\n let data: InvalidResponse;\r\n try {\r\n const response = await axios({\r\n url: target,\r\n responseType: 'json',\r\n method: 'post',\r\n data: convertFormData({\r\n action: command,\r\n turnList: turnList,\r\n arg: JSON.stringify(arg)\r\n })\r\n });\r\n data = response.data;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n alert(`에러가 발생했습니다: ${e}`);\r\n return;\r\n }\r\n\r\n if (!data.result) {\r\n alert(data.reason);\r\n return;\r\n }\r\n\r\n if (!isChiefTurn) {\r\n window.location.href = './';\r\n } else {\r\n window.location.href = 'b_chiefcenter.php';\r\n }\r\n}\r\n\r\n$(function ($) {\r\n setAxiosXMLHttpRequest();\r\n //checkCommandArg 참고\r\n const availableArgumentList = {\r\n 'string': [\r\n 'nationName', 'optionText', 'itemType', 'nationType', 'itemCode', 'commandType',\r\n ],\r\n 'int': [\r\n 'crewType', 'destGeneralID', 'destCityID', 'destNationID',\r\n 'amount', 'colorType',\r\n 'year', 'month',\r\n 'srcArmType', 'destArmType', //숙련전환 전용\r\n ],\r\n 'boolean': [\r\n 'isGold', 'buyRice',\r\n ],\r\n 'integerArray': [\r\n 'destNationIDList', 'destGeneralIDList', 'amountList'\r\n ]\r\n }\r\n\r\n type argTypes = keyof typeof availableArgumentList;\r\n type argValues = string | number | boolean | number[];\r\n\r\n const handlerList: Record) => argValues> = {\r\n 'string': function ($obj: JQuery) {\r\n return $.trim(unwrap_any($obj.eq(0).val()));\r\n },\r\n 'int': function ($obj: JQuery) {\r\n return parseInt(unwrap_any($obj.eq(0).val()));\r\n },\r\n 'boolean': function ($obj: JQuery) {\r\n switch (unwrap_any($obj.eq(0).val()).toLowerCase()) {\r\n case \"true\":\r\n case \"yes\":\r\n case \"1\":\r\n return true;\r\n case \"false\":\r\n case \"no\":\r\n case \"0\":\r\n return false;\r\n default:\r\n throw new Error(\"Boolean.parse: Cannot convert string to boolean.\");\r\n }\r\n },\r\n 'integerArray': function ($obj: JQuery) {\r\n const result: number[] = [];\r\n $obj.each(function () {\r\n result.push(parseInt(unwrap_any($(this).val())));\r\n });\r\n return result;\r\n }\r\n }\r\n\r\n window.submitAction = async function (): Promise {\r\n const argument: Record = {};\r\n for (const typeName of Object.keys(availableArgumentList) as argTypes[]) {\r\n const typeKeys = availableArgumentList[typeName];\r\n for (const typeKey of typeKeys) {\r\n let $obj = $('#' + typeKey) as JQuery;\r\n if ($obj.length == 0) {\r\n $obj = $('.' + typeKey);\r\n if ($obj.length == 0) {\r\n continue;\r\n }\r\n }\r\n\r\n argument[typeKey] = handlerList[typeName]($obj);\r\n }\r\n }\r\n\r\n console.log(argument);\r\n await reserveTurn(window.turnList, window.command, argument);\r\n };\r\n\r\n $('#commonSubmit').on('click', window.submitAction);\r\n\r\n const $colorType = $('#colorType');\r\n if ($colorType.length) {\r\n $colorType.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"색상을 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n templateSelection: function (item) {\r\n if ((item as DataFormat).disabled) {\r\n return item.text;\r\n }\r\n const element = (item as OptionData).element;\r\n if(!element){\r\n throw 'invalid type';\r\n }\r\n const bgcolor = unwrap(element.dataset.color);\r\n const fgcolor = unwrap(element.dataset.fontColor);\r\n return $(\"  {2}\".format(\r\n bgcolor, fgcolor, item.text\r\n ));\r\n },\r\n templateResult: function (item) {\r\n if ((item as DataFormat).disabled) {\r\n return item.text;\r\n }\r\n const element = (item as OptionData).element;\r\n if(!element){\r\n throw 'invalid type';\r\n }\r\n const bgcolor = unwrap(element.dataset.color);\r\n const fgcolor = unwrap(element.dataset.fontColor);\r\n return $(\"
{2}
\".format(\r\n bgcolor, fgcolor, item.text\r\n ));\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'no-padding simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $nationType = $('#nationType');\r\n if ($nationType.length) {\r\n $nationType.select2({\r\n theme: 'bootstrap4',\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $destCityID = $('#destCityID');\r\n if ($destCityID.length) {\r\n $destCityID.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"도시를 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $destNationID = $('#destNationID');\r\n if ($destNationID.length) {\r\n $destNationID.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"국가를 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $destGeneralID = $('#destGeneralID');\r\n if ($destGeneralID.length) {\r\n $destGeneralID.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"장수를 선택해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $isGold = $('#isGold');\r\n if ($isGold.length) {\r\n $isGold.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"분량을 지정해 주세요.\",\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n minimumResultsForSearch: -1,\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n });\r\n }\r\n\r\n const $amount = $('#amount:not([type=hidden])');\r\n if ($amount.length) {\r\n $amount.select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"분량을 지정해 주세요.\",\r\n allowClear: false,\r\n language: \"ko\",\r\n containerCss: {\r\n display: \"inline-block !important\",\r\n color: 'white !important',\r\n },\r\n tags: true,\r\n sorter: function (items) {\r\n (items as IdTextPair[]).sort(function (lhs, rhs) {\r\n return parseInt(lhs.id) - parseInt(rhs.id);\r\n })\r\n return items;\r\n },\r\n containerCssClass: 'simple-select2-align-center bg-secondary text-secondary',\r\n dropdownCssClass: 'select2-only-number simple-select2-align-center bg-secondary text-secondary',\r\n })\r\n }\r\n\r\n $(document).on('keypress', '.select2-only-number .select2-search__field', function (e) {\r\n $(this).val(unwrap_any($(this).val()).replace(/[^\\d].+/, \"\"));\r\n if ((e.which < 48 || e.which > 57)) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n});","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 500;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t500: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(8329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertFormData","values","formData","FormData","simpleConv","v","toString","TypeError","Object","entries","key","value","arrKey","subValue","append","Error","NotNullExpected","unwrap","result","unwrap_any","reserveTurn","turnList","command","arg","target","isChiefTurn","url","responseType","method","data","action","JSON","stringify","response","console","error","alert","reason","window","location","href","$","availableArgumentList","handlerList","$obj","trim","eq","val","parseInt","toLowerCase","each","push","this","submitAction","argument","keys","typeName","typeKey","length","log","on","$colorType","select2","theme","placeholder","language","containerCss","display","color","templateSelection","item","disabled","text","element","bgcolor","dataset","fgcolor","fontColor","format","templateResult","containerCssClass","dropdownCssClass","$nationType","$destCityID","$destNationID","$destGeneralID","$isGold","minimumResultsForSearch","$amount","allowClear","tags","sorter","items","sort","lhs","rhs","id","document","e","replace","which","preventDefault","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/recent_map.js b/hwe/js/recent_map.js index 3533b76b..1deddaa9 100644 --- a/hwe/js/recent_map.js +++ b/hwe/js/recent_map.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={7413:(t,e,n)=>{n.d(e,{x:()=>A}),n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),s=n(9755),u=n.n(s),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},E=function(t){var r=u()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=u()(n+" .city_link"),c=u()(n+" .map_body");return!e.neutralView&&I()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=u()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=u()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,s=c.data("scale");if(s&&(i/=s,l/=s),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(u()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=u()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=u()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},A=function(t){var e=u()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=u()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=u()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=u()('
'));o.append(c)}if(t.isCapital){var l=u()('
');o.append(l)}var s=u()(''.concat(t.name,"").format());o.append(s),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},T=function(t){var e=u()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=u()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=u()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=u()('
'));if(o.append(i),t.state>0){var c=u()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",s=u()('
'));if(t.isCapital){var p=u()('
'));s.append(p)}i.append(s)}var m=u()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=M(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,s,u,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},u=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},s=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(s).map(u).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=M(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,s?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=u()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=M(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=U.length>1&&void 0!==U[1]?U[1]:".world_map",0!=(r=u()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,s=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),B=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,B.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,N=u()(n+" .map_body"),B.click((function(){B.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(N.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),s?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,q=J.data,t.next=40,w(q).then(C).then(x).then(s?T:A).then(E).then(D).then(P);case 40:if(W=t.sent,e.callback&&e.callback(W,q),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,M(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(s?T:A).then(E).then(D).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return Y=localStorage.getItem(b),V=Y?JSON.parse(Y):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=A,u()((function(t){I()&&t(".map_body .map_toggle_single_tap").show()}))},1419:(t,e,n)=>{var r=n(9755),a=n.n(r),o=(n(3734),n(7413));a()((function(t){(0,o.x)({targetJson:"j_map_recent.php",reqType:"get",dynamicMapTheme:!0,callback:function(e,n){var r=n;t(".card-body").html(r.history),window.parent!==window&&setTimeout((function(){window.parent.fitIframe()}),1)}})}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;nv}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165);var h=function(t){i(n,t);var e=c(n);function n(){var t;a(this,n);for(var r=arguments.length,o=new Array(r),i=0;i0&&void 0!==arguments[0]?arguments[0]:"";return a(this,l),y(s(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=l,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&o(e.prototype,n),l}(u(Error)));function v(t){if(null==t)throw new h;return t}}},n={};function r(t){var a=n[t];if(void 0!==a)return a.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=e,t=[],r.O=(e,n,a,o)=>{if(!n){var i=1/0;for(u=0;u=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=952,(()=>{var t={952:0,842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,s=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var u=l(r);for(e&&e(n);sr(1419)));a=r.O(a)})(); +(()=>{"use strict";var t,e={7413:(t,e,n)=>{n.d(e,{x:()=>A}),n(8674),n(2526),n(1817),n(2165),n(7042),n(1038),n(7941),n(7327),n(5003),n(9337);var r=n(1763),a=n.n(r),o=n(2205),i=n.n(o),c=(n(5666),n(4916),n(3123),n(4747),n(2222),n(9826),n(1249),n(6992),n(1539),n(189),n(8783),n(3948),n(9669)),l=n.n(c),s=n(9755),u=n.n(s),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(1827));function p(t){for(var e={},n=0,r=Object.values(t);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){c=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(c)throw o}}}}function _(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&e.attr("href",h.format(t.id)),y&&e.on("click",(function(){return y(t)}))})),t},E=function(t){var r=u()(n+" .city_tooltip"),a=r.find(".city_name"),o=r.find(".nation_name"),i=u()(n+" .city_link"),c=u()(n+" .map_body");return!e.neutralView&&I()&&(i.on("touchstart",(function(t){if(window.sam_toggleSingleTap)return!0;var e=u()(this),n=e.data("touchMode");a.data("target")!=e.data("id")||void 0===n?e.data("touchMode",1):e.data("touchMode",n+1),c.data("touchMode",1),a.data("target",e.data("id"))})),i.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;var t=u()(this),e=t.parent().position();a.html(t.data("text"));var n=t.data("nation");n?o.html(n).show():o.html("").hide();var i=e.left,l=e.top,s=c.data("scale");if(s&&(i/=s,l/=s),r.css({top:l+25,left:i+35}).show(),t.data("touchMode")<=1)return!1;t.data("touchMode",0)})),c.on("touchend",(function(){if(window.sam_toggleSingleTap)return!0;r.hide()}))),c.on("mousemove",(function(t){if(u()(this).data("touchMode"))return!0;var e=this.getBoundingClientRect(),n=t.clientX-e.left-this.clientLeft+this.scrollLeft,a=t.clientY-e.top-this.clientTop+this.scrollTop,o=c.data("scale");o&&(n/=o,a/=o),r.css({top:a+10,left:n+10})})),i.on("mouseenter",(function(){if(c.data("touchMode"))return!0;var t=u()(this);a.data("target",t.data("id")),a.html(t.data("text"));var e=t.data("nation");e?o.html(e).show():o.html("").hide(),r.show()})),i.on("mouseleave",(function(){r.hide()})),i.on("click",(function(){var t=u()(this).data("touchMode");if(void 0!==t)return 1!==t&&void 0})),t},A=function(t){var e=u()("".concat(n," .map_body")),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15});var a=u()('');a.data({text:t.text,nation:t.nation,id:t.id}),r.append(a);var o=u()('
');if(void 0!==t.color&&o.css({"background-color":t.color}),a.append(o),t.state>0){var i="wrong";t.state<10?i="good":t.state<40?i="bad":t.state<50&&(i="war");var c=u()('
'));o.append(c)}if(t.isCapital){var l=u()('
');o.append(l)}var s=u()(''.concat(t.name,"").format());o.append(s),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},T=function(t){var e=u()(n+" .map_body"),a=t.cityList,o=t.myCity;return a.forEach((function(t){var n=t.id;u()(".city_base_".concat(n)).detach();var r=u()('
'));if(r.addClass("city_level_".concat(t.level)),r.data("obj",t).css({left:t.x-20,top:t.y-15}),void 0!==t.color){var a=u()('
');r.append(a),a.css({"background-image":"url({0}/b{1}.png)".format(window.pathConfig.gameImage,d(t.color))})}var o=u()('');o.data({text:t.text,nation:t.nation,id:t.id}),r.append(o);var i=u()('
'));if(o.append(i),t.state>0){var c=u()('
'));o.append(c)}if(t.nationID&&t.nationID>0){var l=t.supply?"f":"d",s=u()('
'));if(t.isCapital){var p=u()('
'));s.append(p)}i.append(s)}var m=u()(''.concat(t.name,""));i.append(m),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},k=function(){return(k=M(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,s,u,f,d;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return f=function(t){var e=t.id,n=t.nationID,r=16;return e in o&&(r|=o[e]<<3),null!==l&&n==l&&(r|=4),i.has(e)&&(r|=2),null!==c&&e==c&&(r|=2),m&&(r|=1),F(F({},t),{},{clickable:r})},u=function(t){var e=t.nationID;if(void 0===e||!(e in a))return F(F({},t),{},{isCapital:!1});var n=a[e];return F(F({},t),{},{nation:n.name,color:n.color,isCapital:n.capital==t.id})},s=function(t){var e=t.id;if(!(e in v))throw TypeError("알수 없는 cityID: ".concat(e));var n=j(v[e],3),r=n[0],a=n[1],o=n[2];return F(F({},t),{},{name:r,x:a,y:o})},r=function(t){var e=j(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=j(t,6),n=e[0],r=e[1],a=e[2],o=e[3];return{id:n,level:r,state:a,nationID:o>0?o:void 0,region:e[4],supply:0!=e[5]}},a=p(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,d=e.cityList.map(n).map(s).map(u).map(f).map(window.formatCityInfo),t.abrupt("return",{cityList:d,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},x=function(t){return k.apply(this,arguments)},O=function(){return(O=M(regeneratorRuntime.mark((function t(n){var a,o,i,c,l,f,p,d,m,y,h,v;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=function(){var t=r.data("currentTheme"),e=n.theme;t!==e&&(t&&r.removeClass("map_theme_"+t),r.addClass("map_theme_"+e),r.data("currentTheme",null!=e?e:"_current"))},e.dynamicMapTheme&&a(),o=n.startYear,i=n.year,c=n.month,s?r.addClass("map_detail").removeClass("map_basic"):r.addClass("map_basic").removeClass("map_detail"),l=u()(".map_title_text"),i0&&(m-=1),m&&d.push("{0}년".format(m)),y&&d.push("{0}개월".format(y)),p.push("초반제한 기간 : {0} ({1}년)".format(d.join(" "),o+3))),h=Math.floor(Math.max(0,i-o)/5)+1,v=5*h+o,p.push("기술등급 제한 : {0}등급 ({1}년 해제)".format(h,v,h+1)),f.html(p.join("
")),r.removeClass("map_string map_summer map_fall map_winter"),c<=3?r.addClass("map_spring"):c<=6?r.addClass("map_summer"):c<=9?r.addClass("map_fall"):r.addClass("map_winter"),l.html("{0}年 {1}月".format(i,c)),t.abrupt("return",n);case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)},C=function(t){return O.apply(this,arguments)},_=function(){return(_=M(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.result){t.next=2;break}throw"fail: ".concat(e.reason);case 2:if(a()(e.startYear)&&a()(e.year)&&a()(e.month)){t.next=4;break}throw"fail: date type";case 4:return c&&(localStorage.setItem(g,JSON.stringify([serverID,e])),localStorage.setItem(b,JSON.stringify(e.startYear))),r.removeClass("draw_required"),t.abrupt("return",e);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)},w=function(t){return _.apply(this,arguments)},n=U.length>1&&void 0!==U[1]?U[1]:".world_map",0!=(r=u()(n)).length){t.next=15;break}return t.abrupt("return");case 15:return o={isDetailMap:!0,clickableAll:!1,selectCallback:void 0,hrefTemplate:"#",useCachedMap:!1,year:void 0,month:void 0,aux:void 0,neutralView:!1,showMe:!0,targetJson:"j_map.php",reqType:"post",dynamicMapTheme:!1,callback:void 0,startYear:void 0},e=i()({},o,e),c=e.useCachedMap,s=e.isDetailMap,m=e.clickableAll,y=e.selectCallback,h=(0,f.Wg)(e.hrefTemplate),v=window.getCityPosition(),g="sam.".concat(serverNick,".map"),b="am.".concat(serverNick,".startYear"),R=r.find(".map_toggle_cityname"),"yes"==localStorage.getItem("sam.hideMapCityName")&&(r.addClass("hide_cityname"),R.addClass("active").attr("aria-pressed","true")),R.click((function(){R.hasClass("active")?(r.removeClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","no")):(r.addClass("hide_cityname"),localStorage.setItem("sam.hideMapCityName","yes"))})),B=r.find(".map_toggle_single_tap"),"yes"==localStorage.getItem("sam.toggleSingleTap")?(window.sam_toggleSingleTap=!0,B.addClass("active").attr("aria-pressed","true")):window.sam_toggleSingleTap=!1,N=u()(n+" .map_body"),B.click((function(){B.hasClass("active")?(localStorage.setItem("sam.toggleSingleTap","no"),window.sam_toggleSingleTap=!1):(N.removeData("touchMode"),localStorage.setItem("sam.toggleSingleTap","yes"),window.sam_toggleSingleTap=!0)})),s?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:(0,f.Wg)(e.targetJson),method:(0,f.Wg)(e.reqType),responseType:"json",data:S({data:JSON.stringify({neutralView:e.neutralView,year:e.year,month:e.month,showMe:e.showMe,aux:e.aux})})}),t.next=36,L;case 36:return J=t.sent,q=J.data,t.next=40,w(q).then(C).then(x).then(s?T:A).then(E).then(D).then(P);case 40:if(W=t.sent,e.callback&&e.callback(W,q),!r.hasClass("draw_required")){t.next=53;break}if(!c){t.next=48;break}return t.next=46,M(regeneratorRuntime.mark((function t(){var e,n,r,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=localStorage.getItem(g)){t.next=3;break}return t.abrupt("return");case 3:if(n=JSON.parse(e),r=j(n,2),a=r[0],o=r[1],a==serverID){t.next=6;break}return t.abrupt("return");case 6:return t.next=8,C(o).then(x).then(s?T:A).then(E).then(D).then(P);case 8:case"end":return t.stop()}}),t)})))();case 46:t.next=53;break;case 48:if(!e.year||!e.month){t.next=53;break}return Y=localStorage.getItem(b),V=Y?JSON.parse(Y):e.year,t.next=53,C({year:e.year,month:e.month,startYear:V});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=A,u()((function(t){I()&&t(".map_body .map_toggle_single_tap").show()}))},1419:(t,e,n)=>{var r=n(9755),a=n.n(r),o=(n(3734),n(7413));a()((function(t){(0,o.x)({targetJson:"j_map_recent.php",reqType:"get",dynamicMapTheme:!0,callback:function(e,n){var r=n;t(".card-body").html(r.history),window.parent!==window&&setTimeout((function(){window.parent.fitIframe()}),1)}})}))},1827:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?i(t):e}function i(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t){var e="function"==typeof Map?new Map:void 0;return(c=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return l(t,arguments,f(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),u(r,t)})(t)}function l(t,e,n){return(l=s()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var a=new(Function.bind.apply(t,r));return n&&u(a,n.prototype),a}).apply(null,arguments)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t,e){return(u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{Wg:()=>m}),n(2222),n(8304),n(489),n(2772),n(1539),n(9714),n(2419),n(6992),n(1532),n(8783),n(3948),n(2526),n(1817),n(2165),Error;var d=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&u(t,e)}(c,t);var e,n,r=(e=c,n=s(),function(){var t,r=f(e);if(n){var a=f(this).constructor;t=Reflect.construct(r,arguments,a)}else t=r.apply(this,arguments);return o(this,t)});function c(){var t;a(this,c);for(var e=arguments.length,n=new Array(e),o=0;o{if(!n){var i=1/0;for(u=0;u=o)&&Object.keys(r.O).every((t=>r.O[t](n[l])))?n.splice(l--,1):(c=!1,o0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,a,o]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=952,(()=>{var t={952:0,842:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var a,o,[i,c,l]=n,s=0;for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var u=l(r);for(e&&e(n);sr(1419)));a=r.O(a)})(); //# sourceMappingURL=recent_map.js.map \ No newline at end of file diff --git a/hwe/js/recent_map.js.map b/hwe/js/recent_map.js.map index 355fe7b5..206481b0 100644 --- a/hwe/js/recent_map.js.map +++ b/hwe/js/recent_map.js.map @@ -1 +1 @@ -{"version":3,"file":"recent_map.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/recent_map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","import $ from 'jquery';\nimport 'bootstrap';\nimport { reloadWorldMap } from './map';\n\ndeclare global{\n interface Window{\n fitIframe:()=>void;\n }\n}\n\n$(function($){\n void reloadWorldMap({\n targetJson: \"j_map_recent.php\",\n reqType: 'get',\n dynamicMapTheme: true,\n callback: function(data, rawObject) {\n const historyRaw = rawObject as unknown as {\n history: string\n };\n $('.card-body').html(historyRaw.history);\n\n if(window.parent !== window){\n setTimeout(()=>{\n window.parent.fitIframe();\n }, 1);\n\n }\n }\n });\n});","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 952;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t952: 0,\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1419)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertDictById","arr","result","Object","values","v","id","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","reloadWorldMap","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","city","$cityLink","find","clickable","attr","hrefTemplate","selectCallback","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","neutralView","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","nationID","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","clickableAll","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","isDetailMap","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","useCachedMap","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","$","historyRaw","history","setTimeout","fitIframe","NotNullExpected","message","Error","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"recent_map.js","mappings":"uBAAIA,E,gWCuGE,SAAUC,EAAgEC,GAE5E,IADA,IAAMC,EAAqC,GAC3C,MAAgBC,OAAOC,OAAOH,GAA9B,eAAoC,CAA/B,IAAMI,EAAC,KACRH,EAAOG,EAAEC,IAAMD,EAEnB,OAAOH,EAsDL,SAAUK,EAAeC,GAc3B,MAbuB,KAAnBA,EAAMC,OAAO,KACbD,EAAQA,EAAME,OAAO,IAEzBF,EAAQA,EAAMG,cAEI,IAAIC,IAAI,CACtB,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SACtE,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SACtE,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SACtE,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SACtE,WAGWC,IAAIL,GAIZA,EAHI,S,QA1Kf,gDAAoD,iBA6HpDM,OAAOC,UAAUC,OAAS,WAAsC,2BAAzBC,EAAyB,yBAAzBA,EAAyB,gBAC5D,OAAOC,KAAKC,QAAQ,YAAY,SAAUC,EAAOC,GAC7C,YAA+B,IAAhBJ,EAAKI,GAA0BJ,EAAKI,GAAQC,WAAaF,M,ukCCpI1E,SAAUG,EAAgBnB,GAgB5B,IAfA,IAAMoB,EAAW,IAAIC,SAEfC,EAAa,SAACrB,GAChB,GAAG,IAASA,GACR,OAAOA,EAEX,GAAG,IAASA,GACR,OAAOA,EAAEiB,WAEb,GAAG,IAAUjB,GACT,OAAOA,EAAE,OAAO,QAEpB,MAAM,IAAIsB,UAAU,0BAGxB,MAA0BxB,OAAOyB,QAAQxB,GAAzC,eAAiD,CAA7C,O,EAAA,K,EAAA,E,miBAAOyB,EAAP,KAAYC,EAAZ,KACA,GAAG,IAAQA,GAAX,CACI,IADc,EACRC,EAAS,GAAH,OAAMF,EAAN,MADE,IAEQC,GAFR,IAEd,2BAA4B,KAAlBE,EAAkB,QACxBR,EAASS,OAAOF,EAAQL,EAAWM,KAHzB,oCAQlBR,EAASS,OAAOJ,EAAKH,EAAWI,I,QAGpC,OAAON,E,i7DC4DX,SAASU,IACL,IACYC,EADNC,EAAW,4BAA4BC,MAAM,KAM7CC,EAAUC,OAChB,SAAK,iBAAkBA,QAAYD,EAAQE,eAAkBC,oBAAoBH,EAAQE,iBAN7EL,EAaE,CAAC,IAAKC,EAASM,KAAK,oBAAqB,SAAU,KAAKA,KAAK,IAZhEH,OAAOI,WAAWR,GAAOS,SAuCjC,SAAeC,EAAtB,kC,iDAAO,WAA8BC,GAA9B,0BA4CYC,EA5CZ,EAoEYC,EApEZ,EAkJYC,EAlJZ,EA6PMC,EA6DAC,EA4DAC,EAyIAC,EAmBAC,EAlhBN,iHAkhBMA,EAlhBN,SAkhBmBC,GAElB,OADAC,EAAWC,KAAK,WAAYF,GACrBA,GArBFF,EA/fN,SA+fuBE,GAgBtB,OAdAA,EAAIG,SAASC,SAAQ,SAAUC,GAC3B,IAAMC,EAAYL,EAAWM,KAAX,qBAA8BF,EAAKtD,GAAnC,gBAEd,cAAesD,GAAQA,EAAKG,UAAY,GACxCF,EAAUG,KAAK,OAAQC,EAAajD,OAAO4C,EAAKtD,KAGhD4D,GACAL,EAAUM,GAAG,SAAS,WAClB,OAAOD,EAAeN,SAK3BL,GAzJFH,EAtXN,SAsXmBG,GAClB,IAAMa,EAAW,IAAEC,EAAa,kBAC1BC,EAAgBF,EAASN,KAAK,cAC9BS,EAAkBH,EAASN,KAAK,gBAEhCU,EAAQ,IAAEH,EAAa,eAEvBI,EAAY,IAAEJ,EAAa,cA+HjC,OA3HKvB,EAAO4B,aAAexC,MACvBsC,EAAML,GAAG,cAAc,SAAUQ,GAC7B,GAAIpC,OAAOqC,oBACP,OAAO,EAEX,IAAMC,EAAQ,IAAE3D,MAEV4D,EAAYD,EAAMpB,KAAK,aACzBa,EAAcb,KAAK,WAAaoB,EAAMpB,KAAK,YAEtBsB,IAAdD,EADPD,EAAMpB,KAAK,YAAa,GAIxBoB,EAAMpB,KAAK,YAAaqB,EAAY,GAExCL,EAAUhB,KAAK,YAAa,GAE5Ba,EAAcb,KAAK,SAAUoB,EAAMpB,KAAK,UAK5Ce,EAAML,GAAG,YAAY,WACjB,GAAI5B,OAAOqC,oBACP,OAAO,EAEX,IAAMC,EAAQ,IAAE3D,MACV8D,EAAWH,EAAMI,SAASD,WAChCV,EAAcY,KAAKL,EAAMpB,KAAK,SAE9B,IAAM0B,EAAcN,EAAMpB,KAAK,UAC3B0B,EACAZ,EAAgBW,KAAKC,GAAaC,OAElCb,EAAgBW,KAAK,IAAIG,OAG7B,IAAIC,EAAON,EAASM,KAChBC,EAAMP,EAASO,IAEbC,EAAQf,EAAUhB,KAAK,SAS7B,GARI+B,IACAF,GAAQE,EACRD,GAAOC,GAGXpB,EAASqB,IAAI,CAAE,IAAOF,EAAM,GAAI,KAAQD,EAAO,KAAMF,OAEnCP,EAAMpB,KAAK,cACZ,EACb,OAAO,EAIXoB,EAAMpB,KAAK,YAAa,MAG5BgB,EAAUN,GAAG,YAAY,WACrB,GAAI5B,OAAOqC,oBACP,OAAO,EAGXR,EAASiB,WAOjBZ,EAAUN,GAAG,aAAa,SAAUQ,GAChC,GAAI,IAAEzD,MAAMuC,KAAK,aACb,OAAO,EAGX,IAAMiC,EAAOxE,KAAKyE,wBACdL,EAAQX,EAAEiB,QAAUF,EAAKJ,KAAOpE,KAAK2E,WAAa3E,KAAK4E,WACvDP,EAAOZ,EAAEoB,QAAUL,EAAKH,IAAMrE,KAAK8E,UAAY9E,KAAK+E,UAElDT,EAAQf,EAAUhB,KAAK,SACzB+B,IACAF,GAAQE,EACRD,GAAOC,GAGXpB,EAASqB,IAAI,CAAE,IAAOF,EAAM,GAAI,KAAQD,EAAO,QAGnDd,EAAML,GAAG,cAAc,WACnB,GAAIM,EAAUhB,KAAK,aACf,OAAO,EAGX,IAAMoB,EAAQ,IAAE3D,MAEhBoD,EAAcb,KAAK,SAAUoB,EAAMpB,KAAK,OACxCa,EAAcY,KAAKL,EAAMpB,KAAK,SAC9B,IAAM0B,EAAcN,EAAMpB,KAAK,UAC3B0B,EACAZ,EAAgBW,KAAKC,GAAaC,OAElCb,EAAgBW,KAAK,IAAIG,OAG7BjB,EAASgB,UAGbZ,EAAML,GAAG,cAAc,WACnBC,EAASiB,UAGbb,EAAML,GAAG,SAAS,WAEd,IAAMW,EAAY,IAAE5D,MAAMuC,KAAK,aAC/B,QAAkBsB,IAAdD,EAIJ,OAAkB,IAAdA,QAAJ,KAMGvB,GAlMFJ,EA1TN,SA0TwBI,GAEvB,IAAMkB,EAAY,IAAE,GAAD,OAAIJ,EAAJ,eAEbX,EAAWH,EAAIG,SACfwC,EAAS3C,EAAI2C,OAoDnB,OAlDAxC,EAASC,SAAQ,SAAUC,GACvB,IAAMtD,EAAKsD,EAAKtD,GAChB,IAAE,cAAD,OAAeA,IAAM6F,SAGtB,IAAMC,EAAW,IAAE,mCAAD,OAAoC9F,EAApC,aAClB8F,EAASC,SAAT,qBAAgCzC,EAAK0C,QACrCF,EAAS3C,KAAK,MAAOG,GAAM6B,IAAI,CAAE,KAAQ7B,EAAK2C,EAAI,GAAI,IAAO3C,EAAK4C,EAAI,KAEtE,IAAMC,EAAW,IAAE,6BACnBA,EAAShD,KAAK,CAAE,KAAQG,EAAK8C,KAAM,OAAU9C,EAAK+C,OAAQ,GAAM/C,EAAKtD,KACrE8F,EAASnE,OAAOwE,GAEhB,IAAMG,EAAU,IAAE,+DAMlB,QALmB7B,IAAfnB,EAAKpD,OACLoG,EAAQnB,IAAI,CAAE,mBAAoB7B,EAAKpD,QAE3CiG,EAASxE,OAAO2E,GAEZhD,EAAKiD,MAAQ,EAAG,CAChB,IAAIC,EAAa,QACblD,EAAKiD,MAAQ,GACbC,EAAa,OACNlD,EAAKiD,MAAQ,GACpBC,EAAa,MACNlD,EAAKiD,MAAQ,KACpBC,EAAa,OAGjB,IAAMC,EAAY,IAAE,qCAAD,OAAsCD,EAAtC,aACnBF,EAAQ3E,OAAO8E,GAInB,GAAInD,EAAKoD,UAAW,CAChB,IAAMC,EAAc,IAAE,oCACtBL,EAAQ3E,OAAOgF,GAGnB,IAAMC,EAAW,IAAE,yCAAkCtD,EAAKuD,KAAvC,WAAqDnG,UACxE4F,EAAQ3E,OAAOiF,GAEfzC,EAAUxC,OAAOmE,MAGlBF,GACC1C,EAAWM,KAAX,qBAA8BoC,EAA9B,kBAAqDG,SAAS,WAI3D9C,GAtHFL,EA7PN,SA6PyBK,GAExB,IAAMkB,EAAY,IAAEJ,EAAa,cAE3BX,EAAWH,EAAIG,SACfwC,EAAS3C,EAAI2C,OAqDnB,OAnDAxC,EAASC,SAAQ,SAAUC,GACvB,IAAMtD,EAAKsD,EAAKtD,GAChB,IAAE,cAAD,OAAeA,IAAM6F,SAGtB,IAAMC,EAAW,IAAE,mCAAD,OAAoC9F,EAApC,aAIlB,GAHA8F,EAASC,SAAT,qBAAgCzC,EAAK0C,QACrCF,EAAS3C,KAAK,MAAOG,GAAM6B,IAAI,CAAE,KAAQ7B,EAAK2C,EAAI,GAAI,IAAO3C,EAAK4C,EAAI,UAEnDzB,IAAfnB,EAAKpD,MAAqB,CAC1B,IAAM4G,EAAS,IAAE,+BACjBhB,EAASnE,OAAOmF,GAChBA,EAAO3B,IAAI,CAAE,mBAAoB,oBAAoBzE,OAAOuB,OAAO8E,WAAWC,UAAW/G,EAAeqD,EAAKpD,UAGjH,IAAMiG,EAAW,IAAE,6BACnBA,EAAShD,KAAK,CAAE,KAAQG,EAAK8C,KAAM,OAAU9C,EAAK+C,OAAQ,GAAM/C,EAAKtD,KACrE8F,EAASnE,OAAOwE,GAEhB,IAAMG,EAAU,IAAE,mCAAD,OAAoCrE,OAAO8E,WAAWC,UAAtD,iBAAwE1D,EAAK0C,MAA7E,gDAGjB,GAFAG,EAASxE,OAAO2E,GAEZhD,EAAKiD,MAAQ,EAAG,CAChB,IAAME,EAAY,IAAE,qCAAD,OAAsCxE,OAAO8E,WAAWC,UAAxD,iBAA0E1D,EAAKiD,MAA/E,iBACnBJ,EAASxE,OAAO8E,GAGpB,GAAInD,EAAK2D,UAAY3D,EAAK2D,SAAW,EAAG,CACpC,IAAMC,EAAW5D,EAAK6D,OAAS,IAAM,IAC/BC,EAAW,IAAE,oCAAD,OAAqCnF,OAAO8E,WAAWC,UAAvD,YAAoEE,GAApE,OAA+EjH,GAAe,QAAOqD,EAAKpD,QAA1G,iBAClB,GAAIoD,EAAKoD,UAAW,CAChB,IAAMC,EAAc,IAAE,uCAAD,OAAwC1E,OAAO8E,WAAWC,UAA1D,yBACrBI,EAASzF,OAAOgF,GAEpBL,EAAQ3E,OAAOyF,GAGnB,IAAMR,EAAW,IAAE,kCAAD,OAAmCtD,EAAKuD,KAAxC,YAClBP,EAAQ3E,OAAOiF,GAGfzC,EAAUxC,OAAOmE,MAKlBF,GACC1C,EAAWM,KAAX,qBAA8BoC,EAA9B,kBAAqDG,SAAS,WAI3D9C,GAvTR,iDAkJH,WAA+BA,GAA/B,IAGaoE,EAWAC,EAdb,UAgCaC,EAeAC,EAoBAC,EAnEb,yFAmEaA,EAnEb,SAmE4BnE,GAEpB,IAAMtD,EAAKsD,EAAKtD,GACViH,EAAW3D,EAAK2D,SAClBxD,EAAY,GAkBhB,OAjBIzD,KAAM0H,IACNjE,GAAaiE,EAAQ1H,IAAO,GAEf,OAAb2H,GAAqBV,GAAYU,IACjClE,GAAa,GAEbmE,EAAmBrH,IAAIP,KACvByD,GAAa,GAEF,OAAXmC,GAAmB5F,GAAM4F,IACzBnC,GAAa,GAEboE,IACApE,GAAa,GAIjB,OACOH,GADP,IAEIG,UAAAA,KA5CC+D,EA/Cb,SA+C6BlE,GAGrB,IAAM2D,EAAW3D,EAAK2D,SACtB,QAAiBxC,IAAbwC,KAA4BA,KAAYa,GACxC,cACOxE,GADP,IAEIoD,WAAW,IAInB,IAAMqB,EAAYD,EAAWb,GAC7B,cACO3D,GADP,IAEI+C,OAAQ0B,EAAUlB,KAClB3G,MAAO6H,EAAU7H,MACjBwG,UAAWqB,EAAUC,SAAW1E,EAAKtD,MA/BpCuH,EAhCb,SAgC+BjE,GACvB,IAAMtD,EAAKsD,EAAKtD,GAChB,KAAMA,KAAMiI,GACR,MAAM5G,UAAU,iBAAD,OAAkBrB,IAErC,QAAqBiI,EAAajI,GAAlC,GAAO6G,EAAP,KAAaZ,EAAb,KAAgBC,EAAhB,KAEA,cACO5C,GADP,IAEIuD,KAAAA,EACAZ,EAAAA,EACAC,EAAAA,KA7BCoB,EAdb,YAcqE,aAC7D,MAAO,CACHtH,GAFyD,KAGzD6G,KAHyD,KAIzD3G,MAJyD,KAKzD8H,QALyD,OAXxDX,EAHb,YAGmF,aAA3DrH,EAA2D,KAAvDgG,EAAuD,KAAhDO,EAAgD,KAAzCU,EAAyC,KAC3E,MAAO,CACHjH,GAAIA,EACJgG,MAAOA,EACPO,MAAOA,EACPU,SAAUA,EAAW,EAAIA,OAAWxC,EACpCyD,OANuE,KAOvEf,OAAkB,GAPqD,OAoBzEW,EAAapI,EAAgBuD,EAAI6E,WAAWK,IAAIb,IAEhDI,EAAUzE,EAAIyE,QACdE,EAAqB,IAAItH,IAAI2C,EAAI2E,oBAEjChC,EAAS3C,EAAI2C,OACb+B,EAAW1E,EAAI0E,SAkEfvE,EAAWH,EAAIG,SAAS+E,IAAId,GAC7Bc,IAAIZ,GACJY,IAAIX,GACJW,IAAIV,GACJU,IAAIlG,OAAOmG,gBAnGpB,kBAqGW,CACH,SAAYhF,EACZ,OAAUwC,IAvGlB,6CAlJG,uBAkJYjD,EAlJZ,6FAoEH,WAAgCM,GAAhC,IACaoF,EADb,6GACaA,EADb,WAEQ,IAAMC,EAAWpF,EAAWC,KAAK,gBAC3BoF,EAAWtF,EAAIuF,MACjBF,IAAaC,IAGbD,GACApF,EAAWuF,YAAY,aAAeH,GAE1CpF,EAAW6C,SAAS,aAAewC,GACnCrF,EAAWC,KAAK,eAAgBoF,MAAAA,EAAAA,EAAY,cAE5C/F,EAAOkG,iBACPL,IAEEM,EAAY1F,EAAI0F,UAChBC,EAAO3F,EAAI2F,KACXC,EAAQ5F,EAAI4F,MAEdC,EACA5F,EAAW6C,SAAS,cAAc0C,YAAY,aAE9CvF,EAAW6C,SAAS,aAAa0C,YAAY,cAG3CM,EAAa,IAAE,mBACjBH,EAAOD,EAAY,EACnBI,EAAW5D,IAAI,QAAS,WACjByD,EAAOD,EAAY,EAC1BI,EAAW5D,IAAI,QAAS,UACjByD,EAAOD,EAAY,GAC1BI,EAAW5D,IAAI,QAAS,WAGtB6D,EAAqB,IAAE,4BACVC,QAEbC,EAAe,GACjBN,EAAOD,EAAY,IACbQ,EAAgB,GAClBC,EAAaT,EAAY,EAAIC,GAC3BS,EAAc,GAAKR,EAAQ,GACf,IACdO,GAAc,GAEdA,GACAD,EAAcG,KAAK,OAAO5I,OAAO0I,IAEjCC,GACAF,EAAcG,KAAK,QAAQ5I,OAAO2I,IAGtCH,EAAaI,KAAK,uBAAuB5I,OAAOyI,EAAc/G,KAAK,KAAMuG,EAAY,KAGnFY,EAAmBC,KAAKC,MAAMD,KAAKE,IAAI,EAAGd,EAAOD,GAAa,GAAK,EACnEgB,EAAuC,EAAnBJ,EAAuBZ,EAEjDO,EAAaI,KAAK,4BAA4B5I,OAAO6I,EAAkBI,EAAmBJ,EAAmB,IAC7GP,EAAmBpE,KAAKsE,EAAa9G,KAAK,SAE1Cc,EAAWuF,YAAY,6CACnBI,GAAS,EACT3F,EAAW6C,SAAS,cACb8C,GAAS,EAChB3F,EAAW6C,SAAS,cACb8C,GAAS,EAChB3F,EAAW6C,SAAS,YAEpB7C,EAAW6C,SAAS,cAGxBgD,EAAWnE,KAAK,YAAYlE,OAAOkI,EAAMC,IAzE7C,kBA2EW5F,GA3EX,6CApEG,uBAoEYP,EApEZ,6FA4CH,WAAiCO,GAAjC,mFACSA,EAAIrD,OADb,qCAEuBqD,EAAI2G,QAF3B,UAKS,IAAS3G,EAAI0F,YACb,IAAS1F,EAAI2F,OACb,IAAS3F,EAAI4F,OAPtB,qBASc,kBATd,cAYQgB,IACAC,aAAaC,QAAQC,EAAiBC,KAAKC,UAAU,CAACC,SAAUlH,KAChE6G,aAAaC,QAAQK,EAAiBH,KAAKC,UAAUjH,EAAI0F,aAG7DzF,EAAWuF,YAAY,iBAjB3B,kBAmBWxF,GAnBX,4CA5CG,uBA4CYR,EA5CZ,4CAAqDsB,EAArD,+BAAkE,aAG5C,IAFnBb,EAAa,IAAEa,IAENsG,OAHZ,0DAOGC,EAA+B,CACjCxB,aAAa,EACbjB,cAAc,EACdjE,oBAAgBa,EAChBd,aAAc,IACdkG,cAAc,EAGdjB,UAAMnE,EACNoE,WAAOpE,EACP8F,SAAK9F,EACLL,aAAa,EACboG,QAAQ,EAERC,WAAY,YACZC,QAAS,OACThC,iBAAiB,EACjBiC,cAAUlG,EAGVkE,eAAWlE,GAGfjC,EAAS,IAAO,GAAI8H,EAAe9H,GAE7BqH,EAAerH,EAAOqH,aACtBf,EAActG,EAAOsG,YACrBjB,EAAerF,EAAOqF,aACtBjE,EAAiBpB,EAAOoB,eACxBD,GAAe,QAAOnB,EAAOmB,cAE7BsE,EAAehG,OAAO2I,kBAEtBZ,EAxCH,cAwC4Ba,WAxC5B,QAyCGT,EAzCH,aAyC2BS,WAzC3B,cAuhBGC,EAAmB5H,EAAWM,KAAK,wBACU,OAA/CsG,aAAaiB,QAAQ,yBACrB7H,EAAW6C,SAAS,iBACpB+E,EAAiB/E,SAAS,UAAUrC,KAAK,eAAgB,SAG7DoH,EAAiBE,OAAM,WAEJF,EAAiBG,SAAS,WAKrC/H,EAAWuF,YAAY,iBACvBqB,aAAaC,QAAQ,sBAAuB,QAJ5C7G,EAAW6C,SAAS,iBACpB+D,aAAaC,QAAQ,sBAAuB,WAO9CmB,EAAsBhI,EAAWM,KAAK,0BACO,OAA/CsG,aAAaiB,QAAQ,wBACrB9I,OAAOqC,qBAAsB,EAC7B4G,EAAoBnF,SAAS,UAAUrC,KAAK,eAAgB,SAE5DzB,OAAOqC,qBAAsB,EAG3BH,EAAY,IAAEJ,EAAa,cAEjCmH,EAAoBF,OAAM,WAEPE,EAAoBD,SAAS,WAMxCnB,aAAaC,QAAQ,sBAAuB,MAC5C9H,OAAOqC,qBAAsB,IAL7BH,EAAUgH,WAAW,aACrBrB,aAAaC,QAAQ,sBAAuB,OAC5C9H,OAAOqC,qBAAsB,MAOjCwE,EACA5F,EAAW6C,SAAS,cAEpB7C,EAAWuF,YAAY,cAGrB2C,EAAY,IAAM,CACpBC,KAAK,QAAO7I,EAAOiI,YACnBa,QAAQ,QAAO9I,EAAOkI,SACtBa,aAAc,OACdpI,KAAMlC,EAAgB,CAClBkC,KAAM8G,KAAKC,UAAU,CACjB9F,YAAa5B,EAAO4B,YACpBwE,KAAMpG,EAAOoG,KACbC,MAAOrG,EAAOqG,MACd2B,OAAQhI,EAAOgI,OACfD,IAAK/H,EAAO+H,UAhlBrB,UAqlBoBa,EArlBpB,eAqlBGI,EArlBH,OAulBGC,EAA0BD,EAASrI,KAvlBtC,UAylB0BV,EAAkBgJ,GAC1CC,KAAKhJ,GACLgJ,KAAK/I,GACL+I,KAAK5C,EAAclG,EAAqBC,GACxC6I,KAAK5I,GACL4I,KAAK3I,GACL2I,KAAK1I,GA/lBP,WAylBG2I,EAzlBH,OAimBCnJ,EAAOmI,UACPnI,EAAOmI,SAASgB,EAAgBF,IAGhCvI,EAAW+H,SAAS,iBArmBrB,qBAsmBKpB,EAtmBL,kCAwmBW,2BAAC,8GACG+B,EAAe9B,aAAaiB,QAAQf,GADvC,sDAKiCC,KAAK4B,MAAMD,GAL5C,SAKIE,EALJ,KAKoBC,EALpB,KAMCD,GAAkB3B,SANnB,iEAUGzH,EAAiBqJ,GACtBL,KAAK/I,GACL+I,KAAK5C,EAAYlG,EAAmBC,GACpC6I,KAAK5I,GACL4I,KAAK3I,GACL2I,KAAK1I,GAfH,0CAAD,GAxmBX,oCAynBYR,EAAOoG,OAAQpG,EAAOqG,MAznBlC,wBA0nBWmD,EAAelC,aAAaiB,QAAQX,GAGtCzB,EADAqD,EACY/B,KAAK4B,MAAMG,GAEXxJ,EAAOoG,KA/nB5B,UAioBWlG,EAAiB,CACnBkG,KAAMpG,EAAOoG,KACbC,MAAOrG,EAAOqG,MACdF,UAAWA,IApoBpB,6C,8BA4oBP1G,OAAOM,eAAiBA,EACxB,KAAE,SAAU0J,GACJrK,KACAqK,EAAE,oCAAoCnH,W,0DCzwB9C,KAAE,SAASmH,IACF,OAAe,CAChBxB,WAAY,mBACZC,QAAS,MACThC,iBAAiB,EACjBiC,SAAU,SAASxH,EAAMsI,GACrB,IAAMS,EAAaT,EAGnBQ,EAAE,cAAcrH,KAAKsH,EAAWC,SAE7BlK,OAAO0C,SAAW1C,QACjBmK,YAAW,WACPnK,OAAO0C,OAAO0H,cACf,U,s5DCrBeC,MAA3B,IAeMC,EAAb,a,kOAAA,U,IAAA,G,EAAA,E,mJAAA,2JACkB,mBADlB,cAAqClL,YAI/B,SAAUmL,EAAU5M,GACtB,GAAIA,MAAAA,EACA,MAAM,IAAI2M,EAEd,OAAO3M,KCzBP6M,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBlI,IAAjBmI,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CACjD3M,GAAI2M,EACJI,QAAQ,EACRF,QAAS,IAUV,OANAG,EAAoBL,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG3EI,EAAOC,QAAS,EAGTD,EAAOD,QAIfH,EAAoBQ,EAAIF,EN5BpBvN,EAAW,GACfiN,EAAoBS,EAAI,CAACvN,EAAQwN,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIhO,EAAS4K,OAAQoD,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAY7N,EAASgO,GACpCC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAS/C,OAAQsD,MACpB,EAAXL,GAAsBC,GAAgBD,IAAazN,OAAO+N,KAAKlB,EAAoBS,GAAGU,OAAOtM,GAASmL,EAAoBS,EAAE5L,GAAK6L,EAASO,MAC9IP,EAASU,OAAOH,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbjO,EAASqO,OAAOL,IAAK,GACrB,IAAIM,EAAIV,SACE5I,IAANsJ,IAAiBnO,EAASmO,IAGhC,OAAOnO,EAvBN0N,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIhO,EAAS4K,OAAQoD,EAAI,GAAKhO,EAASgO,EAAI,GAAG,GAAKH,EAAUG,IAAKhO,EAASgO,GAAKhO,EAASgO,EAAI,GACrGhO,EAASgO,GAAK,CAACL,EAAUC,EAAIC,IOJ/BZ,EAAoBsB,EAAKlB,IACxB,IAAImB,EAASnB,GAAUA,EAAOoB,WAC7B,IAAOpB,EAAiB,QACxB,IAAM,EAEP,OADAJ,EAAoByB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRvB,EAAoByB,EAAI,CAACtB,EAASwB,KACjC,IAAI,IAAI9M,KAAO8M,EACX3B,EAAoB4B,EAAED,EAAY9M,KAASmL,EAAoB4B,EAAEzB,EAAStL,IAC5E1B,OAAO0O,eAAe1B,EAAStL,EAAK,CAAEiN,YAAY,EAAMC,IAAKJ,EAAW9M,MCJ3EmL,EAAoBgC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO/N,MAAQ,IAAIgO,SAAS,cAAb,GACd,MAAOvK,GACR,GAAsB,iBAAXpC,OAAqB,OAAOA,QALjB,GCAxByK,EAAoB4B,EAAI,CAACrL,EAAK4L,IAAUhP,OAAOY,UAAUqO,eAAe7B,KAAKhK,EAAK4L,GCClFnC,EAAoBqB,EAAKlB,IACH,oBAAXkC,QAA0BA,OAAOC,aAC1CnP,OAAO0O,eAAe1B,EAASkC,OAAOC,YAAa,CAAExN,MAAO,WAE7D3B,OAAO0O,eAAe1B,EAAS,aAAc,CAAErL,OAAO,KCLvDkL,EAAoBuC,IAAOnC,IAC1BA,EAAOoC,MAAQ,GACVpC,EAAOqC,WAAUrC,EAAOqC,SAAW,IACjCrC,GCHRJ,EAAoBiB,EAAI,I,MCKxB,IAAIyB,EAAkB,CACrB,IAAK,EACL,IAAK,GAaN1C,EAAoBS,EAAEQ,EAAK0B,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BpM,KACvD,IAGIwJ,EAAU0C,GAHTjC,EAAUoC,EAAaC,GAAWtM,EAGhBsK,EAAI,EAC3B,IAAId,KAAY6C,EACZ9C,EAAoB4B,EAAEkB,EAAa7C,KACrCD,EAAoBQ,EAAEP,GAAY6C,EAAY7C,IAGhD,GAAG8C,EAAS,IAAI7P,EAAS6P,EAAQ/C,GAEjC,IADG6C,GAA4BA,EAA2BpM,GACrDsK,EAAIL,EAAS/C,OAAQoD,IACzB4B,EAAUjC,EAASK,GAChBf,EAAoB4B,EAAEc,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBhC,EAASK,IAAM,EAEhC,OAAOf,EAAoBS,EAAEvN,IAG1B8P,EAAqBC,KAA6B,uBAAIA,KAA6B,wBAAK,GAC5FD,EAAmBrM,QAAQiM,EAAqBM,KAAK,KAAM,IAC3DF,EAAmBpG,KAAOgG,EAAqBM,KAAK,KAAMF,EAAmBpG,KAAKsG,KAAKF,K,GC5CvF,IAAIG,EAAsBnD,EAAoBS,OAAE1I,EAAW,CAAC,MAAM,IAAOiI,EAAoB,QAC7FmD,EAAsBnD,EAAoBS,EAAE0C,I","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/map.ts","webpack://hidche_lib/./hwe/ts/recent_map.ts","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { extend, isNumber } from 'lodash';\r\nimport { convColorValue, convertDictById, convertSet } from './common_legacy';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap } from './util';\r\nimport { convertFormData } from './util/convertFormData';\r\n\r\ndeclare const serverNick: string;\r\ndeclare const serverID: string;\r\n\r\ntype CityPositionMap = {\r\n [cityID: number]: [string, number, number];\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n sam_toggleSingleTap?: boolean,\r\n reloadWorldMap: (option: loadMapOption, drawTarget?: string) => Promise;\r\n getCityPosition: () => CityPositionMap;\r\n formatCityInfo: (city: MapCityParsedRaw)=>MapCityParsedRegionLevelText\r\n }\r\n}\r\n\r\ntype MapCityCompact = [number, number, number, number, number, number];\r\ntype MapNationCompact = [number, string, string, number];\r\n\r\ntype MapCityParsedRaw = {\r\n id: number,\r\n level: number,\r\n state: number,\r\n nationID?: number,\r\n region: number,\r\n supply: boolean\r\n};\r\n\r\ntype MapCityParsedName = MapCityParsedRaw & {\r\n name: string,\r\n x: number,\r\n y: number,\r\n};\r\n\r\ntype MapCityParsedNation = MapCityParsedName & {\r\n nationID?: number;\r\n nation?: string;\r\n color?: string;\r\n isCapital: boolean\r\n}\r\n\r\ntype MapCityParsedClickable = MapCityParsedNation & {\r\n clickable: number\r\n}\r\n\r\ntype MapCityParsedRegionLevelText = MapCityParsedClickable & {\r\n region_str: string,\r\n level_str: string,\r\n text: string,\r\n}\r\n\r\ntype MapCityParsed = MapCityParsedRegionLevelText;\r\n\r\ntype MapCityDrawable = {\r\n cityList: MapCityParsed[],\r\n myCity?: number\r\n};\r\n\r\ntype MapNationParsed = {\r\n id: number,\r\n name: string,\r\n color: string,\r\n capital: number\r\n}\r\n\r\ntype MapResult = {\r\n result: true,\r\n startYear: number,\r\n year: number,\r\n month: number,\r\n cityList: MapCityCompact[],\r\n nationList: MapNationCompact[],\r\n spyList: Record,\r\n shownByGeneralList: number[],\r\n myCity?: number,\r\n myNation?: number,\r\n\r\n theme?: string,\r\n history?: string[],\r\n}\r\ntype MapRawResult = InvalidResponse | MapResult;\r\n\r\nfunction is_touch_device(): boolean {\r\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\r\n const mq = (query: string) => {\r\n return window.matchMedia(query).matches;\r\n }\r\n\r\n type TouchWindow = { DocumentTouch?: () => void | Document };\r\n const tWindow = window as unknown as TouchWindow;\r\n if (('ontouchstart' in window) || (tWindow.DocumentTouch && (document instanceof tWindow.DocumentTouch))) {\r\n return true;\r\n }\r\n\r\n\r\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\r\n // https://git.io/vznFH\r\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\r\n return mq(query);\r\n}\r\n\r\ntype loadMapOption = {\r\n isDetailMap?: boolean, //복잡 지도, 단순 지도\r\n clickableAll?: boolean, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback?: (city: MapCityParsed) => void, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate?: string, //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap?: boolean, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year?: number, //year값, 연감등에 사용\r\n month?: number, //month값, 연감등에 사용\r\n aux?: Record, //기타 넣고 싶은 값을 입력\r\n neutralView?: boolean, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe?: boolean, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson?: string,\r\n reqType?: 'get' | 'post',\r\n dynamicMapTheme?: boolean,\r\n callback?: (a: MapCityDrawable, rawObejct: MapRawResult) => void,\r\n\r\n //기타 보조 값\r\n startYear?: number,\r\n}\r\n\r\nexport async function reloadWorldMap(option: loadMapOption, drawTarget = '.world_map'): Promise {\r\n const $world_map = $(drawTarget);\r\n\r\n if ($world_map.length == 0) {\r\n return;\r\n }\r\n\r\n const defaultOption: loadMapOption = {\r\n isDetailMap: true, //복잡 지도, 단순 지도\r\n clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.\r\n selectCallback: undefined, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.\r\n hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨\r\n useCachedMap: false, //맵 캐시를 사용\r\n\r\n //아래부터는 post query에 들어갈 녀석\r\n year: undefined, //year값, 연감등에 사용\r\n month: undefined, //month값, 연감등에 사용\r\n aux: undefined, //기타 넣고 싶은 값을 입력\r\n neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정\r\n showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개\r\n\r\n targetJson: 'j_map.php',\r\n reqType: 'post',\r\n dynamicMapTheme: false,\r\n callback: undefined,\r\n\r\n //기타 보조 값\r\n startYear: undefined,\r\n };\r\n\r\n option = extend({}, defaultOption, option);\r\n\r\n const useCachedMap = option.useCachedMap;\r\n const isDetailMap = option.isDetailMap;\r\n const clickableAll = option.clickableAll;\r\n const selectCallback = option.selectCallback;\r\n const hrefTemplate = unwrap(option.hrefTemplate);\r\n\r\n const cityPosition = window.getCityPosition();\r\n\r\n const storedOldMapKey = `sam.${serverNick}.map`;\r\n const storedStartYear = `am.${serverNick}.startYear`;\r\n //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity\r\n\r\n async function checkReturnObject(obj: MapRawResult): Promise {\r\n if (!obj.result) {\r\n throw `fail: ${obj.reason}`;\r\n }\r\n\r\n if (!isNumber(obj.startYear) ||\r\n !isNumber(obj.year) ||\r\n !isNumber(obj.month)\r\n ) {\r\n throw 'fail: date type';\r\n }\r\n\r\n if (useCachedMap) {\r\n localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));\r\n localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));\r\n }\r\n\r\n $world_map.removeClass('draw_required');\r\n\r\n return obj;\r\n }\r\n\r\n\r\n\r\n async function setMapBackground(obj: MapResult): Promise {\r\n function setTheme() {\r\n const oldTheme = $world_map.data('currentTheme');\r\n const newTheme = obj.theme;\r\n if (oldTheme === newTheme) {\r\n return;\r\n }\r\n if (oldTheme) {\r\n $world_map.removeClass('map_theme_' + oldTheme);\r\n }\r\n $world_map.addClass('map_theme_' + newTheme);\r\n $world_map.data('currentTheme', newTheme ?? '_current');//FIXME: 뭔가 틀렸음. 전송시에 theme가 있어야하나?\r\n }\r\n if (option.dynamicMapTheme) {\r\n setTheme();\r\n }\r\n const startYear = obj.startYear;\r\n const year = obj.year;\r\n const month = obj.month;\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail').removeClass('map_basic');\r\n } else {\r\n $world_map.addClass('map_basic').removeClass('map_detail');\r\n }\r\n\r\n const $map_title = $('.map_title_text');\r\n if (year < startYear + 1) {\r\n $map_title.css('color', 'magenta');\r\n } else if (year < startYear + 2) {\r\n $map_title.css('color', 'orange');\r\n } else if (year < startYear + 3) {\r\n $map_title.css('color', 'yellow');\r\n }\r\n\r\n const $map_title_tooltip = $('.map_title .tooltiptext');\r\n $map_title_tooltip.empty();\r\n\r\n const tooltipTexts = [];\r\n if (year < startYear + 3) {\r\n const startYearText = [];\r\n let remainYear = startYear + 3 - year;\r\n const remainMonth = 12 - month + 1;\r\n if (remainMonth > 0) {\r\n remainYear -= 1;\r\n }\r\n if (remainYear) {\r\n startYearText.push('{0}년'.format(remainYear));\r\n }\r\n if (remainMonth) {\r\n startYearText.push('{0}개월'.format(remainMonth));\r\n }\r\n\r\n tooltipTexts.push('초반제한 기간 : {0} ({1}년)'.format(startYearText.join(' '), startYear + 3));\r\n }\r\n\r\n const currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;\r\n const nextTechLimitYear = currentTechLimit * 5 + startYear;\r\n\r\n tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));\r\n $map_title_tooltip.html(tooltipTexts.join('
'));\r\n\r\n $world_map.removeClass('map_string map_summer map_fall map_winter');\r\n if (month <= 3) {\r\n $world_map.addClass('map_spring');\r\n } else if (month <= 6) {\r\n $world_map.addClass('map_summer');\r\n } else if (month <= 9) {\r\n $world_map.addClass('map_fall');\r\n } else {\r\n $world_map.addClass('map_winter');\r\n }\r\n\r\n $map_title.html('{0}年 {1}月'.format(year, month));\r\n\r\n return obj;\r\n }\r\n\r\n async function convertCityObjs(obj: MapResult): Promise {\r\n //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.\r\n\r\n function toCityObj([id, level, state, nationID, region, supply]: MapCityCompact): MapCityParsedRaw {\r\n return {\r\n id: id,\r\n level: level,\r\n state: state,\r\n nationID: nationID > 0 ? nationID : undefined,\r\n region: region,\r\n supply: supply != 0\r\n };\r\n }\r\n\r\n function toNationObj([id, name, color, capital]: MapNationCompact): MapNationParsed {\r\n return {\r\n id,\r\n name,\r\n color,\r\n capital\r\n };\r\n }\r\n\r\n const nationList = convertDictById(obj.nationList.map(toNationObj)); //array of object -> dict\r\n\r\n const spyList = obj.spyList;\r\n const shownByGeneralList = new Set(obj.shownByGeneralList);\r\n\r\n const myCity = obj.myCity;\r\n const myNation = obj.myNation;\r\n\r\n\r\n function mergePositionInfo(city: MapCityParsedRaw): MapCityParsedName {\r\n const id = city.id;\r\n if (!(id in cityPosition)) {\r\n throw TypeError(`알수 없는 cityID: ${id}`);\r\n }\r\n const [name, x, y] = cityPosition[id];\r\n\r\n return {\r\n ...city,\r\n name,\r\n x,\r\n y,\r\n };\r\n }\r\n\r\n function mergeNationInfo(city: MapCityParsedName):MapCityParsedNation{\r\n //nationID 값으로 isCapital, color, nation을 통합\r\n\r\n const nationID = city.nationID;\r\n if (nationID === undefined || !(nationID in nationList)) {\r\n return {\r\n ...city,\r\n isCapital: false,\r\n };\r\n }\r\n\r\n const nationObj = nationList[nationID];\r\n return {\r\n ...city,\r\n nation: nationObj.name,\r\n color: nationObj.color,\r\n isCapital: nationObj.capital == city.id\r\n };\r\n }\r\n\r\n function mergeClickable(city:MapCityParsedNation): MapCityParsedClickable {\r\n //clickable = (defaultCity << 4 ) | (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll\r\n const id = city.id;\r\n const nationID = city.nationID;\r\n let clickable = 16;\r\n if (id in spyList) {\r\n clickable |= spyList[id] << 3;\r\n }\r\n if (myNation !== null && nationID == myNation) {\r\n clickable |= 4;\r\n }\r\n if (shownByGeneralList.has(id)) {\r\n clickable |= 2;\r\n }\r\n if (myCity !== null && id == myCity) {\r\n clickable |= 2;\r\n }\r\n if (clickableAll) {\r\n clickable |= 1;\r\n }\r\n\r\n\r\n return {\r\n ...city,\r\n clickable\r\n };\r\n }\r\n\r\n const cityList = obj.cityList.map(toCityObj)\r\n .map(mergePositionInfo)\r\n .map(mergeNationInfo)\r\n .map(mergeClickable)\r\n .map(window.formatCityInfo);\r\n\r\n return {\r\n 'cityList': cityList,\r\n 'myCity': myCity\r\n };\r\n }\r\n\r\n function drawDetailWorldMap(obj: MapCityDrawable) {\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n if (city.color !== undefined) {\r\n const $bgObj = $('
');\r\n $cityObj.append($bgObj);\r\n $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(window.pathConfig.gameImage, convColorValue(city.color)) });\r\n }\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $(`
`);\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n const $stateObj = $(`
`);\r\n $linkObj.append($stateObj);\r\n }\r\n\r\n if (city.nationID && city.nationID > 0) {\r\n const flagType = city.supply ? 'f' : 'd';\r\n const $flagObj = $(`
`);\r\n if (city.isCapital) {\r\n const $capitalObj = $(`
`);\r\n $flagObj.append($capitalObj);\r\n }\r\n $imgObj.append($flagObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`);\r\n $imgObj.append($nameObj);\r\n\r\n\r\n $map_body.append($cityObj);\r\n\r\n\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function drawBasicWorldMap(obj:MapCityDrawable) {\r\n\r\n const $map_body = $(`${drawTarget} .map_body`);\r\n\r\n const cityList = obj.cityList;\r\n const myCity = obj.myCity;\r\n\r\n cityList.forEach(function (city) {\r\n const id = city.id;\r\n $(`.city_base_${id}`).detach();\r\n //이전 도시는 지운다.\r\n\r\n const $cityObj = $(`
`);\r\n $cityObj.addClass(`city_level_${city.level}`);\r\n $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });\r\n\r\n const $linkObj = $('');\r\n $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });\r\n $cityObj.append($linkObj);\r\n\r\n const $imgObj = $('
');\r\n if (city.color !== undefined) {\r\n $imgObj.css({ 'background-color': city.color });\r\n }\r\n $linkObj.append($imgObj);\r\n\r\n if (city.state > 0) {\r\n let state_text = 'wrong';\r\n if (city.state < 10) {\r\n state_text = 'good';\r\n } else if (city.state < 40) {\r\n state_text = 'bad';\r\n } else if (city.state < 50) {\r\n state_text = 'war';\r\n }\r\n\r\n const $stateObj = $(`
`);\r\n $imgObj.append($stateObj);\r\n }\r\n\r\n //단순 표기에서는 깃발 여부가 없음\r\n if (city.isCapital) {\r\n const $capitalObj = $('
');\r\n $imgObj.append($capitalObj);\r\n }\r\n\r\n const $nameObj = $(`${city.name}`.format());\r\n $imgObj.append($nameObj);\r\n\r\n $map_body.append($cityObj);\r\n });\r\n\r\n if(myCity){\r\n $world_map.find(`.city_base_${myCity} .city_filler`).addClass('my_city');\r\n }\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setMouseWork(obj:MapCityDrawable) {\r\n const $tooltip = $(drawTarget + ' .city_tooltip');\r\n const $tooltip_city = $tooltip.find('.city_name');\r\n const $tooltip_nation = $tooltip.find('.nation_name');\r\n\r\n const $objs = $(drawTarget + ' .city_link');\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n //터치스크린 탭\r\n\r\n if (!option.neutralView && is_touch_device()) {\r\n $objs.on('touchstart', function (e) {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if ($tooltip_city.data('target') != $this.data('id')) {\r\n $this.data('touchMode', 1);\r\n } else if (touchMode === undefined) {\r\n $this.data('touchMode', 1);\r\n } else {\r\n $this.data('touchMode', touchMode + 1);\r\n }\r\n $map_body.data('touchMode', 1);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n\r\n\r\n });\r\n\r\n $objs.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n const $this = $(this);\r\n const position = $this.parent().position();\r\n $tooltip_city.html($this.data('text') as string);\r\n\r\n const nation_text = $this.data('nation') as string;\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n let left = position.left;\r\n let top = position.top;\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();\r\n\r\n const touchMode = $this.data('touchMode') as number;\r\n if (touchMode <= 1) {\r\n return false;\r\n }\r\n\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n $this.data('touchMode', 0);\r\n });\r\n\r\n $map_body.on('touchend', function () {\r\n if (window.sam_toggleSingleTap) {\r\n return true;\r\n }\r\n //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치\r\n $tooltip.hide();\r\n });\r\n\r\n }\r\n\r\n //Mouse over 모드 작동\r\n\r\n $map_body.on('mousemove', function (e) {\r\n if ($(this).data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const rect = this.getBoundingClientRect();\r\n let left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);\r\n let top = (e.clientY - rect.top - this.clientTop + this.scrollTop);\r\n\r\n const scale = $map_body.data('scale');\r\n if (scale) {\r\n left /= scale;\r\n top /= scale;\r\n }\r\n\r\n $tooltip.css({ 'top': top + 10, 'left': left + 10 });\r\n });\r\n\r\n $objs.on('mouseenter', function () {\r\n if ($map_body.data('touchMode')) {\r\n return true;\r\n }\r\n\r\n const $this = $(this);\r\n\r\n $tooltip_city.data('target', $this.data('id'));\r\n $tooltip_city.html($this.data('text'));\r\n const nation_text = $this.data('nation');\r\n if (nation_text) {\r\n $tooltip_nation.html(nation_text).show();\r\n } else {\r\n $tooltip_nation.html('').hide();\r\n }\r\n\r\n $tooltip.show();\r\n });\r\n\r\n $objs.on('mouseleave', function () {\r\n $tooltip.hide();\r\n });\r\n\r\n $objs.on('click', function () {\r\n //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.\r\n const touchMode = $(this).data('touchMode') as number|undefined;\r\n if (touchMode === undefined) {\r\n return;\r\n }\r\n\r\n if (touchMode === 1) {\r\n return false;\r\n }\r\n });\r\n\r\n\r\n return obj;\r\n }\r\n\r\n function setCityClickable(obj:MapCityDrawable) {\r\n\r\n obj.cityList.forEach(function (city) {\r\n const $cityLink = $world_map.find(`.city_base_${city.id} .city_link`);\r\n\r\n if ('clickable' in city && city.clickable > 0) {\r\n $cityLink.attr('href', hrefTemplate.format(city.id));\r\n }\r\n\r\n if (selectCallback) {\r\n $cityLink.on('click', function () {\r\n return selectCallback(city);\r\n });\r\n }\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveCityInfo(obj: MapCityDrawable) {\r\n $world_map.data('cityInfo', obj);\r\n return obj;\r\n }\r\n\r\n const $hideCityNameBtn = $world_map.find('.map_toggle_cityname');\r\n if (localStorage.getItem('sam.hideMapCityName') == 'yes') {\r\n $world_map.addClass('hide_cityname');\r\n $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n\r\n $hideCityNameBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$hideCityNameBtn.hasClass('active');\r\n if (state) {\r\n $world_map.addClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'yes');\r\n } else {\r\n $world_map.removeClass('hide_cityname');\r\n localStorage.setItem('sam.hideMapCityName', 'no');\r\n }\r\n });\r\n\r\n const $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');\r\n if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {\r\n window.sam_toggleSingleTap = true;\r\n $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n window.sam_toggleSingleTap = false;\r\n }\r\n\r\n const $map_body = $(drawTarget + ' .map_body');\r\n\r\n $toggleSingleTapBtn.click(function () {\r\n //이전 상태 확인\r\n const state = !$toggleSingleTapBtn.hasClass('active');\r\n if (state) {\r\n $map_body.removeData('touchMode');\r\n localStorage.setItem('sam.toggleSingleTap', 'yes');\r\n window.sam_toggleSingleTap = true;\r\n } else {\r\n localStorage.setItem('sam.toggleSingleTap', 'no');\r\n window.sam_toggleSingleTap = false;\r\n }\r\n });\r\n\r\n if (isDetailMap) {\r\n $world_map.addClass('map_detail');\r\n } else {\r\n $world_map.removeClass('map_datail');\r\n }\r\n\r\n const responseP = axios({\r\n url: unwrap(option.targetJson),\r\n method: unwrap(option.reqType),\r\n responseType: 'json',\r\n data: convertFormData({\r\n data: JSON.stringify({\r\n neutralView: option.neutralView,\r\n year: option.year,\r\n month: option.month,\r\n showMe: option.showMe,\r\n aux: option.aux\r\n })\r\n })\r\n });\r\n\r\n const response = await responseP;\r\n\r\n const rawObject: MapRawResult = response.data;\r\n\r\n const computedResult = await checkReturnObject(rawObject)\r\n .then(setMapBackground)\r\n .then(convertCityObjs)\r\n .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n\r\n if (option.callback) {\r\n option.callback(computedResult, rawObject);\r\n }\r\n\r\n if ($world_map.hasClass('draw_required')) {\r\n if (useCachedMap) {\r\n //일단 불러옴\r\n await (async ()=>{\r\n const rawStoredMap = localStorage.getItem(storedOldMapKey);\r\n if (!rawStoredMap) {\r\n return;\r\n }\r\n const [storedServerID, storedMap] = JSON.parse(rawStoredMap) as [string, MapResult];\r\n if (storedServerID != serverID) {\r\n return;\r\n }\r\n\r\n await setMapBackground(storedMap)\r\n .then(convertCityObjs)\r\n .then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap)\r\n .then(setMouseWork)\r\n .then(setCityClickable)\r\n .then(saveCityInfo);\r\n })();\r\n } else if (option.year && option.month) {\r\n const rawStartYear = localStorage.getItem(storedStartYear) as string|undefined;\r\n let startYear: number;\r\n if (rawStartYear) {\r\n startYear = JSON.parse(rawStartYear);\r\n } else {\r\n startYear = option.year;\r\n }\r\n await setMapBackground({\r\n year: option.year,\r\n month: option.month,\r\n startYear: startYear\r\n } as unknown as MapResult);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nwindow.reloadWorldMap = reloadWorldMap;\r\n$(function ($) {\r\n if (is_touch_device()) {\r\n $('.map_body .map_toggle_single_tap').show();\r\n }\r\n})","import $ from 'jquery';\nimport 'bootstrap';\nimport { reloadWorldMap } from './map';\n\ndeclare global{\n interface Window{\n fitIframe:()=>void;\n }\n}\n\n$(function($){\n void reloadWorldMap({\n targetJson: \"j_map_recent.php\",\n reqType: 'get',\n dynamicMapTheme: true,\n callback: function(data, rawObject) {\n const historyRaw = rawObject as unknown as {\n history: string\n };\n $('.card-body').html(historyRaw.history);\n\n if(window.parent !== window){\n setTimeout(()=>{\n window.parent.fitIframe();\n }, 1);\n\n }\n }\n });\n});","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 952;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t952: 0,\n\t842: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1419)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","convertDictById","arr","result","Object","values","v","id","convColorValue","color","charAt","substr","toUpperCase","Set","has","String","prototype","format","args","this","replace","match","number","toString","convertFormData","formData","FormData","simpleConv","TypeError","entries","key","value","arrKey","subValue","append","is_touch_device","query","prefixes","split","tWindow","window","DocumentTouch","document","join","matchMedia","matches","reloadWorldMap","option","checkReturnObject","setMapBackground","convertCityObjs","drawDetailWorldMap","drawBasicWorldMap","setMouseWork","setCityClickable","saveCityInfo","obj","$world_map","data","cityList","forEach","city","$cityLink","find","clickable","attr","hrefTemplate","selectCallback","on","$tooltip","drawTarget","$tooltip_city","$tooltip_nation","$objs","$map_body","neutralView","e","sam_toggleSingleTap","$this","touchMode","undefined","position","parent","html","nation_text","show","hide","left","top","scale","css","rect","getBoundingClientRect","clientX","clientLeft","scrollLeft","clientY","clientTop","scrollTop","myCity","detach","$cityObj","addClass","level","x","y","$linkObj","text","nation","$imgObj","state","state_text","$stateObj","isCapital","$capitalObj","$nameObj","name","$bgObj","pathConfig","gameImage","nationID","flagType","supply","$flagObj","toCityObj","toNationObj","mergePositionInfo","mergeNationInfo","mergeClickable","spyList","myNation","shownByGeneralList","clickableAll","nationList","nationObj","capital","cityPosition","region","map","formatCityInfo","setTheme","oldTheme","newTheme","theme","removeClass","dynamicMapTheme","startYear","year","month","isDetailMap","$map_title","$map_title_tooltip","empty","tooltipTexts","startYearText","remainYear","remainMonth","push","currentTechLimit","Math","floor","max","nextTechLimitYear","reason","useCachedMap","localStorage","setItem","storedOldMapKey","JSON","stringify","serverID","storedStartYear","length","defaultOption","aux","showMe","targetJson","reqType","callback","getCityPosition","serverNick","$hideCityNameBtn","getItem","click","hasClass","$toggleSingleTapBtn","removeData","responseP","url","method","responseType","response","rawObject","then","computedResult","rawStoredMap","parse","storedServerID","storedMap","rawStartYear","$","historyRaw","history","setTimeout","fitIframe","Error","NotNullExpected","unwrap","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/recruitCrewForm.js b/hwe/js/recruitCrewForm.js index 27fda43f..d87ea803 100644 --- a/hwe/js/recruitCrewForm.js +++ b/hwe/js/recruitCrewForm.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={3904:(e,t,r)=>{r(1058),r(9826),r(4678);var n=r(9755),o=r.n(n);function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"";return a(this,o),y(s(e=n.call(this,t)),"name","RuntimeError"),e.message=t,e}return t=o,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&u(t.prototype,r),o}(p(Error)));function w(e){if(null==e)throw new m;return e}o()((function(){var e=o()("#amount"),t=o()("#crewType");o()(".form_double").on("keyup change",(function(r){var n,i,a,u,c,l,f=o()(this),s=f.parents(".input_form"),p=parseInt(s.data("crewtype"));return n=p,i=o()("#crewType{0}".format(n)),a=parseInt(w(i.find(".form_double").val())),u=i.data("cost"),c=i.find(".form_cost"),l=a*u,is모병&&(l*=2),c.val(Math.round(l)),t.val(p),e.val(100*parseFloat(w(f.val()))),13===r.which&&window.submitAction(),!1})),o()(".btn_half").on("click",(function(){var e=o()(this).closest(".input_form"),r=parseInt(e.data("crewtype")),n=e.find(".form_double:eq(0)"),i=Math.round(leadership/2);return t.val(r),n.val(i).change(),!1})),o()(".btn_fill").on("click",(function(){var e=o()(this).closest(".input_form"),r=parseInt(e.data("crewtype")),n=e.find(".form_double:eq(0)"),i=Math.ceil((100*leadership-currentCrew)/100);return r!=currentCrewType&&(i=leadership),t.val(r),n.val(i).change(),!1})),o()(".btn_full").on("click",(function(){var e=o()(this).closest(".input_form"),r=parseInt(e.data("crewtype")),n=e.find(".form_double:eq(0)"),i=fullLeadership+15;return t.val(r),n.val(i).change(),!1})),o()(".submit_btn").on("click",(function(){var r=o()(this).closest("tr").find(".input_form"),n=parseInt(r.data("crewtype")),i=r.find(".form_double");t.val(n),e.val(100*parseFloat(w(i.val()))),window.submitAction()})),o()(".btn_fill").click(),o()("#show_unavailable_troops").change((function(){o()("#show_unavailable_troops").is(":checked")?o()(".show_default_false").show():o()(".show_default_false").hide()})),o()(".show_default_false").hide()}))}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.m=t,e=[],n.O=(t,r,o,i)=>{if(!r){var a=1/0;for(f=0;f=i)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(u=!1,i0&&e[f-1][2]>i;f--)e[f]=e[f-1];e[f]=[r,o,i]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.j=796,(()=>{var e={796:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,i,[a,u,c]=r,l=0;for(o in u)n.o(u,o)&&(n.m[o]=u[o]);if(c)var f=c(n);for(t&&t(r);ln(3904)));o=n.O(o)})(); +(()=>{"use strict";var t,e={3904:(t,e,r)=>{r(1058),r(9826),r(4678);var n=r(9755),o=r.n(n);function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function u(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?c(t):e}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function l(t){var e="function"==typeof Map?new Map:void 0;return(l=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return f(t,arguments,d(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),p(n,t)})(t)}function f(t,e,r){return(f=s()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var o=new(Function.bind.apply(t,n));return r&&p(o,r.prototype),o}).apply(null,arguments)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function h(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}r(2222),r(8304),r(489),r(2772),r(1539),r(9714),r(2419),r(6992),r(1532),r(8783),r(3948),r(2526),r(1817),r(2165),Error;var y=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(o,t);var e,r,n=(e=o,r=s(),function(){var t,n=d(e);if(r){var o=d(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return u(this,t)});function o(){var t;a(this,o);for(var e=arguments.length,r=new Array(e),i=0;i{if(!r){var a=1/0;for(f=0;f=i)&&Object.keys(n.O).every((t=>n.O[t](r[c])))?r.splice(c--,1):(u=!1,i0&&t[f-1][2]>i;f--)t[f]=t[f-1];t[f]=[r,o,i]},n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),n.j=796,(()=>{var t={796:0};n.O.j=e=>0===t[e];var e=(e,r)=>{var o,i,[a,u,c]=r,l=0;for(o in u)n.o(u,o)&&(n.m[o]=u[o]);if(c)var f=c(n);for(e&&e(r);ln(3904)));o=n.O(o)})(); //# sourceMappingURL=recruitCrewForm.js.map \ No newline at end of file diff --git a/hwe/js/recruitCrewForm.js.map b/hwe/js/recruitCrewForm.js.map index 32358f6d..20771b9f 100644 --- a/hwe/js/recruitCrewForm.js.map +++ b/hwe/js/recruitCrewForm.js.map @@ -1 +1 @@ -{"version":3,"file":"recruitCrewForm.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/recruitCrewForm.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import $ from 'jquery';\nimport { unwrap_any } from './util/unwrap_any';\n\n\ndeclare const leadership: number;\ndeclare const fullLeadership: number;\ndeclare const currentCrewType: number;\ndeclare const currentCrew: number;\n//declare const currentGold: number;\ndeclare const is모병 = false;\nfunction calc(id: number) {\n const $obj = $('#crewType{0}'.format(id));\n const crew = parseInt(unwrap_any($obj.find('.form_double').val()));\n const baseCost = $obj.data('cost');\n const $cost = $obj.find('.form_cost');\n\n let cost = crew * baseCost;\n if (is모병) {\n cost *= 2;\n }\n $cost.val(Math.round(cost));\n}\n\n$(function () {\n const $formAmount = $('#amount');\n const $formCrewtype = $('#crewType');\n $('.form_double').on('keyup change', function (e) {\n const $this = $(this);\n const $parent = $this.parents('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n calc(crewtype);\n $formCrewtype.val(crewtype);\n $formAmount.val(parseFloat(unwrap_any($this.val())) * 100);\n\n if (e.which === 13) {\n void window.submitAction();\n }\n return false;\n });\n\n $('.btn_half').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double:eq(0)');\n\n const fillValue = Math.round(leadership / 2);\n $formCrewtype.val(crewtype);\n $input.val(fillValue).change();\n return false;\n });\n\n $('.btn_fill').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double:eq(0)');\n\n let fillValue = Math.ceil((leadership * 100 - currentCrew) / 100);\n if (crewtype != currentCrewType) {\n fillValue = leadership;\n }\n $formCrewtype.val(crewtype);\n $input.val(fillValue).change();\n return false;\n });\n\n $('.btn_full').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double:eq(0)');\n\n const fillValue = fullLeadership + 15;\n $formCrewtype.val(crewtype);\n $input.val(fillValue).change();\n return false;\n });\n\n $('.submit_btn').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('tr').find('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double');\n\n $formCrewtype.val(crewtype);\n $formAmount.val(parseFloat(unwrap_any($input.val())) * 100);\n\n void window.submitAction();\n });\n\n $('.btn_fill').click();\n\n $('#show_unavailable_troops').change(function () {\n const show = $('#show_unavailable_troops').is(\":checked\");\n if (show) {\n $('.show_default_false').show();\n }\n else {\n $('.show_default_false').hide();\n }\n });\n $('.show_default_false').hide();\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 796;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t796: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(3904)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","unwrap_any","result","$formAmount","$formCrewtype","on","e","id","$obj","crew","baseCost","$cost","cost","$this","$parent","parents","crewtype","parseInt","data","format","find","val","Math","round","parseFloat","which","window","submitAction","closest","$input","fillValue","leadership","change","ceil","currentCrew","currentCrewType","fullLeadership","click","is","show","hide","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"recruitCrewForm.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/recruitCrewForm.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import $ from 'jquery';\nimport { unwrap_any } from './util/unwrap_any';\n\n\ndeclare const leadership: number;\ndeclare const fullLeadership: number;\ndeclare const currentCrewType: number;\ndeclare const currentCrew: number;\n//declare const currentGold: number;\ndeclare const is모병 = false;\nfunction calc(id: number) {\n const $obj = $('#crewType{0}'.format(id));\n const crew = parseInt(unwrap_any($obj.find('.form_double').val()));\n const baseCost = $obj.data('cost');\n const $cost = $obj.find('.form_cost');\n\n let cost = crew * baseCost;\n if (is모병) {\n cost *= 2;\n }\n $cost.val(Math.round(cost));\n}\n\n$(function () {\n const $formAmount = $('#amount');\n const $formCrewtype = $('#crewType');\n $('.form_double').on('keyup change', function (e) {\n const $this = $(this);\n const $parent = $this.parents('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n calc(crewtype);\n $formCrewtype.val(crewtype);\n $formAmount.val(parseFloat(unwrap_any($this.val())) * 100);\n\n if (e.which === 13) {\n void window.submitAction();\n }\n return false;\n });\n\n $('.btn_half').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double:eq(0)');\n\n const fillValue = Math.round(leadership / 2);\n $formCrewtype.val(crewtype);\n $input.val(fillValue).change();\n return false;\n });\n\n $('.btn_fill').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double:eq(0)');\n\n let fillValue = Math.ceil((leadership * 100 - currentCrew) / 100);\n if (crewtype != currentCrewType) {\n fillValue = leadership;\n }\n $formCrewtype.val(crewtype);\n $input.val(fillValue).change();\n return false;\n });\n\n $('.btn_full').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double:eq(0)');\n\n const fillValue = fullLeadership + 15;\n $formCrewtype.val(crewtype);\n $input.val(fillValue).change();\n return false;\n });\n\n $('.submit_btn').on('click', function () {\n const $this = $(this);\n const $parent = $this.closest('tr').find('.input_form');\n const crewtype = parseInt($parent.data('crewtype'));\n const $input = $parent.find('.form_double');\n\n $formCrewtype.val(crewtype);\n $formAmount.val(parseFloat(unwrap_any($input.val())) * 100);\n\n void window.submitAction();\n });\n\n $('.btn_fill').click();\n\n $('#show_unavailable_troops').change(function () {\n const show = $('#show_unavailable_troops').is(\":checked\");\n if (show) {\n $('.show_default_false').show();\n }\n else {\n $('.show_default_false').hide();\n }\n });\n $('.show_default_false').hide();\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 796;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t796: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(3904)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Error","NotNullExpected","TypeError","unwrap_any","result","$formAmount","$formCrewtype","on","e","id","$obj","crew","baseCost","$cost","cost","$this","this","$parent","parents","crewtype","parseInt","data","format","find","val","Math","round","parseFloat","which","window","submitAction","closest","$input","fillValue","leadership","change","ceil","currentCrew","currentCrewType","fullLeadership","click","is","show","hide","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/select_npc.js b/hwe/js/select_npc.js index 7c35a3a0..05e4dbbf 100644 --- a/hwe/js/select_npc.js +++ b/hwe/js/select_npc.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={7138:(t,e,n)=>{n(5666),n(2222),n(1249),n(2707),n(9826),n(3210),n(1539),n(8674);var r=n(9669),o=n.n(r);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"";return i(this,o),m(p(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=o,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&l(e.prototype,n),o}(f(Error)));n(9755),n(3734),o().defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var g,w=(g={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return g[t]}))});function _(t){return window.linkifyStr(t,{})}function x(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=/<%(.+?)%>/g,r=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,o=["with(obj) { var r=[];\n"],a=0,i=function t(e,n){return n?o.push(e.match(r)?e+"\n":"r.push("+e+");\n"):o.push(""!=e?'r.push("'+e.replace(/"/g,'\\"')+'");\n':""),t};for(e.e=w,e.linkifyStr=_;;){var l=n.exec(t);if(!l)break;i(t.slice(a,l.index))(l[1],!0),a=l.index+l[0].length}i(t.substr(a,t.length-a)),o.push('return r.join(""); }');var c=o.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",c).apply(e,[e])}catch(t){throw console.error("'"+t.message+"'"," in \n\nCode:\n",o,"\n"),t}}function k(t,e){return t?window.pathConfig.root+"/d_pic/"+e:window.pathConfig.sharedIcon+"/"+e}function j(){alert("작업을 실패했습니다.")}String.prototype.format=function(){for(var t=arguments.length,e=new Array(t),n=0;n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function D(t,e){if(t){if("string"==typeof t)return M(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(t,e):void 0}}function M(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n

<%name%>

<%leadership%> / <%strength%> / <%intel%>
<%nation%>
<%personalText%>
<%specialText%> / <%special2Text%>

',e));$(".card_holder").append(n),n.find(".select_btn").on("click",U),n.find(".obj_tooltip").tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},html:!0})})),H(),X()}function G(t){var e=$("#general_list");t&&(e.empty(),e.data("lastIdx",0),$("#row_print_more").show());var n=window.generalList,r=e.data("lastIdx"),o=Math.min(r+50,n.length);e.data("lastIdx",o);for(var a=r;a <%name%><%nameAux%> <%age%>세 <%personalWithTooltip%> <%specialDomesticWithTooltip%> / <%specialWarWithTooltip%> Lv <%explevel%> <%nation%> <%experience%> <%dedication%> <%officerLevel%> <%total%> <%leadership%> <%strength%> <%intel%> <%killturn%>',i))}o==n.length&&$("#row_print_more").hide(),e.find(".obj_tooltip").tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},html:!0}),$("#tb_general_list").show()}$((function(t){window.generalList=[],t.post("j_get_select_npc_token.php").then((function(t){t.result?(console.log(t),z(t)):alert(t.reason)}),j),t("#btn_pick_more").click((function(){var e=t(".keep_select:checked").map((function(){return L(t(this).val())})).toArray();console.log(e),t.post({url:"j_get_select_npc_token.php",dataType:"json",data:{refresh:!0,keep:e}}).then((function(t){t.result||(alert(t.reason),location.reload()),console.log(t),z(t)}),j)})),t("#btn_load_general_list").click((function(){t.post({url:"j_get_general_list.php",dataType:"json",data:{with_token:!0}}).then((function(t){if(!t.result)return alert(t.reason),!1;var e,n,r;n=(e=t).token,(r=e.list.map((function(t){var e={no:t[0],picture:t[1],imgsvr:t[2],npc:t[3],age:t[4],nation:t[5],special:t[6],special2:t[7],personal:t[8],name:t[9],ownerName:t[10],injury:t[11],leadership:t[12],lbonus:t[13],strength:t[14],intel:t[15],explevel:t[16],experience:t[17],dedication:t[18],officerLevel:t[19],killturn:t[20],connect:t[21],reserved:0};return e.npc<2&&(e.reserved=2),e.no in n&&(e.reserved=1),e.userCSS="",e.nameAux="",1==e.reserved?e.userCSS="color:violet":e.npc>=2?e.userCSS="color:cyan":1==e.npc&&(e.userCSS="color:skyblue"),e.ownerName&&(e.nameAux+="
(".concat(e.ownerName,")")),1==e.reserved&&(e.nameAux+="
(".concat(n[e.no],"회)")),e.total=e.leadership+e.strength+e.intel,e.iconPath=k(e.imgsvr,e.picture),e.specialDomesticWithTooltip=x(q,{text:e.special,info:specialInfo[e.special]}),e.specialWarWithTooltip=x(q,{text:e.special2,info:specialInfo[e.special2]}),e.personalWithTooltip=x(q,{text:e.personal,info:characterInfo[e.personal]}),e}))).sort((function(t,e){return t.reserved>e.reserved?-1:t.reservede.name?1:0})),window.generalList=r,G(!0)}),j)})),t("#btn_print_more").click((function(){G()}))}))}},n={};function r(t){var o=n[t];if(void 0!==o)return o.exports;var a=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=e,t=[],r.O=(e,n,o,a)=>{if(!n){var i=1/0;for(s=0;s=a)&&Object.keys(r.O).every((t=>r.O[t](n[c])))?n.splice(c--,1):(l=!1,a0&&t[s-1][2]>a;s--)t[s]=t[s-1];t[s]=[n,o,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=520,(()=>{var t={520:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var o,a,[i,l,c]=n,u=0;for(o in l)r.o(l,o)&&(r.m[o]=l[o]);if(c)var s=c(r);for(e&&e(n);ur(7138)));o=r.O(o)})(); +(()=>{"use strict";var t,e={7138:(t,e,n)=>{n(5666),n(2222),n(1249),n(2707),n(9826),n(3210),n(1539),n(8674);var r=n(9669),o=n.n(r);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){return!e||"object"!==a(e)&&"function"!=typeof e?c(t):e}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function u(t){var e="function"==typeof Map?new Map:void 0;return(u=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return s(t,arguments,d(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),f(r,t)})(t)}function s(t,e,n){return(s=p()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var o=new(Function.bind.apply(t,r));return n&&f(o,n.prototype),o}).apply(null,arguments)}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function h(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n(4916),n(5306),n(2479),n(9714),n(1058),n(6992),n(189),n(8783),n(3948),n(4723),n(7042),n(3123),n(1038),n(2526),n(1817),n(2165),n(8304),n(489),n(2772),n(2419),n(1532),Error;var v=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(o,t);var e,n,r=(e=o,n=p(),function(){var t,r=d(e);if(n){var o=d(this).constructor;t=Reflect.construct(r,arguments,o)}else t=r.apply(this,arguments);return l(this,t)});function o(){var t;i(this,o);for(var e=arguments.length,n=new Array(e),a=0;a":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return b[t]}))});function m(t){return window.linkifyStr(t,{})}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=/<%(.+?)%>/g,r=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,o=["with(obj) { var r=[];\n"],a=0,i=function t(e,n){return n?o.push(e.match(r)?e+"\n":"r.push("+e+");\n"):o.push(""!=e?'r.push("'+e.replace(/"/g,'\\"')+'");\n':""),t};for(e.e=y,e.linkifyStr=m;;){var l=n.exec(t);if(!l)break;i(t.slice(a,l.index))(l[1],!0),a=l.index+l[0].length}i(t.substr(a,t.length-a)),o.push('return r.join(""); }');var c=o.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",c).apply(e,[e])}catch(t){throw console.error("'"+t.message+"'"," in \n\nCode:\n",o,"\n"),t}}function w(t,e){return t?window.pathConfig.root+"/d_pic/"+e:window.pathConfig.sharedIcon+"/"+e}function _(){alert("작업을 실패했습니다.")}String.prototype.format=function(){for(var t=arguments.length,e=new Array(t),n=0;n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function C(t,e){if(t){if("string"==typeof t)return E(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(t,e):void 0}}function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n

<%name%>

<%leadership%> / <%strength%> / <%intel%>
<%nation%>
<%personalText%>
<%specialText%> / <%special2Text%>

',e));$(".card_holder").append(n),n.find(".select_btn").on("click",F),n.find(".obj_tooltip").tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},html:!0})})),U(),q()}function X(t){var e=$("#general_list");t&&(e.empty(),e.data("lastIdx",0),$("#row_print_more").show());var n=window.generalList,r=e.data("lastIdx"),o=Math.min(r+50,n.length);e.data("lastIdx",o);for(var a=r;a <%name%><%nameAux%> <%age%>세 <%personalWithTooltip%> <%specialDomesticWithTooltip%> / <%specialWarWithTooltip%> Lv <%explevel%> <%nation%> <%experience%> <%dedication%> <%officerLevel%> <%total%> <%leadership%> <%strength%> <%intel%> <%killturn%>',i))}o==n.length&&$("#row_print_more").hide(),e.find(".obj_tooltip").tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},html:!0}),$("#tb_general_list").show()}$((function(t){window.generalList=[],t.post("j_get_select_npc_token.php").then((function(t){t.result?(console.log(t),B(t)):alert(t.reason)}),_),t("#btn_pick_more").click((function(){var e=t(".keep_select:checked").map((function(){return D(t(this).val())})).toArray();console.log(e),t.post({url:"j_get_select_npc_token.php",dataType:"json",data:{refresh:!0,keep:e}}).then((function(t){t.result||(alert(t.reason),location.reload()),console.log(t),B(t)}),_)})),t("#btn_load_general_list").click((function(){t.post({url:"j_get_general_list.php",dataType:"json",data:{with_token:!0}}).then((function(t){if(!t.result)return alert(t.reason),!1;var e,n,r;n=(e=t).token,(r=e.list.map((function(t){var e={no:t[0],picture:t[1],imgsvr:t[2],npc:t[3],age:t[4],nation:t[5],special:t[6],special2:t[7],personal:t[8],name:t[9],ownerName:t[10],injury:t[11],leadership:t[12],lbonus:t[13],strength:t[14],intel:t[15],explevel:t[16],experience:t[17],dedication:t[18],officerLevel:t[19],killturn:t[20],connect:t[21],reserved:0};return e.npc<2&&(e.reserved=2),e.no in n&&(e.reserved=1),e.userCSS="",e.nameAux="",1==e.reserved?e.userCSS="color:violet":e.npc>=2?e.userCSS="color:cyan":1==e.npc&&(e.userCSS="color:skyblue"),e.ownerName&&(e.nameAux+="
(".concat(e.ownerName,")")),1==e.reserved&&(e.nameAux+="
(".concat(n[e.no],"회)")),e.total=e.leadership+e.strength+e.intel,e.iconPath=w(e.imgsvr,e.picture),e.specialDomesticWithTooltip=g(L,{text:e.special,info:specialInfo[e.special]}),e.specialWarWithTooltip=g(L,{text:e.special2,info:specialInfo[e.special2]}),e.personalWithTooltip=g(L,{text:e.personal,info:characterInfo[e.personal]}),e}))).sort((function(t,e){return t.reserved>e.reserved?-1:t.reservede.name?1:0})),window.generalList=r,X(!0)}),_)})),t("#btn_print_more").click((function(){X()}))}))}},n={};function r(t){var o=n[t];if(void 0!==o)return o.exports;var a=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=e,t=[],r.O=(e,n,o,a)=>{if(!n){var i=1/0;for(s=0;s=a)&&Object.keys(r.O).every((t=>r.O[t](n[c])))?n.splice(c--,1):(l=!1,a0&&t[s-1][2]>a;s--)t[s]=t[s-1];t[s]=[n,o,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=520,(()=>{var t={520:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var o,a,[i,l,c]=n,u=0;for(o in l)r.o(l,o)&&(r.m[o]=l[o]);if(c)var s=c(r);for(e&&e(n);ur(7138)));o=r.O(o)})(); //# sourceMappingURL=select_npc.js.map \ No newline at end of file diff --git a/hwe/js/select_npc.js.map b/hwe/js/select_npc.js.map index 25abf815..70da38c3 100644 --- a/hwe/js/select_npc.js.map +++ b/hwe/js/select_npc.js.map @@ -1 +1 @@ -{"version":3,"file":"select_npc.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/select_npc.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import axios from 'axios';\r\nimport { errUnknown, getIconPath, TemplateEngine } from './common_legacy';\r\nimport { GeneralListResponse, InvalidResponse } from './defs';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { unwrap_any } from './util/unwrap_any';\r\n\r\ndeclare const specialInfo: Record;\r\ndeclare const characterInfo: Record;\r\n\r\ndeclare global {\r\n interface Window {\r\n generalList: NPCPickPrintable[],\r\n }\r\n}\r\n\r\ntype NPCPick = {\r\n no: number,\r\n name: string,\r\n leadership: number,\r\n strength: number,\r\n intel: number,\r\n nation: string,\r\n imgsvr: 0 | 1,\r\n picture: string,\r\n personal: string,\r\n special: string,\r\n special2: string,\r\n\r\n iconPath?: string,\r\n specialText?: string,\r\n special2Text?: string,\r\n personalText?: string,\r\n}\r\n\r\ntype NPCPickPrintableR = {\r\n no: number,\r\n picture: string,\r\n imgsvr: 0 | 1,\r\n npc: number,\r\n age: number,\r\n nation: string,\r\n special: string,\r\n special2: string,\r\n personal: string,\r\n name: string,\r\n ownerName: string | null,\r\n injury: number,\r\n leadership: number,\r\n lbonus: number,\r\n strength: number,\r\n intel: number,\r\n explevel: number,\r\n experience: string,\r\n dedication: string,\r\n officerLevel: string,\r\n killturn: number,\r\n connect: number,\r\n reserved: number,\r\n\r\n userCSS?: string,\r\n nameAux?: string,\r\n total?: number,\r\n iconPath?: string,\r\n specialDomesticWithTooltip?: string,\r\n specialWarWithTooltip?: string,\r\n personalWithTooltip?: string,\r\n}\r\n\r\ntype NPCPickPrintable = NPCPickPrintableR & {\r\n userCSS: string,\r\n nameAux: string,\r\n total: number,\r\n iconPath: string,\r\n specialDomesticWithTooltip: string,\r\n specialWarWithTooltip: string,\r\n personalWithTooltip: string,\r\n}\r\n\r\ntype NPCToken = {\r\n result: true,\r\n pick: Record,\r\n pickMoreFrom: string,\r\n pickMoreSeconds: number,\r\n validUntil: string,\r\n}\r\n\r\nconst templateGeneralCard =\r\n '
\\\r\n

<%name%>

\\\r\n

\" height=64 width=64>

\\\r\n

<%leadership%> / <%strength%> / <%intel%>
\\\r\n <%nation%>
\\\r\n <%personalText%>
\\\r\n <%specialText%> / <%special2Text%>

\\\r\n \\\r\n \\\r\n
';\r\n\r\nconst templateSpecial =\r\n '<%text%>\\\r\n \\\r\n <%info%>\\\r\n \\\r\n\\\r\n';\r\n\r\nconst templateGeneralRow =\r\n '\\\r\n \">\\\r\n \"><%name%><%nameAux%>\\\r\n <%age%>세\\\r\n <%personalWithTooltip%>\\\r\n <%specialDomesticWithTooltip%> / <%specialWarWithTooltip%>\\\r\n Lv <%explevel%>\\\r\n <%nation%>\\\r\n <%experience%>\\\r\n <%dedication%>\\\r\n <%officerLevel%>\\\r\n <%total%>\\\r\n <%leadership%>\\\r\n <%strength%>\\\r\n <%intel%>\\\r\n <%killturn%>\\\r\n';\r\n\r\nasync function pickGeneral(this: HTMLElement, e: JQuery.Event) {\r\n e.preventDefault();\r\n const $btn = $(this);\r\n\r\n if (!confirm(`빙의할까요? : ${$btn.data('name')}`)) {\r\n return;\r\n }\r\n\r\n let result: InvalidResponse;\r\n try {\r\n const response = await axios({\r\n url: 'j_select_npc.php',\r\n responseType: 'json',\r\n method: 'post',\r\n data: convertFormData({\r\n pick: unwrap_any($btn.val()),\r\n })\r\n });\r\n result = response.data;\r\n }\r\n catch (e) {\r\n alert(`알 수 없는 에러: ${e}`);\r\n return;\r\n }\r\n\r\n if (!result.result) {\r\n alert(result.reason);\r\n location.reload();\r\n return;\r\n }\r\n\r\n alert('빙의에 성공했습니다.');\r\n location.href = './';\r\n}\r\n\r\nfunction updateOutdateTimer() {\r\n const $validUntilText = $('#valid_until_text');\r\n const now = Date.now();\r\n const validUntil = $validUntilText.data('until');\r\n if (validUntil <= 0) {\r\n return;\r\n } else if (validUntil < now) {\r\n $validUntilText.data('until', 0);\r\n $('#valid_until').hide();\r\n $('#outdate_token').show();\r\n return;\r\n } else if (validUntil - now <= 30000) {\r\n const remainColor = 255 * (validUntil - now) / 30000;\r\n $validUntilText.css('color', `rgb(255, ${remainColor}, ${remainColor})`);\r\n }\r\n\r\n setTimeout(updateOutdateTimer, 1000);\r\n}\r\n\r\nfunction updatePickMoreTimer() {\r\n const $btn = $('#btn_pick_more');\r\n\r\n const now = Date.now();\r\n const remain = ($btn.data('available') - now) / 1000;\r\n if (remain <= 0) {\r\n $btn.prop('disabled', false)\r\n $btn.html('다른 장수 보기');\r\n return;\r\n }\r\n\r\n $btn.html(`다른 장수 보기(${Math.ceil(remain)}초)`);\r\n\r\n setTimeout(updatePickMoreTimer, 250);\r\n}\r\n\r\nfunction printGenerals(value: NPCToken) {\r\n $('.card_holder').empty();\r\n $('#valid_until').show();\r\n $('#valid_until_text').html(value.validUntil).data('until', (new Date(value.validUntil)).getTime()).css('color', 'white');\r\n $('#outdate_token').hide();\r\n const time = Date.now() + value.pickMoreSeconds * 1000;\r\n $('#btn_pick_more').data('available', time).prop('disabled', true);\r\n\r\n const pick = $.map(value.pick, function (value, key) {\r\n return value;\r\n });\r\n\r\n pick.sort(function (lhs, rhs) {\r\n const lsum = lhs.leadership + lhs.strength + lhs.intel;\r\n const rsum = rhs.leadership + rhs.strength + rhs.intel;\r\n return lsum - rsum;\r\n });\r\n\r\n $.each(pick, function (idx, cardData: NPCPick) {\r\n cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture);\r\n if (cardData.special in specialInfo) {\r\n cardData.specialText = TemplateEngine(templateSpecial, {\r\n text: cardData.special,\r\n info: specialInfo[cardData.special]\r\n });\r\n } else {\r\n cardData.specialText = cardData.special;\r\n }\r\n\r\n if (cardData.special2 in specialInfo) {\r\n cardData.special2Text = TemplateEngine(templateSpecial, {\r\n text: cardData.special2,\r\n info: specialInfo[cardData.special2]\r\n });\r\n } else {\r\n cardData.special2Text = cardData.special2;\r\n }\r\n\r\n if (cardData.personal in characterInfo) {\r\n cardData.personalText = TemplateEngine(templateSpecial, {\r\n text: cardData.personal,\r\n info: characterInfo[cardData.personal]\r\n });\r\n } else {\r\n cardData.personalText = cardData.personal;\r\n }\r\n\r\n\r\n const $card = $(TemplateEngine(templateGeneralCard, cardData));\r\n\r\n $('.card_holder').append($card);\r\n $card.find('.select_btn').on('click', pickGeneral);\r\n $card.find('.obj_tooltip').tooltip({\r\n title: function () {\r\n return $.trim($(this).find('.tooltiptext').html());\r\n },\r\n html: true\r\n });\r\n });\r\n\r\n updatePickMoreTimer();\r\n updateOutdateTimer();\r\n}\r\n\r\nfunction printGeneralList(value: GeneralListResponse) {\r\n const tokenList = value.token;\r\n const generalList:NPCPickPrintable[] = value.list.map((rawGeneral) => {\r\n const general: NPCPickPrintableR = {\r\n no: rawGeneral[0],\r\n picture: rawGeneral[1],\r\n imgsvr: rawGeneral[2],\r\n npc: rawGeneral[3],\r\n age: rawGeneral[4],\r\n nation: rawGeneral[5],\r\n special: rawGeneral[6],\r\n special2: rawGeneral[7],\r\n personal: rawGeneral[8],\r\n name: rawGeneral[9],\r\n ownerName: rawGeneral[10],\r\n injury: rawGeneral[11],\r\n leadership: rawGeneral[12],\r\n lbonus: rawGeneral[13],\r\n strength: rawGeneral[14],\r\n intel: rawGeneral[15],\r\n explevel: rawGeneral[16],\r\n experience: rawGeneral[17],\r\n dedication: rawGeneral[18],\r\n officerLevel: rawGeneral[19],\r\n killturn: rawGeneral[20],\r\n connect: rawGeneral[21],\r\n reserved: 0\r\n };\r\n if (general.npc < 2) {\r\n general.reserved = 2;\r\n }\r\n if (general.no in tokenList) {\r\n general.reserved = 1;\r\n }\r\n\r\n general.userCSS = \"\";\r\n general.nameAux = \"\";\r\n\r\n if (general.reserved == 1) {\r\n general.userCSS = 'color:violet';\r\n } else if (general.npc >= 2) {\r\n general.userCSS = 'color:cyan';\r\n } else if (general.npc == 1) {\r\n general.userCSS = 'color:skyblue';\r\n }\r\n\r\n if (general.ownerName) {\r\n general.nameAux += `
(${general.ownerName})`;\r\n }\r\n\r\n if (general.reserved == 1) {\r\n general.nameAux += `
(${tokenList[general.no]}회)`;\r\n }\r\n\r\n\r\n general.total = general.leadership + general.strength + general.intel;\r\n general.iconPath = getIconPath(general.imgsvr, general.picture);\r\n\r\n general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.special,\r\n info: specialInfo[general.special]\r\n });\r\n\r\n general.specialWarWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.special2,\r\n info: specialInfo[general.special2]\r\n });\r\n\r\n general.personalWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.personal,\r\n info: characterInfo[general.personal]\r\n });\r\n\r\n return general as NPCPickPrintable;\r\n });\r\n\r\n generalList.sort(function (lhs, rhs) {\r\n if (lhs.reserved > rhs.reserved) {\r\n return -1;\r\n }\r\n if (lhs.reserved < rhs.reserved) {\r\n return 1;\r\n }\r\n if (lhs.total != rhs.total) {\r\n return rhs.total - lhs.total;\r\n }\r\n if (lhs.leadership != rhs.leadership) {\r\n return rhs.leadership - lhs.total;\r\n }\r\n\r\n if (lhs.name < rhs.name) {\r\n return -1;\r\n }\r\n if (lhs.name > rhs.name) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n window.generalList = generalList;\r\n _printGeneralList(true);\r\n}\r\n\r\nfunction _printGeneralList(clear?:boolean) {\r\n const $generalTable = $('#general_list');\r\n if (clear) {\r\n $generalTable.empty();\r\n $generalTable.data('lastIdx', 0);\r\n $('#row_print_more').show();\r\n }\r\n\r\n const generalList = window.generalList;\r\n\r\n const idxFrom = $generalTable.data('lastIdx');\r\n const idxTo = Math.min(idxFrom + 50, generalList.length);\r\n $generalTable.data('lastIdx', idxTo);\r\n\r\n for (let idx = idxFrom; idx < idxFrom + 50; idx++) {\r\n const general = generalList[idx];\r\n $generalTable.append(TemplateEngine(templateGeneralRow, general));\r\n }\r\n\r\n if (idxTo == generalList.length) {\r\n $('#row_print_more').hide();\r\n }\r\n\r\n $generalTable.find('.obj_tooltip').tooltip({\r\n title: function () {\r\n return $.trim($(this).find('.tooltiptext').html());\r\n },\r\n html: true\r\n });\r\n $('#tb_general_list').show();\r\n}\r\n\r\n$(function ($) {\r\n window.generalList = [];\r\n\r\n $.post('j_get_select_npc_token.php').then(function (value) {\r\n if (!value.result) {\r\n alert(value.reason);\r\n return;\r\n }\r\n\r\n console.log(value);\r\n printGenerals(value);\r\n }, errUnknown);\r\n\r\n $('#btn_pick_more').click(function () {\r\n const generals = $('.keep_select:checked').map(function () {\r\n return unwrap_any($(this).val());\r\n }).toArray();\r\n console.log(generals);\r\n $.post({\r\n url: 'j_get_select_npc_token.php',\r\n dataType: 'json',\r\n data: {\r\n refresh: true,\r\n keep: generals\r\n }\r\n }).then(function (result) {\r\n if (!result.result) {\r\n alert(result.reason);\r\n location.reload();\r\n }\r\n console.log(result);\r\n printGenerals(result);\r\n }, errUnknown);\r\n });\r\n\r\n $('#btn_load_general_list').click(function () {\r\n $.post({\r\n url: 'j_get_general_list.php',\r\n dataType: 'json',\r\n data: {\r\n with_token: true\r\n }\r\n }).then(function (result) {\r\n if (!result.result) {\r\n alert(result.reason);\r\n return false;\r\n }\r\n printGeneralList(result);\r\n }, errUnknown);\r\n });\r\n\r\n $('#btn_print_more').click(function () {\r\n _printGeneralList();\r\n })\r\n\r\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 520;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t520: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(7138)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","entityMap","escapeHtml","string","String","replace","s","linkifyStrWithOpt","text","window","linkifyStr","TemplateEngine","html","options","re","reExp","code","cursor","add","line","js","push","match","e","exec","slice","index","length","substr","compiledCode","join","Function","apply","err","console","error","getIconPath","imgsvr","picture","pathConfig","root","sharedIcon","errUnknown","alert","prototype","format","args","number","toString","convertFormData","values","formData","FormData","simpleConv","v","TypeError","Object","entries","key","value","arrKey","subValue","append","unwrap_any","result","templateSpecial","pickGeneral","preventDefault","$btn","$","confirm","data","url","responseType","method","pick","val","response","reason","location","reload","href","updateOutdateTimer","$validUntilText","now","Date","validUntil","hide","show","remainColor","css","setTimeout","updatePickMoreTimer","remain","prop","Math","ceil","printGenerals","empty","getTime","time","pickMoreSeconds","map","sort","lhs","rhs","leadership","strength","intel","each","idx","cardData","iconPath","special","specialInfo","specialText","info","special2","special2Text","personal","characterInfo","personalText","$card","find","on","tooltip","title","trim","_printGeneralList","clear","$generalTable","generalList","idxFrom","idxTo","min","general","post","then","log","click","generals","toArray","dataType","refresh","keep","with_token","tokenList","token","list","rawGeneral","no","npc","age","nation","ownerName","injury","lbonus","explevel","experience","dedication","officerLevel","killturn","connect","reserved","userCSS","nameAux","total","specialDomesticWithTooltip","specialWarWithTooltip","personalWithTooltip","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","obj","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"select_npc.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/select_npc.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","import { Nullable, NotNullExpected } from \"../util\";\n\n\nexport function unwrap_any(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result as T;\n}\n","import axios from 'axios';\r\nimport { errUnknown, getIconPath, TemplateEngine } from './common_legacy';\r\nimport { GeneralListResponse, InvalidResponse } from './defs';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { unwrap_any } from './util/unwrap_any';\r\n\r\ndeclare const specialInfo: Record;\r\ndeclare const characterInfo: Record;\r\n\r\ndeclare global {\r\n interface Window {\r\n generalList: NPCPickPrintable[],\r\n }\r\n}\r\n\r\ntype NPCPick = {\r\n no: number,\r\n name: string,\r\n leadership: number,\r\n strength: number,\r\n intel: number,\r\n nation: string,\r\n imgsvr: 0 | 1,\r\n picture: string,\r\n personal: string,\r\n special: string,\r\n special2: string,\r\n\r\n iconPath?: string,\r\n specialText?: string,\r\n special2Text?: string,\r\n personalText?: string,\r\n}\r\n\r\ntype NPCPickPrintableR = {\r\n no: number,\r\n picture: string,\r\n imgsvr: 0 | 1,\r\n npc: number,\r\n age: number,\r\n nation: string,\r\n special: string,\r\n special2: string,\r\n personal: string,\r\n name: string,\r\n ownerName: string | null,\r\n injury: number,\r\n leadership: number,\r\n lbonus: number,\r\n strength: number,\r\n intel: number,\r\n explevel: number,\r\n experience: string,\r\n dedication: string,\r\n officerLevel: string,\r\n killturn: number,\r\n connect: number,\r\n reserved: number,\r\n\r\n userCSS?: string,\r\n nameAux?: string,\r\n total?: number,\r\n iconPath?: string,\r\n specialDomesticWithTooltip?: string,\r\n specialWarWithTooltip?: string,\r\n personalWithTooltip?: string,\r\n}\r\n\r\ntype NPCPickPrintable = NPCPickPrintableR & {\r\n userCSS: string,\r\n nameAux: string,\r\n total: number,\r\n iconPath: string,\r\n specialDomesticWithTooltip: string,\r\n specialWarWithTooltip: string,\r\n personalWithTooltip: string,\r\n}\r\n\r\ntype NPCToken = {\r\n result: true,\r\n pick: Record,\r\n pickMoreFrom: string,\r\n pickMoreSeconds: number,\r\n validUntil: string,\r\n}\r\n\r\nconst templateGeneralCard =\r\n '
\\\r\n

<%name%>

\\\r\n

\" height=64 width=64>

\\\r\n

<%leadership%> / <%strength%> / <%intel%>
\\\r\n <%nation%>
\\\r\n <%personalText%>
\\\r\n <%specialText%> / <%special2Text%>

\\\r\n \\\r\n \\\r\n
';\r\n\r\nconst templateSpecial =\r\n '<%text%>\\\r\n \\\r\n <%info%>\\\r\n \\\r\n\\\r\n';\r\n\r\nconst templateGeneralRow =\r\n '\\\r\n \">\\\r\n \"><%name%><%nameAux%>\\\r\n <%age%>세\\\r\n <%personalWithTooltip%>\\\r\n <%specialDomesticWithTooltip%> / <%specialWarWithTooltip%>\\\r\n Lv <%explevel%>\\\r\n <%nation%>\\\r\n <%experience%>\\\r\n <%dedication%>\\\r\n <%officerLevel%>\\\r\n <%total%>\\\r\n <%leadership%>\\\r\n <%strength%>\\\r\n <%intel%>\\\r\n <%killturn%>\\\r\n';\r\n\r\nasync function pickGeneral(this: HTMLElement, e: JQuery.Event) {\r\n e.preventDefault();\r\n const $btn = $(this);\r\n\r\n if (!confirm(`빙의할까요? : ${$btn.data('name')}`)) {\r\n return;\r\n }\r\n\r\n let result: InvalidResponse;\r\n try {\r\n const response = await axios({\r\n url: 'j_select_npc.php',\r\n responseType: 'json',\r\n method: 'post',\r\n data: convertFormData({\r\n pick: unwrap_any($btn.val()),\r\n })\r\n });\r\n result = response.data;\r\n }\r\n catch (e) {\r\n alert(`알 수 없는 에러: ${e}`);\r\n return;\r\n }\r\n\r\n if (!result.result) {\r\n alert(result.reason);\r\n location.reload();\r\n return;\r\n }\r\n\r\n alert('빙의에 성공했습니다.');\r\n location.href = './';\r\n}\r\n\r\nfunction updateOutdateTimer() {\r\n const $validUntilText = $('#valid_until_text');\r\n const now = Date.now();\r\n const validUntil = $validUntilText.data('until');\r\n if (validUntil <= 0) {\r\n return;\r\n } else if (validUntil < now) {\r\n $validUntilText.data('until', 0);\r\n $('#valid_until').hide();\r\n $('#outdate_token').show();\r\n return;\r\n } else if (validUntil - now <= 30000) {\r\n const remainColor = 255 * (validUntil - now) / 30000;\r\n $validUntilText.css('color', `rgb(255, ${remainColor}, ${remainColor})`);\r\n }\r\n\r\n setTimeout(updateOutdateTimer, 1000);\r\n}\r\n\r\nfunction updatePickMoreTimer() {\r\n const $btn = $('#btn_pick_more');\r\n\r\n const now = Date.now();\r\n const remain = ($btn.data('available') - now) / 1000;\r\n if (remain <= 0) {\r\n $btn.prop('disabled', false)\r\n $btn.html('다른 장수 보기');\r\n return;\r\n }\r\n\r\n $btn.html(`다른 장수 보기(${Math.ceil(remain)}초)`);\r\n\r\n setTimeout(updatePickMoreTimer, 250);\r\n}\r\n\r\nfunction printGenerals(value: NPCToken) {\r\n $('.card_holder').empty();\r\n $('#valid_until').show();\r\n $('#valid_until_text').html(value.validUntil).data('until', (new Date(value.validUntil)).getTime()).css('color', 'white');\r\n $('#outdate_token').hide();\r\n const time = Date.now() + value.pickMoreSeconds * 1000;\r\n $('#btn_pick_more').data('available', time).prop('disabled', true);\r\n\r\n const pick = $.map(value.pick, function (value, key) {\r\n return value;\r\n });\r\n\r\n pick.sort(function (lhs, rhs) {\r\n const lsum = lhs.leadership + lhs.strength + lhs.intel;\r\n const rsum = rhs.leadership + rhs.strength + rhs.intel;\r\n return lsum - rsum;\r\n });\r\n\r\n $.each(pick, function (idx, cardData: NPCPick) {\r\n cardData.iconPath = getIconPath(cardData.imgsvr, cardData.picture);\r\n if (cardData.special in specialInfo) {\r\n cardData.specialText = TemplateEngine(templateSpecial, {\r\n text: cardData.special,\r\n info: specialInfo[cardData.special]\r\n });\r\n } else {\r\n cardData.specialText = cardData.special;\r\n }\r\n\r\n if (cardData.special2 in specialInfo) {\r\n cardData.special2Text = TemplateEngine(templateSpecial, {\r\n text: cardData.special2,\r\n info: specialInfo[cardData.special2]\r\n });\r\n } else {\r\n cardData.special2Text = cardData.special2;\r\n }\r\n\r\n if (cardData.personal in characterInfo) {\r\n cardData.personalText = TemplateEngine(templateSpecial, {\r\n text: cardData.personal,\r\n info: characterInfo[cardData.personal]\r\n });\r\n } else {\r\n cardData.personalText = cardData.personal;\r\n }\r\n\r\n\r\n const $card = $(TemplateEngine(templateGeneralCard, cardData));\r\n\r\n $('.card_holder').append($card);\r\n $card.find('.select_btn').on('click', pickGeneral);\r\n $card.find('.obj_tooltip').tooltip({\r\n title: function () {\r\n return $.trim($(this).find('.tooltiptext').html());\r\n },\r\n html: true\r\n });\r\n });\r\n\r\n updatePickMoreTimer();\r\n updateOutdateTimer();\r\n}\r\n\r\nfunction printGeneralList(value: GeneralListResponse) {\r\n const tokenList = value.token;\r\n const generalList:NPCPickPrintable[] = value.list.map((rawGeneral) => {\r\n const general: NPCPickPrintableR = {\r\n no: rawGeneral[0],\r\n picture: rawGeneral[1],\r\n imgsvr: rawGeneral[2],\r\n npc: rawGeneral[3],\r\n age: rawGeneral[4],\r\n nation: rawGeneral[5],\r\n special: rawGeneral[6],\r\n special2: rawGeneral[7],\r\n personal: rawGeneral[8],\r\n name: rawGeneral[9],\r\n ownerName: rawGeneral[10],\r\n injury: rawGeneral[11],\r\n leadership: rawGeneral[12],\r\n lbonus: rawGeneral[13],\r\n strength: rawGeneral[14],\r\n intel: rawGeneral[15],\r\n explevel: rawGeneral[16],\r\n experience: rawGeneral[17],\r\n dedication: rawGeneral[18],\r\n officerLevel: rawGeneral[19],\r\n killturn: rawGeneral[20],\r\n connect: rawGeneral[21],\r\n reserved: 0\r\n };\r\n if (general.npc < 2) {\r\n general.reserved = 2;\r\n }\r\n if (general.no in tokenList) {\r\n general.reserved = 1;\r\n }\r\n\r\n general.userCSS = \"\";\r\n general.nameAux = \"\";\r\n\r\n if (general.reserved == 1) {\r\n general.userCSS = 'color:violet';\r\n } else if (general.npc >= 2) {\r\n general.userCSS = 'color:cyan';\r\n } else if (general.npc == 1) {\r\n general.userCSS = 'color:skyblue';\r\n }\r\n\r\n if (general.ownerName) {\r\n general.nameAux += `
(${general.ownerName})`;\r\n }\r\n\r\n if (general.reserved == 1) {\r\n general.nameAux += `
(${tokenList[general.no]}회)`;\r\n }\r\n\r\n\r\n general.total = general.leadership + general.strength + general.intel;\r\n general.iconPath = getIconPath(general.imgsvr, general.picture);\r\n\r\n general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.special,\r\n info: specialInfo[general.special]\r\n });\r\n\r\n general.specialWarWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.special2,\r\n info: specialInfo[general.special2]\r\n });\r\n\r\n general.personalWithTooltip = TemplateEngine(templateSpecial, {\r\n text: general.personal,\r\n info: characterInfo[general.personal]\r\n });\r\n\r\n return general as NPCPickPrintable;\r\n });\r\n\r\n generalList.sort(function (lhs, rhs) {\r\n if (lhs.reserved > rhs.reserved) {\r\n return -1;\r\n }\r\n if (lhs.reserved < rhs.reserved) {\r\n return 1;\r\n }\r\n if (lhs.total != rhs.total) {\r\n return rhs.total - lhs.total;\r\n }\r\n if (lhs.leadership != rhs.leadership) {\r\n return rhs.leadership - lhs.total;\r\n }\r\n\r\n if (lhs.name < rhs.name) {\r\n return -1;\r\n }\r\n if (lhs.name > rhs.name) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n window.generalList = generalList;\r\n _printGeneralList(true);\r\n}\r\n\r\nfunction _printGeneralList(clear?:boolean) {\r\n const $generalTable = $('#general_list');\r\n if (clear) {\r\n $generalTable.empty();\r\n $generalTable.data('lastIdx', 0);\r\n $('#row_print_more').show();\r\n }\r\n\r\n const generalList = window.generalList;\r\n\r\n const idxFrom = $generalTable.data('lastIdx');\r\n const idxTo = Math.min(idxFrom + 50, generalList.length);\r\n $generalTable.data('lastIdx', idxTo);\r\n\r\n for (let idx = idxFrom; idx < idxFrom + 50; idx++) {\r\n const general = generalList[idx];\r\n $generalTable.append(TemplateEngine(templateGeneralRow, general));\r\n }\r\n\r\n if (idxTo == generalList.length) {\r\n $('#row_print_more').hide();\r\n }\r\n\r\n $generalTable.find('.obj_tooltip').tooltip({\r\n title: function () {\r\n return $.trim($(this).find('.tooltiptext').html());\r\n },\r\n html: true\r\n });\r\n $('#tb_general_list').show();\r\n}\r\n\r\n$(function ($) {\r\n window.generalList = [];\r\n\r\n $.post('j_get_select_npc_token.php').then(function (value) {\r\n if (!value.result) {\r\n alert(value.reason);\r\n return;\r\n }\r\n\r\n console.log(value);\r\n printGenerals(value);\r\n }, errUnknown);\r\n\r\n $('#btn_pick_more').click(function () {\r\n const generals = $('.keep_select:checked').map(function () {\r\n return unwrap_any($(this).val());\r\n }).toArray();\r\n console.log(generals);\r\n $.post({\r\n url: 'j_get_select_npc_token.php',\r\n dataType: 'json',\r\n data: {\r\n refresh: true,\r\n keep: generals\r\n }\r\n }).then(function (result) {\r\n if (!result.result) {\r\n alert(result.reason);\r\n location.reload();\r\n }\r\n console.log(result);\r\n printGenerals(result);\r\n }, errUnknown);\r\n });\r\n\r\n $('#btn_load_general_list').click(function () {\r\n $.post({\r\n url: 'j_get_general_list.php',\r\n dataType: 'json',\r\n data: {\r\n with_token: true\r\n }\r\n }).then(function (result) {\r\n if (!result.result) {\r\n alert(result.reason);\r\n return false;\r\n }\r\n printGeneralList(result);\r\n }, errUnknown);\r\n });\r\n\r\n $('#btn_print_more').click(function () {\r\n _printGeneralList();\r\n })\r\n\r\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 520;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t520: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(7138)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Error","NotNullExpected","TypeError","entityMap","escapeHtml","string","String","replace","s","linkifyStrWithOpt","text","window","linkifyStr","TemplateEngine","html","options","re","reExp","code","cursor","add","line","js","push","match","e","exec","slice","index","length","substr","compiledCode","join","Function","apply","err","console","error","message","getIconPath","imgsvr","picture","pathConfig","root","sharedIcon","errUnknown","alert","prototype","format","args","this","number","toString","convertFormData","values","formData","FormData","simpleConv","v","Object","entries","key","value","arrKey","subValue","append","unwrap_any","result","templateSpecial","pickGeneral","preventDefault","$btn","$","confirm","data","url","responseType","method","pick","val","response","reason","location","reload","href","updateOutdateTimer","$validUntilText","now","Date","validUntil","hide","show","remainColor","css","setTimeout","updatePickMoreTimer","remain","prop","Math","ceil","printGenerals","empty","getTime","time","pickMoreSeconds","map","sort","lhs","rhs","leadership","strength","intel","each","idx","cardData","iconPath","special","specialInfo","specialText","info","special2","special2Text","personal","characterInfo","personalText","$card","find","on","tooltip","title","trim","_printGeneralList","clear","$generalTable","generalList","idxFrom","idxTo","min","general","post","then","log","click","generals","toArray","dataType","refresh","keep","with_token","tokenList","token","list","rawGeneral","no","npc","age","nation","name","ownerName","injury","lbonus","explevel","experience","dedication","officerLevel","killturn","connect","reserved","userCSS","nameAux","total","specialDomesticWithTooltip","specialWarWithTooltip","personalWithTooltip","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","obj","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/troop.js b/hwe/js/troop.js index 8b36b3d0..ee10daf0 100644 --- a/hwe/js/troop.js +++ b/hwe/js/troop.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={3430:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"";return o(this,u),b(l(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=u,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&a(e.prototype,n),u}(s(Error)),y=function(t){i(n,t);var e=c(n);function n(){var t;o(this,n);for(var r=arguments.length,a=new Array(r),i=0;i
이 름통무지자 금군 량도시병 종병 사훈련사기명 령삭턴
");o.find("thead td"),o.css("width","960px").css("margin","0").css("padding","0").css("left","50%").css("margin-left","-480px"),o.hide();var a=function(){var e=T(regeneratorRuntime.mark((function e(){var a,i,c,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={},(a=t("#on_mover .content")).html(""),e.next=5,O().get("".concat(r,"/b_genList.php"),{responseType:"text"});case 5:i=e.sent,c=i.data;try{u=t(c),function(){var e=void 0;if(u.each((function(){if("general_list"==t(this).attr("id"))return e=t(this),!1})),void 0===e)throw new v;return e}().find("tbody > tr").each((function(){var e=t(this),r=e.children(".i_troop");if("-"!=t.trim(r.text())){r.remove();var o=parseInt(e.data("general-id"));n[o]=e,e.hide(),a.append(e)}})),t(".troopUser").hover((function(){var e=t(this),r=e.closest("tr"),a=parseInt(e.data("general-id"));console.log(a);var i=g(r.offset()).top+g(r.outerHeight());o.css("top",i),n[a].show(),o.show()}),(function(){var e=t(this),r=parseInt(e.data("general-id"));n[r].hide(),o.hide()}))}catch(t){console.log(t)}case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),i=t("table:eq(0) td:eq(0)");i.find("br:last").remove();var c=t('');c.click(T(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a();case 2:case"end":return t.stop()}}),t)})))),i.append(c),window.userList=n,t("body").append(o)}(t)}))}},n={};function r(t){var o=n[t];if(void 0!==o)return o.exports;var a=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=e,t=[],r.O=(e,n,o,a)=>{if(!n){var i=1/0;for(s=0;s=a)&&Object.keys(r.O).every((t=>r.O[t](n[u])))?n.splice(u--,1):(c=!1,a0&&t[s-1][2]>a;s--)t[s]=t[s-1];t[s]=[n,o,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=48,(()=>{var t={48:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var o,a,[i,c,u]=n,l=0;for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(u)var s=u(r);for(e&&e(n);lr(3430)));o=r.O(o)})(); +(()=>{"use strict";var t,e={3430:(t,e,n)=>{function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"";return o(this,u),b(l(t=r.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=u,(n=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&a(e.prototype,n),u}(s(Error)),y=function(t){i(n,t);var e=c(n);function n(){var t;o(this,n);for(var r=arguments.length,a=new Array(r),i=0;i
이 름통무지자 금군 량도시병 종병 사훈련사기명 령삭턴
");o.find("thead td"),o.css("width","960px").css("margin","0").css("padding","0").css("left","50%").css("margin-left","-480px"),o.hide();var a=function(){var e=T(regeneratorRuntime.mark((function e(){var a,i,c,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={},(a=t("#on_mover .content")).html(""),e.next=5,O().get("".concat(r,"/b_genList.php"),{responseType:"text"});case 5:i=e.sent,c=i.data;try{u=t(c),function(){var e=void 0;if(u.each((function(){if("general_list"==t(this).attr("id"))return e=t(this),!1})),void 0===e)throw new v;return e}().find("tbody > tr").each((function(){var e=t(this),r=e.children(".i_troop");if("-"!=t.trim(r.text())){r.remove();var o=parseInt(e.data("general-id"));n[o]=e,e.hide(),a.append(e)}})),t(".troopUser").hover((function(){var e=t(this),r=e.closest("tr"),a=parseInt(e.data("general-id"));console.log(a);var i=g(r.offset()).top+g(r.outerHeight());o.css("top",i),n[a].show(),o.show()}),(function(){var e=t(this),r=parseInt(e.data("general-id"));n[r].hide(),o.hide()}))}catch(t){console.log(t)}case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),i=t("table:eq(0) td:eq(0)");i.find("br:last").remove();var c=t('');c.click(T(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a();case 2:case"end":return t.stop()}}),t)})))),i.append(c),window.userList=n,t("body").append(o)}(t)}))}},n={};function r(t){var o=n[t];if(void 0!==o)return o.exports;var a=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=e,t=[],r.O=(e,n,o,a)=>{if(!n){var i=1/0;for(s=0;s=a)&&Object.keys(r.O).every((t=>r.O[t](n[u])))?n.splice(u--,1):(c=!1,a0&&t[s-1][2]>a;s--)t[s]=t[s-1];t[s]=[n,o,a]},r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=48,(()=>{var t={48:0};r.O.j=e=>0===t[e];var e=(e,n)=>{var o,a,[i,c,u]=n,l=0;for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(u)var s=u(r);for(e&&e(n);lr(3430)));o=r.O(o)})(); //# sourceMappingURL=troop.js.map \ No newline at end of file diff --git a/hwe/js/troop.js.map b/hwe/js/troop.js.map index 243eeaee..b4695659 100644 --- a/hwe/js/troop.js.map +++ b/hwe/js/troop.js.map @@ -1 +1 @@ -{"version":3,"file":"troop.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/troop.ts","webpack://hidche_lib/./hwe/ts/ext.plugin_troop.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { errUnknown } from \"./common_legacy\";\nimport { launchTroopPlugin } from \"./ext.plugin_troop\";\nimport jQuery from \"jquery\";\n\nimport \"../scss/troop.scss\";\n\njQuery(function($){\n //btnJoinTroop, btnLeaveTroop, btnKickTroop, btnCreateTroop, btnChangeTroopName\n $('#btnLeaveTroop').click(function(){\n if(!confirm(\"정말 부대를 탈퇴하시겠습니까?\")){\n return false;\n }\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대탈퇴'\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnCreateTroop').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대창설',\n name:$('#nameplate').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnChangeTroopName').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대변경',\n name:$('#nameplate').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnKickTroop').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대추방',\n gen:$('#genNo').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnJoinTroop').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대가입',\n troop:$('.troopId:checked').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n \n launchTroopPlugin($);\n});","import axios from \"axios\";\nimport { RuntimeError, unwrap } from \"./util\";\n\ndeclare global {\n interface Window {\n userList: Record>;\n }\n}\n\nexport function launchTroopPlugin($: JQueryStatic): void {\n\n let userList: Record> = {};\n const basicPath = (() => {\n const path = document.location.pathname;\n return path.substring(0, path.lastIndexOf('/'));\n })();\n\n const $userFrame: JQuery = $(\"
\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
이 름통무지자 금군 량도시병 종병 사훈련사기명 령삭턴
\");\n $userFrame.find('thead td');\n $userFrame.css('width', '960px').css('margin', '0').css('padding', '0').css('left', '50%').css('margin-left', '-480px');\n $userFrame.hide();\n\n\n const runAnalysis = async function () {\n userList = {};\n const $content = $('#on_mover .content');\n $content.html('');\n const response = await axios.get(`${basicPath}/b_genList.php`, {responseType: 'text'});\n const rawData = response.data;\n\n try {\n const $html = $(rawData); \n\n const tmpUsers: JQuery = (() => {\n let tmpUsers = undefined;\n $html.each(function () {\n const $this = $(this);\n if ($this.attr('id') == \"general_list\") {\n tmpUsers = $(this);\n return false;\n }\n });\n if (tmpUsers === undefined) {\n throw new RuntimeError();\n }\n return tmpUsers;\n })()\n\n\n tmpUsers.find(\"tbody > tr\").each(function () {\n const $this = $(this);\n const $부대 = $this.children('.i_troop');\n\n const 부대 = $.trim($부대.text());\n\n if (부대 == '-') {\n //부대 안탔음!\n return;\n }\n $부대.remove();\n\n const generalID = parseInt($this.data('general-id'));\n userList[generalID] = $this;\n $this.hide();\n $content.append($this);\n });\n\n $('.troopUser').hover(function () {\n const $this = $(this);\n const parent = $this.closest('tr');\n const generalID = parseInt($this.data('general-id'));\n console.log(generalID);\n const top = unwrap(parent.offset()).top + unwrap(parent.outerHeight());\n $userFrame.css('top', top);\n userList[generalID].show();\n $userFrame.show();\n }, function () {\n const $this = $(this);\n const generalID = parseInt($this.data('general-id'));\n userList[generalID].hide();\n $userFrame.hide();\n });\n }\n catch (err) {\n console.log(err);\n }\n\n\n };\n\n const $frame = $('table:eq(0) td:eq(0)');\n $frame.find('br:last').remove();\n\n const $btn = $('');\n $btn.click(async function () {\n await runAnalysis();\n });\n\n $frame.append($btn);\n\n\n window.userList = userList;\n\n $('body').append($userFrame);\n\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 48;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t48: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(3430)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","RuntimeError","message","this","name","Error","NotNullExpected","result","errUnknown","alert","String","prototype","format","args","replace","match","number","toString","$","click","confirm","post","url","dataType","data","action","then","console","log","reason","location","reload","val","gen","troop","path","userList","basicPath","document","pathname","substring","lastIndexOf","$userFrame","find","css","hide","runAnalysis","$content","html","responseType","response","rawData","$html","tmpUsers","undefined","each","attr","$this","children","trim","text","remove","generalID","parseInt","append","hover","parent","closest","top","offset","outerHeight","show","err","$frame","$btn","window","launchTroopPlugin","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"troop.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/troop.ts","webpack://hidche_lib/./hwe/ts/ext.plugin_troop.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/node module decorator","webpack://hidche_lib/webpack/runtime/runtimeId","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { errUnknown } from \"./common_legacy\";\nimport { launchTroopPlugin } from \"./ext.plugin_troop\";\nimport jQuery from \"jquery\";\n\nimport \"../scss/troop.scss\";\n\njQuery(function($){\n //btnJoinTroop, btnLeaveTroop, btnKickTroop, btnCreateTroop, btnChangeTroopName\n $('#btnLeaveTroop').click(function(){\n if(!confirm(\"정말 부대를 탈퇴하시겠습니까?\")){\n return false;\n }\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대탈퇴'\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnCreateTroop').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대창설',\n name:$('#nameplate').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnChangeTroopName').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대변경',\n name:$('#nameplate').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnKickTroop').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대추방',\n gen:$('#genNo').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n $('#btnJoinTroop').click(function(){\n $.post({\n url:'j_troop.php',\n dataType:'json',\n data:{\n action:'부대가입',\n troop:$('.troopId:checked').val()\n }\n }).then(function(data){\n console.log(data);\n if(!data.result){\n alert(data.reason);\n location.reload();\n }\n \n location.reload();\n \n }, errUnknown);\n return false;\n });\n\n \n launchTroopPlugin($);\n});","import axios from \"axios\";\nimport { RuntimeError, unwrap } from \"./util\";\n\ndeclare global {\n interface Window {\n userList: Record>;\n }\n}\n\nexport function launchTroopPlugin($: JQueryStatic): void {\n\n let userList: Record> = {};\n const basicPath = (() => {\n const path = document.location.pathname;\n return path.substring(0, path.lastIndexOf('/'));\n })();\n\n const $userFrame: JQuery = $(\"
\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
이 름통무지자 금군 량도시병 종병 사훈련사기명 령삭턴
\");\n $userFrame.find('thead td');\n $userFrame.css('width', '960px').css('margin', '0').css('padding', '0').css('left', '50%').css('margin-left', '-480px');\n $userFrame.hide();\n\n\n const runAnalysis = async function () {\n userList = {};\n const $content = $('#on_mover .content');\n $content.html('');\n const response = await axios.get(`${basicPath}/b_genList.php`, {responseType: 'text'});\n const rawData = response.data;\n\n try {\n const $html = $(rawData); \n\n const tmpUsers: JQuery = (() => {\n let tmpUsers = undefined;\n $html.each(function () {\n const $this = $(this);\n if ($this.attr('id') == \"general_list\") {\n tmpUsers = $(this);\n return false;\n }\n });\n if (tmpUsers === undefined) {\n throw new RuntimeError();\n }\n return tmpUsers;\n })()\n\n\n tmpUsers.find(\"tbody > tr\").each(function () {\n const $this = $(this);\n const $부대 = $this.children('.i_troop');\n\n const 부대 = $.trim($부대.text());\n\n if (부대 == '-') {\n //부대 안탔음!\n return;\n }\n $부대.remove();\n\n const generalID = parseInt($this.data('general-id'));\n userList[generalID] = $this;\n $this.hide();\n $content.append($this);\n });\n\n $('.troopUser').hover(function () {\n const $this = $(this);\n const parent = $this.closest('tr');\n const generalID = parseInt($this.data('general-id'));\n console.log(generalID);\n const top = unwrap(parent.offset()).top + unwrap(parent.outerHeight());\n $userFrame.css('top', top);\n userList[generalID].show();\n $userFrame.show();\n }, function () {\n const $this = $(this);\n const generalID = parseInt($this.data('general-id'));\n userList[generalID].hide();\n $userFrame.hide();\n });\n }\n catch (err) {\n console.log(err);\n }\n\n\n };\n\n const $frame = $('table:eq(0) td:eq(0)');\n $frame.find('br:last').remove();\n\n const $btn = $('');\n $btn.click(async function () {\n await runAnalysis();\n });\n\n $frame.append($btn);\n\n\n window.userList = userList;\n\n $('body').append($userFrame);\n\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 48;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t48: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(3430)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","RuntimeError","message","this","name","Error","NotNullExpected","TypeError","result","errUnknown","alert","String","prototype","format","args","replace","match","number","toString","$","click","confirm","post","url","dataType","data","action","then","console","log","reason","location","reload","val","gen","troop","path","userList","basicPath","document","pathname","substring","lastIndexOf","$userFrame","find","css","hide","runAnalysis","$content","html","responseType","response","rawData","$html","tmpUsers","undefined","each","attr","$this","children","trim","text","remove","generalID","parseInt","append","hover","parent","closest","top","offset","outerHeight","show","err","$frame","$btn","window","launchTroopPlugin","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/js/common.js b/js/common.js index 2d4e9e58..d0171e16 100644 --- a/js/common.js +++ b/js/common.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,n={1856:(t,n,r)=>{function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function i(t,n){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"";return o(this,c),v(l(t=e.call(this,n)),"name","RuntimeError"),t.message=n,t}return n=c,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&i(n.prototype,r),c}(f(Error))),y=r(9755),b=r.n(y),m=(r(3734),r(9669));function g(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,e=new Array(n);r":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return F[t]}))});function O(t){for(var n=t.length,r=0,e=0;e');r.text(n),r.appendTo(t("head"))}})),window.escapeHtml=j,window.isInt=function(t){return+t===t&&!(t%1)},window.mb_strwidth=O,window.mb_strimwidth=function(t,n,r){for(var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=O(e),i=t.length,a=0,u=[],c=n;cr){u.push(e);break}}return u.join("")},window.convertDictById=function(t){for(var n={},r=0,e=Object.values(t);r140},window.convColorValue=function(t){return"#"==t.charAt(0)&&(t=t.substr(1)),t=t.toUpperCase(),new Set(["000080","0000FF","008000","008080","00BFFF","00FF00","00FFFF","20B2AA","2E8B57","483D8B","6495ED","7B68EE","7CFC00","7FFFD4","800000","800080","808000","87CEEB","A0522D","A9A9A9","AFEEEE","BA55D3","E0FFFF","F5F5DC","FF0000","FF00FF","FF6347","FFA500","FFC0CB","FFD700","FFDAB9","FFFF00","FFFFFF"]).has(t)?t:"000000"},window.numberWithCommas=function(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},window.linkifyStrWithOpt=_,window.TemplateEngine=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=/<%(.+?)%>/g,e=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,o=["with(obj) { var r=[];\n"],i=0,a=function t(n,r){return r?o.push(n.match(e)?n+"\n":"r.push("+n+");\n"):o.push(""!=n?'r.push("'+n.replace(/"/g,'\\"')+'");\n':""),t};for(n.e=j,n.linkifyStr=_;;){var u=r.exec(t);if(!u)break;a(t.slice(i,u.index))(u[1],!0),i=u.index+u[0].length}a(t.substr(i,t.length-i)),o.push('return r.join(""); }');var c=o.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",c).apply(n,[n])}catch(t){throw console.error("'"+t.message+"'"," in \n\nCode:\n",o,"\n"),t}},window.getIconPath=function(t,n){return t?window.pathConfig.root+"/d_pic/"+n:window.pathConfig.sharedIcon+"/"+n},window.activeFlip=x,window.combineObject=A,window.combineArray=function(t,n){var r,e=[],o=function(t,n){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,n){if(t){if("string"==typeof t)return g(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?g(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){r&&(t=r);var e=0,o=function(){};return{s:o,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(t.keys());try{for(o.s();!(r=o.n()).done;){var i=r.value,a=t[i];e[i]=A(a,n)}}catch(t){o.e(t)}finally{o.f()}return e},window.activeFlipItem=C,window.errUnknown=function(){alert("작업을 실패했습니다.")},window.errUnknownToast=function(){b().toast({title:"에러!",content:"작업을 실패했습니다.",type:"danger",delay:5e3})},window.quickReject=function(t){void 0===t&&(t="작업을 실패했습니다.");var n=$.Deferred();return n.reject(t),n.promise()},window.nl2br=function(t){return t.replace(/\n/g,"
")},window.getNpcColor=function(t){return t>=2?"cyan":1==t?"skyblue":null},window.initTooltip=E}},r={};function e(t){var o=r[t];if(void 0!==o)return o.exports;var i=r[t]={exports:{}};return n[t].call(i.exports,i,i.exports,e),i.exports}e.m=n,e.amdO={},t=[],e.O=(n,r,o,i)=>{if(!r){var a=1/0;for(f=0;f=i)&&Object.keys(e.O).every((t=>e.O[t](r[c])))?r.splice(c--,1):(u=!1,i0&&t[f-1][2]>i;f--)t[f]=t[f-1];t[f]=[r,o,i]},e.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),e.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t={592:0};e.O.j=n=>0===t[n];var n=(n,r)=>{var o,i,[a,u,c]=r,l=0;for(o in u)e.o(u,o)&&(e.m[o]=u[o]);if(c)var f=c(e);for(n&&n(r);le(1856)));o=e.O(o)})(); +(()=>{"use strict";var t,n={8507:(t,n,r)=>{function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function i(t,n){return!n||"object"!==e(n)&&"function"!=typeof n?a(t):n}function a(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function u(t){var n="function"==typeof Map?new Map:void 0;return(u=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,e)}function e(){return c(t,arguments,p(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),f(e,t)})(t)}function c(t,n,r){return(c=l()?Reflect.construct:function(t,n,r){var e=[null];e.push.apply(e,n);var o=new(Function.bind.apply(t,e));return r&&f(o,r.prototype),o}).apply(null,arguments)}function l(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function f(t,n){return(f=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,n,r){return n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}r(4916),r(5306),r(6833),r(1539),r(9714),r(1058),r(6992),r(189),r(8783),r(3948),r(4723),r(7042),r(9826),r(3123),r(3210),r(1038),r(2526),r(1817),r(2165),r(2222),r(8304),r(489),r(2772),r(2419),r(1532);var d=function(t){!function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),n&&f(t,n)}(u,t);var n,r,e=(n=u,r=l(),function(){var t,e=p(n);if(r){var o=p(this).constructor;t=Reflect.construct(e,arguments,o)}else t=e.apply(this,arguments);return i(this,t)});function u(){var t;o(this,u);for(var n=arguments.length,r=new Array(n),i=0;it.length)&&(n=t.length);for(var r=0,e=new Array(n);r":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return b[t]}))});function m(t){for(var n=t.length,r=0,e=0;e');r.text(n),r.appendTo(t("head"))}})),window.escapeHtml=g,window.isInt=function(t){return+t===t&&!(t%1)},window.mb_strwidth=m,window.mb_strimwidth=function(t,n,r){for(var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=m(e),i=t.length,a=0,u=[],c=n;cr){u.push(e);break}}return u.join("")},window.convertDictById=function(t){for(var n={},r=0,e=Object.values(t);r140},window.convColorValue=function(t){return"#"==t.charAt(0)&&(t=t.substr(1)),t=t.toUpperCase(),new Set(["000080","0000FF","008000","008080","00BFFF","00FF00","00FFFF","20B2AA","2E8B57","483D8B","6495ED","7B68EE","7CFC00","7FFFD4","800000","800080","808000","87CEEB","A0522D","A9A9A9","AFEEEE","BA55D3","E0FFFF","F5F5DC","FF0000","FF00FF","FF6347","FFA500","FFC0CB","FFD700","FFDAB9","FFFF00","FFFFFF"]).has(t)?t:"000000"},window.numberWithCommas=function(t){return t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},window.linkifyStrWithOpt=j,window.TemplateEngine=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=/<%(.+?)%>/g,e=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,o=["with(obj) { var r=[];\n"],i=0,a=function t(n,r){return r?o.push(n.match(e)?n+"\n":"r.push("+n+");\n"):o.push(""!=n?'r.push("'+n.replace(/"/g,'\\"')+'");\n':""),t};for(n.e=g,n.linkifyStr=j;;){var u=r.exec(t);if(!u)break;a(t.slice(i,u.index))(u[1],!0),i=u.index+u[0].length}a(t.substr(i,t.length-i)),o.push('return r.join(""); }');var c=o.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",c).apply(n,[n])}catch(t){throw console.error("'"+t.message+"'"," in \n\nCode:\n",o,"\n"),t}},window.getIconPath=function(t,n){return t?window.pathConfig.root+"/d_pic/"+n:window.pathConfig.sharedIcon+"/"+n},window.activeFlip=O,window.combineObject=_,window.combineArray=function(t,n){var r,e=[],o=function(t,n){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,n){if(t){if("string"==typeof t)return y(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){r&&(t=r);var e=0,o=function(){};return{s:o,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(t.keys());try{for(o.s();!(r=o.n()).done;){var i=r.value,a=t[i];e[i]=_(a,n)}}catch(t){o.e(t)}finally{o.f()}return e},window.activeFlipItem=S,window.errUnknown=function(){alert("작업을 실패했습니다.")},window.errUnknownToast=function(){v().toast({title:"에러!",content:"작업을 실패했습니다.",type:"danger",delay:5e3})},window.quickReject=function(t){void 0===t&&(t="작업을 실패했습니다.");var n=$.Deferred();return n.reject(t),n.promise()},window.nl2br=function(t){return t.replace(/\n/g,"
")},window.getNpcColor=function(t){return t>=2?"cyan":1==t?"skyblue":null},window.initTooltip=x}},r={};function e(t){var o=r[t];if(void 0!==o)return o.exports;var i=r[t]={exports:{}};return n[t].call(i.exports,i,i.exports,e),i.exports}e.m=n,e.amdO={},t=[],e.O=(n,r,o,i)=>{if(!r){var a=1/0;for(f=0;f=i)&&Object.keys(e.O).every((t=>e.O[t](r[c])))?r.splice(c--,1):(u=!1,i0&&t[f-1][2]>i;f--)t[f]=t[f-1];t[f]=[r,o,i]},e.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),e.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t={592:0};e.O.j=n=>0===t[n];var n=(n,r)=>{var o,i,[a,u,c]=r,l=0;for(o in u)e.o(u,o)&&(e.m[o]=u[o]);if(c)var f=c(e);for(n&&n(r);le(8507)));o=e.O(o)})(); //# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/js/common.js.map b/js/common.js.map index ad384eb1..916ebe94 100644 --- a/js/common.js.map +++ b/js/common.js.map @@ -1 +1 @@ -{"version":3,"file":"common.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/common_deprecated.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/amd options","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { activeFlip, escapeHtml, isInt, mb_strwidth, mb_strimwidth, convertDictById, convertSet, hexToRgb, isBrightColor, convColorValue, numberWithCommas, linkifyStrWithOpt, TemplateEngine, getIconPath, combineObject, combineArray, activeFlipItem, errUnknown, errUnknownToast, quickReject, nl2br, getNpcColor, initTooltip } from \"./common_legacy\";\nimport jQuery from \"jquery\";\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\njQuery(function ($) {\n initTooltip();\n activeFlip();\n\n const customCSS = localStorage.getItem('sam_customCSS');\n if (customCSS) {\n const $style = $('');\n $style.text(customCSS);\n $style.appendTo($('head'));\n }\n});\n\ndeclare global {\n interface Window {\n $: typeof jQuery;\n jQuery: typeof jQuery;\n /** @deprecated Module 사용할 것 */\n escapeHtml: typeof escapeHtml;\n /** @deprecated Module 사용할 것 */\n isInt: typeof isInt;\n /** @deprecated Module 사용할 것 */\n mb_strwidth: typeof mb_strwidth;\n /** @deprecated Module 사용할 것 */\n mb_strimwidth: typeof mb_strimwidth;\n /** @deprecated Module 사용할 것 */\n convertDictById: typeof convertDictById;\n /** @deprecated Module 사용할 것 */\n convertSet: typeof convertSet;\n /** @deprecated Module 사용할 것 */\n hexToRgb: typeof hexToRgb;\n /** @deprecated Module 사용할 것 */\n isBrightColor: typeof isBrightColor;\n /** @deprecated Module 사용할 것 */\n convColorValue: typeof convColorValue;\n /** @deprecated Module 사용할 것 */\n numberWithCommas: typeof numberWithCommas;\n /** @deprecated Module 사용할 것 */\n linkifyStrWithOpt: typeof linkifyStrWithOpt;\n /** @deprecated Module 사용할 것 */\n TemplateEngine: typeof TemplateEngine;\n /** @deprecated Module 사용할 것 */\n getIconPath: typeof getIconPath;\n /** @deprecated Module 사용할 것 */\n activeFlip: typeof activeFlip;\n /** @deprecated Module 사용할 것 */\n combineObject: typeof combineObject;\n /** @deprecated Module 사용할 것 */\n combineArray: typeof combineArray;\n /** @deprecated Module 사용할 것 */\n activeFlipItem: typeof activeFlipItem;\n /** @deprecated Module 사용할 것 */\n errUnknown: typeof errUnknown;\n /** @deprecated Module 사용할 것 */\n errUnknownToast: typeof errUnknownToast;\n /** @deprecated Module 사용할 것 */\n quickReject: typeof quickReject;\n /** @deprecated Module 사용할 것 */\n nl2br: typeof nl2br;\n /** @deprecated Module 사용할 것 */\n getNpcColor: typeof getNpcColor;\n /** @deprecated Module 사용할 것 */\n initTooltip: typeof initTooltip;\n }\n}\n\nwindow.escapeHtml = escapeHtml;\nwindow.isInt = isInt;\nwindow.mb_strwidth = mb_strwidth;\nwindow.mb_strimwidth = mb_strimwidth;\nwindow.convertDictById = convertDictById;\nwindow.convertSet = convertSet;\nwindow.hexToRgb = hexToRgb;\nwindow.isBrightColor = isBrightColor;\nwindow.convColorValue = convColorValue;\nwindow.numberWithCommas = numberWithCommas;\nwindow.linkifyStrWithOpt = linkifyStrWithOpt;\nwindow.TemplateEngine = TemplateEngine;\nwindow.getIconPath = getIconPath;\nwindow.activeFlip = activeFlip;\nwindow.combineObject = combineObject;\nwindow.combineArray = combineArray;\nwindow.activeFlipItem = activeFlipItem;\nwindow.errUnknown = errUnknown;\nwindow.errUnknownToast = errUnknownToast;\nwindow.quickReject = quickReject;\nwindow.nl2br = nl2br;\nwindow.getNpcColor = getNpcColor;\nwindow.initTooltip = initTooltip;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t592: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1856)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","message","this","name","Error","axios","entityMap","escapeHtml","string","String","replace","s","mb_strwidth","str","l","length","i","c","charCodeAt","hexToRgb","hex","result","exec","r","parseInt","g","b","linkifyStrWithOpt","text","window","linkifyStr","activeFlip","$obj","undefined","$","find","each","activeFlipItem","combineObject","item","columnList","newItem","columnIdx","$img","imageList","push","attr","data","split","idx","value","trim","click","arr","css","initTooltip","hasClass","console","log","$target","mouseover","$objTooltip","tooltipClassText","template","format","tooltip","title","html","prototype","args","match","number","toString","jQuery","customCSS","localStorage","getItem","$style","appendTo","isInt","n","mb_strimwidth","start","width","trimmarker","trimmakerWidth","trimmedLength","trimmedStr","charAt","charWidth","next","nextWidth","join","convertDictById","Object","values","v","id","convertSet","isBrightColor","color","cv","unwrap","convColorValue","substr","toUpperCase","Set","has","numberWithCommas","x","TemplateEngine","options","re","reExp","code","cursor","add","line","js","e","slice","index","compiledCode","Function","apply","err","error","getIconPath","imgsvr","picture","pathConfig","root","sharedIcon","combineArray","array","keys","key","errUnknown","alert","errUnknownToast","content","type","delay","quickReject","errMsg","Deferred","reject","promise","nl2br","getNpcColor","npcType","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","obj","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"common.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/NotNullExpected.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/common_deprecated.ts","webpack://hidche_lib/./hwe/ts/util/unwrap.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/amd options","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n","import { unwrap } from \"./util/unwrap\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/**\n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/**\n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html\n * @param {object} options\n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) {\n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import { activeFlip, escapeHtml, isInt, mb_strwidth, mb_strimwidth, convertDictById, convertSet, hexToRgb, isBrightColor, convColorValue, numberWithCommas, linkifyStrWithOpt, TemplateEngine, getIconPath, combineObject, combineArray, activeFlipItem, errUnknown, errUnknownToast, quickReject, nl2br, getNpcColor, initTooltip } from \"./common_legacy\";\nimport jQuery from \"jquery\";\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\njQuery(function ($) {\n initTooltip();\n activeFlip();\n\n const customCSS = localStorage.getItem('sam_customCSS');\n if (customCSS) {\n const $style = $('');\n $style.text(customCSS);\n $style.appendTo($('head'));\n }\n});\n\ndeclare global {\n interface Window {\n $: typeof jQuery;\n jQuery: typeof jQuery;\n /** @deprecated Module 사용할 것 */\n escapeHtml: typeof escapeHtml;\n /** @deprecated Module 사용할 것 */\n isInt: typeof isInt;\n /** @deprecated Module 사용할 것 */\n mb_strwidth: typeof mb_strwidth;\n /** @deprecated Module 사용할 것 */\n mb_strimwidth: typeof mb_strimwidth;\n /** @deprecated Module 사용할 것 */\n convertDictById: typeof convertDictById;\n /** @deprecated Module 사용할 것 */\n convertSet: typeof convertSet;\n /** @deprecated Module 사용할 것 */\n hexToRgb: typeof hexToRgb;\n /** @deprecated Module 사용할 것 */\n isBrightColor: typeof isBrightColor;\n /** @deprecated Module 사용할 것 */\n convColorValue: typeof convColorValue;\n /** @deprecated Module 사용할 것 */\n numberWithCommas: typeof numberWithCommas;\n /** @deprecated Module 사용할 것 */\n linkifyStrWithOpt: typeof linkifyStrWithOpt;\n /** @deprecated Module 사용할 것 */\n TemplateEngine: typeof TemplateEngine;\n /** @deprecated Module 사용할 것 */\n getIconPath: typeof getIconPath;\n /** @deprecated Module 사용할 것 */\n activeFlip: typeof activeFlip;\n /** @deprecated Module 사용할 것 */\n combineObject: typeof combineObject;\n /** @deprecated Module 사용할 것 */\n combineArray: typeof combineArray;\n /** @deprecated Module 사용할 것 */\n activeFlipItem: typeof activeFlipItem;\n /** @deprecated Module 사용할 것 */\n errUnknown: typeof errUnknown;\n /** @deprecated Module 사용할 것 */\n errUnknownToast: typeof errUnknownToast;\n /** @deprecated Module 사용할 것 */\n quickReject: typeof quickReject;\n /** @deprecated Module 사용할 것 */\n nl2br: typeof nl2br;\n /** @deprecated Module 사용할 것 */\n getNpcColor: typeof getNpcColor;\n /** @deprecated Module 사용할 것 */\n initTooltip: typeof initTooltip;\n }\n}\n\nwindow.escapeHtml = escapeHtml;\nwindow.isInt = isInt;\nwindow.mb_strwidth = mb_strwidth;\nwindow.mb_strimwidth = mb_strimwidth;\nwindow.convertDictById = convertDictById;\nwindow.convertSet = convertSet;\nwindow.hexToRgb = hexToRgb;\nwindow.isBrightColor = isBrightColor;\nwindow.convColorValue = convColorValue;\nwindow.numberWithCommas = numberWithCommas;\nwindow.linkifyStrWithOpt = linkifyStrWithOpt;\nwindow.TemplateEngine = TemplateEngine;\nwindow.getIconPath = getIconPath;\nwindow.activeFlip = activeFlip;\nwindow.combineObject = combineObject;\nwindow.combineArray = combineArray;\nwindow.activeFlipItem = activeFlipItem;\nwindow.errUnknown = errUnknown;\nwindow.errUnknownToast = errUnknownToast;\nwindow.quickReject = quickReject;\nwindow.nl2br = nl2br;\nwindow.getNpcColor = getNpcColor;\nwindow.initTooltip = initTooltip;","import { Nullable } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t592: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(8507)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","NotNullExpected","TypeError","axios","entityMap","escapeHtml","string","String","replace","s","mb_strwidth","str","l","length","i","c","charCodeAt","hexToRgb","hex","result","exec","r","parseInt","g","b","linkifyStrWithOpt","text","window","linkifyStr","activeFlip","$obj","undefined","$","find","each","activeFlipItem","this","combineObject","item","columnList","newItem","columnIdx","$img","imageList","push","attr","data","split","idx","value","trim","click","arr","css","initTooltip","hasClass","console","log","$target","mouseover","$objTooltip","tooltipClassText","template","format","tooltip","title","html","prototype","args","match","number","toString","jQuery","customCSS","localStorage","getItem","$style","appendTo","isInt","n","mb_strimwidth","start","width","trimmarker","trimmakerWidth","trimmedLength","trimmedStr","charAt","charWidth","next","nextWidth","join","convertDictById","Object","values","v","id","convertSet","isBrightColor","color","cv","unwrap","convColorValue","substr","toUpperCase","Set","has","numberWithCommas","x","TemplateEngine","options","re","reExp","code","cursor","add","line","js","e","slice","index","compiledCode","Function","apply","err","error","message","getIconPath","imgsvr","picture","pathConfig","root","sharedIcon","combineArray","array","keys","key","errUnknown","alert","errUnknownToast","content","type","delay","quickReject","errMsg","Deferred","reject","promise","nl2br","getNpcColor","npcType","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","obj","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/js/entrance.js b/js/entrance.js index 5f32a8db..1e8ad206 100644 --- a/js/entrance.js +++ b/js/entrance.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={526:(e,t,r)=>{r(5666),r(1539),r(8674),r(9826),r(7042),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948);var n=r(9669),a=r.n(n),o=r(9755),s=r.n(o);r(4916),r(5306),r(6833),r(9714),r(1058),r(189),r(4723),r(3123),r(3210),r(2222),r(8304),r(489),r(2772),r(2419),r(1532),Error,r(3734),a().defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var i,c=(i={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(e){return String(e).replace(/[&<>"'`=/]/g,(function(e){return i[e]}))});function l(e){return window.linkifyStr(e,{})}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=/<%(.+?)%>/g,n=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,a=["with(obj) { var r=[];\n"],o=0,s=function e(t,r){return r?a.push(t.match(n)?t+"\n":"r.push("+t+");\n"):a.push(""!=t?'r.push("'+t.replace(/"/g,'\\"')+'");\n':""),e};for(t.e=c,t.linkifyStr=l;;){var i=r.exec(e);if(!i)break;s(e.slice(o,i.index))(i[1],!0),o=i.index+i[0].length}s(e.substr(o,e.length-o)),a.push('return r.join(""); }');var u=a.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",u).apply(t,[t])}catch(e){throw console.error("'"+e.message+"'"," in \n\nCode:\n",a,"\n"),e}}function p(e){void 0===e?e=$(".obj_tooltip"):e.hasClass("obj_tooltip")||(e=e.find(".obj_tooltip")),console.log(e),e.each((function(){var e=$(this);e.data("installHandler")||(e.data("installHandler",!0),e.mouseover((function(){var e=$(this);if(!e.data("setObjTooltip")){var t=e.data("tooltip-class");t||(t="");var r=''.format(t);e.tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},template:r,html:!0}).tooltip("show"),e.data("setObjTooltip",!0)}})))}))}String.prototype.format=function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&void 0!==arguments[0]&&arguments[0];return e?f.ou.now().toFormat(h):f.ou.now().toFormat(d)}function v(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){i=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(i)throw o}}}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r\");background-size: 64px 64px;'><%name%>";function C(){return(C=g(regeneratorRuntime.mark((function e(){var t,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a()({url:"j_server_get_status.php",responseType:"json",method:"post"});case 3:r=e.sent,t=r.data,e.next=11;break;case 7:return e.prev=7,e.t0=e.catch(0),alert(e.t0),e.abrupt("return");case 11:if(t.result){e.next=14;break}return alert(t.reason),e.abrupt("return");case 14:return e.next=16,P(t.server);case 16:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}function P(e){return O.apply(this,arguments)}function O(){return(O=g(regeneratorRuntime.mark((function e(t){var r,n,o,i,c,l,f,d,h,b,y,g,C,P,O;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=s()("#server_list"),n=m(),o={},i=v(t),e.prev=4,i.s();case 6:if((c=i.n()).done){e.next=14;break}if((l=c.value).exists){e.next=10;break}return e.abrupt("continue",12);case 10:f=a()({url:"../".concat(l.name,"/j_server_basic_info.php"),method:"get",responseType:"json"}).then((function(e){return e.data})),o[l.name]=f;case 12:e.next=6;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(4),i.e(e.t0);case 19:return e.prev=19,i.f(),e.finish(19);case 22:d=v(t),e.prev=23,d.s();case 25:if((h=d.n()).done){e.next=55;break}if(b=h.value,y=s()(u(_,b)),r.append(y),b.exists){e.next=31;break}return e.abrupt("continue",53);case 31:if(g="../".concat(b.name),C=void 0,e.prev=33,b.name in o){e.next=36;break}return e.abrupt("continue",53);case 36:return e.next=38,o[b.name];case 38:C=e.sent,e.next=45;break;case 41:return e.prev=41,e.t1=e.catch(33),console.error(e.t1),e.abrupt("continue",53);case 45:if(C.game){e.next=47;break}return e.abrupt("continue",53);case 47:P=C.game,y.find(".server_down").detach(),3==P.isUnited?(y.find(".n_country").html("§이벤트 종료§"),y.find(".server_date").html("{0}
~ {1}".format(P.starttime,P.turntime))):1==P.isUnited?(y.find(".n_country").html("§이벤트 진행중§"),y.find(".server_date").html("{0} ~".format(P.starttime))):2==P.isUnited?(y.find(".n_country").html("§천하통일§"),y.find(".server_date").html("{0}
~ {1}".format(P.starttime,P.turntime))):P.opentime<=n?(y.find(".n_country").html("<{0}국 경쟁중>".format(P.nationCnt)),y.find(".server_date").html("{0} ~".format(P.starttime))):(y.find(".n_country").html("-가오픈 중-"),y.find(".server_date").html("{0} ~".format(P.starttime))),P.opentime<=n?y.append(u(x,P)):y.append(u(w,P)),C.me&&C.me.name?((O=C.me).serverPath=g,y.append(u(S,O))):P.userCnt>=P.maxUserCnt?y.append(u(k,{})):y.append(u(j,{serverPath:g,canCreate:!P.block_general_create,canSelectNPC:"가능"==P.npcMode,canSelectPool:"선택 생성"==P.npcMode})),p(y);case 53:e.next=25;break;case 55:e.next=60;break;case 57:e.prev=57,e.t2=e.catch(23),d.e(e.t2);case 60:return e.prev=60,d.f(),e.finish(60);case 63:case"end":return e.stop()}}),e,null,[[4,16,19,22],[23,57,60,63],[33,41]])})))).apply(this,arguments)}function M(){return T.apply(this,arguments)}function T(){return(T=g(regeneratorRuntime.mark((function e(){var t,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a()({url:"j_logout.php",method:"post",responseType:"json"});case 2:if(t=e.sent,(r=t.data).result){e.next=7;break}return alert("로그아웃 실패: ".concat(r.reason)),e.abrupt("return");case 7:location.href="../";case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}s()((function(e){a().defaults.headers.common["X-Requested-With"]="XMLHttpRequest",e("#btn_logout").on("click",M),function(){C.apply(this,arguments)}()}))}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={exports:{}};return t[e].call(o.exports,o,o.exports,n),o.exports}n.m=t,n.amdO={},e=[],n.O=(t,r,a,o)=>{if(!r){var s=1/0;for(u=0;u=o)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(i=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={960:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,[s,i,c]=r,l=0;for(a in i)n.o(i,a)&&(n.m[a]=i[a]);if(c)var u=c(n);for(t&&t(r);ln(526)));a=n.O(a)})(); +(()=>{"use strict";var e,t={4984:(e,t,r)=>{r(5666),r(1539),r(8674),r(9826),r(7042),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948);var n=r(9669),a=r.n(n),o=r(9755),s=r.n(o);r(4916),r(5306),r(6833),r(9714),r(1058),r(189),r(4723),r(3123),r(3210),r(2222),r(8304),r(489),r(2772),r(2419),r(1532),TypeError,r(3734),a().defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var i,c=(i={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(e){return String(e).replace(/[&<>"'`=/]/g,(function(e){return i[e]}))});function l(e){return window.linkifyStr(e,{})}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=/<%(.+?)%>/g,n=/(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,a=["with(obj) { var r=[];\n"],o=0,s=function e(t,r){return r?a.push(t.match(n)?t+"\n":"r.push("+t+");\n"):a.push(""!=t?'r.push("'+t.replace(/"/g,'\\"')+'");\n':""),e};for(t.e=c,t.linkifyStr=l;;){var i=r.exec(e);if(!i)break;s(e.slice(o,i.index))(i[1],!0),o=i.index+i[0].length}s(e.substr(o,e.length-o)),a.push('return r.join(""); }');var u=a.join("").replace(/[\r\t\n]/g," ");try{return new Function("obj",u).apply(t,[t])}catch(e){throw console.error("'"+e.message+"'"," in \n\nCode:\n",a,"\n"),e}}function p(e){void 0===e?e=$(".obj_tooltip"):e.hasClass("obj_tooltip")||(e=e.find(".obj_tooltip")),console.log(e),e.each((function(){var e=$(this);e.data("installHandler")||(e.data("installHandler",!0),e.mouseover((function(){var e=$(this);if(!e.data("setObjTooltip")){var t=e.data("tooltip-class");t||(t="");var r=''.format(t);e.tooltip({title:function(){return $.trim($(this).find(".tooltiptext").html())},template:r,html:!0}).tooltip("show"),e.data("setObjTooltip",!0)}})))}))}String.prototype.format=function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&void 0!==arguments[0]&&arguments[0];return e?f.ou.now().toFormat(h):f.ou.now().toFormat(d)}function v(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){i=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(i)throw o}}}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r\");background-size: 64px 64px;'><%name%>";function C(){return(C=g(regeneratorRuntime.mark((function e(){var t,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a()({url:"j_server_get_status.php",responseType:"json",method:"post"});case 3:r=e.sent,t=r.data,e.next=11;break;case 7:return e.prev=7,e.t0=e.catch(0),alert(e.t0),e.abrupt("return");case 11:if(t.result){e.next=14;break}return alert(t.reason),e.abrupt("return");case 14:return e.next=16,P(t.server);case 16:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}function P(e){return O.apply(this,arguments)}function O(){return(O=g(regeneratorRuntime.mark((function e(t){var r,n,o,i,c,l,f,d,h,b,y,g,C,P,O;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=s()("#server_list"),n=m(),o={},i=v(t),e.prev=4,i.s();case 6:if((c=i.n()).done){e.next=14;break}if((l=c.value).exists){e.next=10;break}return e.abrupt("continue",12);case 10:f=a()({url:"../".concat(l.name,"/j_server_basic_info.php"),method:"get",responseType:"json"}).then((function(e){return e.data})),o[l.name]=f;case 12:e.next=6;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(4),i.e(e.t0);case 19:return e.prev=19,i.f(),e.finish(19);case 22:d=v(t),e.prev=23,d.s();case 25:if((h=d.n()).done){e.next=55;break}if(b=h.value,y=s()(u(_,b)),r.append(y),b.exists){e.next=31;break}return e.abrupt("continue",53);case 31:if(g="../".concat(b.name),C=void 0,e.prev=33,b.name in o){e.next=36;break}return e.abrupt("continue",53);case 36:return e.next=38,o[b.name];case 38:C=e.sent,e.next=45;break;case 41:return e.prev=41,e.t1=e.catch(33),console.error(e.t1),e.abrupt("continue",53);case 45:if(C.game){e.next=47;break}return e.abrupt("continue",53);case 47:P=C.game,y.find(".server_down").detach(),3==P.isUnited?(y.find(".n_country").html("§이벤트 종료§"),y.find(".server_date").html("{0}
~ {1}".format(P.starttime,P.turntime))):1==P.isUnited?(y.find(".n_country").html("§이벤트 진행중§"),y.find(".server_date").html("{0} ~".format(P.starttime))):2==P.isUnited?(y.find(".n_country").html("§천하통일§"),y.find(".server_date").html("{0}
~ {1}".format(P.starttime,P.turntime))):P.opentime<=n?(y.find(".n_country").html("<{0}국 경쟁중>".format(P.nationCnt)),y.find(".server_date").html("{0} ~".format(P.starttime))):(y.find(".n_country").html("-가오픈 중-"),y.find(".server_date").html("{0} ~".format(P.starttime))),P.opentime<=n?y.append(u(x,P)):y.append(u(w,P)),C.me&&C.me.name?((O=C.me).serverPath=g,y.append(u(S,O))):P.userCnt>=P.maxUserCnt?y.append(u(k,{})):y.append(u(j,{serverPath:g,canCreate:!P.block_general_create,canSelectNPC:"가능"==P.npcMode,canSelectPool:"선택 생성"==P.npcMode})),p(y);case 53:e.next=25;break;case 55:e.next=60;break;case 57:e.prev=57,e.t2=e.catch(23),d.e(e.t2);case 60:return e.prev=60,d.f(),e.finish(60);case 63:case"end":return e.stop()}}),e,null,[[4,16,19,22],[23,57,60,63],[33,41]])})))).apply(this,arguments)}function T(){return M.apply(this,arguments)}function M(){return(M=g(regeneratorRuntime.mark((function e(){var t,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a()({url:"j_logout.php",method:"post",responseType:"json"});case 2:if(t=e.sent,(r=t.data).result){e.next=7;break}return alert("로그아웃 실패: ".concat(r.reason)),e.abrupt("return");case 7:location.href="../";case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}s()((function(e){a().defaults.headers.common["X-Requested-With"]="XMLHttpRequest",e("#btn_logout").on("click",T),function(){C.apply(this,arguments)}()}))}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={exports:{}};return t[e].call(o.exports,o,o.exports,n),o.exports}n.m=t,n.amdO={},e=[],n.O=(t,r,a,o)=>{if(!r){var s=1/0;for(u=0;u=o)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(i=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={960:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,[s,i,c]=r,l=0;for(a in i)n.o(i,a)&&(n.m[a]=i[a]);if(c)var u=c(n);for(t&&t(r);ln(4984)));a=n.O(a)})(); //# sourceMappingURL=entrance.js.map \ No newline at end of file diff --git a/js/entrance.js.map b/js/entrance.js.map index 15cfd6a7..60f7bf1a 100644 --- a/js/entrance.js.map +++ b/js/entrance.js.map @@ -1 +1 @@ -{"version":3,"file":"entrance.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/getDateTimeNow.ts","webpack://hidche_lib/./ts/entrance.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/amd options","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","type ErrType = { new(msg?: string): T }\nexport type Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { unwrap } from \"./util\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/** \n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/** \n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html \n * @param {object} options \n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) { \n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import {DateTime} from 'luxon';\n\nexport const DATE_TIME_FORMAT = 'yyyy-MM-dd HH:mm:ss';\nexport const DATE_TIME_FORMAT_WITH_FRACTION = 'yyyy-MM-dd HH:mm:ss.SSS';\n\nexport function getDateTimeNow(withFraction = false): string{\n if(withFraction){\n return DateTime.now().toFormat(DATE_TIME_FORMAT_WITH_FRACTION);\n }\n else{\n return DateTime.now().toFormat(DATE_TIME_FORMAT);\n }\n \n}","import axios from 'axios';\nimport $ from 'jquery';\nimport { initTooltip, TemplateEngine } from '../hwe/ts/common_legacy';\nimport { InvalidResponse } from './defs';\nimport { getDateTimeNow } from '../hwe/ts/util/getDateTimeNow';\nimport { setAxiosXMLHttpRequest } from '../hwe/ts/util/setAxiosXMLHttpRequest';\n\nconst serverListTemplate = \"\\\n\\\n \\\n <%korName%>섭
\\\n \\\n \\\n \\\n - 폐 쇄 중 -\\\n\\\n\";\n\nconst serverTextInfo = \"\\\n\\\n서기 <%year%>년 <%month%>월 (<%scenario%>)
\\\n유저 : <%userCnt%> / <%maxUserCnt%>명 NPC : <%npcCnt%>명 (<%turnTerm%>분 턴 서버)
\\\n(상성 설정:<%fictionMode%>), (기타 설정:<%otherTextInfo%>)\\\n\\\n\";\n\nconst serverProvisionalInfo = \"\\\n\\\n- 오픈 일시 : <%opentime%> -
\\\n서기 <%year%>년 <%month%>월 (<%scenario%>)
\\\n유저 : <%userCnt%> / <%maxUserCnt%>명 NPC : <%npcCnt%>명 (<%turnTerm%>분 턴 서버)
\\\n(상성 설정:<%fictionMode%>), (기타 설정:<%otherTextInfo%>)\\\n\\\n\";\n\nconst serverFullTemplate = \"\\\n- 장수 등록 마감 -\\\n\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst serverSelectPoolTemplate = \"\\\n- 미 등 록 -\\\n\\\n\\\n\\\n\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst serverLoginBtn = \"\\\n<%}%>\\\n<%if(canSelectNPC) {%>\\\n\\\n<%}%>\\\n<%if(canSelectPool) {%>\\\n\\\n<%}%>\\\n\";\n\nconst serverLoginTemplate = \"\\\n\\\n<%name%>\\\n\\\n\\\n\\\n\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst serverReservedTemplate = \"\\\n\\\n<%openDatetime==starttime?'':'- 가오픈 일시 : '+openDatetime+ '-
'%>\\\n- 오픈 일시 : <%starttime%> -
\\\n<%scenarioName%> <%turnterm%>분 턴 서버
\\\n(상성 설정:<%fictionMode%>), (빙의 여부:<%npcMode%>), (최대 스탯:<%gameConf.defaultStatTotal%>), (기타 설정:<%otherTextInfo%>)\\\n\\\n\";\n\ntype ServerResponseItem = {\n color: string,\n korName: string,\n name: string,\n exists: boolean,\n enable: boolean,\n};\n\ntype ServerResponse = {\n result: true;\n reason: 'success';\n server: ServerResponseItem[];\n}\n\ntype RawServerResponse = InvalidResponse | ServerResponse;\n\ntype ReservedGameInfo = {\n scenarioName: string,\n turnterm: number,\n fictionMode: '가상' | '사실',\n block_general_create: boolean,\n npcMode: '불가' | '가능' | '선택 생성',\n openDatetime: string,\n starttime: string,\n gameConf: Record,\n otherTextInfo: string,\n}\n\ntype GameInfo = {\n isUnited: number,\n npcMode: '불가' | '가능' | '선택 생성',\n year: number,\n month: number,\n scenario: string,\n maxUserCnt: number,\n turnTerm: number,\n opentime: string,\n starttime: string,\n turntime: string,\n join_mode: string,\n fictionMode: '가상' | '사실',\n block_general_create: boolean,\n autorun_user: string,\n userCnt: number,\n npcCnt: number,\n nationCnt: number,\n otherTextInfo: string,\n defaultStatTotal: number,\n}\n\ntype MyInfo = {\n name: string,\n picture: string,\n serverPath?: string,\n}\n\ntype ServerDetailResponse = {\n reserved?: ReservedGameInfo;\n game: GameInfo;\n me: MyInfo | null | undefined;\n}\n\n$(function ($) {\n setAxiosXMLHttpRequest();\n $(\"#btn_logout\").on('click', Entrance_Logout);\n void Entrance_UpdateServer();\n});\n\nasync function Entrance_UpdateServer() {\n let data: RawServerResponse;\n\n try {\n const response = await axios({\n url: 'j_server_get_status.php',\n responseType: 'json',\n method: 'post'\n });\n data = response.data;\n }\n catch (e) {\n alert(e);\n return;\n }\n\n if (!data.result) {\n alert(data.reason);\n return;\n }\n\n await Entrance_drawServerList(data.server);\n}\n\nasync function Entrance_drawServerList(serverInfos: ServerResponseItem[]) {\n const $serverList = $('#server_list');\n const now = getDateTimeNow();\n\n const serverDetailInfoP: Record> = {};\n\n for (const serverInfo of serverInfos) {\n if(!serverInfo.exists){\n continue;\n }\n const responseP = axios({\n url: `../${serverInfo.name}/j_server_basic_info.php`,\n method: 'get',\n responseType: 'json'\n }).then(v=>{\n return v.data as ServerDetailResponse;\n });\n serverDetailInfoP[serverInfo.name] = responseP;\n }\n for (const serverInfo of serverInfos) {\n const $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo));\n $serverList.append($serverHtml);\n if (!serverInfo.exists) {\n continue;\n }\n\n const serverPath = `../${serverInfo.name}`;\n\n let response: ServerDetailResponse;\n try{\n if(!(serverInfo.name in serverDetailInfoP)){\n continue;\n }\n response = await serverDetailInfoP[serverInfo.name];\n }\n catch(e){\n console.error(e);\n continue;\n }\n\n if(!response.game){\n continue;\n }\n\n const game = response.game;\n\n //TODO: 서버 폐쇄 방식을 새롭게 변경\n $serverHtml.find('.server_down').detach();\n\n if (game.isUnited == 3) {\n $serverHtml.find('.n_country').html('§이벤트 종료§');\n $serverHtml.find('.server_date').html('{0}
~ {1}'.format(game.starttime, game.turntime));\n } else if (game.isUnited == 1) {\n $serverHtml.find('.n_country').html('§이벤트 진행중§');\n $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));\n } else if (game.isUnited == 2) {\n $serverHtml.find('.n_country').html('§천하통일§');\n $serverHtml.find('.server_date').html('{0}
~ {1}'.format(game.starttime, game.turntime));\n } else if (game.opentime <= now) {\n $serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt));\n $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));\n } else {\n $serverHtml.find('.n_country').html('-가오픈 중-');\n $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));\n }\n\n if (game.opentime <= now) {\n $serverHtml.append(\n TemplateEngine(serverTextInfo, game)\n );\n } else {\n $serverHtml.append(\n TemplateEngine(serverProvisionalInfo, game)\n );\n }\n\n if (response.me && response.me.name) {\n const me = response.me;\n me.serverPath = serverPath;\n $serverHtml.append(\n TemplateEngine(serverLoginTemplate, me)\n );\n } else if (game.userCnt >= game.maxUserCnt) {\n $serverHtml.append(\n TemplateEngine(serverFullTemplate, {})\n );\n } else {\n $serverHtml.append(\n TemplateEngine(serverCreateTemplate, {\n serverPath: serverPath,\n canCreate: !game.block_general_create,\n canSelectNPC: game.npcMode == '가능',\n canSelectPool: game.npcMode == '선택 생성'\n })\n )\n }\n initTooltip($serverHtml);\n }\n}\n\nasync function Entrance_Logout() {\n const response = await axios({\n url: 'j_logout.php',\n method: 'post',\n responseType: 'json'\n });\n\n const data: InvalidResponse = response.data;\n if(!data.result){\n alert(`로그아웃 실패: ${data.reason}`);\n return;\n }\n location.href = \"../\";\n}","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t960: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(526)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Error","axios","entityMap","escapeHtml","string","String","replace","s","linkifyStrWithOpt","text","window","linkifyStr","TemplateEngine","html","options","re","reExp","code","cursor","add","line","js","push","match","e","exec","slice","index","length","substr","compiledCode","join","Function","apply","err","console","error","message","initTooltip","$obj","undefined","$","hasClass","find","log","each","$target","this","data","mouseover","$objTooltip","tooltipClassText","template","format","tooltip","title","trim","prototype","args","number","toString","DATE_TIME_FORMAT","DATE_TIME_FORMAT_WITH_FRACTION","getDateTimeNow","withFraction","DateTime","toFormat","serverListTemplate","serverTextInfo","serverProvisionalInfo","serverFullTemplate","serverCreateTemplate","serverLoginTemplate","url","responseType","method","response","alert","result","reason","Entrance_drawServerList","server","serverInfos","$serverList","now","serverDetailInfoP","serverInfo","exists","responseP","name","then","v","$serverHtml","append","serverPath","game","detach","isUnited","starttime","turntime","opentime","nationCnt","me","userCnt","maxUserCnt","canCreate","block_general_create","canSelectNPC","npcMode","canSelectPool","Entrance_Logout","location","href","on","Entrance_UpdateServer","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","obj","prop","hasOwnProperty","Symbol","toStringTag","value","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"entrance.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/NotNullExpected.ts","webpack://hidche_lib/./hwe/ts/common_legacy.ts","webpack://hidche_lib/./hwe/ts/util/getDateTimeNow.ts","webpack://hidche_lib/./ts/entrance.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/amd options","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n","import { unwrap } from \"./util/unwrap\";\n\nimport jQuery from \"jquery\";\nimport 'bootstrap';\n\nimport axios from \"axios\";\n\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n//TODO: X-Requested-With 믿지 말자.\n\n/**\n * <>& 등을 html에서도 그대로 보이도록 escape주는 함수\n * @see https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery\n */\nexport const escapeHtml = (() => {\n const entityMap: { [v: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n return function (string: string) {\n return String(string).replace(/[&<>\"'`=/]/g, function (s: string) {\n return entityMap[s];\n });\n }\n})();\n\n/**\n * 변수가 정수인지 확인하는 함수\n * @param {*} n 정수인지 확인하기 위한 인자\n * @return {boolean} 정수인지 여부\n */\nexport function isInt(n: unknown): n is number {\n const v = n as number;\n return +v === v && !(v % 1);\n}\n\n\n//https://gist.github.com/demouth/3217440\n/**\n * mb_strwidth\n * @see http://php.net/manual/function.mb-strwidth.php\n */\nexport function mb_strwidth(str: string): number {\n const l = str.length;\n let length = 0;\n for (let i = 0; i < l; i++) {\n const c = str.charCodeAt(i);\n if (0x0000 <= c && c <= 0x0019) {\n length += 0;\n } else if (0x0020 <= c && c <= 0x1FFF) {\n length += 1;\n } else if (0x2000 <= c && c <= 0xFF60) {\n length += 2;\n } else if (0xFF61 <= c && c <= 0xFF9F) {\n length += 1;\n } else if (0xFFA0 <= c) {\n length += 2;\n }\n }\n return length;\n}\n\n\n/**\n * mb_strimwidth\n * @param String\n * @param int\n * @param int\n * @param String\n * @return String\n * @see http://www.php.net/manual/function.mb-strimwidth.php\n */\nexport function mb_strimwidth(str: string, start: number, width: number, trimmarker = ''): string {\n const trimmakerWidth = mb_strwidth(trimmarker);\n const l = str.length;\n let trimmedLength = 0;\n const trimmedStr: string[] = [];\n for (let i = start; i < l; i++) {\n const c = str.charAt(i);\n const charWidth = mb_strwidth(c);\n const next = str.charAt(i + 1);\n const nextWidth = mb_strwidth(next);\n\n trimmedLength += charWidth;\n trimmedStr.push(c);\n if (trimmedLength + trimmakerWidth + nextWidth > width) {\n trimmedStr.push(trimmarker);\n break;\n }\n }\n return trimmedStr.join('');\n}\n\n/**\n * object의 array를 id를 key로 삼는 object로 재 변환\n */\nexport function convertDictById(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v.id] = v;\n }\n return result;\n}\n\n/**\n * array를 set 형태의 object로 변환\n */\nexport function convertSet(arr: ArrayLike): Record {\n const result: Record = {};\n for (const v of Object.values(arr)) {\n result[v] = true;\n }\n return result;\n}\n\n\n/**\n * {0}, {1}, {2}형태로 포맷해주는 함수\n */\n\ndeclare global {\n interface String {\n format(...args: (string | number)[]): string;\n }\n}\nString.prototype.format = function (...args: (string | number)[]) {\n return this.replace(/{(\\d+)}/g, function (match, number) {\n return (typeof args[number] != 'undefined') ? args[number].toString() : match;\n });\n};\n\n\nexport function hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nexport function isBrightColor(color: string): boolean {\n const cv = unwrap(hexToRgb(color));\n if ((cv.r * 0.299 + cv.g * 0.587 + cv.b * 0.114) > 140) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수\n * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string\n * @returns {string}\n */\nexport function convColorValue(color: string): string {\n if (color.charAt(0) == '#') {\n color = color.substr(1);\n }\n color = color.toUpperCase();\n\n const colorBase = new Set([\n '000080', '0000FF', '008000', '008080', '00BFFF', '00FF00', '00FFFF', '20B2AA',\n '2E8B57', '483D8B', '6495ED', '7B68EE', '7CFC00', '7FFFD4', '800000', '800080',\n '808000', '87CEEB', 'A0522D', 'A9A9A9', 'AFEEEE', 'BA55D3', 'E0FFFF', 'F5F5DC',\n 'FF0000', 'FF00FF', 'FF6347', 'FFA500', 'FFC0CB', 'FFD700', 'FFDAB9', 'FFFF00',\n 'FFFFFF'\n ]);\n\n if (!colorBase.has(color)) {\n return '000000';\n }\n\n return color;\n}\n\n\nexport function numberWithCommas(x: number): string {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n//linkify가 불러와 있어야함\ndeclare global {\n interface Window {\n linkifyStr: (v: string, k?: Record) => string;\n }\n}\nexport function linkifyStrWithOpt(text: string): string {\n return window.linkifyStr(text, {});\n}\n\n/**\n * 단순한 Template 함수. <%변수명%>으로 template 가능\n * @see https://github.com/krasimir/absurd/blob/master/lib/processors/html/helpers/TemplateEngine.js\n * @param {string} html\n * @param {object} options\n * @returns {string}\n */\nexport function TemplateEngine(html: string, options: Record = {}): string {\n const re = /<%(.+?)%>/g;\n const reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g;\n const code = ['with(obj) { var r=[];\\n'];\n let cursor = 0;\n const add = function (line: string, js?: boolean) {\n js ? code.push(line.match(reExp) ? line + '\\n' : 'r.push(' + line + ');\\n') :\n code.push(line != '' ? 'r.push(\"' + line.replace(/\"/g, '\\\\\"') + '\");\\n' : '');\n return add;\n }\n options.e = escapeHtml;\n options.linkifyStr = linkifyStrWithOpt;\n for (; ;) {\n const match = re.exec(html);\n if (!match) {\n break;\n }\n add(html.slice(cursor, match.index))(match[1], true);\n cursor = match.index + match[0].length;\n }\n add(html.substr(cursor, html.length - cursor));\n\n code.push('return r.join(\"\"); }');\n const compiledCode = code.join('').replace(/[\\r\\t\\n]/g, ' ');\n try {\n return new Function('obj', compiledCode).apply(options, [options]);\n } catch (err) {\n console.error(\"'\" + err.message + \"'\", \" in \\n\\nCode:\\n\", code, \"\\n\");\n throw err;\n }\n}\n\nexport function getIconPath(imgsvr: boolean | 1 | 0, picture: string): string {\n // ../d_shared/common_path.js 필요\n if (!imgsvr) {\n return window.pathConfig.sharedIcon + '/' + picture;\n } else {\n return window.pathConfig.root + '/d_pic/' + picture;\n }\n}\n\nexport function activeFlip($obj?: JQuery): void {\n let $result: JQuery;\n if ($obj === undefined) {\n $result = $('img[data-flip]');\n } else {\n $result = $obj.find('img[data-flip]');\n }\n\n $result.each(function () {\n activeFlipItem($(this));\n });\n\n}\n\nexport function combineObject(item: V[], columnList: K[]): Record {\n const newItem: Record = {};\n for (const columnIdx in columnList) {\n const columnName = columnList[columnIdx];\n newItem[columnName] = item[columnIdx];\n }\n return newItem;\n}\n\nexport function combineArray(array: V[][], columnList: K[]): Record[] {\n const result: Record[] = [];\n for (const key of array.keys()) {\n const item = array[key];\n result[key] = combineObject(item, columnList);\n }\n return result;\n}\n\nexport function activeFlipItem($img: JQuery): void {\n const imageList = [];\n imageList.push($img.attr('src'));\n $.each($img.data('flip').split(','), function (idx, value) {\n value = $.trim(value);\n if (!value) {\n return true;\n }\n imageList.push(value);\n });\n if (imageList.length <= 1) {\n return;\n }\n $img.data('computed_flip_array', imageList);\n $img.data('computed_flip_idx', 0);\n\n $img.click(function () {\n const arr = $img.data('computed_flip_array');\n let idx = $img.data('computed_flip_idx');\n idx = (idx + 1) % (arr.length);\n $img.attr('src', arr[idx]);\n $img.data('computed_flip_idx', idx);\n });\n $img.css('cursor', 'pointer');\n}\n\n\n\nexport function errUnknown(): void {\n alert('작업을 실패했습니다.');\n}\n\n\n\nexport function errUnknownToast(): void {\n jQuery.toast({\n title: '에러!',\n content: '작업을 실패했습니다.',\n type: 'danger',\n delay: 5000\n });\n}\n\nexport function quickReject(errMsg: string): JQuery.Promise {\n if (errMsg === undefined) {\n errMsg = '작업을 실패했습니다.';\n }\n const deferred = $.Deferred();\n void deferred.reject(errMsg);\n return deferred.promise();\n}\n\nexport function nl2br(text: string): string {\n return text.replace(/\\n/g, \"
\");\n}\n/*\nfunction br2nl (text) {\n return text.replace(/<\\s*\\/?br\\s*[\\/]?>/gi, '\\n');\n}\n*/\n\nexport function getNpcColor(npcType: number): 'cyan' | 'skyblue' | null {\n if (npcType >= 2) {\n return 'cyan';\n }\n if (npcType == 1) {\n return 'skyblue';\n }\n return null;\n}\n\nexport function initTooltip($obj?: JQuery): void {\n if ($obj === undefined) {\n $obj = $('.obj_tooltip');\n } else if (!$obj.hasClass('obj_tooltip')) {\n $obj = $obj.find('.obj_tooltip');\n }\n console.log($obj);\n\n $obj.each(function () {\n const $target = $(this);\n\n if ($target.data('installHandler')) {\n return;\n }\n $target.data('installHandler', true);\n\n $target.mouseover(function () {\n const $objTooltip = $(this);\n if ($objTooltip.data('setObjTooltip')) {\n return;\n }\n\n let tooltipClassText = $objTooltip.data('tooltip-class');\n if (!tooltipClassText) {\n tooltipClassText = '';\n }\n const template = '
'\n .format(tooltipClassText);\n\n $objTooltip.tooltip({\n title: function () {\n return $.trim($(this).find('.tooltiptext').html());\n },\n template: template,\n html: true\n }).tooltip('show');\n\n $objTooltip.data('setObjTooltip', true);\n });\n });\n}","import {DateTime} from 'luxon';\n\nexport const DATE_TIME_FORMAT = 'yyyy-MM-dd HH:mm:ss';\nexport const DATE_TIME_FORMAT_WITH_FRACTION = 'yyyy-MM-dd HH:mm:ss.SSS';\n\nexport function getDateTimeNow(withFraction = false): string{\n if(withFraction){\n return DateTime.now().toFormat(DATE_TIME_FORMAT_WITH_FRACTION);\n }\n else{\n return DateTime.now().toFormat(DATE_TIME_FORMAT);\n }\n \n}","import axios from 'axios';\nimport $ from 'jquery';\nimport { initTooltip, TemplateEngine } from '../hwe/ts/common_legacy';\nimport { InvalidResponse } from './defs';\nimport { getDateTimeNow } from '../hwe/ts/util/getDateTimeNow';\nimport { setAxiosXMLHttpRequest } from '../hwe/ts/util/setAxiosXMLHttpRequest';\n\nconst serverListTemplate = \"\\\n\\\n \\\n <%korName%>섭
\\\n \\\n \\\n \\\n - 폐 쇄 중 -\\\n\\\n\";\n\nconst serverTextInfo = \"\\\n\\\n서기 <%year%>년 <%month%>월 (<%scenario%>)
\\\n유저 : <%userCnt%> / <%maxUserCnt%>명 NPC : <%npcCnt%>명 (<%turnTerm%>분 턴 서버)
\\\n(상성 설정:<%fictionMode%>), (기타 설정:<%otherTextInfo%>)\\\n\\\n\";\n\nconst serverProvisionalInfo = \"\\\n\\\n- 오픈 일시 : <%opentime%> -
\\\n서기 <%year%>년 <%month%>월 (<%scenario%>)
\\\n유저 : <%userCnt%> / <%maxUserCnt%>명 NPC : <%npcCnt%>명 (<%turnTerm%>분 턴 서버)
\\\n(상성 설정:<%fictionMode%>), (기타 설정:<%otherTextInfo%>)\\\n\\\n\";\n\nconst serverFullTemplate = \"\\\n- 장수 등록 마감 -\\\n\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst serverSelectPoolTemplate = \"\\\n- 미 등 록 -\\\n\\\n\\\n\\\n\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst serverLoginBtn = \"\\\n<%}%>\\\n<%if(canSelectNPC) {%>\\\n\\\n<%}%>\\\n<%if(canSelectPool) {%>\\\n\\\n<%}%>\\\n\";\n\nconst serverLoginTemplate = \"\\\n\\\n<%name%>\\\n\\\n\\\n\\\n\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst serverReservedTemplate = \"\\\n\\\n<%openDatetime==starttime?'':'- 가오픈 일시 : '+openDatetime+ '-
'%>\\\n- 오픈 일시 : <%starttime%> -
\\\n<%scenarioName%> <%turnterm%>분 턴 서버
\\\n(상성 설정:<%fictionMode%>), (빙의 여부:<%npcMode%>), (최대 스탯:<%gameConf.defaultStatTotal%>), (기타 설정:<%otherTextInfo%>)\\\n\\\n\";\n\ntype ServerResponseItem = {\n color: string,\n korName: string,\n name: string,\n exists: boolean,\n enable: boolean,\n};\n\ntype ServerResponse = {\n result: true;\n reason: 'success';\n server: ServerResponseItem[];\n}\n\ntype RawServerResponse = InvalidResponse | ServerResponse;\n\ntype ReservedGameInfo = {\n scenarioName: string,\n turnterm: number,\n fictionMode: '가상' | '사실',\n block_general_create: boolean,\n npcMode: '불가' | '가능' | '선택 생성',\n openDatetime: string,\n starttime: string,\n gameConf: Record,\n otherTextInfo: string,\n}\n\ntype GameInfo = {\n isUnited: number,\n npcMode: '불가' | '가능' | '선택 생성',\n year: number,\n month: number,\n scenario: string,\n maxUserCnt: number,\n turnTerm: number,\n opentime: string,\n starttime: string,\n turntime: string,\n join_mode: string,\n fictionMode: '가상' | '사실',\n block_general_create: boolean,\n autorun_user: string,\n userCnt: number,\n npcCnt: number,\n nationCnt: number,\n otherTextInfo: string,\n defaultStatTotal: number,\n}\n\ntype MyInfo = {\n name: string,\n picture: string,\n serverPath?: string,\n}\n\ntype ServerDetailResponse = {\n reserved?: ReservedGameInfo;\n game: GameInfo;\n me: MyInfo | null | undefined;\n}\n\n$(function ($) {\n setAxiosXMLHttpRequest();\n $(\"#btn_logout\").on('click', Entrance_Logout);\n void Entrance_UpdateServer();\n});\n\nasync function Entrance_UpdateServer() {\n let data: RawServerResponse;\n\n try {\n const response = await axios({\n url: 'j_server_get_status.php',\n responseType: 'json',\n method: 'post'\n });\n data = response.data;\n }\n catch (e) {\n alert(e);\n return;\n }\n\n if (!data.result) {\n alert(data.reason);\n return;\n }\n\n await Entrance_drawServerList(data.server);\n}\n\nasync function Entrance_drawServerList(serverInfos: ServerResponseItem[]) {\n const $serverList = $('#server_list');\n const now = getDateTimeNow();\n\n const serverDetailInfoP: Record> = {};\n\n for (const serverInfo of serverInfos) {\n if(!serverInfo.exists){\n continue;\n }\n const responseP = axios({\n url: `../${serverInfo.name}/j_server_basic_info.php`,\n method: 'get',\n responseType: 'json'\n }).then(v=>{\n return v.data as ServerDetailResponse;\n });\n serverDetailInfoP[serverInfo.name] = responseP;\n }\n for (const serverInfo of serverInfos) {\n const $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo));\n $serverList.append($serverHtml);\n if (!serverInfo.exists) {\n continue;\n }\n\n const serverPath = `../${serverInfo.name}`;\n\n let response: ServerDetailResponse;\n try{\n if(!(serverInfo.name in serverDetailInfoP)){\n continue;\n }\n response = await serverDetailInfoP[serverInfo.name];\n }\n catch(e){\n console.error(e);\n continue;\n }\n\n if(!response.game){\n continue;\n }\n\n const game = response.game;\n\n //TODO: 서버 폐쇄 방식을 새롭게 변경\n $serverHtml.find('.server_down').detach();\n\n if (game.isUnited == 3) {\n $serverHtml.find('.n_country').html('§이벤트 종료§');\n $serverHtml.find('.server_date').html('{0}
~ {1}'.format(game.starttime, game.turntime));\n } else if (game.isUnited == 1) {\n $serverHtml.find('.n_country').html('§이벤트 진행중§');\n $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));\n } else if (game.isUnited == 2) {\n $serverHtml.find('.n_country').html('§천하통일§');\n $serverHtml.find('.server_date').html('{0}
~ {1}'.format(game.starttime, game.turntime));\n } else if (game.opentime <= now) {\n $serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt));\n $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));\n } else {\n $serverHtml.find('.n_country').html('-가오픈 중-');\n $serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));\n }\n\n if (game.opentime <= now) {\n $serverHtml.append(\n TemplateEngine(serverTextInfo, game)\n );\n } else {\n $serverHtml.append(\n TemplateEngine(serverProvisionalInfo, game)\n );\n }\n\n if (response.me && response.me.name) {\n const me = response.me;\n me.serverPath = serverPath;\n $serverHtml.append(\n TemplateEngine(serverLoginTemplate, me)\n );\n } else if (game.userCnt >= game.maxUserCnt) {\n $serverHtml.append(\n TemplateEngine(serverFullTemplate, {})\n );\n } else {\n $serverHtml.append(\n TemplateEngine(serverCreateTemplate, {\n serverPath: serverPath,\n canCreate: !game.block_general_create,\n canSelectNPC: game.npcMode == '가능',\n canSelectPool: game.npcMode == '선택 생성'\n })\n )\n }\n initTooltip($serverHtml);\n }\n}\n\nasync function Entrance_Logout() {\n const response = await axios({\n url: 'j_logout.php',\n method: 'post',\n responseType: 'json'\n });\n\n const data: InvalidResponse = response.data;\n if(!data.result){\n alert(`로그아웃 실패: ${data.reason}`);\n return;\n }\n location.href = \"../\";\n}","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t960: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(4984)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","TypeError","axios","entityMap","escapeHtml","string","String","replace","s","linkifyStrWithOpt","text","window","linkifyStr","TemplateEngine","html","options","re","reExp","code","cursor","add","line","js","push","match","e","exec","slice","index","length","substr","compiledCode","join","Function","apply","err","console","error","message","initTooltip","$obj","undefined","$","hasClass","find","log","each","$target","this","data","mouseover","$objTooltip","tooltipClassText","template","format","tooltip","title","trim","prototype","args","number","toString","DATE_TIME_FORMAT","DATE_TIME_FORMAT_WITH_FRACTION","getDateTimeNow","withFraction","DateTime","toFormat","serverListTemplate","serverTextInfo","serverProvisionalInfo","serverFullTemplate","serverCreateTemplate","serverLoginTemplate","url","responseType","method","response","alert","result","reason","Entrance_drawServerList","server","serverInfos","$serverList","now","serverDetailInfoP","serverInfo","exists","responseP","name","then","v","$serverHtml","append","serverPath","game","detach","isUnited","starttime","turntime","opentime","nationCnt","me","userCnt","maxUserCnt","canCreate","block_general_create","canSelectNPC","npcMode","canSelectPool","Entrance_Logout","location","href","on","Entrance_UpdateServer","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","obj","prop","hasOwnProperty","Symbol","toStringTag","value","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/js/user_info.js b/js/user_info.js index a7dde837..997c9038 100644 --- a/js/user_info.js +++ b/js/user_info.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={1433:(t,e,r)=>{r(5666),r(1539),r(9714),r(9826),r(2222),r(8674),r(7042),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948);var n=r(9669),o=r.n(n),a=r(9755),u=r.n(a),i=(r(3734),r(9490)),c="yyyy-MM-dd HH:mm:ss",l="yyyy-MM-dd HH:mm:ss.SSS";function s(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t?i.ou.now().toFormat(l):i.ou.now().toFormat(c)}var f=r(3434),p=r(1584),h=r.n(p),d=r(1763),y=r.n(d),v=r(7037),m=r.n(v),b=r(1469),_=r.n(b);function g(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=w(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,i=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){i=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(i)throw a}}}}function w(t,e){if(t){if("string"==typeof t)return x(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?x(t,e):void 0}}function x(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:"";return S(this,o),C(E(t=n.call(this,e)),"name","RuntimeError"),t.message=e,t}return e=o,(r=[{key:"toString",value:function(){return this.message?this.name+": "+this.message:this.name}}])&&O(e.prototype,r),o}(P(Error)));function N(t){if(null==t)throw new H;return t}function U(t,e){if(t){if("string"==typeof t)return q(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(t,e):void 0}}function q(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,i=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){i=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(i)throw a}}}}(t);try{for(i.s();!(r=i.n()).done;){var c=(n=r.value,a=2,function(t){if(Array.isArray(t))return t}(n)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a=[],u=!0,i=!1;try{for(r=r.call(t);!(u=(n=r.next()).done)&&(a.push(n.value),!e||a.length!==e);u=!0);}catch(t){i=!0,o=t}finally{try{u||null==r.return||r.return()}finally{if(i)throw o}}return a}}(n,a)||U(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=c[0],s=c[1],f=u()('
"));e.append(f)}}catch(t){i.e(t)}finally{i.f()}var p=u()("#chooseServer");p.modal({backdrop:"static"}),p.on("hidden.bs.modal",(function(){location.reload()})),u()("#modal-apply").off("click").on("click",L(regeneratorRuntime.mark((function t(){var r,n,a,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=[],e.find("input:checked").each((function(){var t=u()(this).attr("name");console.log(t),r.push(o()({url:"../".concat(t,"/j_adjust_icon.php"),method:"post",responseType:"json"}))})),n=0,a=r;case 3:if(!(n{if(!r){var u=1/0;for(s=0;s=a)&&Object.keys(n.O).every((t=>n.O[t](r[c])))?r.splice(c--,1):(i=!1,a0&&t[s-1][2]>a;s--)t[s]=t[s-1];t[s]=[r,o,a]},n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t={87:0};n.O.j=e=>0===t[e];var e=(e,r)=>{var o,a,[u,i,c]=r,l=0;for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(c)var s=c(n);for(e&&e(r);ln(1433)));o=n.O(o)})(); +(()=>{"use strict";var t,e={1016:(t,e,r)=>{r(5666),r(1539),r(9714),r(9826),r(2222),r(8674),r(7042),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948);var n=r(9669),o=r.n(n),a=r(9755),u=r.n(a),i=(r(3734),r(9490)),c="yyyy-MM-dd HH:mm:ss",l="yyyy-MM-dd HH:mm:ss.SSS";function s(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t?i.ou.now().toFormat(l):i.ou.now().toFormat(c)}var f=r(3434),p=r(1584),h=r.n(p),d=r(1763),y=r.n(d),v=r(7037),m=r.n(v),b=r(1469),_=r.n(b);function w(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=g(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,i=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){i=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(i)throw a}}}}function g(t,e){if(t){if("string"==typeof t)return x(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?x(t,e):void 0}}function x(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,i=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){i=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(i)throw a}}}}(t);try{for(i.s();!(r=i.n()).done;){var c=(n=r.value,a=2,function(t){if(Array.isArray(t))return t}(n)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a=[],u=!0,i=!1;try{for(r=r.call(t);!(u=(n=r.next()).done)&&(a.push(n.value),!e||a.length!==e);u=!0);}catch(t){i=!0,o=t}finally{try{u||null==r.return||r.return()}finally{if(i)throw o}}return a}}(n,a)||C(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=c[0],s=c[1],f=u()('
"));e.append(f)}}catch(t){i.e(t)}finally{i.f()}var p=u()("#chooseServer");p.modal({backdrop:"static"}),p.on("hidden.bs.modal",(function(){location.reload()})),u()("#modal-apply").off("click").on("click",U(regeneratorRuntime.mark((function t(){var r,n,a,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=[],e.find("input:checked").each((function(){var t=u()(this).attr("name");console.log(t),r.push(o()({url:"../".concat(t,"/j_adjust_icon.php"),method:"post",responseType:"json"}))})),n=0,a=r;case 3:if(!(n{if(!r){var u=1/0;for(s=0;s=a)&&Object.keys(n.O).every((t=>n.O[t](r[c])))?r.splice(c--,1):(i=!1,a0&&t[s-1][2]>a;s--)t[s]=t[s-1];t[s]=[r,o,a]},n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t={87:0};n.O.j=e=>0===t[e];var e=(e,r)=>{var o,a,[u,i,c]=r,l=0;for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(c)var s=c(n);for(e&&e(r);ln(1016)));o=n.O(o)})(); //# sourceMappingURL=user_info.js.map \ No newline at end of file diff --git a/js/user_info.js.map b/js/user_info.js.map index dfe3622b..49415be2 100644 --- a/js/user_info.js.map +++ b/js/user_info.js.map @@ -1 +1 @@ -{"version":3,"file":"user_info.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/getDateTimeNow.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./ts/util.ts","webpack://hidche_lib/./ts/user_info.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/amd options","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import {DateTime} from 'luxon';\n\nexport const DATE_TIME_FORMAT = 'yyyy-MM-dd HH:mm:ss';\nexport const DATE_TIME_FORMAT_WITH_FRACTION = 'yyyy-MM-dd HH:mm:ss.SSS';\n\nexport function getDateTimeNow(withFraction = false): string{\n if(withFraction){\n return DateTime.now().toFormat(DATE_TIME_FORMAT_WITH_FRACTION);\n }\n else{\n return DateTime.now().toFormat(DATE_TIME_FORMAT);\n }\n \n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","type ErrType = { new(msg?: string): T }\ntype Nullable = T | null | undefined\n\nexport class RuntimeError extends Error {\n public name = 'RuntimeError';\n constructor(public message: string = '') {\n super(message);\n }\n toString(): string {\n if (this.message) {\n return this.name + ': ' + this.message;\n }\n else {\n return this.name;\n }\n }\n}\n\nexport class NotNullExpected extends RuntimeError {\n public name = 'NotNullExpected';\n}\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n\nexport function unwrap_err(result: Nullable, errType: ErrType, errMsg?: string): T {\n if (result === null || result === undefined) {\n throw new errType(errMsg);\n }\n return result;\n}","import { setAxiosXMLHttpRequest } from \"../hwe/ts/util/setAxiosXMLHttpRequest\";\nimport $ from 'jquery';\nimport 'bootstrap';\nimport axios from 'axios';\nimport { DateTime } from \"luxon\";\nimport { DATE_TIME_FORMAT, getDateTimeNow } from \"../hwe/ts/util/getDateTimeNow\";\nimport { sha512 } from \"js-sha512\";\nimport { convertFormData } from \"../hwe/ts/util/convertFormData\";\nimport { InvalidResponse } from \"../hwe/ts/defs\";\nimport { unwrap } from \"./util\";\n\ntype ResultUserInfo = {\n result: true,\n id: number,\n name: string,\n grade: string,\n picture: string,\n global_salt: string,\n join_date: string,\n third_use: boolean,\n acl: string,\n oauth_type: 'NONE' | 'KAKAO',\n token_valid_until?: string\n}\n\nfunction fillUserInfo(result: ResultUserInfo | InvalidResponse) {\n if (!result.result) {\n alert(result.reason);\n location.href = 'entrance.php';\n return;\n }\n\n $('#slot_id').html(result.id.toString());\n $('#slot_nickname').html(result.name);\n $('#slot_grade').html(result.grade);\n $('#slot_acl').html(result.acl);\n $('#slot_icon').attr('src', result.picture);\n $('#global_salt').val(result.global_salt);\n $('#slot_join_date').html(result.join_date);\n $('#slot_third_use').html(result.third_use ? '○' : '×');\n if (result.third_use) {\n $('#third_use_disallow').show();\n }\n $('#slot_oauth_type').text(result.oauth_type);\n if (result.oauth_type != 'NONE') {\n $('#slot_token_valid_until').text(unwrap(result.token_valid_until));\n }\n else {\n $('#slot_token_valid_until').parent().html('');\n }\n\n\n\n}\n\nfunction changeIconPreview(this: HTMLFormElement) {\n const $preview = $(this) as JQuery;\n console.log($preview);\n\n const filename = $preview[0].files[0].name;\n const reader = new FileReader();\n reader.onload = function (e) {\n $('#slot_new_icon').attr('src', unwrap(unwrap(e.target).result).toString()).css('visibility', 'visible');\n }\n\n reader.readAsDataURL($preview[0].files[0]);\n\n $('#image_upload_filename').val(filename);\n}\n\ntype IconResponse = {\n result: true,\n servers: [string, string][]\n};\n\nasync function deleteIcon() {\n let result: InvalidResponse | IconResponse;\n try {\n const response = await axios({\n url: 'j_icon_delete.php',\n responseType: 'json',\n method: 'post'\n });\n result = response.data;\n }\n catch (e) {\n console.error(e);\n alert(`아이콘 삭제를 실패했습니다: ${e}`);\n return;\n }\n\n if (!result.result) {\n alert(result.reason);\n location.reload();\n return;\n }\n\n showAdjustServerModal(result.servers);\n}\n\nasync function disallowThirdUse() {\n try {\n await axios({\n url: 'j_disallow_third_use.php',\n method: 'post',\n responseType: 'json'\n });\n alert('철회했습니다.');\n }\n catch (e) {\n alert('알 수 없는 이유로 철회를 실패했습니다.');\n }\n location.reload();\n}\n\nfunction showAdjustServerModal(serverList: [string, string][]) {\n\n const $form = $('#chooseServerForm');\n $form.empty();\n\n for (const [serverKey, serverKorName] of serverList) {\n const $item = $(`
\\\n \\\n \\\n
`);\n $form.append($item);\n }\n\n const $modal = $('#chooseServer');\n $modal.modal({\n backdrop: 'static'\n });\n $modal.on('hidden.bs.modal', function () {\n location.reload();\n return;\n });\n\n $(\"#modal-apply\").off(\"click\").on(\"click\", async function () {\n const events: Promise[] = [];\n $form.find('input:checked').each(function () {\n const $input = $(this);\n const server = $input.attr('name');\n\n console.log(server);\n\n events.push(axios({\n url: `../${server}/j_adjust_icon.php`,\n method: 'post',\n responseType: 'json',\n }));\n })\n\n for (const p of events) {\n try {\n await p;\n }\n catch (e) {\n //서버 폐쇄등으로 접근하지 못할 수도 있음.\n console.error(e, p);\n }\n }\n\n alert('적용되었습니다.');\n location.reload();\n });\n\n}\n\nasync function changeIcon(this: HTMLFormElement) {\n const $icon = $('#image_upload') as JQuery;\n\n if ($icon[0].files.length == 0) {\n alert('파일을 선택해주세요');\n return false;\n }\n\n let result: InvalidResponse | IconResponse;\n try {\n const response = await axios({\n url: 'j_icon_change.php',\n method: 'post',\n responseType: 'json',\n data: new FormData(this)\n });\n result = response.data;\n }\n catch (e) {\n alert('알 수 없는 이유로 아이콘 업로드를 실패했습니다.');\n location.reload();\n return;\n }\n\n if (!result.result) {\n alert(result.reason);\n location.reload();\n return;\n }\n\n showAdjustServerModal(result.servers);\n}\n\nasync function changePassword() {\n const old_pw = $('#current_pw').val() as string;\n const new_pw = $('#new_pw').val() as string;\n const new_pw_confirm = $('#new_pw_confirm').val() as string;\n\n if (!old_pw) {\n alert('이전 비밀번호를 입력해야 합니다.');\n return;\n }\n if (new_pw.length < 6) {\n alert('비밀번호 길이는 6글자 이상이어야 합니다.');\n return;\n }\n\n if (new_pw != new_pw_confirm) {\n alert('입력 값이 일치하지 않습니다.');\n return;\n }\n\n const global_salt = $('#global_salt').val();\n\n const old_password = sha512(global_salt + old_pw + global_salt);\n const new_password = sha512(global_salt + new_pw + global_salt);\n\n let result: InvalidResponse;\n\n try {\n const response = await axios({\n url: 'j_change_password.php',\n method: 'post',\n responseType: 'json',\n data: convertFormData({\n old_pw: old_password,\n new_pw: new_password\n })\n });\n result = response.data;\n }\n catch (e) {\n console.error(e);\n alert(`알 수 없는 이유로 비밀번호를 바꾸지 못했습니다.: ${e}`);\n return;\n }\n\n if (!result.result) {\n alert(result.reason);\n return;\n }\n\n alert('비밀번호를 바꾸었습니다');\n location.reload();\n}\n\nasync function deleteMe() {\n const pw = $('#delete_pw').val() as string;\n\n if (!pw) {\n alert('비밀번호를 입력해야 합니다.');\n return;\n }\n\n const global_salt = $('#global_salt').val();\n\n const password = sha512(global_salt + pw + global_salt);\n\n let data: InvalidResponse;\n try {\n const response = await axios({\n url: 'j_delete_me.php',\n responseType: 'json',\n method: 'post',\n data: convertFormData({\n pw: password\n })\n });\n data = response.data;\n }\n catch (e) {\n console.error(e);\n alert(`회원 탈퇴에 실패했습니다.: ${e}`);\n return;\n }\n\n if (!data.result) {\n alert(data.reason);\n return;\n }\n\n alert('탈퇴 처리되었습니다.');\n location.href = '../';\n}\n\nasync function extendAuth() {\n const validUntil = $('#slot_token_valid_until').html();\n const availableAt = DateTime.fromFormat(validUntil, DATE_TIME_FORMAT).minus({ days: 5 }).toFormat(DATE_TIME_FORMAT);\n const now = getDateTimeNow();\n\n if (now < availableAt) {\n alert(`${availableAt}부터 초기화할 수 있습니다.`);\n return false;\n }\n\n if (!confirm('로그아웃됩니다. 진행할까요?')) {\n return;\n }\n\n let result: InvalidResponse;\n\n try {\n const response = await axios({\n url: '../oauth_kakao/j_reset_token.php',\n method: 'post',\n responseType: 'json'\n })\n result = response.data;\n } catch (e) {\n alert(`알 수 없는 이유로 로그인 토큰 연장에 실패했습니다. : ${e}`);\n return;\n }\n\n if(!result.result){\n alert(result.reason);\n return;\n }\n\n alert('초기화했습니다. 다시 로그인해 주십시오.');\n location.href = '../';\n}\n\n$(function () {\n setAxiosXMLHttpRequest();\n $('#slot_icon, #slot_new_icon').attr('src', window.pathConfig.sharedIcon + '/default.jpg');\n\n axios({\n url: 'j_get_user_info.php',\n method: 'post',\n responseType: 'json'\n }).then(result => {\n fillUserInfo(result.data);\n }, () => {\n alert('알 수 없는 이유로, 회원 정보를 불러오지 못했습니다.');\n location.href = 'entrance.php';\n })\n\n $('#image_upload').on('change', changeIconPreview);\n\n $('#btn_remove_icon').on('click', function () {\n if (confirm('아이콘을 제거할까요?')) {\n void deleteIcon();\n }\n return false;\n });\n\n $('#third_use_disallow').on('click', function () {\n if (confirm('개인정보 3자 제공 동의를 철회할까요?')) {\n void disallowThirdUse();\n }\n });\n\n $('#change_pw_form').on('submit', function (e) {\n e.preventDefault();\n void changePassword();\n });\n\n $('#change_icon_form').on('submit', function (e) {\n e.preventDefault();\n void changeIcon.apply(this as HTMLFormElement);\n });\n\n $('#delete_me_form').on('submit', function (e) {\n e.preventDefault();\n if (confirm('한 달 동안 재 가입할 수 없습니다. 정말로 탈퇴할까요?')) {\n void deleteMe();\n }\n });\n\n $('#expand_login_token').on('click', extendAuth);\n})\n","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t87: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1433)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","DATE_TIME_FORMAT","DATE_TIME_FORMAT_WITH_FRACTION","getDateTimeNow","withFraction","DateTime","toFormat","convertFormData","values","formData","FormData","simpleConv","v","toString","TypeError","Object","entries","key","value","arrKey","subValue","append","NotNullExpected","message","this","name","Error","unwrap","result","changeIconPreview","$preview","$","console","log","filename","files","reader","FileReader","onload","e","attr","target","css","readAsDataURL","val","axios","url","responseType","method","response","data","error","alert","reason","location","reload","showAdjustServerModal","servers","serverList","$form","empty","serverKey","serverKorName","$item","$modal","modal","backdrop","on","off","events","find","each","server","push","p","changeIcon","length","old_pw","new_pw","new_pw_confirm","global_salt","old_password","sha512","new_password","pw","password","href","extendAuth","validUntil","html","availableAt","minus","days","confirm","window","pathConfig","sharedIcon","then","id","grade","acl","picture","join_date","third_use","show","text","oauth_type","token_valid_until","parent","fillUserInfo","deleteIcon","disallowThirdUse","preventDefault","changePassword","apply","deleteMe","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"user_info.js","mappings":"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","sources":["webpack://hidche_lib/webpack/runtime/chunk loaded","webpack://hidche_lib/./hwe/ts/util/getDateTimeNow.ts","webpack://hidche_lib/./hwe/ts/util/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/NotNullExpected.ts","webpack://hidche_lib/./hwe/ts/util/unwrap.ts","webpack://hidche_lib/./ts/user_info.ts","webpack://hidche_lib/./hwe/ts/util/setAxiosXMLHttpRequest.ts","webpack://hidche_lib/webpack/bootstrap","webpack://hidche_lib/webpack/runtime/amd options","webpack://hidche_lib/webpack/runtime/compat get default export","webpack://hidche_lib/webpack/runtime/define property getters","webpack://hidche_lib/webpack/runtime/global","webpack://hidche_lib/webpack/runtime/hasOwnProperty shorthand","webpack://hidche_lib/webpack/runtime/make namespace object","webpack://hidche_lib/webpack/runtime/jsonp chunk loading","webpack://hidche_lib/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import {DateTime} from 'luxon';\n\nexport const DATE_TIME_FORMAT = 'yyyy-MM-dd HH:mm:ss';\nexport const DATE_TIME_FORMAT_WITH_FRACTION = 'yyyy-MM-dd HH:mm:ss.SSS';\n\nexport function getDateTimeNow(withFraction = false): string{\n if(withFraction){\n return DateTime.now().toFormat(DATE_TIME_FORMAT_WITH_FRACTION);\n }\n else{\n return DateTime.now().toFormat(DATE_TIME_FORMAT);\n }\n \n}","import { isArray, isString, isNumber, isBoolean } from \"lodash\";\n\nexport function convertFormData(values: Record): FormData{\n const formData = new FormData();\n\n const simpleConv = (v: unknown):string=>{\n if(isString(v)){\n return v;\n }\n if(isNumber(v)){\n return v.toString();\n }\n if(isBoolean(v)){\n return v?'true':'false';\n }\n throw new TypeError('지원하지 않는 formData Type');\n }\n\n for(const [key, value] of Object.entries(values)){\n if(isArray(value)){\n const arrKey = `${key}[]`;\n for(const subValue of value){\n formData.append(arrKey, simpleConv(subValue));\n }\n continue;\n }\n\n formData.append(key, simpleConv(value));\n }\n\n return formData;\n}","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n","import { Nullable } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\n\nexport function unwrap(result: Nullable): T {\n if (result === null || result === undefined) {\n throw new NotNullExpected();\n }\n return result;\n}\n","import { setAxiosXMLHttpRequest } from \"../hwe/ts/util/setAxiosXMLHttpRequest\";\nimport $ from 'jquery';\nimport 'bootstrap';\nimport axios from 'axios';\nimport { DateTime } from \"luxon\";\nimport { DATE_TIME_FORMAT, getDateTimeNow } from \"../hwe/ts/util/getDateTimeNow\";\nimport { sha512 } from \"js-sha512\";\nimport { convertFormData } from \"../hwe/ts/util/convertFormData\";\nimport { InvalidResponse } from \"../hwe/ts/defs\";\nimport { unwrap } from \"../hwe/ts/util/unwrap\";\n\ntype ResultUserInfo = {\n result: true,\n id: number,\n name: string,\n grade: string,\n picture: string,\n global_salt: string,\n join_date: string,\n third_use: boolean,\n acl: string,\n oauth_type: 'NONE' | 'KAKAO',\n token_valid_until?: string\n}\n\nfunction fillUserInfo(result: ResultUserInfo | InvalidResponse) {\n if (!result.result) {\n alert(result.reason);\n location.href = 'entrance.php';\n return;\n }\n\n $('#slot_id').html(result.id.toString());\n $('#slot_nickname').html(result.name);\n $('#slot_grade').html(result.grade);\n $('#slot_acl').html(result.acl);\n $('#slot_icon').attr('src', result.picture);\n $('#global_salt').val(result.global_salt);\n $('#slot_join_date').html(result.join_date);\n $('#slot_third_use').html(result.third_use ? '○' : '×');\n if (result.third_use) {\n $('#third_use_disallow').show();\n }\n $('#slot_oauth_type').text(result.oauth_type);\n if (result.oauth_type != 'NONE') {\n $('#slot_token_valid_until').text(unwrap(result.token_valid_until));\n }\n else {\n $('#slot_token_valid_until').parent().html('');\n }\n\n\n\n}\n\nfunction changeIconPreview(this: HTMLFormElement) {\n const $preview = $(this) as JQuery;\n console.log($preview);\n\n const filename = $preview[0].files[0].name;\n const reader = new FileReader();\n reader.onload = function (e) {\n $('#slot_new_icon').attr('src', unwrap(unwrap(e.target).result).toString()).css('visibility', 'visible');\n }\n\n reader.readAsDataURL($preview[0].files[0]);\n\n $('#image_upload_filename').val(filename);\n}\n\ntype IconResponse = {\n result: true,\n servers: [string, string][]\n};\n\nasync function deleteIcon() {\n let result: InvalidResponse | IconResponse;\n try {\n const response = await axios({\n url: 'j_icon_delete.php',\n responseType: 'json',\n method: 'post'\n });\n result = response.data;\n }\n catch (e) {\n console.error(e);\n alert(`아이콘 삭제를 실패했습니다: ${e}`);\n return;\n }\n\n if (!result.result) {\n alert(result.reason);\n location.reload();\n return;\n }\n\n showAdjustServerModal(result.servers);\n}\n\nasync function disallowThirdUse() {\n try {\n await axios({\n url: 'j_disallow_third_use.php',\n method: 'post',\n responseType: 'json'\n });\n alert('철회했습니다.');\n }\n catch (e) {\n alert('알 수 없는 이유로 철회를 실패했습니다.');\n }\n location.reload();\n}\n\nfunction showAdjustServerModal(serverList: [string, string][]) {\n\n const $form = $('#chooseServerForm');\n $form.empty();\n\n for (const [serverKey, serverKorName] of serverList) {\n const $item = $(`
\\\n \\\n \\\n
`);\n $form.append($item);\n }\n\n const $modal = $('#chooseServer');\n $modal.modal({\n backdrop: 'static'\n });\n $modal.on('hidden.bs.modal', function () {\n location.reload();\n return;\n });\n\n $(\"#modal-apply\").off(\"click\").on(\"click\", async function () {\n const events: Promise[] = [];\n $form.find('input:checked').each(function () {\n const $input = $(this);\n const server = $input.attr('name');\n\n console.log(server);\n\n events.push(axios({\n url: `../${server}/j_adjust_icon.php`,\n method: 'post',\n responseType: 'json',\n }));\n })\n\n for (const p of events) {\n try {\n await p;\n }\n catch (e) {\n //서버 폐쇄등으로 접근하지 못할 수도 있음.\n console.error(e, p);\n }\n }\n\n alert('적용되었습니다.');\n location.reload();\n });\n\n}\n\nasync function changeIcon(this: HTMLFormElement) {\n const $icon = $('#image_upload') as JQuery;\n\n if ($icon[0].files.length == 0) {\n alert('파일을 선택해주세요');\n return false;\n }\n\n let result: InvalidResponse | IconResponse;\n try {\n const response = await axios({\n url: 'j_icon_change.php',\n method: 'post',\n responseType: 'json',\n data: new FormData(this)\n });\n result = response.data;\n }\n catch (e) {\n alert('알 수 없는 이유로 아이콘 업로드를 실패했습니다.');\n location.reload();\n return;\n }\n\n if (!result.result) {\n alert(result.reason);\n location.reload();\n return;\n }\n\n showAdjustServerModal(result.servers);\n}\n\nasync function changePassword() {\n const old_pw = $('#current_pw').val() as string;\n const new_pw = $('#new_pw').val() as string;\n const new_pw_confirm = $('#new_pw_confirm').val() as string;\n\n if (!old_pw) {\n alert('이전 비밀번호를 입력해야 합니다.');\n return;\n }\n if (new_pw.length < 6) {\n alert('비밀번호 길이는 6글자 이상이어야 합니다.');\n return;\n }\n\n if (new_pw != new_pw_confirm) {\n alert('입력 값이 일치하지 않습니다.');\n return;\n }\n\n const global_salt = $('#global_salt').val();\n\n const old_password = sha512(global_salt + old_pw + global_salt);\n const new_password = sha512(global_salt + new_pw + global_salt);\n\n let result: InvalidResponse;\n\n try {\n const response = await axios({\n url: 'j_change_password.php',\n method: 'post',\n responseType: 'json',\n data: convertFormData({\n old_pw: old_password,\n new_pw: new_password\n })\n });\n result = response.data;\n }\n catch (e) {\n console.error(e);\n alert(`알 수 없는 이유로 비밀번호를 바꾸지 못했습니다.: ${e}`);\n return;\n }\n\n if (!result.result) {\n alert(result.reason);\n return;\n }\n\n alert('비밀번호를 바꾸었습니다');\n location.reload();\n}\n\nasync function deleteMe() {\n const pw = $('#delete_pw').val() as string;\n\n if (!pw) {\n alert('비밀번호를 입력해야 합니다.');\n return;\n }\n\n const global_salt = $('#global_salt').val();\n\n const password = sha512(global_salt + pw + global_salt);\n\n let data: InvalidResponse;\n try {\n const response = await axios({\n url: 'j_delete_me.php',\n responseType: 'json',\n method: 'post',\n data: convertFormData({\n pw: password\n })\n });\n data = response.data;\n }\n catch (e) {\n console.error(e);\n alert(`회원 탈퇴에 실패했습니다.: ${e}`);\n return;\n }\n\n if (!data.result) {\n alert(data.reason);\n return;\n }\n\n alert('탈퇴 처리되었습니다.');\n location.href = '../';\n}\n\nasync function extendAuth() {\n const validUntil = $('#slot_token_valid_until').html();\n const availableAt = DateTime.fromFormat(validUntil, DATE_TIME_FORMAT).minus({ days: 5 }).toFormat(DATE_TIME_FORMAT);\n const now = getDateTimeNow();\n\n if (now < availableAt) {\n alert(`${availableAt}부터 초기화할 수 있습니다.`);\n return false;\n }\n\n if (!confirm('로그아웃됩니다. 진행할까요?')) {\n return;\n }\n\n let result: InvalidResponse;\n\n try {\n const response = await axios({\n url: '../oauth_kakao/j_reset_token.php',\n method: 'post',\n responseType: 'json'\n })\n result = response.data;\n } catch (e) {\n alert(`알 수 없는 이유로 로그인 토큰 연장에 실패했습니다. : ${e}`);\n return;\n }\n\n if(!result.result){\n alert(result.reason);\n return;\n }\n\n alert('초기화했습니다. 다시 로그인해 주십시오.');\n location.href = '../';\n}\n\n$(function () {\n setAxiosXMLHttpRequest();\n $('#slot_icon, #slot_new_icon').attr('src', window.pathConfig.sharedIcon + '/default.jpg');\n\n axios({\n url: 'j_get_user_info.php',\n method: 'post',\n responseType: 'json'\n }).then(result => {\n fillUserInfo(result.data);\n }, () => {\n alert('알 수 없는 이유로, 회원 정보를 불러오지 못했습니다.');\n location.href = 'entrance.php';\n })\n\n $('#image_upload').on('change', changeIconPreview);\n\n $('#btn_remove_icon').on('click', function () {\n if (confirm('아이콘을 제거할까요?')) {\n void deleteIcon();\n }\n return false;\n });\n\n $('#third_use_disallow').on('click', function () {\n if (confirm('개인정보 3자 제공 동의를 철회할까요?')) {\n void disallowThirdUse();\n }\n });\n\n $('#change_pw_form').on('submit', function (e) {\n e.preventDefault();\n void changePassword();\n });\n\n $('#change_icon_form').on('submit', function (e) {\n e.preventDefault();\n void changeIcon.apply(this as HTMLFormElement);\n });\n\n $('#delete_me_form').on('submit', function (e) {\n e.preventDefault();\n if (confirm('한 달 동안 재 가입할 수 없습니다. 정말로 탈퇴할까요?')) {\n void deleteMe();\n }\n });\n\n $('#expand_login_token').on('click', extendAuth);\n})\n","import axios from \"axios\";\n\nexport function setAxiosXMLHttpRequest(): void{\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n //TODO: X-Requested-With 믿지 말자.\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t87: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhidche_lib\"] = self[\"webpackChunkhidche_lib\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(1016)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","DATE_TIME_FORMAT","DATE_TIME_FORMAT_WITH_FRACTION","getDateTimeNow","withFraction","DateTime","toFormat","convertFormData","values","formData","FormData","simpleConv","v","toString","TypeError","Object","entries","key","value","arrKey","subValue","append","NotNullExpected","unwrap","result","changeIconPreview","$preview","$","this","console","log","filename","files","name","reader","FileReader","onload","e","attr","target","css","readAsDataURL","val","axios","url","responseType","method","response","data","error","alert","reason","location","reload","showAdjustServerModal","servers","serverList","$form","empty","serverKey","serverKorName","$item","$modal","modal","backdrop","on","off","events","find","each","server","push","p","changeIcon","length","old_pw","new_pw","new_pw_confirm","global_salt","old_password","sha512","new_password","pw","password","href","extendAuth","validUntil","html","availableAt","minus","days","confirm","window","pathConfig","sharedIcon","then","id","grade","acl","picture","join_date","third_use","show","text","oauth_type","token_valid_until","parent","fillUserInfo","deleteIcon","disallowThirdUse","preventDefault","changePassword","apply","deleteMe","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file