From 366b40ea90ea173d0d2da74dcbcba633d25fd494 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sun, 22 Aug 2021 20:13:08 +0900 Subject: [PATCH] build: boosInfo, myPage, convertFormData --- hwe/js/betting.js | 2 +- hwe/js/betting.js.map | 2 +- hwe/js/board.js | 2 +- hwe/js/board.js.map | 2 +- hwe/js/bossInfo.js | 197 +------------------------ hwe/js/bossInfo.js.map | 1 + hwe/js/chiefCenter.js | 2 +- hwe/js/chiefCenter.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/install.js | 2 +- hwe/js/install.js.map | 2 +- hwe/js/install_db.js | 2 +- hwe/js/install_db.js.map | 2 +- hwe/js/map.js | 2 +- hwe/js/map.js.map | 2 +- hwe/js/myPage.js | 169 +-------------------- hwe/js/myPage.js.map | 1 + 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/select_npc.js | 2 +- hwe/js/select_npc.js.map | 2 +- hwe/js/vendors.js | 2 +- hwe/js/vendors.js.map | 2 +- js/user_info.js | 2 +- js/user_info.js.map | 2 +- 30 files changed, 32 insertions(+), 388 deletions(-) create mode 100644 hwe/js/bossInfo.js.map create mode 100644 hwe/js/myPage.js.map diff --git a/hwe/js/betting.js b/hwe/js/betting.js index ca6aa1a3..f7c5fb46 100644 --- a/hwe/js/betting.js +++ b/hwe/js/betting.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,r={6018:(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;if(u.some((r=>0!==t[r]))){for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(c)var f=c(n)}for(r&&r(e);ln(6018)));o=n.O(o)})(); +(()=>{"use strict";var t,r={6018:(t,r,e)=>{e(5666),e(1058),e(1539),e(8674);var n=e(9755),o=e.n(n),u=e(9669),a=e.n(u),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 u,a=!0,i=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){i=!0,u=t},f:function(){try{a||null==e.return||e.return()}finally{if(i)throw u}}}}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 a=1/0;for(f=0;f=u)&&Object.keys(n.O).every((t=>n.O[t](e[c])))?e.splice(c--,1):(i=!1,u0&&t[f-1][2]>u;f--)t[f]=t[f-1];t[f]=[e,o,u]},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,u,[a,i,c]=e,l=0;if(a.some((r=>0!==t[r]))){for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(c)var f=c(n)}for(r&&r(e);ln(6018)));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 8a0b599f..769ed720 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/NotNullExpected.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}","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\n}\n","import { Nullable } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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__(6018)))\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","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","some","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/NotNullExpected.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 if(v===null){\n return '';\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\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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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__(6018)))\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","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","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/board.js b/hwe/js/board.js index 1f898330..9bf1f86d 100644 --- a/hwe/js/board.js +++ b/hwe/js/board.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e={5693:(t,e,r)=>{r(7042),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948);var n=r(2742),o=r.n(n),a=(r(5666),r(9826),r(2479),r(1539),r(8674),r(9669)),i=r.n(a),u=r(9755),c=r.n(u);function l(t){return(l="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 f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?p(t):e}function p(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function d(t){var e="function"==typeof Map?new Map:void 0;return(d=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 h(t,arguments,b(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,t)})(t)}function h(t,e,r){return(h=y()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var o=new(Function.bind.apply(t,n));return r&&v(o,r.prototype),o}).apply(null,arguments)}function y(){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 v(t,e){return(v=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function b(t){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}r(4916),r(5306),r(9714),r(1058),r(189),r(4723),r(3123),r(3210),r(2222),r(8304),r(489),r(2772),r(2419),r(1532);var g=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&&v(t,e)}(o,t);var e,r,n=(e=o,r=y(),function(){var t,n=b(e);if(r){var o=b(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return s(this,t)});function o(){var t;f(this,o);for(var e=arguments.length,r=new Array(e),a=0;a":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return w[t]}))});function j(t){return t.replace(/\n/g,"
")}String.prototype.format=function(){for(var t=arguments.length,e=new Array(t),r=0;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,i=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){u=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function I(t,e){if(t){if("string"==typeof t)return C(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)?C(t,e):void 0}}function C(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 .articleFrame"),r=c()(c()("#commentTemplate").prop("content")),n=e.clone();n.addClass("articleObj").data("no",t.no).data("author",t.general_no),n.find(".articleNo").text(t.no),n.find(".authorName").text(t.author),n.find(".articleTitle").text(t.title),n.find(".date").text(t.date),t.author_icon&&n.find(".authorIcon").attr("src",t.author_icon),n.find(".text").html(j(x(t.text)));var o,a=n.find(".commentList"),i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return F(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)?F(t,e):void 0}}(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,i=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){u=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}(t.comment);try{for(i.s();!(o=i.n()).done;){var u=o.value,l=r.clone();l.find(".author").text(u.author),l.find(".text").html(j(x(u.text))),l.find(".date").text(u.date),a.append(l)}}catch(t){i.e(t)}finally{i.f()}n.find(".submitComment").on("click",X),n.find(".commentText").on("keypress",(function(t){13===t.which&&n.find(".submitComment").trigger("click")})),n.find(".inputCommentHeader").click((function(){n.find(".commentText").trigger("focus")})),c()("#board").prepend(n)}function W(t){if(t.result){c()(".articleObj").detach();for(var e=0,r=Object.values(t.articles);e{if(!r){var i=1/0;for(f=0;f=a)&&Object.keys(n.O).every((t=>n.O[t](r[c])))?r.splice(c--,1):(u=!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=198,(()=>{var t={198:0};n.O.j=e=>0===t[e];var e=(e,r)=>{var o,a,[i,u,c]=r,l=0;if(i.some((e=>0!==t[e]))){for(o in u)n.o(u,o)&&(n.m[o]=u[o]);if(c)var f=c(n)}for(e&&e(r);ln(5693)));o=n.O(o)})(); +(()=>{"use strict";var t,e={5693:(t,e,r)=>{r(7042),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948);var n=r(2742),o=r.n(n),a=(r(5666),r(9826),r(2479),r(1539),r(8674),r(9669)),i=r.n(a),u=r(9755),c=r.n(u);function l(t){return(l="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 f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?p(t):e}function p(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function d(t){var e="function"==typeof Map?new Map:void 0;return(d=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 h(t,arguments,b(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,t)})(t)}function h(t,e,r){return(h=y()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var o=new(Function.bind.apply(t,n));return r&&v(o,r.prototype),o}).apply(null,arguments)}function y(){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 v(t,e){return(v=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function b(t){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}r(4916),r(5306),r(9714),r(1058),r(189),r(4723),r(3123),r(3210),r(2222),r(8304),r(489),r(2772),r(2419),r(1532);var g=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&&v(t,e)}(o,t);var e,r,n=(e=o,r=y(),function(){var t,n=b(e);if(r){var o=b(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return s(this,t)});function o(){var t;f(this,o);for(var e=arguments.length,r=new Array(e),a=0;a":">",'"':""","'":"'","/":"/","`":"`","=":"="},function(t){return String(t).replace(/[&<>"'`=/]/g,(function(t){return w[t]}))});function j(t){return t.replace(/\n/g,"
")}String.prototype.format=function(){for(var t=arguments.length,e=new Array(t),r=0;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,i=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){u=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function I(t,e){if(t){if("string"==typeof t)return C(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)?C(t,e):void 0}}function C(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 .articleFrame"),r=c()(c()("#commentTemplate").prop("content")),n=e.clone();n.addClass("articleObj").data("no",t.no).data("author",t.general_no),n.find(".articleNo").text(t.no),n.find(".authorName").text(t.author),n.find(".articleTitle").text(t.title),n.find(".date").text(t.date),t.author_icon&&n.find(".authorIcon").attr("src",t.author_icon),n.find(".text").html(j(x(t.text)));var o,a=n.find(".commentList"),i=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return F(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)?F(t,e):void 0}}(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,i=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){u=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}(t.comment);try{for(i.s();!(o=i.n()).done;){var u=o.value,l=r.clone();l.find(".author").text(u.author),l.find(".text").html(j(x(u.text))),l.find(".date").text(u.date),a.append(l)}}catch(t){i.e(t)}finally{i.f()}n.find(".submitComment").on("click",X),n.find(".commentText").on("keypress",(function(t){13===t.which&&n.find(".submitComment").trigger("click")})),n.find(".inputCommentHeader").click((function(){n.find(".commentText").trigger("focus")})),c()("#board").prepend(n)}function W(t){if(t.result){c()(".articleObj").detach();for(var e=0,r=Object.values(t.articles);e{if(!r){var i=1/0;for(f=0;f=a)&&Object.keys(n.O).every((t=>n.O[t](r[c])))?r.splice(c--,1):(u=!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=198,(()=>{var t={198:0};n.O.j=e=>0===t[e];var e=(e,r)=>{var o,a,[i,u,c]=r,l=0;if(i.some((e=>0!==t[e]))){for(o in u)n.o(u,o)&&(n.m[o]=u[o]);if(c)var f=c(n)}for(e&&e(r);ln(5693)));o=n.O(o)})(); //# sourceMappingURL=board.js.map \ No newline at end of file diff --git a/hwe/js/board.js.map b/hwe/js/board.js.map index 60e2d697..208f56ab 100644 --- a/hwe/js/board.js.map +++ b/hwe/js/board.js.map @@ -1 +1 @@ -{"version":3,"file":"board.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/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/board.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};","\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 { 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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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","\nimport axios from 'axios';\nimport $ from 'jquery';\nimport { trim } from 'lodash';\nimport { escapeHtml, nl2br } from './common_legacy';\nimport { InvalidResponse } from './defs';\nimport { convertFormData } from './util/convertFormData';\nimport { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';\nimport { unwrap_any } from './util/unwrap_any';\n\ndeclare const isSecretBoard: boolean;\n\ntype BoardResponse = {\n result: true,\n articles: Record,\n}\n\ntype BoardArticle = {\n no: number,\n nation_no: number,\n is_secret?: boolean,\n date: string,\n general_no: number,\n author: string,\n author_icon: string,\n title: string,\n text: string,\n comment: BoardComment[],\n}\n\ntype BoardComment = {\n no: number,\n nation_no: number,\n is_secret?: boolean,\n date: string,\n document_no: number,\n general_no: number,\n author: string,\n text: string,\n}\n\nasync function submitArticle(e: JQuery.Event) {\n e.preventDefault();\n\n const $article = $('#newArticle');\n const $title = $article.find('.titleInput');\n const $text = $article.find('.contentInput');\n const title = trim(unwrap_any($title.val()));\n const text = trim(unwrap_any($text.val()));\n\n\n if (!text && !title) {\n return false;\n }\n\n let result: InvalidResponse;\n\n try {\n const response = await axios({\n url: 'j_board_article_add.php',\n method: 'post',\n responseType: 'json',\n data: convertFormData({\n isSecret: isSecretBoard,\n title: title,\n text: text\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 $title.val('');\n $text.val('');\n\n void loadArticles();\n}\n\nasync function submitComment(this: HTMLElement, e: JQuery.Event) {\n e.preventDefault();\n\n const $this = $(this);\n\n const $article = $this.closest('.articleObj').eq(0);\n const articleNo = $article.data('no');\n const $text = $article.find('input.commentText');\n const text = trim(unwrap_any($text.val()));\n\n if (!text) {\n return;\n }\n\n\n let result: InvalidResponse;\n\n\n try {\n const response = await axios({\n url: 'j_board_comment_add.php',\n method: 'post',\n responseType: 'json',\n data: convertFormData({\n articleNo: articleNo,\n text: text\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 $text.val('');\n\n void loadArticles();\n\n return false;\n}\n\nfunction drawArticle(articleObj: BoardArticle) {\n const $articleFrame = $('#articleTemplate > .articleFrame');\n const $commentFrame = $($('#commentTemplate').prop('content'));\n\n const $article = $articleFrame.clone();\n $article.addClass('articleObj')\n .data('no', articleObj.no)\n .data('author', articleObj.general_no);\n\n\n $article.find('.articleNo').text(articleObj.no);\n $article.find('.authorName').text(articleObj.author);\n $article.find('.articleTitle').text(articleObj.title);\n $article.find('.date').text(articleObj.date);\n if (articleObj.author_icon) {\n $article.find('.authorIcon').attr('src', articleObj.author_icon);\n }\n //$article.find('.text').text(articleObj.text);\n $article.find('.text').html(nl2br(escapeHtml(articleObj.text)));\n //TODO: 바꿀 것\n\n const $articleComment = $article.find('.commentList');\n\n for (const commentObj of articleObj.comment) {\n const $comment = $commentFrame.clone();\n $comment.find('.author').text(commentObj.author);\n //$comment.find('.text').text(commentObj.text);\n $comment.find('.text').html(nl2br(escapeHtml(commentObj.text)));\n $comment.find('.date').text(commentObj.date);\n $articleComment.append($comment);\n }\n\n $article.find('.submitComment').on('click', submitComment);\n $article.find('.commentText').on('keypress', function (e) {\n if (e.which === 13) {\n $article.find('.submitComment').trigger('click');\n }\n });\n $article.find('.inputCommentHeader').click(function () {\n $article.find('.commentText').trigger('focus');\n })\n\n const $board = $('#board');\n\n $board.prepend($article);\n}\n\nfunction drawArticles(articlesObj: BoardResponse | InvalidResponse) {\n if (!articlesObj.result) {\n alert(`에러: ${articlesObj.reason}`);\n return;\n }\n\n $('.articleObj').detach();//첫 버전이니까 일괄 삭제 일괄 로드\n for (const article of Object.values(articlesObj.articles)) {\n drawArticle(article);\n }\n}\n\n\n\nasync function loadArticles() {\n try {\n const response = await axios({\n url: 'j_board_get_articles.php',\n responseType: 'json',\n method: 'post',\n data: convertFormData({\n isSecret: isSecretBoard\n })\n });\n drawArticles(response.data);\n }\n catch (e) {\n console.error(e);\n alert(`에러: ${e}`);\n return;\n }\n return $.post({\n url: 'j_board_get_articles.php',\n dataType: 'json',\n data: {\n isSecret: isSecretBoard, //첫 버전이니까 전체 다 불러오자\n }\n });\n}\n\nfunction resizeTextarea($obj: JQuery) {\n $obj.height(1).height($obj.prop('scrollHeight') + 12);\n}\n\n$(function () {\n setAxiosXMLHttpRequest();\n\n $('textarea.autosize').on('keydown keyup', function () {\n resizeTextarea($(this));\n })\n\n $('#submitArticle').on('click', submitArticle);\n\n void loadArticles();\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 = 198;","// 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\t198: 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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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__(5693)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","TypeError","entityMap","escapeHtml","string","String","replace","s","nl2br","text","prototype","format","args","this","match","number","toString","convertFormData","values","formData","FormData","simpleConv","v","Object","entries","key","value","arrKey","subValue","append","unwrap_any","result","submitArticle","e","preventDefault","$article","$title","find","$text","title","val","url","method","responseType","data","isSecret","isSecretBoard","response","console","error","alert","reason","loadArticles","submitComment","$this","closest","eq","articleNo","drawArticle","articleObj","$articleFrame","$commentFrame","prop","clone","addClass","no","general_no","author","date","author_icon","attr","html","$articleComment","comment","commentObj","$comment","on","which","trigger","click","prepend","drawArticles","articlesObj","detach","articles","dataType","$obj","height","__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","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"board.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/convertFormData.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/board.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};","\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 { 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 if(v===null){\n return '';\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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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","\nimport axios from 'axios';\nimport $ from 'jquery';\nimport { trim } from 'lodash';\nimport { escapeHtml, nl2br } from './common_legacy';\nimport { InvalidResponse } from './defs';\nimport { convertFormData } from './util/convertFormData';\nimport { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';\nimport { unwrap_any } from './util/unwrap_any';\n\ndeclare const isSecretBoard: boolean;\n\ntype BoardResponse = {\n result: true,\n articles: Record,\n}\n\ntype BoardArticle = {\n no: number,\n nation_no: number,\n is_secret?: boolean,\n date: string,\n general_no: number,\n author: string,\n author_icon: string,\n title: string,\n text: string,\n comment: BoardComment[],\n}\n\ntype BoardComment = {\n no: number,\n nation_no: number,\n is_secret?: boolean,\n date: string,\n document_no: number,\n general_no: number,\n author: string,\n text: string,\n}\n\nasync function submitArticle(e: JQuery.Event) {\n e.preventDefault();\n\n const $article = $('#newArticle');\n const $title = $article.find('.titleInput');\n const $text = $article.find('.contentInput');\n const title = trim(unwrap_any($title.val()));\n const text = trim(unwrap_any($text.val()));\n\n\n if (!text && !title) {\n return false;\n }\n\n let result: InvalidResponse;\n\n try {\n const response = await axios({\n url: 'j_board_article_add.php',\n method: 'post',\n responseType: 'json',\n data: convertFormData({\n isSecret: isSecretBoard,\n title: title,\n text: text\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 $title.val('');\n $text.val('');\n\n void loadArticles();\n}\n\nasync function submitComment(this: HTMLElement, e: JQuery.Event) {\n e.preventDefault();\n\n const $this = $(this);\n\n const $article = $this.closest('.articleObj').eq(0);\n const articleNo = $article.data('no');\n const $text = $article.find('input.commentText');\n const text = trim(unwrap_any($text.val()));\n\n if (!text) {\n return;\n }\n\n\n let result: InvalidResponse;\n\n\n try {\n const response = await axios({\n url: 'j_board_comment_add.php',\n method: 'post',\n responseType: 'json',\n data: convertFormData({\n articleNo: articleNo,\n text: text\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 $text.val('');\n\n void loadArticles();\n\n return false;\n}\n\nfunction drawArticle(articleObj: BoardArticle) {\n const $articleFrame = $('#articleTemplate > .articleFrame');\n const $commentFrame = $($('#commentTemplate').prop('content'));\n\n const $article = $articleFrame.clone();\n $article.addClass('articleObj')\n .data('no', articleObj.no)\n .data('author', articleObj.general_no);\n\n\n $article.find('.articleNo').text(articleObj.no);\n $article.find('.authorName').text(articleObj.author);\n $article.find('.articleTitle').text(articleObj.title);\n $article.find('.date').text(articleObj.date);\n if (articleObj.author_icon) {\n $article.find('.authorIcon').attr('src', articleObj.author_icon);\n }\n //$article.find('.text').text(articleObj.text);\n $article.find('.text').html(nl2br(escapeHtml(articleObj.text)));\n //TODO: 바꿀 것\n\n const $articleComment = $article.find('.commentList');\n\n for (const commentObj of articleObj.comment) {\n const $comment = $commentFrame.clone();\n $comment.find('.author').text(commentObj.author);\n //$comment.find('.text').text(commentObj.text);\n $comment.find('.text').html(nl2br(escapeHtml(commentObj.text)));\n $comment.find('.date').text(commentObj.date);\n $articleComment.append($comment);\n }\n\n $article.find('.submitComment').on('click', submitComment);\n $article.find('.commentText').on('keypress', function (e) {\n if (e.which === 13) {\n $article.find('.submitComment').trigger('click');\n }\n });\n $article.find('.inputCommentHeader').click(function () {\n $article.find('.commentText').trigger('focus');\n })\n\n const $board = $('#board');\n\n $board.prepend($article);\n}\n\nfunction drawArticles(articlesObj: BoardResponse | InvalidResponse) {\n if (!articlesObj.result) {\n alert(`에러: ${articlesObj.reason}`);\n return;\n }\n\n $('.articleObj').detach();//첫 버전이니까 일괄 삭제 일괄 로드\n for (const article of Object.values(articlesObj.articles)) {\n drawArticle(article);\n }\n}\n\n\n\nasync function loadArticles() {\n try {\n const response = await axios({\n url: 'j_board_get_articles.php',\n responseType: 'json',\n method: 'post',\n data: convertFormData({\n isSecret: isSecretBoard\n })\n });\n drawArticles(response.data);\n }\n catch (e) {\n console.error(e);\n alert(`에러: ${e}`);\n return;\n }\n return $.post({\n url: 'j_board_get_articles.php',\n dataType: 'json',\n data: {\n isSecret: isSecretBoard, //첫 버전이니까 전체 다 불러오자\n }\n });\n}\n\nfunction resizeTextarea($obj: JQuery) {\n $obj.height(1).height($obj.prop('scrollHeight') + 12);\n}\n\n$(function () {\n setAxiosXMLHttpRequest();\n\n $('textarea.autosize').on('keydown keyup', function () {\n resizeTextarea($(this));\n })\n\n $('#submitArticle').on('click', submitArticle);\n\n void loadArticles();\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 = 198;","// 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\t198: 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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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__(5693)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","TypeError","entityMap","escapeHtml","string","String","replace","s","nl2br","text","prototype","format","args","this","match","number","toString","convertFormData","values","formData","FormData","simpleConv","v","Object","entries","key","value","arrKey","subValue","append","unwrap_any","result","submitArticle","e","preventDefault","$article","$title","find","$text","title","val","url","method","responseType","data","isSecret","isSecretBoard","response","console","error","alert","reason","loadArticles","submitComment","$this","closest","eq","articleNo","drawArticle","articleObj","$articleFrame","$commentFrame","prop","clone","addClass","no","general_no","author","date","author_icon","attr","html","$articleComment","comment","commentObj","$comment","on","which","trigger","click","prepend","drawArticles","articlesObj","detach","articles","dataType","$obj","height","__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","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/bossInfo.js b/hwe/js/bossInfo.js index 923b7771..b10e7e1b 100644 --- a/hwe/js/bossInfo.js +++ b/hwe/js/bossInfo.js @@ -1,195 +1,2 @@ -function changePermission(isAmbassador, rawGeneralList) { - console.log(isAmbassador); - console.log(rawGeneralList); - - var generalList = []; - $.each(rawGeneralList, function(idx, value) { - generalList.push(parseInt(value.id)); - }) - - $.post({ - url: 'j_general_set_permission.php', - dataType: 'json', - data: { - isAmbassador: isAmbassador, - genlist: generalList - }, - }).then(function(data) { - if (!data) { - alert('변경하지 못했습니다.'); - return false; - } - if (!data.result) { - alert('변경하지 못했습니다. : ' + data.reason); - return false; - } - alert('변경했습니다.'); - location.reload(); - }, errUnknown); -} - -$(function() { - $('#selectAmbassador').select2({ - theme: 'bootstrap4', - placeholder: "", - allowClear: true, - language: "ko", - width: 300, - maximumSelectionLength: 2, - containerCss: { - display: "inline-block !important;", - color: 'white !important' - }, - data: candidateAmbassadors, - //containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', - dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', - }); - - $('#selectAuditor').select2({ - theme: 'bootstrap4', - placeholder: "", - allowClear: true, - language: "ko", - width: 300, - maximumSelectionLength: 2, - containerCss: { - display: "inline-block !important;", - color: 'white !important' - }, - data: candidateAuditors, - //containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', - dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', - }); - - $('#changeAmbassador').click(function() { - if (!confirm('외교권자를 변경할까요?')) { - return false; - } - - changePermission(true, $('#selectAmbassador').select2('data')); - return false; - }); - - $('#changeAuditor').click(function() { - if (!confirm('조언자를 변경할까요?')) { - return false; - } - - changePermission(false, $('#selectAuditor').select2('data')); - return false; - }); - - $('#btn_kick').click(function() { - var $kickSelect = $('#genlist_kick option:selected'); - var generalID = $kickSelect.val(); - if (!generalID) { - alert('장수를 선택해주세요'); - return false; - } - var generalName = $kickSelect.data('name'); - if (!confirm('{0}를 추방하시겠습니까?'.format(generalName))) { - return false; - } - $.post({ - url: 'j_myBossInfo.php', - dataType: 'json', - data: { - action: '추방', - destGeneralID: generalID - }, - }).then(function(data) { - if (!data) { - alert('추방하지 못했습니다.'); - return false; - } - if (!data.result) { - alert('추방하지 못했습니다. : ' + data.reason); - return false; - } - alert('{0}를 추방했습니다.'.format(generalName)); - location.reload(); - }, errUnknown); - return false; - }); - - $('.btn_appoint').click(function() { - var $btn = $(this); - var officerLevel = $btn.data('officer_level'); - var officerLevelText = $btn.data('officer_level_text'); - var cityID = 0; - var cityName = '_'; - var $generalSelect = $('#genlist_{0} option:selected'.format(officerLevel)); - var $citySelect = $('#citylist_{0} option:selected'.format(officerLevel)); - - var generalID = parseInt($generalSelect.val()); - var generalName = $generalSelect.data('name'); - var generalOfficerLevel = $generalSelect.data('officer_level'); - - - if (officerLevel >= 5) { - if (generalID == 0) { - if (!confirm('{0}직을 비우시겠습니까?'.format(officerLevelText))) { - return false; - } - } else if (generalOfficerLevel >= 5) { - if (!confirm('이미 수뇌인 {0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))) { - return false; - } - } else { - if (!confirm('{0}을(를) {1}직에 임명하시겠습니까?'.format(generalName, officerLevelText))) { - return false; - } - } - } else { - cityID = $citySelect.val(); - if (!cityID) { - alert('도시를 선택해주세요'); - return false; - } - cityName = $citySelect.find('option:selected .name_field').text(); - - if (generalID == 0) { - if (!confirm('{0} {1}직을 비우시겠습니까?'.format(cityName, officerLevelText))) { - return false; - } - } else if (generalOfficerLevel >= 5) { - if (!confirm('수뇌인 {0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))) { - return false; - } - } else { - if (!confirm('{0}을(를) {1} {2}직에 임명하시겠습니까?'.format(generalName, cityName, officerLevelText))) { - return false; - } - } - } - - $.post({ - url: 'j_myBossInfo.php', - dataType: 'json', - data: { - action: '임명', - destGeneralID: generalID, - destCityID: cityID, - officerLevel: officerLevel - }, - }).then(function(data) { - if (!data) { - alert('임명하지 못했습니다.'); - return false; - } - if (!data.result) { - alert('임명하지 못했습니다. : ' + data.reason); - return false; - } - - if (generalID) { - alert('{0}을(를) 임명했습니다.'.format(generalName)); - } else { - alert('관직을 비웠습니다.'); - } - - location.reload(); - }, errUnknown); - - }) -}) \ No newline at end of file +(()=>{"use strict";var e,t={8486:(e,t,r)=>{r(1058),r(2222),r(9826),r(1539),r(8674),r(7042),r(1038),r(8783),r(2526),r(1817),r(2165),r(6992),r(3948),r(5666);var n=r(9755),o=r.n(n),a=r(9669),c=r.n(a),i=r(1584),u=r.n(i),l=r(1763),s=r.n(l),f=r(7037),p=r.n(f),d=r(1469),b=r.n(d);function y(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=h(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=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 a,c=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){i=!0,a=e},f:function(){try{c||null==r.return||r.return()}finally{if(i)throw a}}}}function h(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}function m(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 a,c=!0,i=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){i=!0,a=e},f:function(){try{c||null==r.return||r.return()}finally{if(i)throw a}}}}function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=5)){e.next=26;break}if(0!=f){e.next=17;break}if(confirm("".concat(a,"직을 비우시겠습니까?"))){e.next=15;break}return e.abrupt("return",!1);case 15:e.next=24;break;case 17:if(!(d>=5)){e.next=22;break}if(confirm("이미 수뇌인 ".concat(p,"을(를) ").concat(a,"직에 임명하시겠습니까?"))){e.next=20;break}return e.abrupt("return",!1);case 20:e.next=24;break;case 22:if(confirm("".concat(p,"을(를) ").concat(a,"직에 임명하시겠습니까?"))){e.next=24;break}return e.abrupt("return",!1);case 24:e.next=43;break;case 26:if(i=parseInt(T(s.val()))){e.next=30;break}return alert("도시를 선택해주세요"),e.abrupt("return",!1);case 30:if(u=s.find("option:selected .name_field").text(),0!=f){e.next=36;break}if(confirm("".concat(u," ").concat(a,"직을 비우시겠습니까?"))){e.next=34;break}return e.abrupt("return",!1);case 34:e.next=43;break;case 36:if(!(d>=5)){e.next=41;break}if(confirm("수뇌인 ".concat(p,"을(를) ").concat(u," ").concat(a,"직에 임명하시겠습니까?"))){e.next=39;break}return e.abrupt("return",!1);case 39:e.next=43;break;case 41:if(confirm("".concat(p,"을(를) ").concat(u," ").concat(a,"직에 임명하시겠습니까?"))){e.next=43;break}return e.abrupt("return",!1);case 43:return e.prev=43,e.next=46,c()({url:"j_myBossInfo.php",method:"post",responseType:"json",data:v({action:"임명",destGeneralID:f,destCityID:i,officerLevel:n})});case 46:y=e.sent,b=y.data,e.next=55;break;case 50:return e.prev=50,e.t0=e.catch(43),console.log(e.t0),alert("실패했습니다: ".concat(e.t0)),e.abrupt("return");case 55:if(b.result){e.next=58;break}return alert("임명하지 못했습니다. : ".concat(b.reason)),e.abrupt("return",!1);case 58:f?alert("".concat(p,"을(를) 임명했습니다.")):alert("관직을 비웠습니다."),location.reload();case 60:case"end":return e.stop()}}),e,this,[[43,50]])})));return function(t){return e.apply(this,arguments)}}())}))}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}n.m=t,e=[],n.O=(t,r,o,a)=>{if(!r){var c=1/0;for(s=0;s=a)&&Object.keys(n.O).every((e=>n.O[e](r[u])))?r.splice(u--,1):(i=!1,a0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[r,o,a]},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=690,(()=>{var e={690:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,a,[c,i,u]=r,l=0;if(c.some((t=>0!==e[t]))){for(o in i)n.o(i,o)&&(n.m[o]=i[o]);if(u)var s=u(n)}for(t&&t(r);ln(8486)));o=n.O(o)})(); +//# sourceMappingURL=bossInfo.js.map \ No newline at end of file diff --git a/hwe/js/bossInfo.js.map b/hwe/js/bossInfo.js.map new file mode 100644 index 00000000..4689b7d7 --- /dev/null +++ b/hwe/js/bossInfo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bossInfo.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/NotNullExpected.ts","webpack://hidche_lib/./hwe/ts/util/unwrap_any.ts","webpack://hidche_lib/./hwe/ts/bossInfo.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 if(v===null){\n return '';\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\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 axios from 'axios';\r\nimport { convertFormData } from './util/convertFormData';\r\nimport { InvalidResponse } from './defs';\r\nimport { unwrap_any } from './util/unwrap_any';\r\nimport { setAxiosXMLHttpRequest } from './util/setAxiosXMLHttpRequest';\r\n\r\ntype GeneralSelectorItem = {\r\n id: string|number,\r\n text: string,\r\n selected: boolean,\r\n}\r\n\r\ndeclare const candidateAmbassadors: GeneralSelectorItem[];\r\ndeclare const candidateAuditors: GeneralSelectorItem[];\r\n\r\nasync function changePermission(isAmbassador: boolean, rawGeneralList: GeneralSelectorItem[]) {\r\n console.log(isAmbassador);\r\n console.log(rawGeneralList);\r\n\r\n const generalList: number[] = [];\r\n for (const rawGen of rawGeneralList) {\r\n generalList.push(parseInt(rawGen.id as string));\r\n }\r\n\r\n let result: InvalidResponse;\r\n\r\n try {\r\n const response = await axios({\r\n url: 'j_general_set_permission.php',\r\n method: 'post',\r\n responseType: 'json',\r\n data: convertFormData({\r\n isAmbassador: isAmbassador,\r\n genlist: generalList\r\n })\r\n });\r\n result = response.data;\r\n }\r\n catch (e) {\r\n console.log(e);\r\n alert(`실패했습니다: ${e}`);\r\n return;\r\n }\r\n\r\n if (!result.result) {\r\n alert(`변경하지 못했습니다 : ${result.reason}`);\r\n return;\r\n }\r\n\r\n alert('변경했습니다.');\r\n location.reload();\r\n}\r\n\r\n$(function () {\r\n setAxiosXMLHttpRequest();\r\n \r\n $('#selectAmbassador').select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"\",\r\n allowClear: true,\r\n language: \"ko\",\r\n width: '300px',\r\n maximumSelectionLength: 2,\r\n containerCss: {\r\n display: \"inline-block !important;\",\r\n color: 'white !important'\r\n },\r\n data: candidateAmbassadors,\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 $('#selectAuditor').select2({\r\n theme: 'bootstrap4',\r\n placeholder: \"\",\r\n allowClear: true,\r\n language: \"ko\",\r\n width: '300px',\r\n maximumSelectionLength: 2,\r\n containerCss: {\r\n display: \"inline-block !important;\",\r\n color: 'white !important'\r\n },\r\n data: candidateAuditors,\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 $('#changeAmbassador').on('click', async function (e) {\r\n e.preventDefault();\r\n if (!confirm('외교권자를 변경할까요?')) {\r\n return;\r\n }\r\n\r\n await changePermission(true, $('#selectAmbassador').select2('data'));\r\n return;\r\n });\r\n\r\n $('#changeAuditor').on('click', async function (e) {\r\n e.preventDefault();\r\n if (!confirm('조언자를 변경할까요?')) {\r\n return;\r\n }\r\n\r\n await changePermission(false, $('#selectAuditor').select2('data'));\r\n return;\r\n });\r\n\r\n $('#btn_kick').on('click', async function (e) {\r\n e.preventDefault();\r\n const $kickSelect = $('#genlist_kick option:selected');\r\n const generalID = $kickSelect.val();\r\n if (!generalID) {\r\n alert('장수를 선택해주세요');\r\n return;\r\n }\r\n const generalName = $kickSelect.data('name');\r\n if (!confirm(`${generalName}를 추방하시겠습니까?`)) {\r\n return;\r\n }\r\n\r\n let result: InvalidResponse;\r\n\r\n try {\r\n const response = await axios({\r\n url: 'j_myBossInfo.php',\r\n method: 'post',\r\n responseType: 'json',\r\n data: convertFormData({\r\n action: '추방',\r\n destGeneralID: generalID\r\n })\r\n });\r\n result = response.data;\r\n }\r\n catch (e) {\r\n console.log(e);\r\n alert(`실패했습니다: ${e}`);\r\n return;\r\n }\r\n\r\n if (!result.result) {\r\n alert(`추방하지 못했습니다. : ${result.reason}`);\r\n return;\r\n }\r\n alert(`${generalName}를 추방했습니다.`);\r\n location.reload();\r\n });\r\n\r\n $('.btn_appoint').on('click', async function (e) {\r\n e.preventDefault();\r\n\r\n const $btn = $(this);\r\n const officerLevel = $btn.data('officer_level');\r\n const officerLevelText = $btn.data('officer_level_text');\r\n let cityID = 0;\r\n let cityName = '_';\r\n const $generalSelect = $(`#genlist_${officerLevel} option:selected`);\r\n const $citySelect = $(`#citylist_${officerLevel} option:selected`);\r\n\r\n const generalID = parseInt(unwrap_any($generalSelect.val()));\r\n const generalName = $generalSelect.data('name');\r\n const generalOfficerLevel = $generalSelect.data('officer_level');\r\n\r\n\r\n if (officerLevel >= 5) {\r\n if (generalID == 0) {\r\n if (!confirm(`${officerLevelText}직을 비우시겠습니까?`)) {\r\n return false;\r\n }\r\n } else if (generalOfficerLevel >= 5) {\r\n if (!confirm(`이미 수뇌인 ${generalName}을(를) ${officerLevelText}직에 임명하시겠습니까?`)) {\r\n return false;\r\n }\r\n } else {\r\n if (!confirm(`${generalName}을(를) ${officerLevelText}직에 임명하시겠습니까?`)) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n cityID = parseInt(unwrap_any($citySelect.val()));\r\n if (!cityID) {\r\n alert('도시를 선택해주세요');\r\n return false;\r\n }\r\n cityName = $citySelect.find('option:selected .name_field').text();\r\n\r\n if (generalID == 0) {\r\n if (!confirm(`${cityName} ${officerLevelText}직을 비우시겠습니까?`)) {\r\n return false;\r\n }\r\n } else if (generalOfficerLevel >= 5) {\r\n if (!confirm(`수뇌인 ${generalName}을(를) ${cityName} ${officerLevelText}직에 임명하시겠습니까?`)) {\r\n return false;\r\n }\r\n } else {\r\n if (!confirm(`${generalName}을(를) ${cityName} ${officerLevelText}직에 임명하시겠습니까?`)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n let result: InvalidResponse;\r\n\r\n try {\r\n const response = await axios({\r\n url: 'j_myBossInfo.php',\r\n method: 'post',\r\n responseType: 'json',\r\n data: convertFormData({\r\n action: '임명',\r\n destGeneralID: generalID,\r\n destCityID: cityID,\r\n officerLevel: officerLevel\r\n })\r\n });\r\n result = response.data;\r\n }\r\n catch (e) {\r\n console.log(e);\r\n alert(`실패했습니다: ${e}`);\r\n return;\r\n }\r\n if (!result.result) {\r\n alert(`임명하지 못했습니다. : ${result.reason}`);\r\n return false;\r\n }\r\n\r\n if (generalID) {\r\n alert(`${generalName}을(를) 임명했습니다.`);\r\n } else {\r\n alert('관직을 비웠습니다.');\r\n }\r\n\r\n location.reload();\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 = 690;","// 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\t690: 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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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__(8486)))\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","unwrap_any","result","changePermission","isAmbassador","rawGeneralList","console","log","generalList","rawGen","push","parseInt","id","url","method","responseType","data","genlist","response","alert","reason","location","reload","select2","theme","placeholder","allowClear","language","width","maximumSelectionLength","containerCss","display","color","candidateAmbassadors","dropdownCssClass","candidateAuditors","on","e","preventDefault","confirm","$kickSelect","generalID","val","generalName","action","destGeneralID","$btn","this","officerLevel","officerLevelText","cityID","cityName","$generalSelect","$citySelect","generalOfficerLevel","find","text","destCityID","__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","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","some","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/chiefCenter.js b/hwe/js/chiefCenter.js index 4acee3df..24a8a05d 100644 --- a/hwe/js/chiefCenter.js +++ b/hwe/js/chiefCenter.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={8464:(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);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;if(u.some((t=>0!==e[t]))){for(o in a)n.o(a,o)&&(n.m[o]=a[o]);if(c)var l=c(n)}for(t&&t(r);fn(8464)));o=n.O(o)})(); +(()=>{"use strict";var e,t={8464:(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);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;if(u.some((t=>0!==e[t]))){for(o in a)n.o(a,o)&&(n.m[o]=a[o]);if(c)var l=c(n)}for(t&&t(r);fn(8464)));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 166fdd3e..64e71b01 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/NotNullExpected.ts","webpack://hidche_lib/./hwe/ts/util/unwrap.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};","\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 { 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 { 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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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/unwrap\";\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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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__(8464)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","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","some","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"chiefCenter.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/util/unwrap.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};","\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 { 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 { 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 if(v===null){\n return '';\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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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/unwrap\";\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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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__(8464)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","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","some","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 77f1aff6..9aa84c78 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(1053),a=n(6820);$((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.m;return t}(t.val());return t.val(e.id).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1}})}))},1053:(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),s=n(9755),u=n.n(s),f=(n(5306),n(2479),n(9714),n(1058),n(4723),n(3210),n(6820));function p(t){if(null==t)throw new f.m;return t}function d(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 C(t,e){if(t){if("string"==typeof t)return S(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)?S(t,e):void 0}}function S(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&&A()&&(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},M=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,m(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 f=u()('
'));s.append(f)}i.append(s)}var d=u()(''.concat(t.name,""));i.append(d),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},j=function(){return(j=I(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,s,u,p,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return p=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),f&&(r|=1),x(x({},t),{},{clickable:r})},u=function(t){var e=t.nationID;if(void 0===e||!(e in a))return x(x({},t),{},{isCapital:!1});var n=a[e];return x(x({},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=k(v[e],3),r=n[0],a=n[1],o=n[2];return x(x({},t),{},{name:r,x:a,y:o})},r=function(t){var e=k(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=k(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=d(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,m=e.cityList.map(n).map(s).map(u).map(p).map(window.formatCityInfo),t.abrupt("return",{cityList:m,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},F=function(t){return j.apply(this,arguments)},S=function(){return(S=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,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 S.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=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,f=e.clickableAll,y=e.selectCallback,h=p(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:p(e.targetJson),method:p(e.reqType),responseType:"json",data:O({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,Y=J.data,t.next=40,w(Y).then(C).then(F).then(s?T:M).then(D).then(E).then(P);case 40:if(q=t.sent,e.callback&&e.callback(q,Y),!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=k(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(F).then(s?T:M).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 V=localStorage.getItem(b),$=V?JSON.parse(V):e.year,t.next=53,C({year:e.year,month:e.month,startYear:$});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=D,u()((function(t){A()&&t(".map_body .map_toggle_single_tap").show()}))},6820:(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,{m:()=>d}),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 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;if(i.some((e=>0!==t[e]))){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)})(); +(()=>{"use strict";var t,e={5438:(t,e,n)=>{var r=n(1053),a=n(6820);$((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.m;return t}(t.val());return t.val(e.id).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1}})}))},1053:(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(6820));function p(t){if(null==t)throw new f.m;return t}function d(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 C(t,e){if(t){if("string"==typeof t)return S(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)?S(t,e):void 0}}function S(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&&A()&&(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},M=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},T=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,m(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 f=s()('
'));u.append(f)}i.append(u)}var d=s()(''.concat(t.name,""));i.append(d),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},j=function(){return(j=I(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,u,s,p,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return p=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),f&&(r|=1),x(x({},t),{},{clickable:r})},s=function(t){var e=t.nationID;if(void 0===e||!(e in a))return x(x({},t),{},{isCapital:!1});var n=a[e];return x(x({},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=k(v[e],3),r=n[0],a=n[1],o=n[2];return x(x({},t),{},{name:r,x:a,y:o})},r=function(t){var e=k(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=k(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=d(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,m=e.cityList.map(n).map(u).map(s).map(p).map(window.formatCityInfo),t.abrupt("return",{cityList:m,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},F=function(t){return j.apply(this,arguments)},S=function(){return(S=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 S.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=U.length>1&&void 0!==U[1]?U[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,f=e.clickableAll,y=e.selectCallback,h=p(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:p(e.targetJson),method:p(e.reqType),responseType:"json",data:O({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,Y=J.data,t.next=40,w(Y).then(C).then(F).then(u?T:M).then(D).then(E).then(P);case 40:if(q=t.sent,e.callback&&e.callback(q,Y),!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=k(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(F).then(u?T:M).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 V=localStorage.getItem(b),$=V?JSON.parse(V):e.year,t.next=53,C({year:e.year,month:e.month,startYear:$});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=D,s()((function(t){A()&&t(".map_body .map_toggle_single_tap").show()}))},6820:(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,{m:()=>d}),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 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=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;if(i.some((e=>0!==t[e]))){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)})(); //# 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 3398ae3c..cd0d9b4a 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/util/unwrap.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/NotNullExpected.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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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 { 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 { 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 { 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/unwrap\";\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})","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\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 = 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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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","NotNullExpected","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","__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","some","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/util/unwrap.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/NotNullExpected.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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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 { 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 { 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 { 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 if(v===null){\n return '';\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/unwrap\";\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})","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\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 = 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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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","NotNullExpected","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","__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","some","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 91127963..09b61675 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(1053),a=n(6820);$((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.m;return t}(t.val());return!!e.nationID&&(t.val(e.nationID).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1)}})}))},1053:(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(6820));function p(t){if(null==t)throw new f.m;return t}function d(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 C(t,e){if(t){if("string"==typeof t)return S(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)?S(t,e):void 0}}function S(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=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&&D()&&(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},I=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,m(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 f=u()('
'));s.append(f)}i.append(s)}var d=u()(''.concat(t.name,""));i.append(d),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},j=function(){return(j=M(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,s,u,p,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return p=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),f&&(r|=1),x(x({},t),{},{clickable:r})},u=function(t){var e=t.nationID;if(void 0===e||!(e in a))return x(x({},t),{},{isCapital:!1});var n=a[e];return x(x({},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=k(v[e],3),r=n[0],a=n[1],o=n[2];return x(x({},t),{},{name:r,x:a,y:o})},r=function(t){var e=k(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=k(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=d(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,m=e.cityList.map(n).map(s).map(u).map(p).map(window.formatCityInfo),t.abrupt("return",{cityList:m,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},F=function(t){return j.apply(this,arguments)},S=function(){return(S=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 S.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,f=e.clickableAll,y=e.selectCallback,h=p(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=u()(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)})),s?r.addClass("map_detail"):r.removeClass("map_datail"),L=l()({url:p(e.targetJson),method:p(e.reqType),responseType:"json",data:O({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,Y=J.data,t.next=40,w(Y).then(C).then(F).then(s?T:I).then(A).then(E).then(P);case 40:if(q=t.sent,e.callback&&e.callback(q,Y),!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=k(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(F).then(s?T:I).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 V=localStorage.getItem(b),$=V?JSON.parse(V):e.year,t.next=53,C({year:e.year,month:e.month,startYear:$});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=A,u()((function(t){D()&&t(".map_body .map_toggle_single_tap").show()}))},6820:(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,{m:()=>d}),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 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=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,s=0;if(i.some((e=>0!==t[e]))){for(a in c)r.o(c,a)&&(r.m[a]=c[a]);if(l)var u=l(r)}for(e&&e(n);sr(3489)));a=r.O(a)})(); +(()=>{"use strict";var t,e={3489:(t,e,n)=>{var r=n(1053),a=n(6820);$((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.m;return t}(t.val());return!!e.nationID&&(t.val(e.nationID).trigger("change"),null===t.val()&&t.val(n).trigger("change"),!1)}})}))},1053:(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(6820));function p(t){if(null==t)throw new f.m;return t}function d(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 C(t,e){if(t){if("string"==typeof t)return S(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)?S(t,e):void 0}}function S(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&&D()&&(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},I=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},T=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,m(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 f=s()('
'));u.append(f)}i.append(u)}var d=s()(''.concat(t.name,""));i.append(d),e.append(r)})),o&&r.find(".city_base_".concat(o," .city_filler")).addClass("my_city"),t},j=function(){return(j=M(regeneratorRuntime.mark((function t(e){var n,r,a,o,i,c,l,u,s,p,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return p=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),f&&(r|=1),x(x({},t),{},{clickable:r})},s=function(t){var e=t.nationID;if(void 0===e||!(e in a))return x(x({},t),{},{isCapital:!1});var n=a[e];return x(x({},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=k(v[e],3),r=n[0],a=n[1],o=n[2];return x(x({},t),{},{name:r,x:a,y:o})},r=function(t){var e=k(t,4);return{id:e[0],name:e[1],color:e[2],capital:e[3]}},n=function(t){var e=k(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=d(e.nationList.map(r)),o=e.spyList,i=new Set(e.shownByGeneralList),c=e.myCity,l=e.myNation,m=e.cityList.map(n).map(u).map(s).map(p).map(window.formatCityInfo),t.abrupt("return",{cityList:m,myCity:c});case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)},F=function(t){return j.apply(this,arguments)},S=function(){return(S=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,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 S.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=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,f=e.clickableAll,y=e.selectCallback,h=p(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:p(e.targetJson),method:p(e.reqType),responseType:"json",data:O({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,Y=J.data,t.next=40,w(Y).then(C).then(F).then(u?T:I).then(A).then(E).then(P);case 40:if(q=t.sent,e.callback&&e.callback(q,Y),!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=k(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(F).then(u?T:I).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 V=localStorage.getItem(b),$=V?JSON.parse(V):e.year,t.next=53,C({year:e.year,month:e.month,startYear:$});case 53:case"end":return t.stop()}}),t)})))).apply(this,arguments)}n(9720),window.reloadWorldMap=A,s()((function(t){D()&&t(".map_body .map_toggle_single_tap").show()}))},6820:(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,{m:()=>d}),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 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;if(i.some((e=>0!==t[e]))){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 5fa6cfb4..5488ad31 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/util/unwrap.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/NotNullExpected.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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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 { 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 { 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 { 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/unwrap\";\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})","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\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 = 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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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","NotNullExpected","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","__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","some","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/util/unwrap.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/NotNullExpected.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 } from \"./Nullable\";\nimport { NotNullExpected } from \"./NotNullExpected\";\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 { 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 { 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 { 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 if(v===null){\n return '';\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/unwrap\";\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})","\nexport class NotNullExpected extends TypeError {\n public name = 'NotNullExpected';\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 = 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\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\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","NotNullExpected","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","__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","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/hwe/js/install.js b/hwe/js/install.js index df640713..06e840a7 100644 --- a/hwe/js/install.js +++ b/hwe/js/install.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,r={7609:(e,r,t)=>{t(5666),t(9826),t(2222),t(1058),t(4603),t(4916),t(9714),t(1539),t(8674),t(9720),t(2526),t(1817),t(2165),t(6992),t(8783),t(3948),t(7042),t(1038),t(7941),t(7327),t(5003),t(4747),t(9337);var n=t(9755),a=t.n(n),o=(t(3734),t(9669)),i=t.n(o),u=t(1469),l=t.n(u),c=(t(1532),t(3123),t(5715)),s=t(7037),f=t.n(s);function p(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t=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,i=!0,u=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(u)throw o}}}}(e);try{for(n.s();!(r=n.n()).done;){var a=r.value,o=a.name,i=a.value;if(!f()(o))throw new TypeError("".concat(o," is not string"));if(!f()(i))throw new TypeError("".concat(i," is not string"));if(""!==o&&"[]"!==o)if(o.length>2&&"[]"==o.slice(-2)){var u=o.slice(0,-2);u in t?t[u].push(i):t[u]=[i]}else t[o]=i}}catch(e){n.e(e)}finally{n.f()}return t}function v(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t".concat(p,""));if(d.addClass("invalid-feedback"),"radio"==c.prop("type")){var v=c.parents(".btn-group");d.insertAfter(v),v.addClass("is-invalid")}else if("checkbox"==c.prop("type")){var h=c.parent("label");h.parent(".btn-group").length&&(h=h.parent(".btn-group")),d.insertAfter(h),h.addClass("is-invalid")}else d.insertAfter(c),c.addClass("is-invalid")}}s.inputs.each((function(){this.name in r||this.classList.add("is-valid")}))}));case 6:if(void 0!==(c=e.sent)){e.next=9;break}return e.abrupt("return",void 0);case 9:return this.clearErrMsg(),this.inputs.addClass("is-valid"),e.abrupt("return",c);case 12:case"end":return e.stop()}var f,p}),e,this)})),o=function(){var e=this,r=arguments;return new Promise((function(t,a){var o=n.apply(e,r);function i(e){h(o,t,a,i,u,"next",e)}function u(e){h(o,t,a,i,u,"throw",e)}i(void 0)}))},function(){return o.apply(this,arguments)})}])&&y(r.prototype,t),e}(),b=t(1584),g=t.n(b),w=t(1763),j=t.n(w);function O(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=x(e))||r&&e&&"number"==typeof e.length){t&&(e=t);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,i=!0,u=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==t.return||t.return()}finally{if(u)throw o}}}}function x(e,r){if(e){if("string"==typeof e)return _(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_(e,r):void 0}}function _(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);te.length)&&(r=e.length);for(var t=0,n=new Array(r);t").attr("label",w),x=0,_=Object.entries(j);x<_.length;x++)A=P(_[x],2),S=A[0],I=A[1],E=a()("