mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
refactor(es modules): move all files to src, try vite 3.0
This commit is contained in:
parent
4feed39d5c
commit
0d05e1b250
119 changed files with 8218 additions and 139 deletions
100
dist/assets/charts-overview.js_v_1.87.711ec26c.js
vendored
Normal file
100
dist/assets/charts-overview.js_v_1.87.711ec26c.js
vendored
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
import{r as u,b as c,t as lt,c as pt,i as mt,d as at,e as H,f as T}from"./index.73bf34f9.js";const K={states:{label:"State",getCellsData:()=>pack.cells.state,getName:G("states"),getColors:W("states"),landOnly:!0},cultures:{label:"Culture",getCellsData:()=>pack.cells.culture,getName:G("cultures"),getColors:W("cultures"),landOnly:!0},religions:{label:"Religion",getCellsData:()=>pack.cells.religion,getName:G("religions"),getColors:W("religions"),landOnly:!0},provinces:{label:"Province",getCellsData:()=>pack.cells.province,getName:G("provinces"),getColors:W("provinces"),landOnly:!0},biomes:{label:"Biome",getCellsData:()=>pack.cells.biome,getName:xt,getColors:St,landOnly:!1}},Q={total_population:{label:"Total population",quantize:t=>ot(t)+rt(t),aggregate:t=>u(d3.sum(t)),formatTicks:t=>H(t),stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},urban_population:{label:"Urban population",quantize:ot,aggregate:t=>u(d3.sum(t)),formatTicks:t=>H(t),stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},rural_population:{label:"Rural population",quantize:rt,aggregate:t=>u(d3.sum(t)),formatTicks:t=>H(t),stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},area:{label:"Land area",quantize:t=>getArea(pack.cells.area[t]),aggregate:t=>u(d3.sum(t)),formatTicks:t=>`${H(t)} ${getAreaUnit()}`,stringify:t=>`${t.toLocaleString()} ${getAreaUnit()}`,stackable:!0,landOnly:!0},cells:{label:"Number of cells",quantize:()=>1,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},burgs_number:{label:"Number of burgs",quantize:t=>pack.cells.burg[t]?1:0,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},average_elevation:{label:"Average elevation",quantize:t=>pack.cells.h[t],aggregate:t=>d3.mean(t),formatTicks:t=>getHeight(t),stringify:t=>getHeight(t),stackable:!1,landOnly:!1},max_elevation:{label:"Maximum mean elevation",quantize:t=>pack.cells.h[t],aggregate:t=>d3.max(t),formatTicks:t=>getHeight(t),stringify:t=>getHeight(t),stackable:!1,landOnly:!1},min_elevation:{label:"Minimum mean elevation",quantize:t=>pack.cells.h[t],aggregate:t=>d3.min(t),formatTicks:t=>getHeight(t),stringify:t=>getHeight(t),stackable:!1,landOnly:!1},average_temperature:{label:"Annual mean temperature",quantize:t=>grid.cells.temp[pack.cells.g[t]],aggregate:t=>d3.mean(t),formatTicks:t=>T(t),stringify:t=>T(t),stackable:!1,landOnly:!1},max_temperature:{label:"Mean annual maximum temperature",quantize:t=>grid.cells.temp[pack.cells.g[t]],aggregate:t=>d3.max(t),formatTicks:t=>T(t),stringify:t=>T(t),stackable:!1,landOnly:!1},min_temperature:{label:"Mean annual minimum temperature",quantize:t=>grid.cells.temp[pack.cells.g[t]],aggregate:t=>d3.min(t),formatTicks:t=>T(t),stringify:t=>T(t),stackable:!1,landOnly:!1},average_precipitation:{label:"Annual mean precipitation",quantize:t=>grid.cells.prec[pack.cells.g[t]],aggregate:t=>u(d3.mean(t)),formatTicks:t=>getPrecipitation(u(t)),stringify:t=>getPrecipitation(u(t)),stackable:!1,landOnly:!0},max_precipitation:{label:"Mean annual maximum precipitation",quantize:t=>grid.cells.prec[pack.cells.g[t]],aggregate:t=>u(d3.max(t)),formatTicks:t=>getPrecipitation(u(t)),stringify:t=>getPrecipitation(u(t)),stackable:!1,landOnly:!0},min_precipitation:{label:"Mean annual minimum precipitation",quantize:t=>grid.cells.prec[pack.cells.g[t]],aggregate:t=>u(d3.min(t)),formatTicks:t=>getPrecipitation(u(t)),stringify:t=>getPrecipitation(u(t)),stackable:!1,landOnly:!0},coastal_cells:{label:"Number of coastal cells",quantize:t=>pack.cells.t[t]===1?1:0,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},river_cells:{label:"Number of river cells",quantize:t=>pack.cells.r[t]?1:0,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0}},dt={stackedBar:{offset:d3.stackOffsetDiverging},normalizedStackedBar:{offset:d3.stackOffsetExpand,formatX:t=>u(t*100)+"%"}};let L=[],nt=mapId;ft();vt();ht();ct();function Lt(){closeDialogs("#chartsOverview, .stable"),nt!==mapId&&(L=[],nt=mapId),L.length?L.forEach(t=>st(t)):it(),$("#chartsOverview").dialog({title:"Data Charts",position:{my:"center",at:"center",of:"svg"},close:kt})}function ft(){const t=document.createElement("style");t.textContent=`
|
||||||
|
#chartsOverview {
|
||||||
|
max-width: 90vw !important;
|
||||||
|
max-height: 90vh !important;
|
||||||
|
overflow: hidden;
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows: auto 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chartsOverview__form {
|
||||||
|
font-size: 1.1em;
|
||||||
|
margin: 0.3em 0;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: auto auto;
|
||||||
|
grid-gap: 0.3em;
|
||||||
|
align-items: start;
|
||||||
|
justify-items: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
#chartsOverview__form {
|
||||||
|
font-size: 1em;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
justify-items: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#chartsOverview__charts {
|
||||||
|
overflow: auto;
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chartsOverview__charts figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chartsOverview__charts figcaption {
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin: 0 1% 0 4%;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr auto;
|
||||||
|
}
|
||||||
|
`,document.head.appendChild(t)}function vt(){const t=Object.entries(K).map(([r,{label:i}])=>[r,i]),a=Object.entries(Q).map(([r,{label:i}])=>[r,i]),n=([r,i])=>`<option value="${r}">${i}</option>`,o=r=>r.map(n).join(""),l=`<div id="chartsOverview" class="dialog stable">
|
||||||
|
<form id="chartsOverview__form">
|
||||||
|
<div>
|
||||||
|
<button data-tip="Add a chart" type="submit">Plot</button>
|
||||||
|
|
||||||
|
<select data-tip="Select entity (y axis)" id="chartsOverview__entitiesSelect">
|
||||||
|
${o(t)}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<label>by
|
||||||
|
<select data-tip="Select value to plot by (x axis)" id="chartsOverview__plotBySelect">
|
||||||
|
${o(a)}
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label>grouped by
|
||||||
|
<select data-tip="Select entoty to group by. If you don't need grouping, set it the same as the entity" id="chartsOverview__groupBySelect">
|
||||||
|
${o(t)}
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label data-tip="Sorting type">sorted
|
||||||
|
<select id="chartsOverview__sortingSelect">
|
||||||
|
<option value="value">by value</option>
|
||||||
|
<option value="name">by name</option>
|
||||||
|
<option value="natural">naturally</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span data-tip="Chart type">Type</span>
|
||||||
|
<select id="chartsOverview__chartType">
|
||||||
|
<option value="stackedBar" selected>Stacked Bar</option>
|
||||||
|
<option value="normalizedStackedBar">Normalized Stacked Bar</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span data-tip="Columns to display">Columns</span>
|
||||||
|
<select id="chartsOverview__viewColumns">
|
||||||
|
<option value="1" selected>1</option>
|
||||||
|
<option value="2">2</option>
|
||||||
|
<option value="3">3</option>
|
||||||
|
<option value="4">4</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<section id="chartsOverview__charts"></section>
|
||||||
|
</div>`;c("dialogs").insertAdjacentHTML("beforeend",l),c("chartsOverview__entitiesSelect").value="states",c("chartsOverview__plotBySelect").value="total_population",c("chartsOverview__groupBySelect").value="cultures"}function ht(){c("chartsOverview__form").on("submit",it),c("chartsOverview__viewColumns").on("change",ct)}function it(t){t&&t.preventDefault();const a=c("chartsOverview__entitiesSelect").value,n=c("chartsOverview__plotBySelect").value;let o=c("chartsOverview__groupBySelect").value;const l=c("chartsOverview__sortingSelect").value,r=c("chartsOverview__chartType").value,{stackable:i}=Q[n];!i&&o!==a&&(lt(`Grouping is not supported for ${plotByLabel}`,!1,"warn",4e3),o=a);const p={id:Date.now(),entity:a,plotBy:n,groupBy:o,sorting:l,type:r};L.push(p),st(p),tt()}function st({id:t,entity:a,plotBy:n,groupBy:o,sorting:l,type:r}){const{label:i,stringify:p,quantize:d,aggregate:h,formatTicks:z,landOnly:B}=Q[n],C=o===a,{label:N,getName:_,getCellsData:q,landOnly:E}=K[a],{label:g,getName:X,getCellsData:x,getColors:U}=K[o],Y=q(),R=x(),F=`${pt(a)} by ${i}${C?"":" grouped by "+g}`,k=(m,f,v,b)=>{const D=`${N}: ${m}`,S=C?"":`${g}: ${f}`;let w=`${i}: ${p(v)}`;return C||(w+=` (${u(b*100)}%)`),[D,S,w].filter(Boolean)},y={},V=new Set;for(const m of pack.cells.i){if((E||B)&&mt(m))continue;const f=Y[m],v=R[m],b=d(m);y[f]?y[f][v]?y[f][v].push(b):y[f][v]=[b]:y[f]={[v]:[b]},V.add(v)}const Z=Object.entries(y).map(([m,f])=>{const v=_(m);return Object.entries(f).map(([b,D])=>{const S=X(b),w=h(D);return{name:v,group:S,value:w}})}).flat(),O=U(),{offset:j,formatX:J=z}=dt[r],P=yt(Z,{sorting:l,colors:O,tooltip:k,offset:j,formatX:J});bt(t,P,F),c("chartsOverview__charts").lastChild.scrollIntoView()}function yt(t,{sorting:a,colors:n,tooltip:o,offset:l,formatX:r}){const i=Tt(t,a),p=i.map(e=>e.value),d=i.map(e=>e.name),h=i.map(e=>e.group),z=new Set(d),B=new Set(h),C=d3.range(p.length).filter(e=>z.has(d[e])&&B.has(h[e])),N=Array.from(z),_=Array.from(B),q=gt(N),E=Ct(_,A-q-15),g={top:30,right:15,bottom:E*20+10,left:q},X=[g.left,A-g.right],x=z.size*25+g.top+g.bottom,U=[x-g.bottom,g.top],Y=at(C,([e])=>e,e=>d[e],e=>h[e]),R=d3.stack().keys(_).value(([,e],s)=>p[new Map(e).get(s)]).order(d3.stackOrderNone).offset(l)(Y).map(e=>{const M=e.filter(I=>!isNaN(I[1])).map(I=>Object.assign(I,{i:new Map(I.data[1]).get(e.key)}));return{key:e.key,data:M}}),F=d3.extent(R.map(e=>e.data).flat(2)),k=d3.scaleLinear(F,X),y=d3.scaleBand(N,U).paddingInner(Ot),V=d3.axisTop(k).ticks(A/80,null),Z=d3.axisLeft(y).tickSizeOuter(0),O=d3.create("svg").attr("version","1.1").attr("xmlns","http://www.w3.org/2000/svg").attr("viewBox",[0,0,A,x]).attr("style","max-width: 100%; height: auto; height: intrinsic;");O.append("g").attr("transform",`translate(0,${g.top})`).call(V).call(e=>e.select(".domain").remove()).call(e=>e.selectAll("text").text(s=>r(s))).call(e=>e.selectAll(".tick line").clone().attr("y2",x-g.top-g.bottom).attr("stroke-opacity",.1));const j=O.append("g").attr("stroke","#666").attr("stroke-width",.5).selectAll("g").data(R).join("g").attr("fill",e=>n[e.key]).selectAll("rect").data(e=>e.data.filter(([s,M])=>s!==M)).join("rect").attr("x",([e,s])=>Math.min(k(e),k(s))).attr("y",({i:e})=>y(d[e])).attr("width",([e,s])=>Math.abs(k(e)-k(s))).attr("height",y.bandwidth()),J=Object.fromEntries(at(C,([e])=>e,e=>d[e],e=>p[e]).map(([e,s])=>[e,d3.sum(s,M=>M[0])])),P=({i:e})=>o(d[e],h[e],p[e],p[e]/J[d[e]]);j.append("title").text(e=>P(e).join(`\r
|
||||||
|
`)),j.on("mouseover",e=>lt(P(e).join(". "))),O.append("g").attr("transform",`translate(${k(0)},0)`).call(Z);const m=Math.ceil(_.length/E),f=A/(m+.5),v=20,b=(e,s)=>s%m*f,D=(e,s)=>b(e,s)+ut,S=(e,s)=>Math.floor(s/m)*v,w=O.append("g").attr("stroke","#666").attr("stroke-width",.5).attr("dominant-baseline","central").attr("transform",`translate(${g.left},${x-g.bottom+15})`);return w.selectAll("circle").data(_).join("rect").attr("x",b).attr("y",S).attr("width",10).attr("height",10).attr("transform","translate(-5, -5)").attr("fill",e=>n[e]),w.selectAll("text").data(_).join("text").attr("x",D).attr("y",S).text(e=>e),O.node()}function bt(t,a,n){const o=c("chartsOverview__charts"),l=document.createElement("figure"),r=document.createElement("figcaption"),i=o.childElementCount+1;r.innerHTML=`
|
||||||
|
<div>
|
||||||
|
<strong>Figure ${i}</strong>. ${n}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button data-tip="Download the chart in svg format (can open in browser or Inkscape)" class="icon-download"></button>
|
||||||
|
<button data-tip="Remove the chart" class="icon-trash"></button>
|
||||||
|
</div>
|
||||||
|
`,l.appendChild(a),l.appendChild(r),o.appendChild(l);const p=()=>{const h=`${getFileName(n)}.svg`;downloadFile(a.outerHTML,h)},d=()=>{l.remove(),L=L.filter(h=>h.id!==t),tt()};l.querySelector("button.icon-download").on("click",p),l.querySelector("button.icon-trash").on("click",d)}function ct(){const t=c("chartsOverview__viewColumns").value,a=c("chartsOverview__charts");a.style.gridTemplateColumns=`repeat(${t}, 1fr)`,tt()}function tt(){$("#chartsOverview").dialog({position:{my:"center",at:"center",of:"svg"}})}function kt(){const t=c("chartsOverview__charts");t.innerHTML="",$("#chartsOverview").dialog("destroy")}const _t="#ccc",et="no",A=800,Ot=.2,wt=7,ut=10;function gt(t){return d3.max(t.map(a=>a.length))*wt}function Ct(t,a){const n=ut+gt(t),o=Math.floor(a/n);return Math.ceil(t.length/o)}function G(t){return a=>pack[t][a].name||et}function W(t){return()=>Object.fromEntries(pack[t].map(({name:a,color:n})=>[a||et,n||_t]))}function xt(t){return biomesData.name[t]||et}function St(){return Object.fromEntries(biomesData.i.map(t=>[biomesData.name[t],biomesData.color[t]]))}function ot(t){const a=pack.cells.burg[t];return a?pack.burgs[a].population*populationRate*urbanization:0}function rt(t){return pack.cells.pop[t]*populationRate}function Tt(t,a){if(a==="natural")return t;if(a==="name")return t.sort((n,o)=>n.name!==o.name?o.name.localeCompare(n.name):n.group.localeCompare(o.group));if(a==="value"){const n={},o={};for(const{name:l,group:r,value:i}of t)n[l]=(n[l]||0)+i,o[r]=(o[r]||0)+i;return t.sort((l,r)=>l.name!==r.name?n[l.name]-n[r.name]:o[r.group]-o[l.group])}return t}export{Lt as open};
|
||||||
1
dist/assets/dropbox-sdk.min.f49dfee9.js
vendored
Normal file
1
dist/assets/dropbox-sdk.min.f49dfee9.js
vendored
Normal file
File diff suppressed because one or more lines are too long
150
dist/assets/heightmap-selection.js_v_1.87.b0b46f49.js
vendored
Normal file
150
dist/assets/heightmap-selection.js_v_1.87.b0b46f49.js
vendored
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
import{b as o,s as R,g as k,a as v}from"./index.73bf34f9.js";const p=v();let n=d(grid);O();_();j();function E(){closeDialogs(".stable");const e=o("templateInput");S(e.value),n=d(n),$("#heightmapSelection").dialog({title:"Select Heightmap",resizable:!1,position:{my:"center",at:"center",of:"svg"},buttons:{Cancel:function(){$(this).dialog("close")},Select:function(){const t=g();applyOption(e,t,u(t)),lock("template"),$(this).dialog("close")},"New Map":function(){const t=g();applyOption(e,t,u(t)),lock("template");const i=q();regeneratePrompt({seed:i,graph:n}),$(this).dialog("close")}}})}function O(){const e=document.createElement("style");e.textContent=`
|
||||||
|
div.dialog > div.heightmap-selection {
|
||||||
|
width: 70vw;
|
||||||
|
height: 70vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection_container {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
|
||||||
|
grid-gap: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
.heightmap-selection_container {
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
|
||||||
|
grid-gap: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 2000px) {
|
||||||
|
.heightmap-selection_container {
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
||||||
|
grid-gap: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection_options {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 2fr 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection_options > div:first-child {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr 1fr;
|
||||||
|
align-items: center;
|
||||||
|
justify-self: start;
|
||||||
|
justify-items: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
.heightmap-selection_options {
|
||||||
|
grid-template-columns: 3fr 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection_options > div:first-child {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection_options > div:last-child {
|
||||||
|
justify-self: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article {
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 0.1s ease-in-out;
|
||||||
|
filter: drop-shadow(1px 1px 4px #999);
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article:hover {
|
||||||
|
background-color: #ddd;
|
||||||
|
filter: drop-shadow(1px 1px 8px #999);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article.selected {
|
||||||
|
background-color: #ccc;
|
||||||
|
outline: 1px solid var(--dark-solid);
|
||||||
|
filter: drop-shadow(1px 1px 8px #999);
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article > div {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 2px 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article > img {
|
||||||
|
width: 100%;
|
||||||
|
aspect-ratio: ${graphWidth}/${graphHeight};
|
||||||
|
border-radius: 8px;
|
||||||
|
object-fit: fill;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article .regeneratePreview {
|
||||||
|
outline: 1px solid #bbb;
|
||||||
|
padding: 1px 3px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.1s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article .regeneratePreview:hover {
|
||||||
|
outline: 1px solid #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heightmap-selection article .regeneratePreview:active {
|
||||||
|
outline: 1px solid #333;
|
||||||
|
color: #000;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
`,document.head.appendChild(e)}function _(){const e=`<div id="heightmapSelection" class="dialog stable">
|
||||||
|
<div class="heightmap-selection">
|
||||||
|
<section data-tip="Select heightmap template \u2013 template provides unique, but similar-looking maps on generation">
|
||||||
|
<header><h1>Heightmap templates</h1></header>
|
||||||
|
<div class="heightmap-selection_container"></div>
|
||||||
|
</section>
|
||||||
|
<section data-tip="Select precreated heightmap \u2013 it will be the same for each map">
|
||||||
|
<header><h1>Precreated heightmaps</h1></header>
|
||||||
|
<div class="heightmap-selection_container"></div>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<header><h1>Options</h1></header>
|
||||||
|
<div class="heightmap-selection_options">
|
||||||
|
<div>
|
||||||
|
<label data-tip="Rerender all preview images" class="checkbox-label" id="heightmapSelectionRedrawPreview">
|
||||||
|
<i class="icon-cw"></i>
|
||||||
|
Redraw preview
|
||||||
|
</label>
|
||||||
|
<div>
|
||||||
|
<input id="heightmapSelectionRenderOcean" class="checkbox" type="checkbox" />
|
||||||
|
<label data-tip="Draw heights of water cells" for="heightmapSelectionRenderOcean" class="checkbox-label">Render ocean heights</label>
|
||||||
|
</div>
|
||||||
|
<div data-tip="Color scheme used for heightmap preview">
|
||||||
|
Color scheme
|
||||||
|
<select id="heightmapSelectionColorScheme">
|
||||||
|
<option value="bright" selected>Bright</option>
|
||||||
|
<option value="light">Light</option>
|
||||||
|
<option value="green">Green</option>
|
||||||
|
<option value="monochrome">Monochrome</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button data-tip="Open Template Editor" data-tool="templateEditor" id="heightmapSelectionEditTemplates">Edit Templates</button>
|
||||||
|
<button data-tip="Open Image Converter" data-tool="imageConverter" id="heightmapSelectionImportHeightmap">Import Heightmap</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>`;o("dialogs").insertAdjacentHTML("beforeend",e);const t=document.getElementsByClassName("heightmap-selection_container");t[0].innerHTML=Object.keys(heightmapTemplates).map(i=>{const a=heightmapTemplates[i].name;Math.random=aleaPRNG(p);const c=HeightmapGenerator.fromTemplate(n,i),r=m(c);return`<article data-id="${i}" data-seed="${p}">
|
||||||
|
<img src="${r}" alt="${a}" />
|
||||||
|
<div>
|
||||||
|
${a}
|
||||||
|
<span data-tip="Regenerate preview" class="icon-cw regeneratePreview"></span>
|
||||||
|
</div>
|
||||||
|
</article>`}).join(""),t[1].innerHTML=Object.keys(precreatedHeightmaps).map(i=>{const a=precreatedHeightmaps[i].name;return w(i),`<article data-id="${i}" data-seed="${p}">
|
||||||
|
<img alt="${a}" />
|
||||||
|
<div>${a}</div>
|
||||||
|
</article>`}).join("")}function j(){o("heightmapSelection").on("click",e=>{const t=e.target.closest("#heightmapSelection article");if(!t)return;const i=t.dataset.id;e.target.matches("span.icon-cw")&&G(t,i),S(i)}),o("heightmapSelectionRenderOcean").on("change",h),o("heightmapSelectionColorScheme").on("change",h),o("heightmapSelectionRedrawPreview").on("click",h),o("heightmapSelectionEditTemplates").on("click",f),o("heightmapSelectionImportHeightmap").on("click",f)}function g(){var e,t;return(t=(e=o("heightmapSelection").querySelector(".selected"))==null?void 0:e.dataset)==null?void 0:t.id}function S(e){var i,a,c,r;const t=o("heightmapSelection");(a=(i=t.querySelector(".selected"))==null?void 0:i.classList)==null||a.remove("selected"),(r=(c=t.querySelector(`[data-id="${e}"]`))==null?void 0:c.classList)==null||r.add("selected")}function q(){var e,t;return(t=(e=o("heightmapSelection").querySelector(".selected"))==null?void 0:e.dataset)==null?void 0:t.seed}function u(e){return e in heightmapTemplates?heightmapTemplates[e].name:precreatedHeightmaps[e].name}function d(e){const t=R(e)?k():structuredClone(e);return delete t.cells.h,t}function m(e){const t=document.createElement("canvas");t.width=n.cellsX,t.height=n.cellsY;const i=t.getContext("2d"),a=i.createImageData(n.cellsX,n.cellsY),c=o("heightmapSelectionColorScheme").value,r=getColorScheme(c),b=o("heightmapSelectionRenderOcean").checked,y=l=>l<20?b?l:0:l;for(let l=0;l<e.length;l++){const H=r(1-y(e[l])/100),{r:T,g:C,b:P}=d3.color(H),s=l*4;a.data[s]=T,a.data[s+1]=C,a.data[s+2]=P,a.data[s+3]=255}return i.putImageData(a,0,0),t.toDataURL("image/png")}function x(e){const t=HeightmapGenerator.fromTemplate(n,e),i=m(t),a=o("heightmapSelection").querySelector(`[data-id="${e}"]`);a.querySelector("img").src=i}async function w(e){const t=await HeightmapGenerator.fromPrecreated(n,e),i=m(t),a=o("heightmapSelection").querySelector(`[data-id="${e}"]`);a.querySelector("img").src=i}function G(e,t){n=d(n);const i=v();e.dataset.seed=i,Math.random=aleaPRNG(i),x(t)}function h(){n=d(n);const e=o("heightmapSelection").querySelectorAll("article");for(const t of e){const{id:i,seed:a}=t.dataset;Math.random=aleaPRNG(a),i in heightmapTemplates?x(i):w(i)}}function f(){const e=this.dataset.tool;confirmationDialog({title:this.dataset.tip,message:"Opening the tool will erase the current map. Are you sure you want to proceed?",confirm:"Continue",onConfirm:()=>editHeightmap({mode:"erase",tool:e})})}export{E as open};
|
||||||
3
dist/assets/index.2971cde7.css
vendored
Normal file
3
dist/assets/index.2971cde7.css
vendored
Normal file
File diff suppressed because one or more lines are too long
72
dist/assets/index.73bf34f9.js
vendored
Normal file
72
dist/assets/index.73bf34f9.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
dist/assets/installation.aec0617b.js
vendored
Normal file
9
dist/assets/installation.aec0617b.js
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
import{t as l}from"./index.73bf34f9.js";let n=null,o=null;function r(t){localStorage.getItem("installationDontAsk")||(n=i(),o=t,window.addEventListener("appinstalled",()=>{l("Application is installed",!1,"success",8e3),cleanup()}))}function i(){const t=document.createElement("button");return t.style=`
|
||||||
|
position: fixed;
|
||||||
|
top: 1em;
|
||||||
|
right: 1em;
|
||||||
|
padding: 0.6em 0.8em;
|
||||||
|
width: auto;
|
||||||
|
`,t.className="options glow",t.innerHTML="Install",t.onclick=a,t.onmouseenter=()=>l("Install the Application"),document.querySelector("body").appendChild(t),t}function a(){alertMessage.innerHTML=`You can install the tool so that it will look and feel like desktop application:
|
||||||
|
have its own icon on your home screen and work offline with some limitations
|
||||||
|
`,$("#alert").dialog({resizable:!1,title:"Install the Application",width:"38em",buttons:{Install:function(){$(this).dialog("close"),o.prompt()},Cancel:function(){$(this).dialog("close")}},open:function(){const e='<span><input id="dontAsk" class="checkbox" type="checkbox"><label for="dontAsk" class="checkbox-label dontAsk"><i>do not ask again</i></label><span>';this.parentElement.querySelector(".ui-dialog-buttonpane").insertAdjacentHTML("afterbegin",e)},close:function(){const e=this.parentElement.querySelector(".checkbox");e!=null&&e.checked&&(localStorage.setItem("installationDontAsk",!0),t()),$(this).dialog("destroy")}});function t(){n.remove(),n=null,o=null}}export{r as init};
|
||||||
BIN
dist/assets/maskable_icon_x192.8df7457d.png
vendored
Normal file
BIN
dist/assets/maskable_icon_x192.8df7457d.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
7746
dist/index.html
vendored
Normal file
7746
dist/index.html
vendored
Normal file
File diff suppressed because one or more lines are too long
164
index.html
164
index.html
|
|
@ -108,9 +108,9 @@
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<link rel="preload" href="index.css" as="style" onload="this.onload=null; this.rel='stylesheet'" />
|
<link rel="preload" href="/src/index.css" as="style" onload="this.onload=null; this.rel='stylesheet'" />
|
||||||
<link rel="preload" href="icons.css" as="style" onload="this.onload=null; this.rel='stylesheet'" />
|
<link rel="preload" href="/src/icons.css" as="style" onload="this.onload=null; this.rel='stylesheet'" />
|
||||||
<link rel="preload" href="libs/jquery-ui.css" as="style" onload="this.onload=null; this.rel='stylesheet'" />
|
<link rel="preload" href="/src/libs/jquery-ui.css" as="style" onload="this.onload=null; this.rel='stylesheet'" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -7657,88 +7657,88 @@
|
||||||
</defs>
|
</defs>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
<script src="libs/jquery-3.1.1.min.js"></script>
|
<script src="/src/libs/jquery-3.1.1.min.js"></script>
|
||||||
<script src="libs/jquery-ui.min.js"></script>
|
<script src="/src/libs/jquery-ui.min.js"></script>
|
||||||
<script src="versioning.js"></script>
|
<script src="/src/versioning.js"></script>
|
||||||
<script src="libs/d3.min.js"></script>
|
<script src="/src/libs/d3.min.js"></script>
|
||||||
<script src="libs/priority-queue.min.js"></script>
|
<script src="/src/libs/priority-queue.min.js"></script>
|
||||||
<script src="libs/delaunator.min.js"></script>
|
<script src="/src/libs/delaunator.min.js"></script>
|
||||||
|
|
||||||
<script src="modules/voronoi.js"></script>
|
<script src="/src/modules/voronoi.js"></script>
|
||||||
<script src="config/heightmap-templates.js"></script>
|
<script src="/src/config/heightmap-templates.js"></script>
|
||||||
<script src="config/precreated-heightmaps.js"></script>
|
<script src="/src/config/precreated-heightmaps.js"></script>
|
||||||
<script type="module" src="modules/heightmap-generator.js"></script>
|
<script type="module" src="/src/modules/heightmap-generator.js"></script>
|
||||||
<script type="module" src="modules/ocean-layers.js"></script>
|
<script type="module" src="/src/modules/ocean-layers.js"></script>
|
||||||
<script type="module" src="modules/river-generator.js"></script>
|
<script type="module" src="/src/modules/river-generator.js"></script>
|
||||||
<script type="module" src="modules/lakes.js"></script>
|
<script type="module" src="/src/modules/lakes.js"></script>
|
||||||
<script type="module" src="modules/names-generator.js"></script>
|
<script type="module" src="/src/modules/names-generator.js"></script>
|
||||||
<script type="module" src="modules/biomes.js"></script>
|
<script type="module" src="/src/modules/biomes.js"></script>
|
||||||
<script type="module" src="modules/cultures-generator.js"></script>
|
<script type="module" src="/src/modules/cultures-generator.js"></script>
|
||||||
<script type="module" src="modules/burgs-and-states.js?v=1.87.04"></script>
|
<script type="module" src="/src/modules/burgs-and-states.js?v=1.87.04"></script>
|
||||||
<script type="module" src="modules/routes-generator.js"></script>
|
<script type="module" src="/src/modules/routes-generator.js"></script>
|
||||||
<script type="module" src="modules/religions-generator.js"></script>
|
<script type="module" src="/src/modules/religions-generator.js"></script>
|
||||||
<script type="module" src="modules/military-generator.js"></script>
|
<script type="module" src="/src/modules/military-generator.js"></script>
|
||||||
<script type="module" src="modules/markers-generator.js"></script>
|
<script type="module" src="/src/modules/markers-generator.js"></script>
|
||||||
<script type="module" src="modules/coa-generator.js"></script>
|
<script type="module" src="/src/modules/coa-generator.js"></script>
|
||||||
<script type="module" src="modules/submap.js"></script>
|
<script type="module" src="/src/modules/submap.js"></script>
|
||||||
<script src="libs/polylabel.min.js"></script>
|
<script src="/src/libs/polylabel.min.js"></script>
|
||||||
<script src="libs/alea.min.js"></script>
|
<script src="/src/libs/alea.min.js"></script>
|
||||||
<script type="module" src="modules/fonts.js"></script>
|
<script type="module" src="/src/modules/fonts.js"></script>
|
||||||
<script type="module" src="modules/ui/layers.js"></script>
|
<script type="module" src="/src/modules/ui/layers.js"></script>
|
||||||
<script type="modile" src="modules/ui/stylePresets.js"></script>
|
<script type="modile" src="/src/modules/ui/stylePresets.js"></script>
|
||||||
<script type="module" src="modules/ui/general.js?v=1.87.00"></script>
|
<script type="module" src="/src/modules/ui/general.js?v=1.87.00"></script>
|
||||||
<script type="module" src="modules/ui/options.js?v=1.87.00"></script>
|
<script type="module" src="/src/modules/ui/options.js?v=1.87.00"></script>
|
||||||
|
|
||||||
<script src="modules/define-globals.js"></script>
|
<script src="/src/modules/define-globals.js"></script>
|
||||||
<script src="modules/define-svg.js"></script>
|
<script src="/src/modules/define-svg.js"></script>
|
||||||
<script type="module" src="modules/zoom.js"></script>
|
<script type="module" src="/src/modules/zoom.js"></script>
|
||||||
|
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
|
||||||
<script type="module" src="modules/activeZooming.js"></script>
|
<script type="module" src="/src/modules/activeZooming.js"></script>
|
||||||
<script type="module" src="modules/relief-icons.js"></script>
|
<script type="module" src="/src/modules/relief-icons.js"></script>
|
||||||
<script type="module" src="modules/ui/style.js"></script>
|
<script type="module" src="/src/modules/ui/style.js"></script>
|
||||||
<script type="module" src="modules/ui/editors.js?v=1.87.01"></script>
|
<script type="module" src="/src/modules/ui/editors.js?v=1.87.01"></script>
|
||||||
<script type="module" src="modules/ui/tools.js?v=1.87.03"></script>
|
<script type="module" src="/src/modules/ui/tools.js?v=1.87.03"></script>
|
||||||
<script type="module" src="modules/ui/world-configurator.js"></script>
|
<script type="module" src="/src/modules/ui/world-configurator.js"></script>
|
||||||
<script type="module" src="modules/ui/heightmap-editor.js"></script>
|
<script type="module" src="/src/modules/ui/heightmap-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/provinces-editor.js"></script>
|
<script type="module" src="/src/modules/ui/provinces-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/biomes-editor.js"></script>
|
<script type="module" src="/src/modules/ui/biomes-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/namesbase-editor.js"></script>
|
<script type="module" src="/src/modules/ui/namesbase-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/elevation-profile.js"></script>
|
<script type="module" src="/src/modules/ui/elevation-profile.js"></script>
|
||||||
<script type="module" src="modules/ui/temperature-graph.js"></script>
|
<script type="module" src="/src/modules/ui/temperature-graph.js"></script>
|
||||||
<script type="module" src="modules/ui/routes-editor.js"></script>
|
<script type="module" src="/src/modules/ui/routes-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/ice-editor.js"></script>
|
<script type="module" src="/src/modules/ui/ice-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/lakes-editor.js"></script>
|
<script type="module" src="/src/modules/ui/lakes-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/coastline-editor.js"></script>
|
<script type="module" src="/src/modules/ui/coastline-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/labels-editor.js"></script>
|
<script type="module" src="/src/modules/ui/labels-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/rivers-editor.js"></script>
|
<script type="module" src="/src/modules/ui/rivers-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/rivers-creator.js"></script>
|
<script type="module" src="/src/modules/ui/rivers-creator.js"></script>
|
||||||
<script type="module" src="modules/ui/relief-editor.js"></script>
|
<script type="module" src="/src/modules/ui/relief-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/burg-editor.js"></script>
|
<script type="module" src="/src/modules/ui/burg-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/units-editor.js"></script>
|
<script type="module" src="/src/modules/ui/units-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/notes-editor.js"></script>
|
<script type="module" src="/src/modules/ui/notes-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/diplomacy-editor.js"></script>
|
<script type="module" src="/src/modules/ui/diplomacy-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/zones-editor.js"></script>
|
<script type="module" src="/src/modules/ui/zones-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/burgs-overview.js"></script>
|
<script type="module" src="/src/modules/ui/burgs-overview.js"></script>
|
||||||
<script type="module" src="modules/ui/rivers-overview.js"></script>
|
<script type="module" src="/src/modules/ui/rivers-overview.js"></script>
|
||||||
<script type="module" src="modules/ui/military-overview.js"></script>
|
<script type="module" src="/src/modules/ui/military-overview.js"></script>
|
||||||
<script type="module" src="modules/ui/regiments-overview.js"></script>
|
<script type="module" src="/src/modules/ui/regiments-overview.js"></script>
|
||||||
<script type="module" src="modules/ui/markers-overview.js"></script>
|
<script type="module" src="/src/modules/ui/markers-overview.js"></script>
|
||||||
<script type="module" src="modules/ui/regiment-editor.js"></script>
|
<script type="module" src="/src/modules/ui/regiment-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/battle-screen.js"></script>
|
<script type="module" src="/src/modules/ui/battle-screen.js"></script>
|
||||||
<script type="module" src="modules/ui/emblems-editor.js"></script>
|
<script type="module" src="/src/modules/ui/emblems-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/markers-editor.js"></script>
|
<script type="module" src="/src/modules/ui/markers-editor.js"></script>
|
||||||
<script type="module" src="modules/ui/3d.js"></script>
|
<script type="module" src="/src/modules/ui/3d.js"></script>
|
||||||
<script type="module" src="modules/ui/submap.js"></script>
|
<script type="module" src="/src/modules/ui/submap.js"></script>
|
||||||
<script type="module" src="modules/ui/hotkeys.js?v=1.87.00"></script>
|
<script type="module" src="/src/modules/ui/hotkeys.js?v=1.87.00"></script>
|
||||||
<script type="module" src="modules/coa-renderer.js"></script>
|
<script type="module" src="/src/modules/coa-renderer.js"></script>
|
||||||
<script defer src="libs/rgbquant.min.js"></script>
|
<script defer src="/src/libs/rgbquant.min.js"></script>
|
||||||
<script defer src="libs/jquery.ui.touch-punch.min.js"></script>
|
<script defer src="/src/libs/jquery.ui.touch-punch.min.js"></script>
|
||||||
<script type="module" src="modules/io/save.js"></script>
|
<script type="module" src="/src/modules/io/save.js"></script>
|
||||||
<script type="module" src="modules/io/load.js?v=1.87.00"></script>
|
<script type="module" src="/src/modules/io/load.js?v=1.87.00"></script>
|
||||||
<script type="module" src="modules/io/cloud.js"></script>
|
<script type="module" src="/src/modules/io/cloud.js"></script>
|
||||||
<script type="module" src="modules/io/export.js"></script>
|
<script type="module" src="/src/modules/io/export.js"></script>
|
||||||
<script type="module" src="modules/io/formats.js"></script>
|
<script type="module" src="/src/modules/io/formats.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"typescript": "^4.7.4",
|
"typescript": "^4.7.4",
|
||||||
"vite": "^2.9.12"
|
"vite": "^3.0.0-beta.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lineclip": "^1.1.5"
|
"lineclip": "^1.1.5"
|
||||||
|
|
|
||||||
0
libs/alea.min.js → src/libs/alea.min.js
vendored
0
libs/alea.min.js → src/libs/alea.min.js
vendored
0
libs/d3.min.js → src/libs/d3.min.js
vendored
0
libs/d3.min.js → src/libs/d3.min.js
vendored
0
libs/jquery-ui.css → src/libs/jquery-ui.css
vendored
0
libs/jquery-ui.css → src/libs/jquery-ui.css
vendored
0
libs/jszip.min.js → src/libs/jszip.min.js
vendored
0
libs/jszip.min.js → src/libs/jszip.min.js
vendored
0
libs/three.min.js → src/libs/three.min.js
vendored
0
libs/three.min.js → src/libs/three.min.js
vendored
|
|
@ -3,14 +3,14 @@
|
||||||
|
|
||||||
console.log("Hello World");
|
console.log("Hello World");
|
||||||
|
|
||||||
import {invokeActiveZooming} from "../modules/activeZooming";
|
import {invokeActiveZooming} from "./modules/activeZooming";
|
||||||
import {applyPreset, drawBorders, drawRivers, drawStates} from "../modules/ui/layers";
|
import {applyPreset, drawBorders, drawRivers, drawStates} from "./modules/ui/layers";
|
||||||
import {applyMapSize, applyStoredOptions, randomizeOptions} from "../modules/ui/options";
|
import {applyMapSize, applyStoredOptions, randomizeOptions} from "./modules/ui/options";
|
||||||
import {ERROR, INFO, TIME, WARN} from "./config/logging";
|
import {ERROR, INFO, TIME, WARN} from "./config/logging";
|
||||||
import {UINT16_MAX} from "./constants";
|
import {UINT16_MAX} from "./constants";
|
||||||
import {clearLegend} from "./modules/legend";
|
import {clearLegend} from "./modules/legend";
|
||||||
import {drawScaleBar, Ruler, Rulers} from "./modules/measurers";
|
import {drawScaleBar, Ruler, Rulers} from "./modules/measurers";
|
||||||
import {applyStyleOnLoad} from "../modules/ui/stylePresets";
|
import {applyStyleOnLoad} from "./modules/ui/stylePresets";
|
||||||
import {restoreDefaultEvents} from "./scripts/events";
|
import {restoreDefaultEvents} from "./scripts/events";
|
||||||
import {addGlobalListeners} from "./scripts/listeners";
|
import {addGlobalListeners} from "./scripts/listeners";
|
||||||
import {locked} from "./scripts/options/lock";
|
import {locked} from "./scripts/options/lock";
|
||||||
|
|
@ -681,7 +681,7 @@ function defineMapSize() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate map position on globe
|
// calculate map position on globe
|
||||||
function calculateMapCoordinates(): IMapCoordinates {
|
function calculateMapCoordinates() {
|
||||||
const size = +byId("mapSizeOutput").value;
|
const size = +byId("mapSizeOutput").value;
|
||||||
const latShift = +byId("latitudeOutput").value;
|
const latShift = +byId("latitudeOutput").value;
|
||||||
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
import {capitalize} from "/src/utils/stringUtils";
|
import {capitalize} from "../../utils/stringUtils";
|
||||||
|
|
||||||
const capitalize = text => text.charAt(0).toUpperCase() + text.slice(1);
|
|
||||||
|
|
||||||
const format = rawList =>
|
const format = rawList =>
|
||||||
rawList
|
rawList
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import {rn} from "../utils/numberUtils";
|
import {rn} from "../utils/numberUtils";
|
||||||
import {parseTransform} from "/src/utils/stringUtils";
|
import {parseTransform} from "/src/utils/stringUtils";
|
||||||
|
|
||||||
export function drawLegend(name: string, data: unknown[]) {
|
export function drawLegend(name, data) {
|
||||||
legend.selectAll("*").remove(); // fully redraw every time
|
legend.selectAll("*").remove(); // fully redraw every time
|
||||||
legend.attr("data", data.join("|")); // store data
|
legend.attr("data", data.join("|")); // store data
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue