!function(){function e(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function n(n){for(var t=1;t1?"s":"")+" required, but only "+n.length+" present")}function r(e){a(1,arguments);var n=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===n?new Date(e.getTime()):"number"==typeof e||"[object Number]"===n?new Date(e):("string"!=typeof e&&"[object String]"!==n||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function o(e,n){a(2,arguments);var o=r(e).getTime(),i=t(n);return new Date(o+i)}const i={pl_PL:{ennobledAt:"Podbita o",never:"Nigdy",possibleLoyalty:"Prawdopodobne poparcie",canSendNoble:"Można wysłać szlachcica",yes:"Tak",no:"Nie"},en_DK:{ennobledAt:"Ennobled at",never:"Never",possibleLoyalty:"Possible loyalty",canSendNoble:"Can send noble",yes:"Yes",no:"No"},de_DE:{ennobledAt:"Adelung bei",never:"Nie",possibleLoyalty:"Mögliche Zustimmung",canSendNoble:"Kann Adelsgeschlecht senden",yes:"Ja",no:"Nein"}};var l=({query:e,variables:n={}}={})=>fetch("https://api.tribalwarshelp.com/graphql",{method:"POST",body:JSON.stringify({query:e,variables:n}),headers:{"Content-Type":"application/json"}}).then((e=>e.json())).then((({data:e,errors:n})=>{if(n&&Array.isArray(n)&&n.length>0)throw new Error(n[0].message);return new Promise((n=>n(e)))}));const s=(e,n)=>new Date(e).toLocaleDateString(void 0,n||{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});var p=e=>image_base+`unit/unit_${e}.png`;function d(e,n){a(2,arguments);var t=r(e),o=r(n);return t.getTime()-o.getTime()}var c=(e,n)=>{let t=25+Math.abs(function(e,n){a(2,arguments);var t=d(e,n)/6e4;return t>0?Math.floor(t):Math.ceil(t)}(e,new Date))*(n/60);return t>100&&(t=100),Math.floor(t)};const u=window.location.host.split(".")[0],g="kiszkowaty_extended_map_popup_server_cfg",y=i[window.game_data.locale]||i.en_DK,b=()=>((e,n={})=>{const t=localStorage.getItem(e);let a=n;return t&&(a=JSON.parse(t)),a})(g),m=(e={})=>{var n,t;n=g,t=e,localStorage.setItem(n,JSON.stringify(t))},f=async()=>{let e=b();var n;return e&&e.server&&(n=new Date(e.loadedAt),!(Math.abs(n.getTime()-(new Date).getTime())>864e5))&&e.server.config&&e.server.config.speed&&e.server.config.snob&&e.server.config.snob.maxDist&&e.server.config.unitSpeed&&e.server.unitConfig||(e=await l({query:"\n query server($key: String!) {\n server(key: $key) {\n config {\n speed\n unitSpeed\n snob {\n maxDist\n }\n }\n unitConfig {\n spear {\n speed\n }\n sword {\n speed\n }\n axe {\n speed\n }\n archer {\n speed\n }\n spy {\n speed\n }\n light {\n speed\n }\n marcher {\n speed\n }\n heavy {\n speed\n }\n ram {\n speed\n }\n catapult {\n speed\n }\n knight {\n speed\n }\n snob {\n speed\n }\n }\n }\n }\n",variables:{key:u}}),e.loadedAt=new Date,m(e)),e&&e.server&&e.server.config?{config:e.server.config,unitConfig:e.server.unitConfig}:{}},h=async(e,{cacheOnly:n=!1}={})=>{if(e){if(n||TWMap.popup.extendedMapPopupCache[e])return TWMap.popup.extendedMapPopupCache[e];try{const n=await l({query:"\n query ennoblements($server: String!, $filter: EnnoblementFilter!, $sort: [String!], $limit: Int) {\n ennoblements(server: $server, filter: $filter, sort: $sort, limit: $limit) {\n items {\n ennobledAt\n village {\n id\n }\n }\n }\n }\n",variables:{server:u,sort:["ennobledAt DESC"],filter:{villageID:[e]},limit:1}});return TWMap.popup.extendedMapPopupCache[e]=n,n}catch(e){console.log("loadVillageData",e)}}},v=e=>e%2==0?"#f8f4e8":"#ded3b9;",w=(e,n)=>`\n \n \n \n `,M=(e,n)=>`\n \n ${s(function(e,n){a(2,arguments);var r=t(n);return o(e,6e4*r)}(Timing.getCurrentServerTime(),e))}\n \n `,S=(e,t,{config:a,unitConfig:r})=>{const o=TWMap.CoordByXY(TWMap.villageKey[e]),i=((e,n,t,a)=>{const r=e-t,o=n-a;return Math.sqrt(r*r+o*o)})(o[0],o[1],window.game_data.village.x,window.game_data.village.y),l=t&&t.ennoblements&&t.ennoblements.items&&t.ennoblements.items.length>0?t.ennoblements.items[0]:void 0,d=document.querySelector("#map_popup #info_content tbody");let u=d.querySelector("#units");u||(u=document.createElement("tr"),u.id="units",d.appendChild(u));const g=((e={})=>{const t=[];for(let a in e)0!==e[a].speed&&t.push(n({},e[a],{name:a,img:p(a)}));return t})(r);u.innerHTML=`\n \n \n \n \n ${g.map(w).join("")}\n \n \n ${g.map(((e,n)=>M(((e,n)=>Math.round(e*n))(i,e.speed),n))).join("")}\n \n \n
\n \n `;let b=d.querySelector("#lastEnnobledAt");b||(b=document.createElement("tr"),b.id="lastEnnobledAt",d.appendChild(b)),b.innerHTML=`\n \n ${y.ennobledAt}:\n \n \n ${l?s(l.ennobledAt):y.never}\n \n `;let m=d.querySelector("#loyalty");m||(m=document.createElement("tr"),m.id="loyalty",d.appendChild(m)),m.innerHTML=`\n \n ${y.possibleLoyalty}:\n \n \n ${l?c(new Date(l.ennobledAt),a.speed):100}\n \n `;let f=d.querySelector("#canSendNoble");f||(f=document.createElement("tr"),f.id="canSendNoble",d.appendChild(f)),f.innerHTML=`\n \n ${y.canSendNoble}:\n \n \n ${i\n `};!async function(){try{const n=await f();TWMap.popup.extendedMapPopupCache={},TWMap.popup._loadVillage=TWMap.popup.loadVillage,TWMap.popup.loadVillage=(e=n,async n=>{TWMap.popup._loadVillage(n);const t=await h(parseInt(n));t&&S(parseInt(n),t,e)}),TWMap.popup._displayForVillage=TWMap.popup.displayForVillage,TWMap.popup.displayForVillage=(e=>async(n,t,a)=>{TWMap.popup._displayForVillage(n,t,a);const r=await h(parseInt(n.id),{cacheOnly:window.game_data.features.Premium.active});r&&S(parseInt(n.id),r,e)})(n)}catch(e){console.log("extended map popup",e)}var e}()}();