diff --git a/modules/io/load.js b/modules/io/load.js index 2dc7991a..d3d6f7ce 100644 --- a/modules/io/load.js +++ b/modules/io/load.js @@ -732,10 +732,14 @@ async function parseLoadedData(data, mapVersion) { // V1.109 changed how use tags scale, causing massive icons if not redrawn. if (compareVersions(mapVersion, VERSION).isNewer) { // Prevent huge sizes from newer unsupported SVGs - const forceDefault = (el, attr, def) => { if (!el.attr(attr) || isNaN(el.attr(attr)) || +el.attr(attr) > 10) el.attr(attr, def); }; + const forceDefault = (el, attr, def) => { + if (el && el.node() && (!el.attr(attr) || isNaN(el.attr(attr)) || +el.attr(attr) > 10)) { + el.attr(attr, def); + } + }; forceDefault(armies, "box-size", 3); - forceDefault(icons.select("#burgIcons > #cities"), "size", 1); - forceDefault(icons.select("#burgIcons > #towns"), "size", 0.5); + forceDefault(burgIcons.select("#cities"), "size", 1); + forceDefault(burgIcons.select("#towns"), "size", 0.5); forceDefault(anchors.select("#cities"), "size", 2); forceDefault(anchors.select("#towns"), "size", 1); diff --git a/modules/renderers/draw-markers.js b/modules/renderers/draw-markers.js index 572a17cb..0cb51668 100644 --- a/modules/renderers/draw-markers.js +++ b/modules/renderers/draw-markers.js @@ -42,7 +42,7 @@ function drawMarker(marker, rescale = 1) { const viewX = rn(x - zoomSize / 2, 1); const viewY = rn(y - zoomSize, 1); - const isExternal = icon.startsWith("http") || icon.startsWith("data:image") || icon.includes(".svg") || icon.includes("/"); + const isExternal = typeof icon === "string" && (icon.startsWith("http") || icon.startsWith("data:image") || icon.includes(".svg") || icon.includes("/")); return /* html */ ` diff --git a/modules/renderers/draw-military.js b/modules/renderers/draw-military.js index 29e05876..565d83d6 100644 --- a/modules/renderers/draw-military.js +++ b/modules/renderers/draw-military.js @@ -1,6 +1,6 @@ "use strict"; -const isExternalIcon = (icon) => icon && (icon.startsWith("http") || icon.startsWith("data:image") || icon.includes(".svg") || icon.includes("/")); +window.isExternalIcon = (icon) => typeof icon === "string" && (icon.startsWith("http") || icon.startsWith("data:image") || icon.includes(".svg") || icon.includes("/")); function drawMilitary() { TIME && console.time("drawMilitary"); @@ -58,14 +58,14 @@ const drawRegiments = function (regiments, s) { .attr("text-rendering", "optimizeSpeed") .attr("x", d => x(d) - size) .attr("y", d => d.y) - .text(d => (isExternalIcon(d.icon) ? "" : d.icon)); + .text(d => (window.isExternalIcon(d.icon) ? "" : d.icon)); g.append("image") .attr("class", "regimentImage") .attr("x", d => x(d) - h) .attr("y", d => y(d)) .attr("height", h) .attr("width", h) - .attr("href", d => (isExternalIcon(d.icon) ? d.icon : "")); + .attr("href", d => (window.isExternalIcon(d.icon) ? d.icon : "")); }; const drawRegiment = function (reg, stateId) { @@ -111,14 +111,14 @@ const drawRegiment = function (reg, stateId) { .attr("text-rendering", "optimizeSpeed") .attr("x", x1 - size) .attr("y", reg.y) - .text(isExternalIcon(reg.icon) ? "" : reg.icon); + .text(window.isExternalIcon(reg.icon) ? "" : reg.icon); g.append("image") .attr("class", "regimentImage") .attr("x", x1 - h) .attr("y", y1) .attr("height", h) .attr("width", h) - .attr("href", isExternalIcon(reg.icon) ? reg.icon : ""); + .attr("href", window.isExternalIcon(reg.icon) ? reg.icon : ""); }; // move one regiment to another