var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __commonJS = (cb, mod) => function __require() {
+ var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, {
+ get: (a2, b2) => (typeof require !== "undefined" ? require : a2)[b2]
+ }) : x2)(function(x2) {
+ if (typeof require !== "undefined")
+ return require.apply(this, arguments);
+ throw Error('Dynamic require of "' + x2 + '" is not supported');
+ });
+ var __commonJS = (cb, mod) => function __require2() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
}
];
var diacriticsMap = {};
- for (i2 = 0; i2 < replacementList.length; i2 += 1) {
- chars = replacementList[i2].chars;
- for (j2 = 0; j2 < chars.length; j2 += 1) {
- diacriticsMap[chars[j2]] = replacementList[i2].base;
+ for (i3 = 0; i3 < replacementList.length; i3 += 1) {
+ chars = replacementList[i3].chars;
+ for (j3 = 0; j3 < chars.length; j3 += 1) {
+ diacriticsMap[chars[j3]] = replacementList[i3].base;
}
}
var chars;
- var j2;
- var i2;
+ var j3;
+ var i3;
function removeDiacritics2(str2) {
- return str2.replace(/[^\u0000-\u007e]/g, function(c) {
- return diacriticsMap[c] || c;
+ return str2.replace(/[^\u0000-\u007e]/g, function(c2) {
+ return diacriticsMap[c2] || c2;
});
}
exports2.replacementList = replacementList;
throw new Error("isArabic works on only one-character strings");
}
let code = char.charCodeAt(0);
- for (let i2 = 0; i2 < arabicBlocks.length; i2++) {
- let block2 = arabicBlocks[i2];
+ for (let i3 = 0; i3 < arabicBlocks.length; i3++) {
+ let block2 = arabicBlocks[i3];
if (code >= block2[0] && code <= block2[1]) {
return true;
}
var tashkeel = "\u0605\u0640\u0670\u0674\u06DF\u06E7\u06E8";
exports2.tashkeel = tashkeel;
function addToTashkeel(start2, finish) {
- for (var i2 = start2; i2 <= finish; i2++) {
- exports2.tashkeel = tashkeel += String.fromCharCode(i2);
+ for (var i3 = start2; i3 <= finish; i3++) {
+ exports2.tashkeel = tashkeel += String.fromCharCode(i3);
}
}
addToTashkeel(1552, 1562);
var lineBreakers = "\u0627\u0629\u0648\u06C0\u06CF\u06FD\u06FE\u076B\u076C\u0771\u0773\u0774\u0778\u0779\u08E2\u08B1\u08B2\u08B9";
exports2.lineBreakers = lineBreakers;
function addToLineBreakers(start2, finish) {
- for (var i2 = start2; i2 <= finish; i2++) {
- exports2.lineBreakers = lineBreakers += String.fromCharCode(i2);
+ for (var i3 = start2; i3 <= finish; i3++) {
+ exports2.lineBreakers = lineBreakers += String.fromCharCode(i3);
}
}
addToLineBreakers(1536, 1567);
returnable += letter;
return;
}
- for (let w = 0; w < reference_1.letterList.length; w++) {
- let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];
+ for (let w2 = 0; w2 < reference_1.letterList.length; w2++) {
+ let letterForms = unicode_arabic_1.default[reference_1.letterList[w2]];
let versions = Object.keys(letterForms);
- for (let v = 0; v < versions.length; v++) {
- let localVersion = letterForms[versions[v]];
+ for (let v2 = 0; v2 < versions.length; v2++) {
+ let localVersion = letterForms[versions[v2]];
if (typeof localVersion === "object" && typeof localVersion.indexOf === "undefined") {
let embeddedForms = Object.keys(localVersion);
for (let ef = 0; ef < embeddedForms.length; ef++) {
}
}
} else if (localVersion === letter) {
- if (breakPresentationForm && letterForms["normal"] && ["isolated", "initial", "medial", "final"].indexOf(versions[v]) > -1) {
+ if (breakPresentationForm && letterForms["normal"] && ["isolated", "initial", "medial", "final"].indexOf(versions[v2]) > -1) {
if (typeof letterForms["normal"] === "object") {
returnable += letterForms["normal"][0];
} else {
let normalForm = reference_1.ligatureList[v2];
if (normalForm !== "words") {
let ligForms = Object.keys(unicode_ligatures_1.default[normalForm]);
- for (let f2 = 0; f2 < ligForms.length; f2++) {
- if (unicode_ligatures_1.default[normalForm][ligForms[f2]] === letter) {
+ for (let f3 = 0; f3 < ligForms.length; f3++) {
+ if (unicode_ligatures_1.default[normalForm][ligForms[f3]] === letter) {
returnable += normalForm;
return;
}
if (letter === "\u0621") {
return "\u0621";
}
- for (let w = 0; w < reference_1.letterList.length; w++) {
- let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];
+ for (let w2 = 0; w2 < reference_1.letterList.length; w2++) {
+ let letterForms = unicode_arabic_1.default[reference_1.letterList[w2]];
let versions = Object.keys(letterForms);
- for (let v = 0; v < versions.length; v++) {
- let localVersion = letterForms[versions[v]];
+ for (let v2 = 0; v2 < versions.length; v2++) {
+ let localVersion = letterForms[versions[v2]];
if (localVersion === letter || typeof localVersion === "object" && localVersion.indexOf && localVersion.indexOf(letter) > -1) {
if (versions.indexOf(form) > -1) {
return letterForms[form];
function WordShaper2(word) {
let state = "initial";
let output = "";
- for (let w = 0; w < word.length; w++) {
+ for (let w2 = 0; w2 < word.length; w2++) {
let nextLetter = " ";
- for (let nxw = w + 1; nxw < word.length; nxw++) {
+ for (let nxw = w2 + 1; nxw < word.length; nxw++) {
if (!isArabic_1.isArabic(word[nxw])) {
break;
}
break;
}
}
- if (!isArabic_1.isArabic(word[w]) || isArabic_1.isMath(word[w])) {
- output += word[w];
+ if (!isArabic_1.isArabic(word[w2]) || isArabic_1.isMath(word[w2])) {
+ output += word[w2];
state = "initial";
- } else if (reference_1.tashkeel.indexOf(word[w]) > -1) {
- output += word[w];
- } else if (nextLetter === " " || reference_1.lineBreakers.indexOf(word[w]) > -1) {
- output += CharShaper_1.CharShaper(word[w], state === "initial" ? "isolated" : "final");
+ } else if (reference_1.tashkeel.indexOf(word[w2]) > -1) {
+ output += word[w2];
+ } else if (nextLetter === " " || reference_1.lineBreakers.indexOf(word[w2]) > -1) {
+ output += CharShaper_1.CharShaper(word[w2], state === "initial" ? "isolated" : "final");
state = "initial";
- } else if (reference_1.lams.indexOf(word[w]) > -1 && reference_1.alefs.indexOf(nextLetter) > -1) {
- output += unicode_ligatures_1.default[word[w] + nextLetter][state === "initial" ? "isolated" : "final"];
- while (word[w] !== nextLetter) {
- w++;
+ } else if (reference_1.lams.indexOf(word[w2]) > -1 && reference_1.alefs.indexOf(nextLetter) > -1) {
+ output += unicode_ligatures_1.default[word[w2] + nextLetter][state === "initial" ? "isolated" : "final"];
+ while (word[w2] !== nextLetter) {
+ w2++;
}
state = "initial";
} else {
- output += CharShaper_1.CharShaper(word[w], state);
+ output += CharShaper_1.CharShaper(word[w2], state);
state = "medial";
}
}
if (!isArabic_1.isArabic(letter)) {
throw new Error("Not an Arabic letter");
}
- for (let w = 0; w < reference_1.letterList.length; w++) {
- let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];
+ for (let w2 = 0; w2 < reference_1.letterList.length; w2++) {
+ let letterForms = unicode_arabic_1.default[reference_1.letterList[w2]];
let versions = Object.keys(letterForms);
- for (let v = 0; v < versions.length; v++) {
- let localVersion = letterForms[versions[v]];
+ for (let v2 = 0; v2 < versions.length; v2++) {
+ let localVersion = letterForms[versions[v2]];
if (typeof localVersion === "object" && typeof localVersion.indexOf === "undefined") {
let embeddedForms = Object.keys(localVersion);
for (let ef = 0; ef < embeddedForms.length; ef++) {
if (!isArabic_1.isArabic(letter)) {
throw new Error("Not an Arabic letter");
}
- for (let w = 0; w < reference_1.letterList.length; w++) {
- let letterForms = unicode_arabic_1.default[reference_1.letterList[w]];
+ for (let w2 = 0; w2 < reference_1.letterList.length; w2++) {
+ let letterForms = unicode_arabic_1.default[reference_1.letterList[w2]];
let versions = Object.keys(letterForms);
- for (let v = 0; v < versions.length; v++) {
- let localVersion = letterForms[versions[v]];
+ for (let v2 = 0; v2 < versions.length; v2++) {
+ let localVersion = letterForms[versions[v2]];
if (typeof localVersion === "object" && typeof localVersion.indexOf === "undefined") {
let embeddedForms = Object.keys(localVersion);
for (let ef = 0; ef < embeddedForms.length; ef++) {
"node_modules/vparse/index.js"(exports2, module2) {
(function(window2) {
"use strict";
- function parseVersion3(v) {
- var m = v.replace(/[^0-9.]/g, "").match(/[0-9]*\.|[0-9]+/g) || [];
- v = {
- major: +m[0] || 0,
- minor: +m[1] || 0,
- patch: +m[2] || 0,
- build: +m[3] || 0
+ function parseVersion3(v2) {
+ var m2 = v2.replace(/[^0-9.]/g, "").match(/[0-9]*\.|[0-9]+/g) || [];
+ v2 = {
+ major: +m2[0] || 0,
+ minor: +m2[1] || 0,
+ patch: +m2[2] || 0,
+ build: +m2[3] || 0
};
- v.isEmpty = !v.major && !v.minor && !v.patch && !v.build;
- v.parsed = [v.major, v.minor, v.patch, v.build];
- v.text = v.parsed.join(".");
- v.compare = compare;
- return v;
+ v2.isEmpty = !v2.major && !v2.minor && !v2.patch && !v2.build;
+ v2.parsed = [v2.major, v2.minor, v2.patch, v2.build];
+ v2.text = v2.parsed.join(".");
+ v2.compare = compare;
+ return v2;
}
- function compare(v) {
- if (typeof v === "string") {
- v = parseVersion3(v);
+ function compare(v2) {
+ if (typeof v2 === "string") {
+ v2 = parseVersion3(v2);
}
- for (var i2 = 0; i2 < 4; i2++) {
- if (this.parsed[i2] !== v.parsed[i2]) {
- return this.parsed[i2] > v.parsed[i2] ? 1 : -1;
+ for (var i3 = 0; i3 < 4; i3++) {
+ if (this.parsed[i3] !== v2.parsed[i3]) {
+ return this.parsed[i3] > v2.parsed[i3] ? 1 : -1;
}
}
return 0;
// node_modules/which-polygon/node_modules/quickselect/quickselect.js
var require_quickselect = __commonJS({
"node_modules/which-polygon/node_modules/quickselect/quickselect.js"(exports2, module2) {
- (function(global3, factory) {
- typeof exports2 === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global3.quickselect = factory();
+ (function(global2, factory) {
+ typeof exports2 === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.quickselect = factory();
})(exports2, function() {
"use strict";
- function quickselect2(arr, k, left, right, compare) {
- quickselectStep(arr, k, left || 0, right || arr.length - 1, compare || defaultCompare);
+ function quickselect2(arr, k2, left, right, compare) {
+ quickselectStep(arr, k2, left || 0, right || arr.length - 1, compare || defaultCompare);
}
- function quickselectStep(arr, k, left, right, compare) {
+ function quickselectStep(arr, k2, left, right, compare) {
while (right > left) {
if (right - left > 600) {
- var n2 = right - left + 1;
- var m = k - left + 1;
- var z = Math.log(n2);
- var s = 0.5 * Math.exp(2 * z / 3);
- var sd = 0.5 * Math.sqrt(z * s * (n2 - s) / n2) * (m - n2 / 2 < 0 ? -1 : 1);
- var newLeft = Math.max(left, Math.floor(k - m * s / n2 + sd));
- var newRight = Math.min(right, Math.floor(k + (n2 - m) * s / n2 + sd));
- quickselectStep(arr, k, newLeft, newRight, compare);
- }
- var t = arr[k];
- var i2 = left;
- var j2 = right;
- swap2(arr, left, k);
- if (compare(arr[right], t) > 0)
+ var n3 = right - left + 1;
+ var m2 = k2 - left + 1;
+ var z2 = Math.log(n3);
+ var s2 = 0.5 * Math.exp(2 * z2 / 3);
+ var sd = 0.5 * Math.sqrt(z2 * s2 * (n3 - s2) / n3) * (m2 - n3 / 2 < 0 ? -1 : 1);
+ var newLeft = Math.max(left, Math.floor(k2 - m2 * s2 / n3 + sd));
+ var newRight = Math.min(right, Math.floor(k2 + (n3 - m2) * s2 / n3 + sd));
+ quickselectStep(arr, k2, newLeft, newRight, compare);
+ }
+ var t2 = arr[k2];
+ var i3 = left;
+ var j3 = right;
+ swap2(arr, left, k2);
+ if (compare(arr[right], t2) > 0)
swap2(arr, left, right);
- while (i2 < j2) {
- swap2(arr, i2, j2);
- i2++;
- j2--;
- while (compare(arr[i2], t) < 0)
- i2++;
- while (compare(arr[j2], t) > 0)
- j2--;
- }
- if (compare(arr[left], t) === 0)
- swap2(arr, left, j2);
+ while (i3 < j3) {
+ swap2(arr, i3, j3);
+ i3++;
+ j3--;
+ while (compare(arr[i3], t2) < 0)
+ i3++;
+ while (compare(arr[j3], t2) > 0)
+ j3--;
+ }
+ if (compare(arr[left], t2) === 0)
+ swap2(arr, left, j3);
else {
- j2++;
- swap2(arr, j2, right);
+ j3++;
+ swap2(arr, j3, right);
}
- if (j2 <= k)
- left = j2 + 1;
- if (k <= j2)
- right = j2 - 1;
+ if (j3 <= k2)
+ left = j3 + 1;
+ if (k2 <= j3)
+ right = j3 - 1;
}
}
- function swap2(arr, i2, j2) {
- var tmp = arr[i2];
- arr[i2] = arr[j2];
- arr[j2] = tmp;
+ function swap2(arr, i3, j3) {
+ var tmp = arr[i3];
+ arr[i3] = arr[j3];
+ arr[j3] = tmp;
}
- function defaultCompare(a, b) {
- return a < b ? -1 : a > b ? 1 : 0;
+ function defaultCompare(a2, b2) {
+ return a2 < b2 ? -1 : a2 > b2 ? 1 : 0;
}
return quickselect2;
});
var node = this.data, result = [], toBBox = this.toBBox;
if (!intersects(bbox2, node))
return result;
- var nodesToSearch = [], i2, len, child, childBBox;
+ var nodesToSearch = [], i3, len, child, childBBox;
while (node) {
- for (i2 = 0, len = node.children.length; i2 < len; i2++) {
- child = node.children[i2];
+ for (i3 = 0, len = node.children.length; i3 < len; i3++) {
+ child = node.children[i3];
childBBox = node.leaf ? toBBox(child) : child;
if (intersects(bbox2, childBBox)) {
if (node.leaf)
var node = this.data, toBBox = this.toBBox;
if (!intersects(bbox2, node))
return false;
- var nodesToSearch = [], i2, len, child, childBBox;
+ var nodesToSearch = [], i3, len, child, childBBox;
while (node) {
- for (i2 = 0, len = node.children.length; i2 < len; i2++) {
- child = node.children[i2];
+ for (i3 = 0, len = node.children.length; i3 < len; i3++) {
+ child = node.children[i3];
childBBox = node.leaf ? toBBox(child) : child;
if (intersects(bbox2, childBBox)) {
if (node.leaf || contains(bbox2, childBBox))
if (!(data && data.length))
return this;
if (data.length < this._minEntries) {
- for (var i2 = 0, len = data.length; i2 < len; i2++) {
- this.insert(data[i2]);
+ for (var i3 = 0, len = data.length; i3 < len; i3++) {
+ this.insert(data[i3]);
}
return this;
}
remove: function(item, equalsFn) {
if (!item)
return this;
- var node = this.data, bbox2 = this.toBBox(item), path = [], indexes = [], i2, parent, index, goingUp;
+ var node = this.data, bbox2 = this.toBBox(item), path = [], indexes = [], i3, parent, index, goingUp;
while (node || path.length) {
if (!node) {
node = path.pop();
parent = path[path.length - 1];
- i2 = indexes.pop();
+ i3 = indexes.pop();
goingUp = true;
}
if (node.leaf) {
}
if (!goingUp && !node.leaf && contains(node, bbox2)) {
path.push(node);
- indexes.push(i2);
- i2 = 0;
+ indexes.push(i3);
+ i3 = 0;
parent = node;
node = node.children[0];
} else if (parent) {
- i2++;
- node = parent.children[i2];
+ i3++;
+ node = parent.children[i3];
goingUp = false;
} else
node = null;
return result;
},
_build: function(items, left, right, height) {
- var N = right - left + 1, M = this._maxEntries, node;
- if (N <= M) {
+ var N2 = right - left + 1, M2 = this._maxEntries, node;
+ if (N2 <= M2) {
node = createNode(items.slice(left, right + 1));
calcBBox(node, this.toBBox);
return node;
}
if (!height) {
- height = Math.ceil(Math.log(N) / Math.log(M));
- M = Math.ceil(N / Math.pow(M, height - 1));
+ height = Math.ceil(Math.log(N2) / Math.log(M2));
+ M2 = Math.ceil(N2 / Math.pow(M2, height - 1));
}
node = createNode([]);
node.leaf = false;
node.height = height;
- var N2 = Math.ceil(N / M), N1 = N2 * Math.ceil(Math.sqrt(M)), i2, j2, right2, right3;
+ var N22 = Math.ceil(N2 / M2), N1 = N22 * Math.ceil(Math.sqrt(M2)), i3, j3, right2, right3;
multiSelect(items, left, right, N1, this.compareMinX);
- for (i2 = left; i2 <= right; i2 += N1) {
- right2 = Math.min(i2 + N1 - 1, right);
- multiSelect(items, i2, right2, N2, this.compareMinY);
- for (j2 = i2; j2 <= right2; j2 += N2) {
- right3 = Math.min(j2 + N2 - 1, right2);
- node.children.push(this._build(items, j2, right3, height - 1));
+ for (i3 = left; i3 <= right; i3 += N1) {
+ right2 = Math.min(i3 + N1 - 1, right);
+ multiSelect(items, i3, right2, N22, this.compareMinY);
+ for (j3 = i3; j3 <= right2; j3 += N22) {
+ right3 = Math.min(j3 + N22 - 1, right2);
+ node.children.push(this._build(items, j3, right3, height - 1));
}
}
calcBBox(node, this.toBBox);
return node;
},
_chooseSubtree: function(bbox2, node, level, path) {
- var i2, len, child, targetNode, area, enlargement, minArea, minEnlargement;
+ var i3, len, child, targetNode, area, enlargement, minArea, minEnlargement;
while (true) {
path.push(node);
if (node.leaf || path.length - 1 === level)
break;
minArea = minEnlargement = Infinity;
- for (i2 = 0, len = node.children.length; i2 < len; i2++) {
- child = node.children[i2];
+ for (i3 = 0, len = node.children.length; i3 < len; i3++) {
+ child = node.children[i3];
area = bboxArea(child);
enlargement = enlargedArea(bbox2, child) - area;
if (enlargement < minEnlargement) {
},
// split overflowed node into two
_split: function(insertPath, level) {
- var node = insertPath[level], M = node.children.length, m = this._minEntries;
- this._chooseSplitAxis(node, m, M);
- var splitIndex = this._chooseSplitIndex(node, m, M);
+ var node = insertPath[level], M2 = node.children.length, m2 = this._minEntries;
+ this._chooseSplitAxis(node, m2, M2);
+ var splitIndex = this._chooseSplitIndex(node, m2, M2);
var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));
newNode.height = node.height;
newNode.leaf = node.leaf;
this.data.leaf = false;
calcBBox(this.data, this.toBBox);
},
- _chooseSplitIndex: function(node, m, M) {
- var i2, bbox1, bbox2, overlap, area, minOverlap, minArea, index;
+ _chooseSplitIndex: function(node, m2, M2) {
+ var i3, bbox1, bbox2, overlap, area, minOverlap, minArea, index;
minOverlap = minArea = Infinity;
- for (i2 = m; i2 <= M - m; i2++) {
- bbox1 = distBBox(node, 0, i2, this.toBBox);
- bbox2 = distBBox(node, i2, M, this.toBBox);
+ for (i3 = m2; i3 <= M2 - m2; i3++) {
+ bbox1 = distBBox(node, 0, i3, this.toBBox);
+ bbox2 = distBBox(node, i3, M2, this.toBBox);
overlap = intersectionArea(bbox1, bbox2);
area = bboxArea(bbox1) + bboxArea(bbox2);
if (overlap < minOverlap) {
minOverlap = overlap;
- index = i2;
+ index = i3;
minArea = area < minArea ? area : minArea;
} else if (overlap === minOverlap) {
if (area < minArea) {
minArea = area;
- index = i2;
+ index = i3;
}
}
}
return index;
},
// sorts node children by the best axis for split
- _chooseSplitAxis: function(node, m, M) {
- var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX, compareMinY = node.leaf ? this.compareMinY : compareNodeMinY, xMargin = this._allDistMargin(node, m, M, compareMinX), yMargin = this._allDistMargin(node, m, M, compareMinY);
+ _chooseSplitAxis: function(node, m2, M2) {
+ var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX, compareMinY = node.leaf ? this.compareMinY : compareNodeMinY, xMargin = this._allDistMargin(node, m2, M2, compareMinX), yMargin = this._allDistMargin(node, m2, M2, compareMinY);
if (xMargin < yMargin)
node.children.sort(compareMinX);
},
// total margin of all possible split distributions where each node is at least m full
- _allDistMargin: function(node, m, M, compare) {
+ _allDistMargin: function(node, m2, M2, compare) {
node.children.sort(compare);
- var toBBox = this.toBBox, leftBBox = distBBox(node, 0, m, toBBox), rightBBox = distBBox(node, M - m, M, toBBox), margin = bboxMargin(leftBBox) + bboxMargin(rightBBox), i2, child;
- for (i2 = m; i2 < M - m; i2++) {
- child = node.children[i2];
+ var toBBox = this.toBBox, leftBBox = distBBox(node, 0, m2, toBBox), rightBBox = distBBox(node, M2 - m2, M2, toBBox), margin = bboxMargin(leftBBox) + bboxMargin(rightBBox), i3, child;
+ for (i3 = m2; i3 < M2 - m2; i3++) {
+ child = node.children[i3];
extend2(leftBBox, node.leaf ? toBBox(child) : child);
margin += bboxMargin(leftBBox);
}
- for (i2 = M - m - 1; i2 >= m; i2--) {
- child = node.children[i2];
+ for (i3 = M2 - m2 - 1; i3 >= m2; i3--) {
+ child = node.children[i3];
extend2(rightBBox, node.leaf ? toBBox(child) : child);
margin += bboxMargin(rightBBox);
}
return margin;
},
_adjustParentBBoxes: function(bbox2, path, level) {
- for (var i2 = level; i2 >= 0; i2--) {
- extend2(path[i2], bbox2);
+ for (var i3 = level; i3 >= 0; i3--) {
+ extend2(path[i3], bbox2);
}
},
_condense: function(path) {
- for (var i2 = path.length - 1, siblings; i2 >= 0; i2--) {
- if (path[i2].children.length === 0) {
- if (i2 > 0) {
- siblings = path[i2 - 1].children;
- siblings.splice(siblings.indexOf(path[i2]), 1);
+ for (var i3 = path.length - 1, siblings; i3 >= 0; i3--) {
+ if (path[i3].children.length === 0) {
+ if (i3 > 0) {
+ siblings = path[i3 - 1].children;
+ siblings.splice(siblings.indexOf(path[i3]), 1);
} else
this.clear();
} else
- calcBBox(path[i2], this.toBBox);
+ calcBBox(path[i3], this.toBBox);
}
},
_initFormat: function(format2) {
function findItem(item, items, equalsFn) {
if (!equalsFn)
return items.indexOf(item);
- for (var i2 = 0; i2 < items.length; i2++) {
- if (equalsFn(item, items[i2]))
- return i2;
+ for (var i3 = 0; i3 < items.length; i3++) {
+ if (equalsFn(item, items[i3]))
+ return i3;
}
return -1;
}
function calcBBox(node, toBBox) {
distBBox(node, 0, node.children.length, toBBox, node);
}
- function distBBox(node, k, p, toBBox, destNode) {
+ function distBBox(node, k2, p2, toBBox, destNode) {
if (!destNode)
destNode = createNode(null);
destNode.minX = Infinity;
destNode.minY = Infinity;
destNode.maxX = -Infinity;
destNode.maxY = -Infinity;
- for (var i2 = k, child; i2 < p; i2++) {
- child = node.children[i2];
+ for (var i3 = k2, child; i3 < p2; i3++) {
+ child = node.children[i3];
extend2(destNode, node.leaf ? toBBox(child) : child);
}
return destNode;
}
- function extend2(a, b) {
- a.minX = Math.min(a.minX, b.minX);
- a.minY = Math.min(a.minY, b.minY);
- a.maxX = Math.max(a.maxX, b.maxX);
- a.maxY = Math.max(a.maxY, b.maxY);
- return a;
+ function extend2(a2, b2) {
+ a2.minX = Math.min(a2.minX, b2.minX);
+ a2.minY = Math.min(a2.minY, b2.minY);
+ a2.maxX = Math.max(a2.maxX, b2.maxX);
+ a2.maxY = Math.max(a2.maxY, b2.maxY);
+ return a2;
}
- function compareNodeMinX(a, b) {
- return a.minX - b.minX;
+ function compareNodeMinX(a2, b2) {
+ return a2.minX - b2.minX;
}
- function compareNodeMinY(a, b) {
- return a.minY - b.minY;
+ function compareNodeMinY(a2, b2) {
+ return a2.minY - b2.minY;
}
- function bboxArea(a) {
- return (a.maxX - a.minX) * (a.maxY - a.minY);
+ function bboxArea(a2) {
+ return (a2.maxX - a2.minX) * (a2.maxY - a2.minY);
}
- function bboxMargin(a) {
- return a.maxX - a.minX + (a.maxY - a.minY);
+ function bboxMargin(a2) {
+ return a2.maxX - a2.minX + (a2.maxY - a2.minY);
}
- function enlargedArea(a, b) {
- return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) * (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));
+ function enlargedArea(a2, b2) {
+ return (Math.max(b2.maxX, a2.maxX) - Math.min(b2.minX, a2.minX)) * (Math.max(b2.maxY, a2.maxY) - Math.min(b2.minY, a2.minY));
}
- function intersectionArea(a, b) {
- var minX = Math.max(a.minX, b.minX), minY = Math.max(a.minY, b.minY), maxX = Math.min(a.maxX, b.maxX), maxY = Math.min(a.maxY, b.maxY);
+ function intersectionArea(a2, b2) {
+ var minX = Math.max(a2.minX, b2.minX), minY = Math.max(a2.minY, b2.minY), maxX = Math.min(a2.maxX, b2.maxX), maxY = Math.min(a2.maxY, b2.maxY);
return Math.max(0, maxX - minX) * Math.max(0, maxY - minY);
}
- function contains(a, b) {
- return a.minX <= b.minX && a.minY <= b.minY && b.maxX <= a.maxX && b.maxY <= a.maxY;
+ function contains(a2, b2) {
+ return a2.minX <= b2.minX && a2.minY <= b2.minY && b2.maxX <= a2.maxX && b2.maxY <= a2.maxY;
}
- function intersects(a, b) {
- return b.minX <= a.maxX && b.minY <= a.maxY && b.maxX >= a.minX && b.maxY >= a.minY;
+ function intersects(a2, b2) {
+ return b2.minX <= a2.maxX && b2.minY <= a2.maxY && b2.maxX >= a2.minX && b2.maxY >= a2.minY;
}
function createNode(children2) {
return {
maxY: -Infinity
};
}
- function multiSelect(arr, left, right, n2, compare) {
+ function multiSelect(arr, left, right, n3, compare) {
var stack = [left, right], mid;
while (stack.length) {
right = stack.pop();
left = stack.pop();
- if (right - left <= n2)
+ if (right - left <= n3)
continue;
- mid = left + Math.ceil((right - left) / n2 / 2) * n2;
+ mid = left + Math.ceil((right - left) / n3 / 2) * n3;
quickselect2(arr, mid, left, right, compare);
stack.push(left, mid, mid, right);
}
lineclip2.polyline = lineclip2;
lineclip2.polygon = polygonclip2;
function lineclip2(points, bbox2, result) {
- var len = points.length, codeA = bitCode2(points[0], bbox2), part = [], i2, a, b, codeB, lastCode;
+ var len = points.length, codeA = bitCode2(points[0], bbox2), part = [], i3, a2, b2, codeB, lastCode;
if (!result)
result = [];
- for (i2 = 1; i2 < len; i2++) {
- a = points[i2 - 1];
- b = points[i2];
- codeB = lastCode = bitCode2(b, bbox2);
+ for (i3 = 1; i3 < len; i3++) {
+ a2 = points[i3 - 1];
+ b2 = points[i3];
+ codeB = lastCode = bitCode2(b2, bbox2);
while (true) {
if (!(codeA | codeB)) {
- part.push(a);
+ part.push(a2);
if (codeB !== lastCode) {
- part.push(b);
- if (i2 < len - 1) {
+ part.push(b2);
+ if (i3 < len - 1) {
result.push(part);
part = [];
}
- } else if (i2 === len - 1) {
- part.push(b);
+ } else if (i3 === len - 1) {
+ part.push(b2);
}
break;
} else if (codeA & codeB) {
break;
} else if (codeA) {
- a = intersect2(a, b, codeA, bbox2);
- codeA = bitCode2(a, bbox2);
+ a2 = intersect2(a2, b2, codeA, bbox2);
+ codeA = bitCode2(a2, bbox2);
} else {
- b = intersect2(a, b, codeB, bbox2);
- codeB = bitCode2(b, bbox2);
+ b2 = intersect2(a2, b2, codeB, bbox2);
+ codeB = bitCode2(b2, bbox2);
}
}
codeA = lastCode;
return result;
}
function polygonclip2(points, bbox2) {
- var result, edge, prev, prevInside, i2, p, inside;
+ var result, edge, prev, prevInside, i3, p2, inside;
for (edge = 1; edge <= 8; edge *= 2) {
result = [];
prev = points[points.length - 1];
prevInside = !(bitCode2(prev, bbox2) & edge);
- for (i2 = 0; i2 < points.length; i2++) {
- p = points[i2];
- inside = !(bitCode2(p, bbox2) & edge);
+ for (i3 = 0; i3 < points.length; i3++) {
+ p2 = points[i3];
+ inside = !(bitCode2(p2, bbox2) & edge);
if (inside !== prevInside)
- result.push(intersect2(prev, p, edge, bbox2));
+ result.push(intersect2(prev, p2, edge, bbox2));
if (inside)
- result.push(p);
- prev = p;
+ result.push(p2);
+ prev = p2;
prevInside = inside;
}
points = result;
}
return result;
}
- function intersect2(a, b, edge, bbox2) {
- return edge & 8 ? [a[0] + (b[0] - a[0]) * (bbox2[3] - a[1]) / (b[1] - a[1]), bbox2[3]] : (
+ function intersect2(a2, b2, edge, bbox2) {
+ return edge & 8 ? [a2[0] + (b2[0] - a2[0]) * (bbox2[3] - a2[1]) / (b2[1] - a2[1]), bbox2[3]] : (
// top
- edge & 4 ? [a[0] + (b[0] - a[0]) * (bbox2[1] - a[1]) / (b[1] - a[1]), bbox2[1]] : (
+ edge & 4 ? [a2[0] + (b2[0] - a2[0]) * (bbox2[1] - a2[1]) / (b2[1] - a2[1]), bbox2[1]] : (
// bottom
- edge & 2 ? [bbox2[2], a[1] + (b[1] - a[1]) * (bbox2[2] - a[0]) / (b[0] - a[0])] : (
+ edge & 2 ? [bbox2[2], a2[1] + (b2[1] - a2[1]) * (bbox2[2] - a2[0]) / (b2[0] - a2[0])] : (
// right
- edge & 1 ? [bbox2[0], a[1] + (b[1] - a[1]) * (bbox2[0] - a[0]) / (b[0] - a[0])] : (
+ edge & 1 ? [bbox2[0], a2[1] + (b2[1] - a2[1]) * (bbox2[0] - a2[0]) / (b2[0] - a2[0])] : (
// left
null
)
)
);
}
- function bitCode2(p, bbox2) {
+ function bitCode2(p2, bbox2) {
var code = 0;
- if (p[0] < bbox2[0])
+ if (p2[0] < bbox2[0])
code |= 1;
- else if (p[0] > bbox2[2])
+ else if (p2[0] > bbox2[2])
code |= 2;
- if (p[1] < bbox2[1])
+ if (p2[1] < bbox2[1])
code |= 4;
- else if (p[1] > bbox2[3])
+ else if (p2[1] > bbox2[3])
code |= 8;
return code;
}
module2.exports = whichPolygon5;
function whichPolygon5(data) {
var bboxes = [];
- for (var i2 = 0; i2 < data.features.length; i2++) {
- var feature3 = data.features[i2];
+ for (var i3 = 0; i3 < data.features.length; i3++) {
+ var feature3 = data.features[i3];
+ if (!feature3.geometry)
+ continue;
var coords = feature3.geometry.coordinates;
if (feature3.geometry.type === "Polygon") {
bboxes.push(treeItem(coords, feature3.properties));
} else if (feature3.geometry.type === "MultiPolygon") {
- for (var j2 = 0; j2 < coords.length; j2++) {
- bboxes.push(treeItem(coords[j2], feature3.properties));
+ for (var j3 = 0; j3 < coords.length; j3++) {
+ bboxes.push(treeItem(coords[j3], feature3.properties));
}
}
}
var tree = rbush().load(bboxes);
- function query(p, multi) {
+ function query(p2, multi) {
var output = [], result = tree.search({
- minX: p[0],
- minY: p[1],
- maxX: p[0],
- maxY: p[1]
+ minX: p2[0],
+ minY: p2[1],
+ maxX: p2[0],
+ maxY: p2[1]
});
- for (var i3 = 0; i3 < result.length; i3++) {
- if (insidePolygon(result[i3].coords, p)) {
+ for (var i4 = 0; i4 < result.length; i4++) {
+ if (insidePolygon(result[i4].coords, p2)) {
if (multi)
- output.push(result[i3].props);
+ output.push(result[i4].props);
else
- return result[i3].props;
+ return result[i4].props;
}
}
return multi && output.length ? output : null;
maxX: bbox2[2],
maxY: bbox2[3]
});
- for (var i3 = 0; i3 < result.length; i3++) {
- if (polygonIntersectsBBox(result[i3].coords, bbox2)) {
- output.push(result[i3].props);
+ for (var i4 = 0; i4 < result.length; i4++) {
+ if (polygonIntersectsBBox(result[i4].coords, bbox2)) {
+ output.push(result[i4].props);
}
}
return output;
];
if (insidePolygon(polygon2, bboxCenter))
return true;
- for (var i2 = 0; i2 < polygon2.length; i2++) {
- if (lineclip2(polygon2[i2], bbox2).length > 0)
+ for (var i3 = 0; i3 < polygon2.length; i3++) {
+ if (lineclip2(polygon2[i3], bbox2).length > 0)
return true;
}
return false;
}
- function insidePolygon(rings, p) {
+ function insidePolygon(rings, p2) {
var inside = false;
- for (var i2 = 0, len = rings.length; i2 < len; i2++) {
- var ring = rings[i2];
- for (var j2 = 0, len2 = ring.length, k = len2 - 1; j2 < len2; k = j2++) {
- if (rayIntersect(p, ring[j2], ring[k]))
+ for (var i3 = 0, len = rings.length; i3 < len; i3++) {
+ var ring = rings[i3];
+ for (var j3 = 0, len2 = ring.length, k2 = len2 - 1; j3 < len2; k2 = j3++) {
+ if (rayIntersect(p2, ring[j3], ring[k2]))
inside = !inside;
}
}
return inside;
}
- function rayIntersect(p, p1, p2) {
- return p1[1] > p[1] !== p2[1] > p[1] && p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0];
+ function rayIntersect(p2, p1, p22) {
+ return p1[1] > p2[1] !== p22[1] > p2[1] && p2[0] < (p22[0] - p1[0]) * (p2[1] - p1[1]) / (p22[1] - p1[1]) + p1[0];
}
function treeItem(coords, props) {
var item = {
coords,
props
};
- for (var i2 = 0; i2 < coords[0].length; i2++) {
- var p = coords[0][i2];
- item.minX = Math.min(item.minX, p[0]);
- item.minY = Math.min(item.minY, p[1]);
- item.maxX = Math.max(item.maxX, p[0]);
- item.maxY = Math.max(item.maxY, p[1]);
+ for (var i3 = 0; i3 < coords[0].length; i3++) {
+ var p2 = coords[0][i3];
+ item.minX = Math.min(item.minX, p2[0]);
+ item.minY = Math.min(item.minY, p2[1]);
+ item.maxX = Math.max(item.maxX, p2[0]);
+ item.maxY = Math.max(item.maxY, p2[1]);
}
return item;
}
var wgs84 = require_wgs84();
module2.exports.geometry = geometry;
module2.exports.ring = ringArea;
- function geometry(_) {
- var area = 0, i2;
- switch (_.type) {
+ function geometry(_2) {
+ var area = 0, i3;
+ switch (_2.type) {
case "Polygon":
- return polygonArea(_.coordinates);
+ return polygonArea(_2.coordinates);
case "MultiPolygon":
- for (i2 = 0; i2 < _.coordinates.length; i2++) {
- area += polygonArea(_.coordinates[i2]);
+ for (i3 = 0; i3 < _2.coordinates.length; i3++) {
+ area += polygonArea(_2.coordinates[i3]);
}
return area;
case "Point":
case "MultiLineString":
return 0;
case "GeometryCollection":
- for (i2 = 0; i2 < _.geometries.length; i2++) {
- area += geometry(_.geometries[i2]);
+ for (i3 = 0; i3 < _2.geometries.length; i3++) {
+ area += geometry(_2.geometries[i3]);
}
return area;
}
var area = 0;
if (coords && coords.length > 0) {
area += Math.abs(ringArea(coords[0]));
- for (var i2 = 1; i2 < coords.length; i2++) {
- area -= Math.abs(ringArea(coords[i2]));
+ for (var i3 = 1; i3 < coords.length; i3++) {
+ area -= Math.abs(ringArea(coords[i3]));
}
}
return area;
}
function ringArea(coords) {
- var p1, p2, p3, lowerIndex, middleIndex, upperIndex, i2, area = 0, coordsLength = coords.length;
+ var p1, p2, p3, lowerIndex, middleIndex, upperIndex, i3, area = 0, coordsLength = coords.length;
if (coordsLength > 2) {
- for (i2 = 0; i2 < coordsLength; i2++) {
- if (i2 === coordsLength - 2) {
+ for (i3 = 0; i3 < coordsLength; i3++) {
+ if (i3 === coordsLength - 2) {
lowerIndex = coordsLength - 2;
middleIndex = coordsLength - 1;
upperIndex = 0;
- } else if (i2 === coordsLength - 1) {
+ } else if (i3 === coordsLength - 1) {
lowerIndex = coordsLength - 1;
middleIndex = 0;
upperIndex = 1;
} else {
- lowerIndex = i2;
- middleIndex = i2 + 1;
- upperIndex = i2 + 2;
+ lowerIndex = i3;
+ middleIndex = i3 + 1;
+ upperIndex = i3 + 2;
}
p1 = coords[lowerIndex];
p2 = coords[middleIndex];
}
return area;
}
- function rad(_) {
- return _ * Math.PI / 180;
+ function rad(_2) {
+ return _2 * Math.PI / 180;
}
}
});
return [toDegrees(lon), toDegrees(lat)];
}
module2.exports = function circleToPolygon2(center, radius, options2) {
- var n2 = getNumberOfEdges(options2);
+ var n3 = getNumberOfEdges(options2);
var earthRadius2 = getEarthRadius(options2);
var bearing = getBearing(options2);
var direction = getDirection(options2);
- validateInput({ center, radius, numberOfEdges: n2, earthRadius: earthRadius2, bearing });
+ validateInput({ center, radius, numberOfEdges: n3, earthRadius: earthRadius2, bearing });
var start2 = toRadians(bearing);
var coordinates = [];
- for (var i2 = 0; i2 < n2; ++i2) {
+ for (var i3 = 0; i3 < n3; ++i3) {
coordinates.push(
offset(
center,
radius,
earthRadius2,
- start2 + direction * 2 * Math.PI * -i2 / n2
+ start2 + direction * 2 * Math.PI * -i3 / n3
)
);
}
// node_modules/polygon-clipping/dist/polygon-clipping.umd.js
var require_polygon_clipping_umd = __commonJS({
"node_modules/polygon-clipping/dist/polygon-clipping.umd.js"(exports2, module2) {
- (function(global3, factory) {
- typeof exports2 === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global3 = typeof globalThis !== "undefined" ? globalThis : global3 || self, global3.polygonClipping = factory());
+ (function(global2, factory) {
+ typeof exports2 === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.polygonClipping = factory());
})(exports2, function() {
"use strict";
function _classCallCheck(instance, Constructor) {
}
}
function _defineProperties(target, props) {
- for (var i2 = 0; i2 < props.length; i2++) {
- var descriptor = props[i2];
+ for (var i3 = 0; i3 < props.length; i3++) {
+ var descriptor = props[i3];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor)
return Node2;
}()
);
- function DEFAULT_COMPARE(a, b) {
- return a > b ? 1 : a < b ? -1 : 0;
+ function DEFAULT_COMPARE(a2, b2) {
+ return a2 > b2 ? 1 : a2 < b2 ? -1 : 0;
}
- function splay(i2, t, comparator) {
- var N = new Node(null, null);
- var l = N;
- var r = N;
+ function splay(i3, t2, comparator) {
+ var N2 = new Node(null, null);
+ var l2 = N2;
+ var r2 = N2;
while (true) {
- var cmp2 = comparator(i2, t.key);
+ var cmp2 = comparator(i3, t2.key);
if (cmp2 < 0) {
- if (t.left === null)
+ if (t2.left === null)
break;
- if (comparator(i2, t.left.key) < 0) {
- var y = t.left;
- t.left = y.right;
- y.right = t;
- t = y;
- if (t.left === null)
+ if (comparator(i3, t2.left.key) < 0) {
+ var y2 = t2.left;
+ t2.left = y2.right;
+ y2.right = t2;
+ t2 = y2;
+ if (t2.left === null)
break;
}
- r.left = t;
- r = t;
- t = t.left;
+ r2.left = t2;
+ r2 = t2;
+ t2 = t2.left;
} else if (cmp2 > 0) {
- if (t.right === null)
+ if (t2.right === null)
break;
- if (comparator(i2, t.right.key) > 0) {
- var y = t.right;
- t.right = y.left;
- y.left = t;
- t = y;
- if (t.right === null)
+ if (comparator(i3, t2.right.key) > 0) {
+ var y2 = t2.right;
+ t2.right = y2.left;
+ y2.left = t2;
+ t2 = y2;
+ if (t2.right === null)
break;
}
- l.right = t;
- l = t;
- t = t.right;
+ l2.right = t2;
+ l2 = t2;
+ t2 = t2.right;
} else
break;
}
- l.right = t.left;
- r.left = t.right;
- t.left = N.right;
- t.right = N.left;
- return t;
+ l2.right = t2.left;
+ r2.left = t2.right;
+ t2.left = N2.right;
+ t2.right = N2.left;
+ return t2;
}
- function insert(i2, data, t, comparator) {
- var node = new Node(i2, data);
- if (t === null) {
+ function insert(i3, data, t2, comparator) {
+ var node = new Node(i3, data);
+ if (t2 === null) {
node.left = node.right = null;
return node;
}
- t = splay(i2, t, comparator);
- var cmp2 = comparator(i2, t.key);
+ t2 = splay(i3, t2, comparator);
+ var cmp2 = comparator(i3, t2.key);
if (cmp2 < 0) {
- node.left = t.left;
- node.right = t;
- t.left = null;
+ node.left = t2.left;
+ node.right = t2;
+ t2.left = null;
} else if (cmp2 >= 0) {
- node.right = t.right;
- node.left = t;
- t.right = null;
+ node.right = t2.right;
+ node.left = t2;
+ t2.right = null;
}
return node;
}
- function split(key, v, comparator) {
+ function split(key, v2, comparator) {
var left = null;
var right = null;
- if (v) {
- v = splay(key, v, comparator);
- var cmp2 = comparator(v.key, key);
+ if (v2) {
+ v2 = splay(key, v2, comparator);
+ var cmp2 = comparator(v2.key, key);
if (cmp2 === 0) {
- left = v.left;
- right = v.right;
+ left = v2.left;
+ right = v2.right;
} else if (cmp2 < 0) {
- right = v.right;
- v.right = null;
- left = v;
+ right = v2.right;
+ v2.right = null;
+ left = v2;
} else {
- left = v.left;
- v.left = null;
- right = v;
+ left = v2.left;
+ v2.left = null;
+ right = v2;
}
}
return {
right
};
}
- function merge3(left, right, comparator) {
+ function merge2(left, right, comparator) {
if (right === null)
return left;
if (left === null)
this._root = node;
}
var comparator = this._comparator;
- var t = splay(key, this._root, comparator);
- var cmp2 = comparator(key, t.key);
+ var t2 = splay(key, this._root, comparator);
+ var cmp2 = comparator(key, t2.key);
if (cmp2 === 0)
- this._root = t;
+ this._root = t2;
else {
if (cmp2 < 0) {
- node.left = t.left;
- node.right = t;
- t.left = null;
+ node.left = t2.left;
+ node.right = t2;
+ t2.left = null;
} else if (cmp2 > 0) {
- node.right = t.right;
- node.left = t;
- t.right = null;
+ node.right = t2.right;
+ node.left = t2;
+ t2.right = null;
}
this._size++;
this._root = node;
Tree2.prototype.remove = function(key) {
this._root = this._remove(key, this._root, this._comparator);
};
- Tree2.prototype._remove = function(i2, t, comparator) {
- var x;
- if (t === null)
+ Tree2.prototype._remove = function(i3, t2, comparator) {
+ var x2;
+ if (t2 === null)
return null;
- t = splay(i2, t, comparator);
- var cmp2 = comparator(i2, t.key);
+ t2 = splay(i3, t2, comparator);
+ var cmp2 = comparator(i3, t2.key);
if (cmp2 === 0) {
- if (t.left === null) {
- x = t.right;
+ if (t2.left === null) {
+ x2 = t2.right;
} else {
- x = splay(i2, t.left, comparator);
- x.right = t.right;
+ x2 = splay(i3, t2.left, comparator);
+ x2.right = t2.right;
}
this._size--;
- return x;
+ return x2;
}
- return t;
+ return t2;
};
Tree2.prototype.pop = function() {
var node = this._root;
};
Tree2.prototype.forEach = function(visitor, ctx) {
var current = this._root;
- var Q = [];
+ var Q2 = [];
var done = false;
while (!done) {
if (current !== null) {
- Q.push(current);
+ Q2.push(current);
current = current.left;
} else {
- if (Q.length !== 0) {
- current = Q.pop();
+ if (Q2.length !== 0) {
+ current = Q2.pop();
visitor.call(ctx, current);
current = current.right;
} else
return this;
};
Tree2.prototype.range = function(low, high, fn, ctx) {
- var Q = [];
+ var Q2 = [];
var compare = this._comparator;
var node = this._root;
var cmp2;
- while (Q.length !== 0 || node) {
+ while (Q2.length !== 0 || node) {
if (node) {
- Q.push(node);
+ Q2.push(node);
node = node.left;
} else {
- node = Q.pop();
+ node = Q2.pop();
cmp2 = compare(node.key, high);
if (cmp2 > 0) {
break;
return this;
};
Tree2.prototype.keys = function() {
- var keys = [];
+ var keys2 = [];
this.forEach(function(_a) {
var key = _a.key;
- return keys.push(key);
+ return keys2.push(key);
});
- return keys;
+ return keys2;
};
Tree2.prototype.values = function() {
var values = [];
return this.maxNode(this._root).key;
return null;
};
- Tree2.prototype.minNode = function(t) {
- if (t === void 0) {
- t = this._root;
+ Tree2.prototype.minNode = function(t2) {
+ if (t2 === void 0) {
+ t2 = this._root;
}
- if (t)
- while (t.left) {
- t = t.left;
+ if (t2)
+ while (t2.left) {
+ t2 = t2.left;
}
- return t;
+ return t2;
};
- Tree2.prototype.maxNode = function(t) {
- if (t === void 0) {
- t = this._root;
+ Tree2.prototype.maxNode = function(t2) {
+ if (t2 === void 0) {
+ t2 = this._root;
}
- if (t)
- while (t.right) {
- t = t.right;
+ if (t2)
+ while (t2.right) {
+ t2 = t2.right;
}
- return t;
+ return t2;
};
Tree2.prototype.at = function(index2) {
var current = this._root;
var done = false;
- var i2 = 0;
- var Q = [];
+ var i3 = 0;
+ var Q2 = [];
while (!done) {
if (current) {
- Q.push(current);
+ Q2.push(current);
current = current.left;
} else {
- if (Q.length > 0) {
- current = Q.pop();
- if (i2 === index2)
+ if (Q2.length > 0) {
+ current = Q2.pop();
+ if (i3 === index2)
return current;
- i2++;
+ i3++;
current = current.right;
} else
done = true;
}
return null;
};
- Tree2.prototype.next = function(d) {
+ Tree2.prototype.next = function(d2) {
var root3 = this._root;
var successor = null;
- if (d.right) {
- successor = d.right;
+ if (d2.right) {
+ successor = d2.right;
while (successor.left) {
successor = successor.left;
}
}
var comparator = this._comparator;
while (root3) {
- var cmp2 = comparator(d.key, root3.key);
+ var cmp2 = comparator(d2.key, root3.key);
if (cmp2 === 0)
break;
else if (cmp2 < 0) {
}
return successor;
};
- Tree2.prototype.prev = function(d) {
+ Tree2.prototype.prev = function(d2) {
var root3 = this._root;
var predecessor = null;
- if (d.left !== null) {
- predecessor = d.left;
+ if (d2.left !== null) {
+ predecessor = d2.left;
while (predecessor.right) {
predecessor = predecessor.right;
}
}
var comparator = this._comparator;
while (root3) {
- var cmp2 = comparator(d.key, root3.key);
+ var cmp2 = comparator(d2.key, root3.key);
if (cmp2 === 0)
break;
else if (cmp2 < 0)
Tree2.prototype.toList = function() {
return toList(this._root);
};
- Tree2.prototype.load = function(keys, values, presort) {
+ Tree2.prototype.load = function(keys2, values, presort) {
if (values === void 0) {
values = [];
}
if (presort === void 0) {
presort = false;
}
- var size = keys.length;
+ var size = keys2.length;
var comparator = this._comparator;
if (presort)
- sort(keys, values, 0, size - 1, comparator);
+ sort(keys2, values, 0, size - 1, comparator);
if (this._root === null) {
- this._root = loadRecursive(keys, values, 0, size);
+ this._root = loadRecursive(keys2, values, 0, size);
this._size = size;
} else {
- var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);
+ var mergedList = mergeLists(this.toList(), createList(keys2, values), comparator);
size = this._size + size;
this._root = sortedListToBST({
head: mergedList
});
Tree2.prototype.toString = function(printNode) {
if (printNode === void 0) {
- printNode = function printNode2(n2) {
- return String(n2.key);
+ printNode = function printNode2(n3) {
+ return String(n3.key);
};
}
var out = [];
- printRow(this._root, "", true, function(v) {
- return out.push(v);
+ printRow(this._root, "", true, function(v2) {
+ return out.push(v2);
}, printNode);
return out.join("");
};
} else {
left = insert(newKey, newData, left, comparator);
}
- this._root = merge3(left, right, comparator);
+ this._root = merge2(left, right, comparator);
};
Tree2.prototype.split = function(key) {
return split(key, this._root, this._comparator);
return Tree2;
}()
);
- function loadRecursive(keys, values, start2, end) {
+ function loadRecursive(keys2, values, start2, end) {
var size = end - start2;
if (size > 0) {
var middle = start2 + Math.floor(size / 2);
- var key = keys[middle];
+ var key = keys2[middle];
var data = values[middle];
var node = new Node(key, data);
- node.left = loadRecursive(keys, values, start2, middle);
- node.right = loadRecursive(keys, values, middle + 1, end);
+ node.left = loadRecursive(keys2, values, start2, middle);
+ node.right = loadRecursive(keys2, values, middle + 1, end);
return node;
}
return null;
}
- function createList(keys, values) {
+ function createList(keys2, values) {
var head = new Node(null, null);
- var p = head;
- for (var i2 = 0; i2 < keys.length; i2++) {
- p = p.next = new Node(keys[i2], values[i2]);
+ var p2 = head;
+ for (var i3 = 0; i3 < keys2.length; i3++) {
+ p2 = p2.next = new Node(keys2[i3], values[i3]);
}
- p.next = null;
+ p2.next = null;
return head.next;
}
function toList(root3) {
var current = root3;
- var Q = [];
+ var Q2 = [];
var done = false;
var head = new Node(null, null);
- var p = head;
+ var p2 = head;
while (!done) {
if (current) {
- Q.push(current);
+ Q2.push(current);
current = current.left;
} else {
- if (Q.length > 0) {
- current = p = p.next = Q.pop();
+ if (Q2.length > 0) {
+ current = p2 = p2.next = Q2.pop();
current = current.right;
} else
done = true;
}
}
- p.next = null;
+ p2.next = null;
return head.next;
}
function sortedListToBST(list, start2, end) {
}
function mergeLists(l1, l2, compare) {
var head = new Node(null, null);
- var p = head;
+ var p2 = head;
var p1 = l1;
- var p2 = l2;
- while (p1 !== null && p2 !== null) {
- if (compare(p1.key, p2.key) < 0) {
- p.next = p1;
+ var p22 = l2;
+ while (p1 !== null && p22 !== null) {
+ if (compare(p1.key, p22.key) < 0) {
+ p2.next = p1;
p1 = p1.next;
} else {
- p.next = p2;
- p2 = p2.next;
+ p2.next = p22;
+ p22 = p22.next;
}
- p = p.next;
+ p2 = p2.next;
}
if (p1 !== null) {
- p.next = p1;
- } else if (p2 !== null) {
- p.next = p2;
+ p2.next = p1;
+ } else if (p22 !== null) {
+ p2.next = p22;
}
return head.next;
}
- function sort(keys, values, left, right, compare) {
+ function sort(keys2, values, left, right, compare) {
if (left >= right)
return;
- var pivot = keys[left + right >> 1];
- var i2 = left - 1;
- var j2 = right + 1;
+ var pivot = keys2[left + right >> 1];
+ var i3 = left - 1;
+ var j3 = right + 1;
while (true) {
do {
- i2++;
- } while (compare(keys[i2], pivot) < 0);
+ i3++;
+ } while (compare(keys2[i3], pivot) < 0);
do {
- j2--;
- } while (compare(keys[j2], pivot) > 0);
- if (i2 >= j2)
+ j3--;
+ } while (compare(keys2[j3], pivot) > 0);
+ if (i3 >= j3)
break;
- var tmp = keys[i2];
- keys[i2] = keys[j2];
- keys[j2] = tmp;
- tmp = values[i2];
- values[i2] = values[j2];
- values[j2] = tmp;
+ var tmp = keys2[i3];
+ keys2[i3] = keys2[j3];
+ keys2[j3] = tmp;
+ tmp = values[i3];
+ values[i3] = values[j3];
+ values[j3] = tmp;
}
- sort(keys, values, left, j2, compare);
- sort(keys, values, j2 + 1, right, compare);
+ sort(keys2, values, left, j3, compare);
+ sort(keys2, values, j3 + 1, right, compare);
}
var isInBbox = function isInBbox2(bbox2, point2) {
return bbox2.ll.x <= point2.x && point2.x <= bbox2.ur.x && bbox2.ll.y <= point2.y && point2.y <= bbox2.ur.y;
if (epsilon3 === void 0)
epsilon3 = Math.pow(2, -52);
var EPSILON_SQ = epsilon3 * epsilon3;
- var cmp = function cmp2(a, b) {
- if (-epsilon3 < a && a < epsilon3) {
- if (-epsilon3 < b && b < epsilon3) {
+ var cmp = function cmp2(a2, b2) {
+ if (-epsilon3 < a2 && a2 < epsilon3) {
+ if (-epsilon3 < b2 && b2 < epsilon3) {
return 0;
}
}
- var ab = a - b;
- if (ab * ab < EPSILON_SQ * a * b) {
+ var ab = a2 - b2;
+ if (ab * ab < EPSILON_SQ * a2 * b2) {
return 0;
}
- return a < b ? -1 : 1;
+ return a2 < b2 ? -1 : 1;
};
var PtRounder = /* @__PURE__ */ function() {
function PtRounder2() {
}
}, {
key: "round",
- value: function round(x, y) {
+ value: function round(x2, y2) {
return {
- x: this.xRounder.round(x),
- y: this.yRounder.round(y)
+ x: this.xRounder.round(x2),
+ y: this.yRounder.round(y2)
};
}
}]);
return CoordRounder2;
}();
var rounder = new PtRounder();
- var crossProduct = function crossProduct2(a, b) {
- return a.x * b.y - a.y * b.x;
+ var crossProduct = function crossProduct2(a2, b2) {
+ return a2.x * b2.y - a2.y * b2.x;
};
- var dotProduct = function dotProduct2(a, b) {
- return a.x * b.x + a.y * b.y;
+ var dotProduct = function dotProduct2(a2, b2) {
+ return a2.x * b2.x + a2.y * b2.y;
};
var compareVectorAngles = function compareVectorAngles2(basePt, endPt1, endPt2) {
var v1 = {
var kross = crossProduct(v1, v2);
return cmp(kross, 0);
};
- var length = function length2(v) {
- return Math.sqrt(dotProduct(v, v));
+ var length = function length2(v2) {
+ return Math.sqrt(dotProduct(v2, v2));
};
var sineOfAngle = function sineOfAngle2(pShared, pBase, pAngle) {
var vBase = {
};
return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);
};
- var horizontalIntersection = function horizontalIntersection2(pt, v, y) {
- if (v.y === 0)
+ var horizontalIntersection = function horizontalIntersection2(pt2, v2, y2) {
+ if (v2.y === 0)
return null;
return {
- x: pt.x + v.x / v.y * (y - pt.y),
- y
+ x: pt2.x + v2.x / v2.y * (y2 - pt2.y),
+ y: y2
};
};
- var verticalIntersection = function verticalIntersection2(pt, v, x) {
- if (v.x === 0)
+ var verticalIntersection = function verticalIntersection2(pt2, v2, x2) {
+ if (v2.x === 0)
return null;
return {
- x,
- y: pt.y + v.y / v.x * (x - pt.x)
+ x: x2,
+ y: pt2.y + v2.y / v2.x * (x2 - pt2.x)
};
};
var intersection = function intersection2(pt1, v1, pt2, v2) {
var kross = crossProduct(v1, v2);
if (kross == 0)
return null;
- var ve = {
+ var ve2 = {
x: pt2.x - pt1.x,
y: pt2.y - pt1.y
};
- var d1 = crossProduct(ve, v1) / kross;
- var d2 = crossProduct(ve, v2) / kross;
+ var d1 = crossProduct(ve2, v1) / kross;
+ var d2 = crossProduct(ve2, v2) / kross;
var x12 = pt1.x + d2 * v1.x, x2 = pt2.x + d1 * v2.x;
var y12 = pt1.y + d2 * v1.y, y2 = pt2.y + d1 * v2.y;
- var x = (x12 + x2) / 2;
- var y = (y12 + y2) / 2;
+ var x3 = (x12 + x2) / 2;
+ var y3 = (y12 + y2) / 2;
return {
- x,
- y
+ x: x3,
+ y: y3
};
};
var SweepEvent = /* @__PURE__ */ function() {
_createClass(SweepEvent2, null, [{
key: "compare",
// for ordering sweep events in the sweep event queue
- value: function compare(a, b) {
- var ptCmp = SweepEvent2.comparePoints(a.point, b.point);
+ value: function compare(a2, b2) {
+ var ptCmp = SweepEvent2.comparePoints(a2.point, b2.point);
if (ptCmp !== 0)
return ptCmp;
- if (a.point !== b.point)
- a.link(b);
- if (a.isLeft !== b.isLeft)
- return a.isLeft ? 1 : -1;
- return Segment.compare(a.segment, b.segment);
+ if (a2.point !== b2.point)
+ a2.link(b2);
+ if (a2.isLeft !== b2.isLeft)
+ return a2.isLeft ? 1 : -1;
+ return Segment.compare(a2.segment, b2.segment);
}
// for ordering points in sweep line order
}, {
throw new Error("Tried to link already linked events");
}
var otherEvents = other.point.events;
- for (var i2 = 0, iMax = otherEvents.length; i2 < iMax; i2++) {
- var evt = otherEvents[i2];
+ for (var i3 = 0, iMax = otherEvents.length; i3 < iMax; i3++) {
+ var evt = otherEvents[i3];
this.point.events.push(evt);
evt.point = this.point;
}
key: "checkForConsuming",
value: function checkForConsuming() {
var numEvents = this.point.events.length;
- for (var i2 = 0; i2 < numEvents; i2++) {
- var evt1 = this.point.events[i2];
+ for (var i3 = 0; i3 < numEvents; i3++) {
+ var evt1 = this.point.events[i3];
if (evt1.segment.consumedBy !== void 0)
continue;
- for (var j2 = i2 + 1; j2 < numEvents; j2++) {
- var evt2 = this.point.events[j2];
+ for (var j3 = i3 + 1; j3 < numEvents; j3++) {
+ var evt2 = this.point.events[j3];
if (evt2.consumedBy !== void 0)
continue;
if (evt1.otherSE.point.events !== evt2.otherSE.point.events)
key: "getAvailableLinkedEvents",
value: function getAvailableLinkedEvents() {
var events = [];
- for (var i2 = 0, iMax = this.point.events.length; i2 < iMax; i2++) {
- var evt = this.point.events[i2];
+ for (var i3 = 0, iMax = this.point.events.length; i3 < iMax; i3++) {
+ var evt = this.point.events[i3];
if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {
events.push(evt);
}
cosine: cosineOfAngle(_this.point, baseEvent.point, nextEvent.point)
});
};
- return function(a, b) {
- if (!cache.has(a))
- fillCache(a);
- if (!cache.has(b))
- fillCache(b);
- var _cache$get = cache.get(a), asine = _cache$get.sine, acosine = _cache$get.cosine;
- var _cache$get2 = cache.get(b), bsine = _cache$get2.sine, bcosine = _cache$get2.cosine;
+ return function(a2, b2) {
+ if (!cache.has(a2))
+ fillCache(a2);
+ if (!cache.has(b2))
+ fillCache(b2);
+ var _cache$get = cache.get(a2), asine = _cache$get.sine, acosine = _cache$get.cosine;
+ var _cache$get2 = cache.get(b2), bsine = _cache$get2.sine, bcosine = _cache$get2.cosine;
if (asine >= 0 && bsine >= 0) {
if (acosine < bcosine)
return 1;
* or more of the segments are vertical) then the line to be considered
* is directly on the right-more of the two left inputs.
*/
- value: function compare(a, b) {
- var alx = a.leftSE.point.x;
- var blx = b.leftSE.point.x;
- var arx = a.rightSE.point.x;
- var brx = b.rightSE.point.x;
+ value: function compare(a2, b2) {
+ var alx = a2.leftSE.point.x;
+ var blx = b2.leftSE.point.x;
+ var arx = a2.rightSE.point.x;
+ var brx = b2.rightSE.point.x;
if (brx < alx)
return 1;
if (arx < blx)
return -1;
- var aly = a.leftSE.point.y;
- var bly = b.leftSE.point.y;
- var ary = a.rightSE.point.y;
- var bry = b.rightSE.point.y;
+ var aly = a2.leftSE.point.y;
+ var bly = b2.leftSE.point.y;
+ var ary = a2.rightSE.point.y;
+ var bry = b2.rightSE.point.y;
if (alx < blx) {
if (bly < aly && bly < ary)
return 1;
if (bly > aly && bly > ary)
return -1;
- var aCmpBLeft = a.comparePoint(b.leftSE.point);
+ var aCmpBLeft = a2.comparePoint(b2.leftSE.point);
if (aCmpBLeft < 0)
return 1;
if (aCmpBLeft > 0)
return -1;
- var bCmpARight = b.comparePoint(a.rightSE.point);
+ var bCmpARight = b2.comparePoint(a2.rightSE.point);
if (bCmpARight !== 0)
return bCmpARight;
return -1;
return -1;
if (aly > bly && aly > bry)
return 1;
- var bCmpALeft = b.comparePoint(a.leftSE.point);
+ var bCmpALeft = b2.comparePoint(a2.leftSE.point);
if (bCmpALeft !== 0)
return bCmpALeft;
- var aCmpBRight = a.comparePoint(b.rightSE.point);
+ var aCmpBRight = a2.comparePoint(b2.rightSE.point);
if (aCmpBRight < 0)
return 1;
if (aCmpBRight > 0)
if (aly > bly)
return 1;
if (arx < brx) {
- var _bCmpARight = b.comparePoint(a.rightSE.point);
+ var _bCmpARight = b2.comparePoint(a2.rightSE.point);
if (_bCmpARight !== 0)
return _bCmpARight;
}
if (arx > brx) {
- var _aCmpBRight = a.comparePoint(b.rightSE.point);
+ var _aCmpBRight = a2.comparePoint(b2.rightSE.point);
if (_aCmpBRight < 0)
return 1;
if (_aCmpBRight > 0)
return -1;
if (ary > bry)
return 1;
- if (a.id < b.id)
+ if (a2.id < b2.id)
return -1;
- if (a.id > b.id)
+ if (a2.id > b2.id)
return 1;
return 0;
}
}
}, {
key: "isAnEndpoint",
- value: function isAnEndpoint(pt) {
- return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;
+ value: function isAnEndpoint(pt2) {
+ return pt2.x === this.leftSE.point.x && pt2.y === this.leftSE.point.y || pt2.x === this.rightSE.point.x && pt2.y === this.rightSE.point.y;
}
/* Compare this segment with a point.
*
return 0;
var lPt = this.leftSE.point;
var rPt = this.rightSE.point;
- var v = this.vector();
+ var v2 = this.vector();
if (lPt.x === rPt.x) {
if (point2.x === lPt.x)
return 0;
return point2.x < lPt.x ? 1 : -1;
}
- var yDist = (point2.y - lPt.y) / v.y;
- var xFromYDist = lPt.x + yDist * v.x;
+ var yDist = (point2.y - lPt.y) / v2.y;
+ var xFromYDist = lPt.x + yDist * v2.x;
if (point2.x === xFromYDist)
return 0;
- var xDist = (point2.x - lPt.x) / v.x;
- var yFromXDist = lPt.y + xDist * v.y;
+ var xDist = (point2.x - lPt.x) / v2.x;
+ var yFromXDist = lPt.y + xDist * v2.y;
if (point2.y === yFromXDist)
return 0;
return point2.y < yFromXDist ? -1 : 1;
return trp;
if (touchesOtherRSE)
return orp;
- var pt = intersection(tlp, this.vector(), olp, other.vector());
- if (pt === null)
+ var pt2 = intersection(tlp, this.vector(), olp, other.vector());
+ if (pt2 === null)
return null;
- if (!isInBbox(bboxOverlap, pt))
+ if (!isInBbox(bboxOverlap, pt2))
return null;
- return rounder.round(pt.x, pt.y);
+ return rounder.round(pt2.x, pt2.y);
}
/**
* Split the given segment into multiple segments on the given points.
this.leftSE = tmpEvt;
this.leftSE.isLeft = true;
this.rightSE.isLeft = false;
- for (var i2 = 0, iMax = this.windings.length; i2 < iMax; i2++) {
- this.windings[i2] *= -1;
+ for (var i3 = 0, iMax = this.windings.length; i3 < iMax; i3++) {
+ this.windings[i3] *= -1;
}
}
/* Consume another segment. We take their rings under our wing
consumer = consumee;
consumee = _tmp;
}
- for (var i2 = 0, iMax = consumee.rings.length; i2 < iMax; i2++) {
- var ring = consumee.rings[i2];
- var winding = consumee.windings[i2];
+ for (var i3 = 0, iMax = consumee.rings.length; i3 < iMax; i3++) {
+ var ring = consumee.rings[i3];
+ var winding = consumee.windings[i3];
var index2 = consumer.rings.indexOf(ring);
if (index2 === -1) {
consumer.rings.push(ring);
var ringsAfter = this._afterState.rings;
var windingsAfter = this._afterState.windings;
var mpsAfter = this._afterState.multiPolys;
- for (var i2 = 0, iMax = this.rings.length; i2 < iMax; i2++) {
- var ring = this.rings[i2];
- var winding = this.windings[i2];
+ for (var i3 = 0, iMax = this.rings.length; i3 < iMax; i3++) {
+ var ring = this.rings[i3];
+ var winding = this.windings[i3];
var index2 = ringsAfter.indexOf(ring);
if (index2 === -1) {
ringsAfter.push(ring);
}
};
var prevPoint = firstPoint;
- for (var i2 = 1, iMax = geomRing.length; i2 < iMax; i2++) {
- if (typeof geomRing[i2][0] !== "number" || typeof geomRing[i2][1] !== "number") {
+ for (var i3 = 1, iMax = geomRing.length; i3 < iMax; i3++) {
+ if (typeof geomRing[i3][0] !== "number" || typeof geomRing[i3][1] !== "number") {
throw new Error("Input geometry is not a valid Polygon or MultiPolygon");
}
- var point2 = rounder.round(geomRing[i2][0], geomRing[i2][1]);
+ var point2 = rounder.round(geomRing[i3][0], geomRing[i3][1]);
if (point2.x === prevPoint.x && point2.y === prevPoint.y)
continue;
this.segments.push(Segment.fromRing(prevPoint, point2, this));
key: "getSweepEvents",
value: function getSweepEvents() {
var sweepEvents = [];
- for (var i2 = 0, iMax = this.segments.length; i2 < iMax; i2++) {
- var segment = this.segments[i2];
+ for (var i3 = 0, iMax = this.segments.length; i3 < iMax; i3++) {
+ var segment = this.segments[i3];
sweepEvents.push(segment.leftSE);
sweepEvents.push(segment.rightSE);
}
}
};
this.interiorRings = [];
- for (var i2 = 1, iMax = geomPoly.length; i2 < iMax; i2++) {
- var ring = new RingIn(geomPoly[i2], this, false);
+ for (var i3 = 1, iMax = geomPoly.length; i3 < iMax; i3++) {
+ var ring = new RingIn(geomPoly[i3], this, false);
if (ring.bbox.ll.x < this.bbox.ll.x)
this.bbox.ll.x = ring.bbox.ll.x;
if (ring.bbox.ll.y < this.bbox.ll.y)
key: "getSweepEvents",
value: function getSweepEvents() {
var sweepEvents = this.exteriorRing.getSweepEvents();
- for (var i2 = 0, iMax = this.interiorRings.length; i2 < iMax; i2++) {
- var ringSweepEvents = this.interiorRings[i2].getSweepEvents();
- for (var j2 = 0, jMax = ringSweepEvents.length; j2 < jMax; j2++) {
- sweepEvents.push(ringSweepEvents[j2]);
+ for (var i3 = 0, iMax = this.interiorRings.length; i3 < iMax; i3++) {
+ var ringSweepEvents = this.interiorRings[i3].getSweepEvents();
+ for (var j3 = 0, jMax = ringSweepEvents.length; j3 < jMax; j3++) {
+ sweepEvents.push(ringSweepEvents[j3]);
}
}
return sweepEvents;
y: Number.NEGATIVE_INFINITY
}
};
- for (var i2 = 0, iMax = geom.length; i2 < iMax; i2++) {
- var poly = new PolyIn(geom[i2], this);
+ for (var i3 = 0, iMax = geom.length; i3 < iMax; i3++) {
+ var poly = new PolyIn(geom[i3], this);
if (poly.bbox.ll.x < this.bbox.ll.x)
this.bbox.ll.x = poly.bbox.ll.x;
if (poly.bbox.ll.y < this.bbox.ll.y)
key: "getSweepEvents",
value: function getSweepEvents() {
var sweepEvents = [];
- for (var i2 = 0, iMax = this.polys.length; i2 < iMax; i2++) {
- var polySweepEvents = this.polys[i2].getSweepEvents();
- for (var j2 = 0, jMax = polySweepEvents.length; j2 < jMax; j2++) {
- sweepEvents.push(polySweepEvents[j2]);
+ for (var i3 = 0, iMax = this.polys.length; i3 < iMax; i3++) {
+ var polySweepEvents = this.polys[i3].getSweepEvents();
+ for (var j3 = 0, jMax = polySweepEvents.length; j3 < jMax; j3++) {
+ sweepEvents.push(polySweepEvents[j3]);
}
}
return sweepEvents;
* of closed rings from all the segments marked to be part of the result */
value: function factory(allSegments) {
var ringsOut = [];
- for (var i2 = 0, iMax = allSegments.length; i2 < iMax; i2++) {
- var segment = allSegments[i2];
+ for (var i3 = 0, iMax = allSegments.length; i3 < iMax; i3++) {
+ var segment = allSegments[i3];
if (!segment.isInResult() || segment.ringOut)
continue;
var prevEvent = null;
break;
}
var indexLE = null;
- for (var j2 = 0, jMax = intersectionLEs.length; j2 < jMax; j2++) {
- if (intersectionLEs[j2].point === event.point) {
- indexLE = j2;
+ for (var j3 = 0, jMax = intersectionLEs.length; j3 < jMax; j3++) {
+ if (intersectionLEs[j3].point === event.point) {
+ indexLE = j3;
break;
}
}
function RingOut2(events) {
_classCallCheck(this, RingOut2);
this.events = events;
- for (var i2 = 0, iMax = events.length; i2 < iMax; i2++) {
- events[i2].segment.ringOut = this;
+ for (var i3 = 0, iMax = events.length; i3 < iMax; i3++) {
+ events[i3].segment.ringOut = this;
}
this.poly = null;
}
value: function getGeom2() {
var prevPt = this.events[0].point;
var points = [prevPt];
- for (var i2 = 1, iMax = this.events.length - 1; i2 < iMax; i2++) {
- var _pt = this.events[i2].point;
- var _nextPt = this.events[i2 + 1].point;
+ for (var i3 = 1, iMax = this.events.length - 1; i3 < iMax; i3++) {
+ var _pt = this.events[i3].point;
+ var _nextPt = this.events[i3 + 1].point;
if (compareVectorAngles(_pt, prevPt, _nextPt) === 0)
continue;
points.push(_pt);
}
if (points.length === 1)
return null;
- var pt = points[0];
+ var pt2 = points[0];
var nextPt = points[1];
- if (compareVectorAngles(pt, prevPt, nextPt) === 0)
+ if (compareVectorAngles(pt2, prevPt, nextPt) === 0)
points.shift();
points.push(points[0]);
var step = this.isExteriorRing() ? 1 : -1;
key: "_calcEnclosingRing",
value: function _calcEnclosingRing() {
var leftMostEvt = this.events[0];
- for (var i2 = 1, iMax = this.events.length; i2 < iMax; i2++) {
- var evt = this.events[i2];
+ for (var i3 = 1, iMax = this.events.length; i3 < iMax; i3++) {
+ var evt = this.events[i3];
if (SweepEvent.compare(leftMostEvt, evt) > 0)
leftMostEvt = evt;
}
var geom = [this.exteriorRing.getGeom()];
if (geom[0] === null)
return null;
- for (var i2 = 0, iMax = this.interiorRings.length; i2 < iMax; i2++) {
- var ringGeom = this.interiorRings[i2].getGeom();
+ for (var i3 = 0, iMax = this.interiorRings.length; i3 < iMax; i3++) {
+ var ringGeom = this.interiorRings[i3].getGeom();
if (ringGeom === null)
continue;
geom.push(ringGeom);
key: "getGeom",
value: function getGeom2() {
var geom = [];
- for (var i2 = 0, iMax = this.polys.length; i2 < iMax; i2++) {
- var polyGeom = this.polys[i2].getGeom();
+ for (var i3 = 0, iMax = this.polys.length; i3 < iMax; i3++) {
+ var polyGeom = this.polys[i3].getGeom();
if (polyGeom === null)
continue;
geom.push(polyGeom);
key: "_composePolys",
value: function _composePolys(rings) {
var polys = [];
- for (var i2 = 0, iMax = rings.length; i2 < iMax; i2++) {
- var ring = rings[i2];
+ for (var i3 = 0, iMax = rings.length; i3 < iMax; i3++) {
+ var ring = rings[i3];
if (ring.poly)
continue;
if (ring.isExteriorRing())
prevMySplitter = prevInter;
if (!prevSeg.isAnEndpoint(prevInter)) {
var newEventsFromSplit = this._splitSafely(prevSeg, prevInter);
- for (var i2 = 0, iMax = newEventsFromSplit.length; i2 < iMax; i2++) {
- newEvents.push(newEventsFromSplit[i2]);
+ for (var i3 = 0, iMax = newEventsFromSplit.length; i3 < iMax; i3++) {
+ newEvents.push(newEventsFromSplit[i3]);
}
}
}
* IE - a segment other than the one that is currently being processed. */
}, {
key: "_splitSafely",
- value: function _splitSafely(seg, pt) {
+ value: function _splitSafely(seg, pt2) {
this.tree.remove(seg);
var rightSE = seg.rightSE;
this.queue.remove(rightSE);
- var newEvents = seg.split(pt);
+ var newEvents = seg.split(pt2);
newEvents.push(rightSE);
if (seg.consumedBy === void 0)
this.tree.insert(seg);
operation.type = type2;
rounder.reset();
var multipolys = [new MultiPolyIn(geom, true)];
- for (var i2 = 0, iMax = moreGeoms.length; i2 < iMax; i2++) {
- multipolys.push(new MultiPolyIn(moreGeoms[i2], false));
+ for (var i3 = 0, iMax = moreGeoms.length; i3 < iMax; i3++) {
+ multipolys.push(new MultiPolyIn(moreGeoms[i3], false));
}
operation.numMultiPolys = multipolys.length;
if (operation.type === "difference") {
if (operation.type === "intersection") {
for (var _i2 = 0, _iMax = multipolys.length; _i2 < _iMax; _i2++) {
var mpA = multipolys[_i2];
- for (var j2 = _i2 + 1, jMax = multipolys.length; j2 < jMax; j2++) {
- if (getBboxOverlap(mpA.bbox, multipolys[j2].bbox) === null)
+ for (var j3 = _i2 + 1, jMax = multipolys.length; j3 < jMax; j3++) {
+ if (getBboxOverlap(mpA.bbox, multipolys[j3].bbox) === null)
return [];
}
}
var require_geojson_precision = __commonJS({
"node_modules/geojson-precision/index.js"(exports2, module2) {
(function() {
- function parse(t, coordinatePrecision, extrasPrecision) {
- function point2(p) {
- return p.map(function(e, index) {
+ function parse(t2, coordinatePrecision, extrasPrecision) {
+ function point2(p2) {
+ return p2.map(function(e3, index) {
if (index < 2) {
- return 1 * e.toFixed(coordinatePrecision);
+ return 1 * e3.toFixed(coordinatePrecision);
} else {
- return 1 * e.toFixed(extrasPrecision);
+ return 1 * e3.toFixed(extrasPrecision);
}
});
}
- function multi(l) {
- return l.map(point2);
+ function multi(l2) {
+ return l2.map(point2);
}
- function poly(p) {
- return p.map(multi);
+ function poly(p2) {
+ return p2.map(multi);
}
- function multiPoly(m) {
- return m.map(poly);
+ function multiPoly(m2) {
+ return m2.map(poly);
}
function geometry(obj) {
if (!obj) {
obj.geometry = geometry(obj.geometry);
return obj;
}
- function featureCollection(f2) {
- f2.features = f2.features.map(feature3);
- return f2;
+ function featureCollection(f3) {
+ f3.features = f3.features.map(feature3);
+ return f3;
}
- function geometryCollection(g) {
- g.geometries = g.geometries.map(geometry);
- return g;
+ function geometryCollection(g3) {
+ g3.geometries = g3.geometries.map(geometry);
+ return g3;
}
- if (!t) {
- return t;
+ if (!t2) {
+ return t2;
}
- switch (t.type) {
+ switch (t2.type) {
case "Feature":
- return feature3(t);
+ return feature3(t2);
case "GeometryCollection":
- return geometryCollection(t);
+ return geometryCollection(t2);
case "FeatureCollection":
- return featureCollection(t);
+ return featureCollection(t2);
case "Point":
case "LineString":
case "Polygon":
case "MultiPoint":
case "MultiPolygon":
case "MultiLineString":
- return geometry(t);
+ return geometry(t2);
default:
- return t;
+ return t2;
}
}
module2.exports = parse;
if (!checkInt(arrayish.length)) {
return false;
}
- for (var i2 = 0; i2 < arrayish.length; i2++) {
- if (!checkInt(arrayish[i2]) || arrayish[i2] < 0 || arrayish[i2] > 255) {
+ for (var i3 = 0; i3 < arrayish.length; i3++) {
+ if (!checkInt(arrayish[i3]) || arrayish[i3] < 0 || arrayish[i3] > 255) {
return false;
}
}
}
var convertUtf8 = function() {
function toBytes(text2) {
- var result = [], i2 = 0;
+ var result = [], i3 = 0;
text2 = encodeURI(text2);
- while (i2 < text2.length) {
- var c = text2.charCodeAt(i2++);
- if (c === 37) {
- result.push(parseInt(text2.substr(i2, 2), 16));
- i2 += 2;
+ while (i3 < text2.length) {
+ var c2 = text2.charCodeAt(i3++);
+ if (c2 === 37) {
+ result.push(parseInt(text2.substr(i3, 2), 16));
+ i3 += 2;
} else {
- result.push(c);
+ result.push(c2);
}
}
return coerceArray(result);
}
function fromBytes(bytes) {
- var result = [], i2 = 0;
- while (i2 < bytes.length) {
- var c = bytes[i2];
- if (c < 128) {
- result.push(String.fromCharCode(c));
- i2++;
- } else if (c > 191 && c < 224) {
- result.push(String.fromCharCode((c & 31) << 6 | bytes[i2 + 1] & 63));
- i2 += 2;
+ var result = [], i3 = 0;
+ while (i3 < bytes.length) {
+ var c2 = bytes[i3];
+ if (c2 < 128) {
+ result.push(String.fromCharCode(c2));
+ i3++;
+ } else if (c2 > 191 && c2 < 224) {
+ result.push(String.fromCharCode((c2 & 31) << 6 | bytes[i3 + 1] & 63));
+ i3 += 2;
} else {
- result.push(String.fromCharCode((c & 15) << 12 | (bytes[i2 + 1] & 63) << 6 | bytes[i2 + 2] & 63));
- i2 += 3;
+ result.push(String.fromCharCode((c2 & 15) << 12 | (bytes[i3 + 1] & 63) << 6 | bytes[i3 + 2] & 63));
+ i3 += 3;
}
}
return result.join("");
var convertHex = function() {
function toBytes(text2) {
var result = [];
- for (var i2 = 0; i2 < text2.length; i2 += 2) {
- result.push(parseInt(text2.substr(i2, 2), 16));
+ for (var i3 = 0; i3 < text2.length; i3 += 2) {
+ result.push(parseInt(text2.substr(i3, 2), 16));
}
return result;
}
var Hex = "0123456789abcdef";
function fromBytes(bytes) {
var result = [];
- for (var i2 = 0; i2 < bytes.length; i2++) {
- var v = bytes[i2];
- result.push(Hex[(v & 240) >> 4] + Hex[v & 15]);
+ for (var i3 = 0; i3 < bytes.length; i3++) {
+ var v2 = bytes[i3];
+ result.push(Hex[(v2 & 240) >> 4] + Hex[v2 & 15]);
}
return result.join("");
}
}();
var numberOfRounds = { 16: 10, 24: 12, 32: 14 };
var rcon = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145];
- var S = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22];
+ var S2 = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22];
var Si = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125];
var T1 = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986];
var T2 = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766];
var U4 = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925];
function convertToInt32(bytes) {
var result = [];
- for (var i2 = 0; i2 < bytes.length; i2 += 4) {
+ for (var i3 = 0; i3 < bytes.length; i3 += 4) {
result.push(
- bytes[i2] << 24 | bytes[i2 + 1] << 16 | bytes[i2 + 2] << 8 | bytes[i2 + 3]
+ bytes[i3] << 24 | bytes[i3 + 1] << 16 | bytes[i3 + 2] << 8 | bytes[i3 + 3]
);
}
return result;
}
this._Ke = [];
this._Kd = [];
- for (var i2 = 0; i2 <= rounds; i2++) {
+ for (var i3 = 0; i3 <= rounds; i3++) {
this._Ke.push([0, 0, 0, 0]);
this._Kd.push([0, 0, 0, 0]);
}
var KC = this.key.length / 4;
var tk = convertToInt32(this.key);
var index;
- for (var i2 = 0; i2 < KC; i2++) {
- index = i2 >> 2;
- this._Ke[index][i2 % 4] = tk[i2];
- this._Kd[rounds - index][i2 % 4] = tk[i2];
+ for (var i3 = 0; i3 < KC; i3++) {
+ index = i3 >> 2;
+ this._Ke[index][i3 % 4] = tk[i3];
+ this._Kd[rounds - index][i3 % 4] = tk[i3];
}
var rconpointer = 0;
- var t = KC, tt;
- while (t < roundKeyCount) {
- tt = tk[KC - 1];
- tk[0] ^= S[tt >> 16 & 255] << 24 ^ S[tt >> 8 & 255] << 16 ^ S[tt & 255] << 8 ^ S[tt >> 24 & 255] ^ rcon[rconpointer] << 24;
+ var t2 = KC, tt2;
+ while (t2 < roundKeyCount) {
+ tt2 = tk[KC - 1];
+ tk[0] ^= S2[tt2 >> 16 & 255] << 24 ^ S2[tt2 >> 8 & 255] << 16 ^ S2[tt2 & 255] << 8 ^ S2[tt2 >> 24 & 255] ^ rcon[rconpointer] << 24;
rconpointer += 1;
if (KC != 8) {
- for (var i2 = 1; i2 < KC; i2++) {
- tk[i2] ^= tk[i2 - 1];
+ for (var i3 = 1; i3 < KC; i3++) {
+ tk[i3] ^= tk[i3 - 1];
}
} else {
- for (var i2 = 1; i2 < KC / 2; i2++) {
- tk[i2] ^= tk[i2 - 1];
+ for (var i3 = 1; i3 < KC / 2; i3++) {
+ tk[i3] ^= tk[i3 - 1];
}
- tt = tk[KC / 2 - 1];
- tk[KC / 2] ^= S[tt & 255] ^ S[tt >> 8 & 255] << 8 ^ S[tt >> 16 & 255] << 16 ^ S[tt >> 24 & 255] << 24;
- for (var i2 = KC / 2 + 1; i2 < KC; i2++) {
- tk[i2] ^= tk[i2 - 1];
+ tt2 = tk[KC / 2 - 1];
+ tk[KC / 2] ^= S2[tt2 & 255] ^ S2[tt2 >> 8 & 255] << 8 ^ S2[tt2 >> 16 & 255] << 16 ^ S2[tt2 >> 24 & 255] << 24;
+ for (var i3 = KC / 2 + 1; i3 < KC; i3++) {
+ tk[i3] ^= tk[i3 - 1];
}
}
- var i2 = 0, r, c;
- while (i2 < KC && t < roundKeyCount) {
- r = t >> 2;
- c = t % 4;
- this._Ke[r][c] = tk[i2];
- this._Kd[rounds - r][c] = tk[i2++];
- t++;
+ var i3 = 0, r2, c2;
+ while (i3 < KC && t2 < roundKeyCount) {
+ r2 = t2 >> 2;
+ c2 = t2 % 4;
+ this._Ke[r2][c2] = tk[i3];
+ this._Kd[rounds - r2][c2] = tk[i3++];
+ t2++;
}
}
- for (var r = 1; r < rounds; r++) {
- for (var c = 0; c < 4; c++) {
- tt = this._Kd[r][c];
- this._Kd[r][c] = U1[tt >> 24 & 255] ^ U2[tt >> 16 & 255] ^ U3[tt >> 8 & 255] ^ U4[tt & 255];
+ for (var r2 = 1; r2 < rounds; r2++) {
+ for (var c2 = 0; c2 < 4; c2++) {
+ tt2 = this._Kd[r2][c2];
+ this._Kd[r2][c2] = U1[tt2 >> 24 & 255] ^ U2[tt2 >> 16 & 255] ^ U3[tt2 >> 8 & 255] ^ U4[tt2 & 255];
}
}
};
throw new Error("invalid plaintext size (must be 16 bytes)");
}
var rounds = this._Ke.length - 1;
- var a = [0, 0, 0, 0];
- var t = convertToInt32(plaintext);
- for (var i2 = 0; i2 < 4; i2++) {
- t[i2] ^= this._Ke[0][i2];
+ var a2 = [0, 0, 0, 0];
+ var t2 = convertToInt32(plaintext);
+ for (var i3 = 0; i3 < 4; i3++) {
+ t2[i3] ^= this._Ke[0][i3];
}
- for (var r = 1; r < rounds; r++) {
- for (var i2 = 0; i2 < 4; i2++) {
- a[i2] = T1[t[i2] >> 24 & 255] ^ T2[t[(i2 + 1) % 4] >> 16 & 255] ^ T3[t[(i2 + 2) % 4] >> 8 & 255] ^ T4[t[(i2 + 3) % 4] & 255] ^ this._Ke[r][i2];
+ for (var r2 = 1; r2 < rounds; r2++) {
+ for (var i3 = 0; i3 < 4; i3++) {
+ a2[i3] = T1[t2[i3] >> 24 & 255] ^ T2[t2[(i3 + 1) % 4] >> 16 & 255] ^ T3[t2[(i3 + 2) % 4] >> 8 & 255] ^ T4[t2[(i3 + 3) % 4] & 255] ^ this._Ke[r2][i3];
}
- t = a.slice();
+ t2 = a2.slice();
}
- var result = createArray(16), tt;
- for (var i2 = 0; i2 < 4; i2++) {
- tt = this._Ke[rounds][i2];
- result[4 * i2] = (S[t[i2] >> 24 & 255] ^ tt >> 24) & 255;
- result[4 * i2 + 1] = (S[t[(i2 + 1) % 4] >> 16 & 255] ^ tt >> 16) & 255;
- result[4 * i2 + 2] = (S[t[(i2 + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255;
- result[4 * i2 + 3] = (S[t[(i2 + 3) % 4] & 255] ^ tt) & 255;
+ var result = createArray(16), tt2;
+ for (var i3 = 0; i3 < 4; i3++) {
+ tt2 = this._Ke[rounds][i3];
+ result[4 * i3] = (S2[t2[i3] >> 24 & 255] ^ tt2 >> 24) & 255;
+ result[4 * i3 + 1] = (S2[t2[(i3 + 1) % 4] >> 16 & 255] ^ tt2 >> 16) & 255;
+ result[4 * i3 + 2] = (S2[t2[(i3 + 2) % 4] >> 8 & 255] ^ tt2 >> 8) & 255;
+ result[4 * i3 + 3] = (S2[t2[(i3 + 3) % 4] & 255] ^ tt2) & 255;
}
return result;
};
throw new Error("invalid ciphertext size (must be 16 bytes)");
}
var rounds = this._Kd.length - 1;
- var a = [0, 0, 0, 0];
- var t = convertToInt32(ciphertext);
- for (var i2 = 0; i2 < 4; i2++) {
- t[i2] ^= this._Kd[0][i2];
+ var a2 = [0, 0, 0, 0];
+ var t2 = convertToInt32(ciphertext);
+ for (var i3 = 0; i3 < 4; i3++) {
+ t2[i3] ^= this._Kd[0][i3];
}
- for (var r = 1; r < rounds; r++) {
- for (var i2 = 0; i2 < 4; i2++) {
- a[i2] = T5[t[i2] >> 24 & 255] ^ T6[t[(i2 + 3) % 4] >> 16 & 255] ^ T7[t[(i2 + 2) % 4] >> 8 & 255] ^ T8[t[(i2 + 1) % 4] & 255] ^ this._Kd[r][i2];
+ for (var r2 = 1; r2 < rounds; r2++) {
+ for (var i3 = 0; i3 < 4; i3++) {
+ a2[i3] = T5[t2[i3] >> 24 & 255] ^ T6[t2[(i3 + 3) % 4] >> 16 & 255] ^ T7[t2[(i3 + 2) % 4] >> 8 & 255] ^ T8[t2[(i3 + 1) % 4] & 255] ^ this._Kd[r2][i3];
}
- t = a.slice();
+ t2 = a2.slice();
}
- var result = createArray(16), tt;
- for (var i2 = 0; i2 < 4; i2++) {
- tt = this._Kd[rounds][i2];
- result[4 * i2] = (Si[t[i2] >> 24 & 255] ^ tt >> 24) & 255;
- result[4 * i2 + 1] = (Si[t[(i2 + 3) % 4] >> 16 & 255] ^ tt >> 16) & 255;
- result[4 * i2 + 2] = (Si[t[(i2 + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255;
- result[4 * i2 + 3] = (Si[t[(i2 + 1) % 4] & 255] ^ tt) & 255;
+ var result = createArray(16), tt2;
+ for (var i3 = 0; i3 < 4; i3++) {
+ tt2 = this._Kd[rounds][i3];
+ result[4 * i3] = (Si[t2[i3] >> 24 & 255] ^ tt2 >> 24) & 255;
+ result[4 * i3 + 1] = (Si[t2[(i3 + 3) % 4] >> 16 & 255] ^ tt2 >> 16) & 255;
+ result[4 * i3 + 2] = (Si[t2[(i3 + 2) % 4] >> 8 & 255] ^ tt2 >> 8) & 255;
+ result[4 * i3 + 3] = (Si[t2[(i3 + 1) % 4] & 255] ^ tt2) & 255;
}
return result;
};
}
var ciphertext = createArray(plaintext.length);
var block2 = createArray(16);
- for (var i2 = 0; i2 < plaintext.length; i2 += 16) {
- copyArray(plaintext, block2, 0, i2, i2 + 16);
+ for (var i3 = 0; i3 < plaintext.length; i3 += 16) {
+ copyArray(plaintext, block2, 0, i3, i3 + 16);
block2 = this._aes.encrypt(block2);
- copyArray(block2, ciphertext, i2);
+ copyArray(block2, ciphertext, i3);
}
return ciphertext;
};
}
var plaintext = createArray(ciphertext.length);
var block2 = createArray(16);
- for (var i2 = 0; i2 < ciphertext.length; i2 += 16) {
- copyArray(ciphertext, block2, 0, i2, i2 + 16);
+ for (var i3 = 0; i3 < ciphertext.length; i3 += 16) {
+ copyArray(ciphertext, block2, 0, i3, i3 + 16);
block2 = this._aes.decrypt(block2);
- copyArray(block2, plaintext, i2);
+ copyArray(block2, plaintext, i3);
}
return plaintext;
};
}
var ciphertext = createArray(plaintext.length);
var block2 = createArray(16);
- for (var i2 = 0; i2 < plaintext.length; i2 += 16) {
- copyArray(plaintext, block2, 0, i2, i2 + 16);
- for (var j2 = 0; j2 < 16; j2++) {
- block2[j2] ^= this._lastCipherblock[j2];
+ for (var i3 = 0; i3 < plaintext.length; i3 += 16) {
+ copyArray(plaintext, block2, 0, i3, i3 + 16);
+ for (var j3 = 0; j3 < 16; j3++) {
+ block2[j3] ^= this._lastCipherblock[j3];
}
this._lastCipherblock = this._aes.encrypt(block2);
- copyArray(this._lastCipherblock, ciphertext, i2);
+ copyArray(this._lastCipherblock, ciphertext, i3);
}
return ciphertext;
};
}
var plaintext = createArray(ciphertext.length);
var block2 = createArray(16);
- for (var i2 = 0; i2 < ciphertext.length; i2 += 16) {
- copyArray(ciphertext, block2, 0, i2, i2 + 16);
+ for (var i3 = 0; i3 < ciphertext.length; i3 += 16) {
+ copyArray(ciphertext, block2, 0, i3, i3 + 16);
block2 = this._aes.decrypt(block2);
- for (var j2 = 0; j2 < 16; j2++) {
- plaintext[i2 + j2] = block2[j2] ^ this._lastCipherblock[j2];
+ for (var j3 = 0; j3 < 16; j3++) {
+ plaintext[i3 + j3] = block2[j3] ^ this._lastCipherblock[j3];
}
- copyArray(ciphertext, this._lastCipherblock, 0, i2, i2 + 16);
+ copyArray(ciphertext, this._lastCipherblock, 0, i3, i3 + 16);
}
return plaintext;
};
}
var encrypted = coerceArray(plaintext, true);
var xorSegment;
- for (var i2 = 0; i2 < encrypted.length; i2 += this.segmentSize) {
+ for (var i3 = 0; i3 < encrypted.length; i3 += this.segmentSize) {
xorSegment = this._aes.encrypt(this._shiftRegister);
- for (var j2 = 0; j2 < this.segmentSize; j2++) {
- encrypted[i2 + j2] ^= xorSegment[j2];
+ for (var j3 = 0; j3 < this.segmentSize; j3++) {
+ encrypted[i3 + j3] ^= xorSegment[j3];
}
copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);
- copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i2, i2 + this.segmentSize);
+ copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i3, i3 + this.segmentSize);
}
return encrypted;
};
}
var plaintext = coerceArray(ciphertext, true);
var xorSegment;
- for (var i2 = 0; i2 < plaintext.length; i2 += this.segmentSize) {
+ for (var i3 = 0; i3 < plaintext.length; i3 += this.segmentSize) {
xorSegment = this._aes.encrypt(this._shiftRegister);
- for (var j2 = 0; j2 < this.segmentSize; j2++) {
- plaintext[i2 + j2] ^= xorSegment[j2];
+ for (var j3 = 0; j3 < this.segmentSize; j3++) {
+ plaintext[i3 + j3] ^= xorSegment[j3];
}
copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);
- copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i2, i2 + this.segmentSize);
+ copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i3, i3 + this.segmentSize);
}
return plaintext;
};
};
ModeOfOperationOFB.prototype.encrypt = function(plaintext) {
var encrypted = coerceArray(plaintext, true);
- for (var i2 = 0; i2 < encrypted.length; i2++) {
+ for (var i3 = 0; i3 < encrypted.length; i3++) {
if (this._lastPrecipherIndex === 16) {
this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);
this._lastPrecipherIndex = 0;
}
- encrypted[i2] ^= this._lastPrecipher[this._lastPrecipherIndex++];
+ encrypted[i3] ^= this._lastPrecipher[this._lastPrecipherIndex++];
}
return encrypted;
};
this._counter = bytes;
};
Counter.prototype.increment = function() {
- for (var i2 = 15; i2 >= 0; i2--) {
- if (this._counter[i2] === 255) {
- this._counter[i2] = 0;
+ for (var i3 = 15; i3 >= 0; i3--) {
+ if (this._counter[i3] === 255) {
+ this._counter[i3] = 0;
} else {
- this._counter[i2]++;
+ this._counter[i3]++;
break;
}
}
};
ModeOfOperationCTR.prototype.encrypt = function(plaintext) {
var encrypted = coerceArray(plaintext, true);
- for (var i2 = 0; i2 < encrypted.length; i2++) {
+ for (var i3 = 0; i3 < encrypted.length; i3++) {
if (this._remainingCounterIndex === 16) {
this._remainingCounter = this._aes.encrypt(this._counter._counter);
this._remainingCounterIndex = 0;
this._counter.increment();
}
- encrypted[i2] ^= this._remainingCounter[this._remainingCounterIndex++];
+ encrypted[i3] ^= this._remainingCounter[this._remainingCounterIndex++];
}
return encrypted;
};
var padder = 16 - data.length % 16;
var result = createArray(data.length + padder);
copyArray(data, result);
- for (var i2 = data.length; i2 < result.length; i2++) {
- result[i2] = padder;
+ for (var i3 = data.length; i3 < result.length; i3++) {
+ result[i3] = padder;
}
return result;
}
throw new Error("PKCS#7 padding byte out of range");
}
var length = data.length - padder;
- for (var i2 = 0; i2 < padder; i2++) {
- if (data[length + i2] !== padder) {
+ for (var i3 = 0; i3 < padder; i3++) {
+ if (data[length + i3] !== padder) {
throw new Error("PKCS#7 invalid padding byte");
}
}
}
});
- // node_modules/fast-deep-equal/index.js
- var require_fast_deep_equal = __commonJS({
- "node_modules/fast-deep-equal/index.js"(exports2, module2) {
- "use strict";
- module2.exports = function equal(a, b) {
- if (a === b)
- return true;
- if (a && b && typeof a == "object" && typeof b == "object") {
- if (a.constructor !== b.constructor)
- return false;
- var length, i2, keys;
- if (Array.isArray(a)) {
- length = a.length;
- if (length != b.length)
- return false;
- for (i2 = length; i2-- !== 0; )
- if (!equal(a[i2], b[i2]))
- return false;
- return true;
- }
- if (a.constructor === RegExp)
- return a.source === b.source && a.flags === b.flags;
- if (a.valueOf !== Object.prototype.valueOf)
- return a.valueOf() === b.valueOf();
- if (a.toString !== Object.prototype.toString)
- return a.toString() === b.toString();
- keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length)
- return false;
- for (i2 = length; i2-- !== 0; )
- if (!Object.prototype.hasOwnProperty.call(b, keys[i2]))
- return false;
- for (i2 = length; i2-- !== 0; ) {
- var key = keys[i2];
- if (!equal(a[key], b[key]))
- return false;
- }
- return true;
- }
- return a !== a && b !== b;
- };
- }
- });
-
// node_modules/lodash/lodash.js
var require_lodash = __commonJS({
"node_modules/lodash/lodash.js"(exports2, module2) {
(function() {
var undefined2;
var VERSION = "4.17.21";
- var LARGE_ARRAY_SIZE = 200;
+ var LARGE_ARRAY_SIZE2 = 200;
var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT3 = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
- var HASH_UNDEFINED = "__lodash_hash_undefined__";
+ var HASH_UNDEFINED4 = "__lodash_hash_undefined__";
var MAX_MEMOIZE_SIZE = 500;
var PLACEHOLDER = "__lodash_placeholder__";
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
- var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
+ var COMPARE_PARTIAL_FLAG5 = 1, COMPARE_UNORDERED_FLAG3 = 2;
var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
var HOT_COUNT = 800, HOT_SPAN = 16;
var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
- var INFINITY2 = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN2 = 0 / 0;
+ var INFINITY2 = 1 / 0, MAX_SAFE_INTEGER3 = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN2 = 0 / 0;
var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
var wrapFlags = [
["ary", WRAP_ARY_FLAG],
["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
["rearg", WRAP_REARG_FLAG]
];
- var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag2 = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag2 = "[object Symbol]", undefinedTag2 = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
- var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
+ var argsTag4 = "[object Arguments]", arrayTag3 = "[object Array]", asyncTag2 = "[object AsyncFunction]", boolTag3 = "[object Boolean]", dateTag3 = "[object Date]", domExcTag = "[object DOMException]", errorTag3 = "[object Error]", funcTag3 = "[object Function]", genTag2 = "[object GeneratorFunction]", mapTag4 = "[object Map]", numberTag4 = "[object Number]", nullTag2 = "[object Null]", objectTag4 = "[object Object]", promiseTag2 = "[object Promise]", proxyTag2 = "[object Proxy]", regexpTag3 = "[object RegExp]", setTag4 = "[object Set]", stringTag3 = "[object String]", symbolTag3 = "[object Symbol]", undefinedTag2 = "[object Undefined]", weakMapTag3 = "[object WeakMap]", weakSetTag = "[object WeakSet]";
+ var arrayBufferTag3 = "[object ArrayBuffer]", dataViewTag4 = "[object DataView]", float32Tag2 = "[object Float32Array]", float64Tag2 = "[object Float64Array]", int8Tag2 = "[object Int8Array]", int16Tag2 = "[object Int16Array]", int32Tag2 = "[object Int32Array]", uint8Tag2 = "[object Uint8Array]", uint8ClampedTag2 = "[object Uint8ClampedArray]", uint16Tag2 = "[object Uint16Array]", uint32Tag2 = "[object Uint32Array]";
var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
var reEscapedHtml2 = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml2 = /[&<>"']/g, reHasEscapedHtml2 = RegExp(reEscapedHtml2.source), reHasUnescapedHtml2 = RegExp(reUnescapedHtml2.source);
var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
+ var reRegExpChar2 = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar2.source);
var reTrimStart2 = /^\s+/;
var reWhitespace2 = /\s/;
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
var reFlags = /\w*$/;
var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary2 = /^0b[01]+$/i;
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ var reIsHostCtor2 = /^\[object .+?Constructor\]$/;
var reIsOctal2 = /^0o[0-7]+$/i;
- var reIsUint = /^(?:0|[1-9]\d*)$/;
+ var reIsUint2 = /^(?:0|[1-9]\d*)$/;
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var reNoMatch = /($^)/;
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
"setTimeout"
];
var templateCounter = -1;
- var typedArrayTags = {};
- typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
- typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ var typedArrayTags2 = {};
+ typedArrayTags2[float32Tag2] = typedArrayTags2[float64Tag2] = typedArrayTags2[int8Tag2] = typedArrayTags2[int16Tag2] = typedArrayTags2[int32Tag2] = typedArrayTags2[uint8Tag2] = typedArrayTags2[uint8ClampedTag2] = typedArrayTags2[uint16Tag2] = typedArrayTags2[uint32Tag2] = true;
+ typedArrayTags2[argsTag4] = typedArrayTags2[arrayTag3] = typedArrayTags2[arrayBufferTag3] = typedArrayTags2[boolTag3] = typedArrayTags2[dataViewTag4] = typedArrayTags2[dateTag3] = typedArrayTags2[errorTag3] = typedArrayTags2[funcTag3] = typedArrayTags2[mapTag4] = typedArrayTags2[numberTag4] = typedArrayTags2[objectTag4] = typedArrayTags2[regexpTag3] = typedArrayTags2[setTag4] = typedArrayTags2[stringTag3] = typedArrayTags2[weakMapTag3] = false;
var cloneableTags = {};
- cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag2] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
- cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
+ cloneableTags[argsTag4] = cloneableTags[arrayTag3] = cloneableTags[arrayBufferTag3] = cloneableTags[dataViewTag4] = cloneableTags[boolTag3] = cloneableTags[dateTag3] = cloneableTags[float32Tag2] = cloneableTags[float64Tag2] = cloneableTags[int8Tag2] = cloneableTags[int16Tag2] = cloneableTags[int32Tag2] = cloneableTags[mapTag4] = cloneableTags[numberTag4] = cloneableTags[objectTag4] = cloneableTags[regexpTag3] = cloneableTags[setTag4] = cloneableTags[stringTag3] = cloneableTags[symbolTag3] = cloneableTags[uint8Tag2] = cloneableTags[uint8ClampedTag2] = cloneableTags[uint16Tag2] = cloneableTags[uint32Tag2] = true;
+ cloneableTags[errorTag3] = cloneableTags[funcTag3] = cloneableTags[weakMapTag3] = false;
var deburredLetters = {
// Latin-1 Supplement block.
"\xC0": "A",
var freeGlobal2 = typeof global == "object" && global && global.Object === Object && global;
var freeSelf2 = typeof self == "object" && self && self.Object === Object && self;
var root3 = freeGlobal2 || freeSelf2 || Function("return this")();
- var freeExports = typeof exports2 == "object" && exports2 && !exports2.nodeType && exports2;
- var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2;
- var moduleExports = freeModule && freeModule.exports === freeExports;
- var freeProcess = moduleExports && freeGlobal2.process;
- var nodeUtil = function() {
+ var freeExports3 = typeof exports2 == "object" && exports2 && !exports2.nodeType && exports2;
+ var freeModule3 = freeExports3 && typeof module2 == "object" && module2 && !module2.nodeType && module2;
+ var moduleExports3 = freeModule3 && freeModule3.exports === freeExports3;
+ var freeProcess2 = moduleExports3 && freeGlobal2.process;
+ var nodeUtil2 = function() {
try {
- var types = freeModule && freeModule.require && freeModule.require("util").types;
+ var types = freeModule3 && freeModule3.require && freeModule3.require("util").types;
if (types) {
return types;
}
- return freeProcess && freeProcess.binding && freeProcess.binding("util");
- } catch (e) {
+ return freeProcess2 && freeProcess2.binding && freeProcess2.binding("util");
+ } catch (e3) {
}
}();
- var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ var nodeIsArrayBuffer = nodeUtil2 && nodeUtil2.isArrayBuffer, nodeIsDate = nodeUtil2 && nodeUtil2.isDate, nodeIsMap = nodeUtil2 && nodeUtil2.isMap, nodeIsRegExp = nodeUtil2 && nodeUtil2.isRegExp, nodeIsSet = nodeUtil2 && nodeUtil2.isSet, nodeIsTypedArray2 = nodeUtil2 && nodeUtil2.isTypedArray;
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
}
return true;
}
- function arrayFilter(array2, predicate) {
+ function arrayFilter2(array2, predicate) {
var index = -1, length = array2 == null ? 0 : array2.length, resIndex = 0, result = [];
while (++index < length) {
var value = array2[index];
}
return result;
}
- function arrayPush(array2, values) {
+ function arrayPush2(array2, values) {
var index = -1, length = values.length, offset = array2.length;
while (++index < length) {
array2[offset + index] = values[index];
}
return accumulator;
}
- function arraySome(array2, predicate) {
+ function arraySome2(array2, predicate) {
var index = -1, length = array2 == null ? 0 : array2.length;
while (++index < length) {
if (predicate(array2[index], index, array2)) {
}
return result;
}
- function baseTimes(n2, iteratee) {
- var index = -1, result = Array(n2);
- while (++index < n2) {
+ function baseTimes2(n3, iteratee) {
+ var index = -1, result = Array(n3);
+ while (++index < n3) {
result[index] = iteratee(index);
}
return result;
function baseTrim2(string) {
return string ? string.slice(0, trimmedEndIndex2(string) + 1).replace(reTrimStart2, "") : string;
}
- function baseUnary(func) {
+ function baseUnary2(func) {
return function(value) {
return func(value);
};
return object[key];
});
}
- function cacheHas(cache, key) {
+ function cacheHas2(cache, key) {
return cache.has(key);
}
function charsStartIndex(strSymbols, chrSymbols) {
function escapeStringChar(chr) {
return "\\" + stringEscapes[chr];
}
- function getValue(object, key) {
+ function getValue2(object, key) {
return object == null ? undefined2 : object[key];
}
function hasUnicode(string) {
}
return result;
}
- function mapToArray(map2) {
+ function mapToArray2(map2) {
var index = -1, result = Array(map2.size);
map2.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
- function overArg(func, transform2) {
+ function overArg2(func, transform2) {
return function(arg) {
return func(transform2(arg));
};
}
return result;
}
- function setToArray(set3) {
+ function setToArray2(set3) {
var index = -1, result = Array(set3.size);
set3.forEach(function(value) {
result[++index] = value;
return string.match(reUnicodeWord) || [];
}
var runInContext = function runInContext2(context) {
- context = context == null ? root3 : _.defaults(root3.Object(), context, _.pick(root3, contextProps));
+ context = context == null ? root3 : _2.defaults(root3.Object(), context, _2.pick(root3, contextProps));
var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError;
- var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto3 = Object2.prototype;
- var coreJsData = context["__core-js_shared__"];
- var funcToString = funcProto.toString;
- var hasOwnProperty2 = objectProto3.hasOwnProperty;
+ var arrayProto2 = Array2.prototype, funcProto3 = Function2.prototype, objectProto13 = Object2.prototype;
+ var coreJsData2 = context["__core-js_shared__"];
+ var funcToString3 = funcProto3.toString;
+ var hasOwnProperty10 = objectProto13.hasOwnProperty;
var idCounter = 0;
- var maskSrcKey = function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+ var maskSrcKey2 = function() {
+ var uid = /[^.]+$/.exec(coreJsData2 && coreJsData2.keys && coreJsData2.keys.IE_PROTO || "");
return uid ? "Symbol(src)_1." + uid : "";
}();
- var nativeObjectToString3 = objectProto3.toString;
- var objectCtorString = funcToString.call(Object2);
+ var nativeObjectToString3 = objectProto13.toString;
+ var objectCtorString = funcToString3.call(Object2);
var oldDash = root3._;
- var reIsNative = RegExp2(
- "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
+ var reIsNative2 = RegExp2(
+ "^" + funcToString3.call(hasOwnProperty10).replace(reRegExpChar2, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
);
- var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol3 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto3.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol3 ? Symbol3.isConcatSpreadable : undefined2, symIterator = Symbol3 ? Symbol3.iterator : undefined2, symToStringTag3 = Symbol3 ? Symbol3.toStringTag : undefined2;
+ var Buffer3 = moduleExports3 ? context.Buffer : undefined2, Symbol3 = context.Symbol, Uint8Array3 = context.Uint8Array, allocUnsafe = Buffer3 ? Buffer3.allocUnsafe : undefined2, getPrototype = overArg2(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable3 = objectProto13.propertyIsEnumerable, splice2 = arrayProto2.splice, spreadableSymbol = Symbol3 ? Symbol3.isConcatSpreadable : undefined2, symIterator = Symbol3 ? Symbol3.iterator : undefined2, symToStringTag3 = Symbol3 ? Symbol3.toStringTag : undefined2;
var defineProperty = function() {
try {
- var func = getNative(Object2, "defineProperty");
+ var func = getNative2(Object2, "defineProperty");
func({}, "", {});
return func;
- } catch (e) {
+ } catch (e3) {
}
}();
var ctxClearTimeout = context.clearTimeout !== root3.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root3.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root3.setTimeout && context.setTimeout;
- var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax2 = Math2.max, nativeMin2 = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse;
- var DataView2 = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create");
- var metaMap = WeakMap && new WeakMap();
+ var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols2 = Object2.getOwnPropertySymbols, nativeIsBuffer2 = Buffer3 ? Buffer3.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto2.join, nativeKeys2 = overArg2(Object2.keys, Object2), nativeMax2 = Math2.max, nativeMin2 = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto2.reverse;
+ var DataView3 = getNative2(context, "DataView"), Map3 = getNative2(context, "Map"), Promise3 = getNative2(context, "Promise"), Set3 = getNative2(context, "Set"), WeakMap2 = getNative2(context, "WeakMap"), nativeCreate2 = getNative2(Object2, "create");
+ var metaMap = WeakMap2 && new WeakMap2();
var realNames = {};
- var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap);
- var symbolProto2 = Symbol3 ? Symbol3.prototype : undefined2, symbolValueOf = symbolProto2 ? symbolProto2.valueOf : undefined2, symbolToString2 = symbolProto2 ? symbolProto2.toString : undefined2;
+ var dataViewCtorString2 = toSource2(DataView3), mapCtorString2 = toSource2(Map3), promiseCtorString2 = toSource2(Promise3), setCtorString2 = toSource2(Set3), weakMapCtorString2 = toSource2(WeakMap2);
+ var symbolProto3 = Symbol3 ? Symbol3.prototype : undefined2, symbolValueOf2 = symbolProto3 ? symbolProto3.valueOf : undefined2, symbolToString2 = symbolProto3 ? symbolProto3.toString : undefined2;
function lodash(value) {
if (isObjectLike2(value) && !isArray2(value) && !(value instanceof LazyWrapper)) {
if (value instanceof LodashWrapper) {
return value;
}
- if (hasOwnProperty2.call(value, "__wrapped__")) {
+ if (hasOwnProperty10.call(value, "__wrapped__")) {
return wrapperClone(value);
}
}
}
LazyWrapper.prototype = baseCreate(baseLodash.prototype);
LazyWrapper.prototype.constructor = LazyWrapper;
- function Hash(entries) {
+ function Hash2(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
this.set(entry[0], entry[1]);
}
}
- function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ function hashClear2() {
+ this.__data__ = nativeCreate2 ? nativeCreate2(null) : {};
this.size = 0;
}
- function hashDelete(key) {
+ function hashDelete2(key) {
var result2 = this.has(key) && delete this.__data__[key];
this.size -= result2 ? 1 : 0;
return result2;
}
- function hashGet(key) {
+ function hashGet2(key) {
var data = this.__data__;
- if (nativeCreate) {
+ if (nativeCreate2) {
var result2 = data[key];
- return result2 === HASH_UNDEFINED ? undefined2 : result2;
+ return result2 === HASH_UNDEFINED4 ? undefined2 : result2;
}
- return hasOwnProperty2.call(data, key) ? data[key] : undefined2;
+ return hasOwnProperty10.call(data, key) ? data[key] : undefined2;
}
- function hashHas(key) {
+ function hashHas2(key) {
var data = this.__data__;
- return nativeCreate ? data[key] !== undefined2 : hasOwnProperty2.call(data, key);
+ return nativeCreate2 ? data[key] !== undefined2 : hasOwnProperty10.call(data, key);
}
- function hashSet(key, value) {
+ function hashSet2(key, value) {
var data = this.__data__;
this.size += this.has(key) ? 0 : 1;
- data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value;
+ data[key] = nativeCreate2 && value === undefined2 ? HASH_UNDEFINED4 : value;
return this;
}
- Hash.prototype.clear = hashClear;
- Hash.prototype["delete"] = hashDelete;
- Hash.prototype.get = hashGet;
- Hash.prototype.has = hashHas;
- Hash.prototype.set = hashSet;
- function ListCache(entries) {
+ Hash2.prototype.clear = hashClear2;
+ Hash2.prototype["delete"] = hashDelete2;
+ Hash2.prototype.get = hashGet2;
+ Hash2.prototype.has = hashHas2;
+ Hash2.prototype.set = hashSet2;
+ function ListCache2(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
this.set(entry[0], entry[1]);
}
}
- function listCacheClear() {
+ function listCacheClear2() {
this.__data__ = [];
this.size = 0;
}
- function listCacheDelete(key) {
- var data = this.__data__, index = assocIndexOf(data, key);
+ function listCacheDelete2(key) {
+ var data = this.__data__, index = assocIndexOf2(data, key);
if (index < 0) {
return false;
}
if (index == lastIndex) {
data.pop();
} else {
- splice.call(data, index, 1);
+ splice2.call(data, index, 1);
}
--this.size;
return true;
}
- function listCacheGet(key) {
- var data = this.__data__, index = assocIndexOf(data, key);
+ function listCacheGet2(key) {
+ var data = this.__data__, index = assocIndexOf2(data, key);
return index < 0 ? undefined2 : data[index][1];
}
- function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
+ function listCacheHas2(key) {
+ return assocIndexOf2(this.__data__, key) > -1;
}
- function listCacheSet(key, value) {
- var data = this.__data__, index = assocIndexOf(data, key);
+ function listCacheSet2(key, value) {
+ var data = this.__data__, index = assocIndexOf2(data, key);
if (index < 0) {
++this.size;
data.push([key, value]);
}
return this;
}
- ListCache.prototype.clear = listCacheClear;
- ListCache.prototype["delete"] = listCacheDelete;
- ListCache.prototype.get = listCacheGet;
- ListCache.prototype.has = listCacheHas;
- ListCache.prototype.set = listCacheSet;
- function MapCache(entries) {
+ ListCache2.prototype.clear = listCacheClear2;
+ ListCache2.prototype["delete"] = listCacheDelete2;
+ ListCache2.prototype.get = listCacheGet2;
+ ListCache2.prototype.has = listCacheHas2;
+ ListCache2.prototype.set = listCacheSet2;
+ function MapCache2(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
this.set(entry[0], entry[1]);
}
}
- function mapCacheClear() {
+ function mapCacheClear2() {
this.size = 0;
this.__data__ = {
- "hash": new Hash(),
- "map": new (Map2 || ListCache)(),
- "string": new Hash()
+ "hash": new Hash2(),
+ "map": new (Map3 || ListCache2)(),
+ "string": new Hash2()
};
}
- function mapCacheDelete(key) {
- var result2 = getMapData(this, key)["delete"](key);
+ function mapCacheDelete2(key) {
+ var result2 = getMapData2(this, key)["delete"](key);
this.size -= result2 ? 1 : 0;
return result2;
}
- function mapCacheGet(key) {
- return getMapData(this, key).get(key);
+ function mapCacheGet2(key) {
+ return getMapData2(this, key).get(key);
}
- function mapCacheHas(key) {
- return getMapData(this, key).has(key);
+ function mapCacheHas2(key) {
+ return getMapData2(this, key).has(key);
}
- function mapCacheSet(key, value) {
- var data = getMapData(this, key), size2 = data.size;
+ function mapCacheSet2(key, value) {
+ var data = getMapData2(this, key), size2 = data.size;
data.set(key, value);
this.size += data.size == size2 ? 0 : 1;
return this;
}
- MapCache.prototype.clear = mapCacheClear;
- MapCache.prototype["delete"] = mapCacheDelete;
- MapCache.prototype.get = mapCacheGet;
- MapCache.prototype.has = mapCacheHas;
- MapCache.prototype.set = mapCacheSet;
- function SetCache(values2) {
+ MapCache2.prototype.clear = mapCacheClear2;
+ MapCache2.prototype["delete"] = mapCacheDelete2;
+ MapCache2.prototype.get = mapCacheGet2;
+ MapCache2.prototype.has = mapCacheHas2;
+ MapCache2.prototype.set = mapCacheSet2;
+ function SetCache2(values2) {
var index = -1, length = values2 == null ? 0 : values2.length;
- this.__data__ = new MapCache();
+ this.__data__ = new MapCache2();
while (++index < length) {
this.add(values2[index]);
}
}
- function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
+ function setCacheAdd2(value) {
+ this.__data__.set(value, HASH_UNDEFINED4);
return this;
}
- function setCacheHas(value) {
+ function setCacheHas2(value) {
return this.__data__.has(value);
}
- SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
- SetCache.prototype.has = setCacheHas;
- function Stack(entries) {
- var data = this.__data__ = new ListCache(entries);
+ SetCache2.prototype.add = SetCache2.prototype.push = setCacheAdd2;
+ SetCache2.prototype.has = setCacheHas2;
+ function Stack2(entries) {
+ var data = this.__data__ = new ListCache2(entries);
this.size = data.size;
}
- function stackClear() {
- this.__data__ = new ListCache();
+ function stackClear2() {
+ this.__data__ = new ListCache2();
this.size = 0;
}
- function stackDelete(key) {
+ function stackDelete2(key) {
var data = this.__data__, result2 = data["delete"](key);
this.size = data.size;
return result2;
}
- function stackGet(key) {
+ function stackGet2(key) {
return this.__data__.get(key);
}
- function stackHas(key) {
+ function stackHas2(key) {
return this.__data__.has(key);
}
- function stackSet(key, value) {
+ function stackSet2(key, value) {
var data = this.__data__;
- if (data instanceof ListCache) {
- var pairs = data.__data__;
- if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
- pairs.push([key, value]);
+ if (data instanceof ListCache2) {
+ var pairs2 = data.__data__;
+ if (!Map3 || pairs2.length < LARGE_ARRAY_SIZE2 - 1) {
+ pairs2.push([key, value]);
this.size = ++data.size;
return this;
}
- data = this.__data__ = new MapCache(pairs);
+ data = this.__data__ = new MapCache2(pairs2);
}
data.set(key, value);
this.size = data.size;
return this;
}
- Stack.prototype.clear = stackClear;
- Stack.prototype["delete"] = stackDelete;
- Stack.prototype.get = stackGet;
- Stack.prototype.has = stackHas;
- Stack.prototype.set = stackSet;
- function arrayLikeKeys(value, inherited) {
- var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length;
+ Stack2.prototype.clear = stackClear2;
+ Stack2.prototype["delete"] = stackDelete2;
+ Stack2.prototype.get = stackGet2;
+ Stack2.prototype.has = stackHas2;
+ Stack2.prototype.set = stackSet2;
+ function arrayLikeKeys2(value, inherited) {
+ var isArr = isArray2(value), isArg = !isArr && isArguments2(value), isBuff = !isArr && !isArg && isBuffer2(value), isType = !isArr && !isArg && !isBuff && isTypedArray2(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes2(value.length, String2) : [], length = result2.length;
for (var key in value) {
- if ((inherited || hasOwnProperty2.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
+ if ((inherited || hasOwnProperty10.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
(key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
- isIndex(key, length)))) {
+ isIndex2(key, length)))) {
result2.push(key);
}
}
var length = array2.length;
return length ? array2[baseRandom(0, length - 1)] : undefined2;
}
- function arraySampleSize(array2, n2) {
- return shuffleSelf(copyArray(array2), baseClamp(n2, 0, array2.length));
+ function arraySampleSize(array2, n3) {
+ return shuffleSelf(copyArray(array2), baseClamp(n3, 0, array2.length));
}
function arrayShuffle(array2) {
return shuffleSelf(copyArray(array2));
}
function assignMergeValue(object, key, value) {
- if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) {
+ if (value !== undefined2 && !eq2(object[key], value) || value === undefined2 && !(key in object)) {
baseAssignValue(object, key, value);
}
}
function assignValue(object, key, value) {
var objValue = object[key];
- if (!(hasOwnProperty2.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) {
+ if (!(hasOwnProperty10.call(object, key) && eq2(objValue, value)) || value === undefined2 && !(key in object)) {
baseAssignValue(object, key, value);
}
}
- function assocIndexOf(array2, key) {
+ function assocIndexOf2(array2, key) {
var length = array2.length;
while (length--) {
- if (eq(array2[length][0], key)) {
+ if (eq2(array2[length][0], key)) {
return length;
}
}
return accumulator;
}
function baseAssign(object, source) {
- return object && copyObject(source, keys(source), object);
+ return object && copyObject(source, keys2(source), object);
}
function baseAssignIn(object, source) {
return object && copyObject(source, keysIn(source), object);
return copyArray(value, result2);
}
} else {
- var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
- if (isBuffer(value)) {
+ var tag = getTag2(value), isFunc = tag == funcTag3 || tag == genTag2;
+ if (isBuffer2(value)) {
return cloneBuffer(value, isDeep);
}
- if (tag == objectTag || tag == argsTag || isFunc && !object) {
+ if (tag == objectTag4 || tag == argsTag4 || isFunc && !object) {
result2 = isFlat || isFunc ? {} : initCloneObject(value);
if (!isDeep) {
return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
result2 = initCloneByTag(value, tag, isDeep);
}
}
- stack || (stack = new Stack());
+ stack || (stack = new Stack2());
var stacked = stack.get(value);
if (stacked) {
return stacked;
result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
}
- var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
+ var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys2 : isFlat ? keysIn : keys2;
var props = isArr ? undefined2 : keysFunc(value);
arrayEach(props || value, function(subValue, key2) {
if (props) {
return result2;
}
function baseConforms(source) {
- var props = keys(source);
+ var props = keys2(source);
return function(object) {
return baseConformsTo(object, source, props);
};
return result2;
}
if (iteratee2) {
- values2 = arrayMap2(values2, baseUnary(iteratee2));
+ values2 = arrayMap2(values2, baseUnary2(iteratee2));
}
if (comparator) {
includes2 = arrayIncludesWith;
isCommon = false;
- } else if (values2.length >= LARGE_ARRAY_SIZE) {
- includes2 = cacheHas;
+ } else if (values2.length >= LARGE_ARRAY_SIZE2) {
+ includes2 = cacheHas2;
isCommon = false;
- values2 = new SetCache(values2);
+ values2 = new SetCache2(values2);
}
outer:
while (++index < length) {
if (depth > 1) {
baseFlatten(value, depth - 1, predicate, isStrict, result2);
} else {
- arrayPush(result2, value);
+ arrayPush2(result2, value);
}
} else if (!isStrict) {
result2[result2.length] = value;
var baseFor = createBaseFor();
var baseForRight = createBaseFor(true);
function baseForOwn(object, iteratee2) {
- return object && baseFor(object, iteratee2, keys);
+ return object && baseFor(object, iteratee2, keys2);
}
function baseForOwnRight(object, iteratee2) {
- return object && baseForRight(object, iteratee2, keys);
+ return object && baseForRight(object, iteratee2, keys2);
}
function baseFunctions(object, props) {
- return arrayFilter(props, function(key) {
- return isFunction(object[key]);
+ return arrayFilter2(props, function(key) {
+ return isFunction2(object[key]);
});
}
function baseGet(object, path) {
}
return index && index == length ? object : undefined2;
}
- function baseGetAllKeys(object, keysFunc, symbolsFunc) {
+ function baseGetAllKeys2(object, keysFunc, symbolsFunc) {
var result2 = keysFunc(object);
- return isArray2(object) ? result2 : arrayPush(result2, symbolsFunc(object));
+ return isArray2(object) ? result2 : arrayPush2(result2, symbolsFunc(object));
}
function baseGetTag2(value) {
if (value == null) {
return value > other;
}
function baseHas(object, key) {
- return object != null && hasOwnProperty2.call(object, key);
+ return object != null && hasOwnProperty10.call(object, key);
}
function baseHasIn(object, key) {
return object != null && key in Object2(object);
while (othIndex--) {
var array2 = arrays[othIndex];
if (othIndex && iteratee2) {
- array2 = arrayMap2(array2, baseUnary(iteratee2));
+ array2 = arrayMap2(array2, baseUnary2(iteratee2));
}
maxLength = nativeMin2(array2.length, maxLength);
- caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array2.length >= 120) ? new SetCache(othIndex && array2) : undefined2;
+ caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array2.length >= 120) ? new SetCache2(othIndex && array2) : undefined2;
}
array2 = arrays[0];
var index = -1, seen = caches[0];
while (++index < length && result2.length < maxLength) {
var value = array2[index], computed = iteratee2 ? iteratee2(value) : value;
value = comparator || value !== 0 ? value : 0;
- if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) {
+ if (!(seen ? cacheHas2(seen, computed) : includes2(result2, computed, comparator))) {
othIndex = othLength;
while (--othIndex) {
var cache = caches[othIndex];
- if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) {
+ if (!(cache ? cacheHas2(cache, computed) : includes2(arrays[othIndex], computed, comparator))) {
continue outer;
}
}
var func = object == null ? object : object[toKey(last(path))];
return func == null ? undefined2 : apply(func, object, args);
}
- function baseIsArguments(value) {
- return isObjectLike2(value) && baseGetTag2(value) == argsTag;
+ function baseIsArguments2(value) {
+ return isObjectLike2(value) && baseGetTag2(value) == argsTag4;
}
function baseIsArrayBuffer(value) {
- return isObjectLike2(value) && baseGetTag2(value) == arrayBufferTag;
+ return isObjectLike2(value) && baseGetTag2(value) == arrayBufferTag3;
}
function baseIsDate(value) {
- return isObjectLike2(value) && baseGetTag2(value) == dateTag;
+ return isObjectLike2(value) && baseGetTag2(value) == dateTag3;
}
- function baseIsEqual(value, other, bitmask, customizer, stack) {
+ function baseIsEqual2(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || !isObjectLike2(value) && !isObjectLike2(other)) {
return value !== value && other !== other;
}
- return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
+ return baseIsEqualDeep2(value, other, bitmask, customizer, baseIsEqual2, stack);
}
- function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
- var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
- objTag = objTag == argsTag ? objectTag : objTag;
- othTag = othTag == argsTag ? objectTag : othTag;
- var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
- if (isSameTag && isBuffer(object)) {
- if (!isBuffer(other)) {
+ function baseIsEqualDeep2(object, other, bitmask, customizer, equalFunc, stack) {
+ var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag3 : getTag2(object), othTag = othIsArr ? arrayTag3 : getTag2(other);
+ objTag = objTag == argsTag4 ? objectTag4 : objTag;
+ othTag = othTag == argsTag4 ? objectTag4 : othTag;
+ var objIsObj = objTag == objectTag4, othIsObj = othTag == objectTag4, isSameTag = objTag == othTag;
+ if (isSameTag && isBuffer2(object)) {
+ if (!isBuffer2(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
- stack || (stack = new Stack());
- return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
+ stack || (stack = new Stack2());
+ return objIsArr || isTypedArray2(object) ? equalArrays2(object, other, bitmask, customizer, equalFunc, stack) : equalByTag2(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
- if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
- var objIsWrapped = objIsObj && hasOwnProperty2.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty2.call(other, "__wrapped__");
+ if (!(bitmask & COMPARE_PARTIAL_FLAG5)) {
+ var objIsWrapped = objIsObj && hasOwnProperty10.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty10.call(other, "__wrapped__");
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
- stack || (stack = new Stack());
+ stack || (stack = new Stack2());
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
- stack || (stack = new Stack());
- return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
+ stack || (stack = new Stack2());
+ return equalObjects2(object, other, bitmask, customizer, equalFunc, stack);
}
function baseIsMap(value) {
- return isObjectLike2(value) && getTag(value) == mapTag;
+ return isObjectLike2(value) && getTag2(value) == mapTag4;
}
function baseIsMatch(object, source, matchData, customizer) {
var index = matchData.length, length = index, noCustomizer = !customizer;
return false;
}
} else {
- var stack = new Stack();
+ var stack = new Stack2();
if (customizer) {
var result2 = customizer(objValue, srcValue, key, object, source, stack);
}
- if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
+ if (!(result2 === undefined2 ? baseIsEqual2(srcValue, objValue, COMPARE_PARTIAL_FLAG5 | COMPARE_UNORDERED_FLAG3, customizer, stack) : result2)) {
return false;
}
}
}
return true;
}
- function baseIsNative(value) {
- if (!isObject3(value) || isMasked(value)) {
+ function baseIsNative2(value) {
+ if (!isObject3(value) || isMasked2(value)) {
return false;
}
- var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
+ var pattern = isFunction2(value) ? reIsNative2 : reIsHostCtor2;
+ return pattern.test(toSource2(value));
}
function baseIsRegExp(value) {
- return isObjectLike2(value) && baseGetTag2(value) == regexpTag;
+ return isObjectLike2(value) && baseGetTag2(value) == regexpTag3;
}
function baseIsSet(value) {
- return isObjectLike2(value) && getTag(value) == setTag;
+ return isObjectLike2(value) && getTag2(value) == setTag4;
}
- function baseIsTypedArray(value) {
- return isObjectLike2(value) && isLength(value.length) && !!typedArrayTags[baseGetTag2(value)];
+ function baseIsTypedArray2(value) {
+ return isObjectLike2(value) && isLength2(value.length) && !!typedArrayTags2[baseGetTag2(value)];
}
function baseIteratee(value) {
if (typeof value == "function") {
}
return property(value);
}
- function baseKeys(object) {
- if (!isPrototype(object)) {
- return nativeKeys(object);
+ function baseKeys2(object) {
+ if (!isPrototype2(object)) {
+ return nativeKeys2(object);
}
var result2 = [];
for (var key in Object2(object)) {
- if (hasOwnProperty2.call(object, key) && key != "constructor") {
+ if (hasOwnProperty10.call(object, key) && key != "constructor") {
result2.push(key);
}
}
if (!isObject3(object)) {
return nativeKeysIn(object);
}
- var isProto = isPrototype(object), result2 = [];
+ var isProto = isPrototype2(object), result2 = [];
for (var key in object) {
- if (!(key == "constructor" && (isProto || !hasOwnProperty2.call(object, key)))) {
+ if (!(key == "constructor" && (isProto || !hasOwnProperty10.call(object, key)))) {
result2.push(key);
}
}
return value < other;
}
function baseMap(collection, iteratee2) {
- var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];
+ var index = -1, result2 = isArrayLike2(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value, key, collection2) {
result2[++index] = iteratee2(value, key, collection2);
});
}
return function(object) {
var objValue = get4(object, path);
- return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
+ return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual2(srcValue, objValue, COMPARE_PARTIAL_FLAG5 | COMPARE_UNORDERED_FLAG3);
};
}
function baseMerge(object, source, srcIndex, customizer, stack) {
return;
}
baseFor(source, function(srcValue, key) {
- stack || (stack = new Stack());
+ stack || (stack = new Stack2());
if (isObject3(srcValue)) {
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
} else {
var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2;
var isCommon = newValue === undefined2;
if (isCommon) {
- var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
+ var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer2(srcValue), isTyped = !isArr && !isBuff && isTypedArray2(srcValue);
newValue = srcValue;
if (isArr || isBuff || isTyped) {
if (isArray2(objValue)) {
} else {
newValue = [];
}
- } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+ } else if (isPlainObject(srcValue) || isArguments2(srcValue)) {
newValue = objValue;
- if (isArguments(objValue)) {
+ if (isArguments2(objValue)) {
newValue = toPlainObject(objValue);
- } else if (!isObject3(objValue) || isFunction(objValue)) {
+ } else if (!isObject3(objValue) || isFunction2(objValue)) {
newValue = initCloneObject(srcValue);
}
} else {
}
assignMergeValue(object, key, newValue);
}
- function baseNth(array2, n2) {
+ function baseNth(array2, n3) {
var length = array2.length;
if (!length) {
return;
}
- n2 += n2 < 0 ? length : 0;
- return isIndex(n2, length) ? array2[n2] : undefined2;
+ n3 += n3 < 0 ? length : 0;
+ return isIndex2(n3, length) ? array2[n3] : undefined2;
}
function baseOrderBy(collection, iteratees, orders) {
if (iteratees.length) {
iteratees = [identity4];
}
var index = -1;
- iteratees = arrayMap2(iteratees, baseUnary(getIteratee()));
+ iteratees = arrayMap2(iteratees, baseUnary2(getIteratee()));
var result2 = baseMap(collection, function(value, key, collection2) {
var criteria = arrayMap2(iteratees, function(iteratee2) {
return iteratee2(value);
values2 = copyArray(values2);
}
if (iteratee2) {
- seen = arrayMap2(array2, baseUnary(iteratee2));
+ seen = arrayMap2(array2, baseUnary2(iteratee2));
}
while (++index < length) {
var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value;
while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) {
if (seen !== array2) {
- splice.call(seen, fromIndex, 1);
+ splice2.call(seen, fromIndex, 1);
}
- splice.call(array2, fromIndex, 1);
+ splice2.call(array2, fromIndex, 1);
}
}
return array2;
var index = indexes[length];
if (length == lastIndex || index !== previous) {
var previous = index;
- if (isIndex(index)) {
- splice.call(array2, index, 1);
+ if (isIndex2(index)) {
+ splice2.call(array2, index, 1);
} else {
baseUnset(array2, index);
}
}
return result2;
}
- function baseRepeat(string, n2) {
+ function baseRepeat(string, n3) {
var result2 = "";
- if (!string || n2 < 1 || n2 > MAX_SAFE_INTEGER) {
+ if (!string || n3 < 1 || n3 > MAX_SAFE_INTEGER3) {
return result2;
}
do {
- if (n2 % 2) {
+ if (n3 % 2) {
result2 += string;
}
- n2 = nativeFloor(n2 / 2);
- if (n2) {
+ n3 = nativeFloor(n3 / 2);
+ if (n3) {
string += string;
}
- } while (n2);
+ } while (n3);
return result2;
}
function baseRest(func, start2) {
function baseSample(collection) {
return arraySample(values(collection));
}
- function baseSampleSize(collection, n2) {
+ function baseSampleSize(collection, n3) {
var array2 = values(collection);
- return shuffleSelf(array2, baseClamp(n2, 0, array2.length));
+ return shuffleSelf(array2, baseClamp(n3, 0, array2.length));
}
function baseSet(object, path, value, customizer) {
if (!isObject3(object)) {
var objValue = nested[key];
newValue = customizer ? customizer(objValue, key, nested) : undefined2;
if (newValue === undefined2) {
- newValue = isObject3(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
+ newValue = isObject3(objValue) ? objValue : isIndex2(path[index + 1]) ? [] : {};
}
}
assignValue(nested, key, newValue);
var index = -1, length = array2.length, resIndex = 0, result2 = [];
while (++index < length) {
var value = array2[index], computed = iteratee2 ? iteratee2(value) : value;
- if (!index || !eq(computed, seen)) {
+ if (!index || !eq2(computed, seen)) {
var seen = computed;
result2[resIndex++] = value === 0 ? 0 : value;
}
if (comparator) {
isCommon = false;
includes2 = arrayIncludesWith;
- } else if (length >= LARGE_ARRAY_SIZE) {
+ } else if (length >= LARGE_ARRAY_SIZE2) {
var set4 = iteratee2 ? null : createSet(array2);
if (set4) {
- return setToArray(set4);
+ return setToArray2(set4);
}
isCommon = false;
- includes2 = cacheHas;
- seen = new SetCache();
+ includes2 = cacheHas2;
+ seen = new SetCache2();
} else {
seen = iteratee2 ? [] : result2;
}
result2 = result2.value();
}
return arrayReduce(actions, function(result3, action) {
- return action.func.apply(action.thisArg, arrayPush([result3], action.args));
+ return action.func.apply(action.thisArg, arrayPush2([result3], action.args));
}, result2);
}
function baseXor(arrays, iteratee2, comparator) {
}
function cloneArrayBuffer(arrayBuffer) {
var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
- new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
+ new Uint8Array3(result2).set(new Uint8Array3(arrayBuffer));
return result2;
}
function cloneDataView(dataView, isDeep) {
return result2;
}
function cloneSymbol(symbol) {
- return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
+ return symbolValueOf2 ? Object2(symbolValueOf2.call(symbol)) : {};
}
function cloneTypedArray(typedArray, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
return object;
}
function copySymbols(source, object) {
- return copyObject(source, getSymbols(source), object);
+ return copyObject(source, getSymbols2(source), object);
}
function copySymbolsIn(source, object) {
return copyObject(source, getSymbolsIn(source), object);
if (collection == null) {
return collection;
}
- if (!isArrayLike(collection)) {
+ if (!isArrayLike2(collection)) {
return eachFunc(collection, iteratee2);
}
var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection);
function createFind(findIndexFunc) {
return function(collection, predicate, fromIndex) {
var iterable = Object2(collection);
- if (!isArrayLike(collection)) {
+ if (!isArrayLike2(collection)) {
var iteratee2 = getIteratee(predicate, 3);
- collection = keys(collection);
+ collection = keys2(collection);
predicate = function(key) {
return iteratee2(iterable[key], key, iterable);
};
}
function createOver(arrayFunc) {
return flatRest(function(iteratees) {
- iteratees = arrayMap2(iteratees, baseUnary(getIteratee()));
+ iteratees = arrayMap2(iteratees, baseUnary2(getIteratee()));
return baseRest(function(args) {
var thisArg = this;
return arrayFunc(iteratees, function(iteratee2) {
function createRelationalOperation(operator) {
return function(value, other) {
if (!(typeof value == "string" && typeof other == "string")) {
- value = toNumber2(value);
- other = toNumber2(other);
+ value = toNumber3(value);
+ other = toNumber3(other);
}
return operator(value, other);
};
function createRound(methodName) {
var func = Math2[methodName];
return function(number3, precision2) {
- number3 = toNumber2(number3);
+ number3 = toNumber3(number3);
precision2 = precision2 == null ? 0 : nativeMin2(toInteger(precision2), 292);
if (precision2 && nativeIsFinite(number3)) {
- var pair2 = (toString2(number3) + "e").split("e"), value = func(pair2[0] + "e" + (+pair2[1] + precision2));
- pair2 = (toString2(value) + "e").split("e");
- return +(pair2[0] + "e" + (+pair2[1] - precision2));
+ var pair3 = (toString2(number3) + "e").split("e"), value = func(pair3[0] + "e" + (+pair3[1] + precision2));
+ pair3 = (toString2(value) + "e").split("e");
+ return +(pair3[0] + "e" + (+pair3[1] - precision2));
}
return func(number3);
};
}
- var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY2) ? noop3 : function(values2) {
- return new Set2(values2);
+ var createSet = !(Set3 && 1 / setToArray2(new Set3([, -0]))[1] == INFINITY2) ? noop3 : function(values2) {
+ return new Set3(values2);
};
function createToPairs(keysFunc) {
return function(object) {
- var tag = getTag(object);
- if (tag == mapTag) {
- return mapToArray(object);
+ var tag = getTag2(object);
+ if (tag == mapTag4) {
+ return mapToArray2(object);
}
- if (tag == setTag) {
+ if (tag == setTag4) {
return setToPairs(object);
}
return baseToPairs(object, keysFunc(object));
return setWrapToString(setter(result2, newData), func, bitmask);
}
function customDefaultsAssignIn(objValue, srcValue, key, object) {
- if (objValue === undefined2 || eq(objValue, objectProto3[key]) && !hasOwnProperty2.call(object, key)) {
+ if (objValue === undefined2 || eq2(objValue, objectProto13[key]) && !hasOwnProperty10.call(object, key)) {
return srcValue;
}
return objValue;
function customOmitClone(value) {
return isPlainObject(value) ? undefined2 : value;
}
- function equalArrays(array2, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array2.length, othLength = other.length;
+ function equalArrays2(array2, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG5, arrLength = array2.length, othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array2;
}
- var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2;
+ var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG3 ? new SetCache2() : undefined2;
stack.set(array2, other);
stack.set(other, array2);
while (++index < arrLength) {
break;
}
if (seen) {
- if (!arraySome(other, function(othValue2, othIndex) {
- if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
+ if (!arraySome2(other, function(othValue2, othIndex) {
+ if (!cacheHas2(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
stack["delete"](other);
return result2;
}
- function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
+ function equalByTag2(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
- case dataViewTag:
+ case dataViewTag4:
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
return false;
}
object = object.buffer;
other = other.buffer;
- case arrayBufferTag:
- if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
+ case arrayBufferTag3:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array3(object), new Uint8Array3(other))) {
return false;
}
return true;
- case boolTag:
- case dateTag:
- case numberTag:
- return eq(+object, +other);
- case errorTag:
+ case boolTag3:
+ case dateTag3:
+ case numberTag4:
+ return eq2(+object, +other);
+ case errorTag3:
return object.name == other.name && object.message == other.message;
- case regexpTag:
- case stringTag:
+ case regexpTag3:
+ case stringTag3:
return object == other + "";
- case mapTag:
- var convert = mapToArray;
- case setTag:
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
- convert || (convert = setToArray);
+ case mapTag4:
+ var convert = mapToArray2;
+ case setTag4:
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG5;
+ convert || (convert = setToArray2);
if (object.size != other.size && !isPartial) {
return false;
}
if (stacked) {
return stacked == other;
}
- bitmask |= COMPARE_UNORDERED_FLAG;
+ bitmask |= COMPARE_UNORDERED_FLAG3;
stack.set(object, other);
- var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
+ var result2 = equalArrays2(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
stack["delete"](object);
return result2;
- case symbolTag2:
- if (symbolValueOf) {
- return symbolValueOf.call(object) == symbolValueOf.call(other);
+ case symbolTag3:
+ if (symbolValueOf2) {
+ return symbolValueOf2.call(object) == symbolValueOf2.call(other);
}
}
return false;
}
- function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
+ function equalObjects2(object, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG5, objProps = getAllKeys2(object), objLength = objProps.length, othProps = getAllKeys2(other), othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
- if (!(isPartial ? key in other : hasOwnProperty2.call(other, key))) {
+ if (!(isPartial ? key in other : hasOwnProperty10.call(other, key))) {
return false;
}
}
function flatRest(func) {
return setToString(overRest(func, undefined2, flatten2), func + "");
}
- function getAllKeys(object) {
- return baseGetAllKeys(object, keys, getSymbols);
+ function getAllKeys2(object) {
+ return baseGetAllKeys2(object, keys2, getSymbols2);
}
function getAllKeysIn(object) {
- return baseGetAllKeys(object, keysIn, getSymbolsIn);
+ return baseGetAllKeys2(object, keysIn, getSymbolsIn);
}
var getData = !metaMap ? noop3 : function(func) {
return metaMap.get(func);
};
function getFuncName(func) {
- var result2 = func.name + "", array2 = realNames[result2], length = hasOwnProperty2.call(realNames, result2) ? array2.length : 0;
+ var result2 = func.name + "", array2 = realNames[result2], length = hasOwnProperty10.call(realNames, result2) ? array2.length : 0;
while (length--) {
var data = array2[length], otherFunc = data.func;
if (otherFunc == null || otherFunc == func) {
return result2;
}
function getHolder(func) {
- var object = hasOwnProperty2.call(lodash, "placeholder") ? lodash : func;
+ var object = hasOwnProperty10.call(lodash, "placeholder") ? lodash : func;
return object.placeholder;
}
function getIteratee() {
result2 = result2 === iteratee ? baseIteratee : result2;
return arguments.length ? result2(arguments[0], arguments[1]) : result2;
}
- function getMapData(map3, key) {
+ function getMapData2(map3, key) {
var data = map3.__data__;
- return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+ return isKeyable2(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
}
function getMatchData(object) {
- var result2 = keys(object), length = result2.length;
+ var result2 = keys2(object), length = result2.length;
while (length--) {
var key = result2[length], value = object[key];
result2[length] = [key, value, isStrictComparable(value)];
}
return result2;
}
- function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined2;
+ function getNative2(object, key) {
+ var value = getValue2(object, key);
+ return baseIsNative2(value) ? value : undefined2;
}
function getRawTag2(value) {
- var isOwn = hasOwnProperty2.call(value, symToStringTag3), tag = value[symToStringTag3];
+ var isOwn = hasOwnProperty10.call(value, symToStringTag3), tag = value[symToStringTag3];
try {
value[symToStringTag3] = undefined2;
var unmasked = true;
- } catch (e) {
+ } catch (e3) {
}
var result2 = nativeObjectToString3.call(value);
if (unmasked) {
}
return result2;
}
- var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
+ var getSymbols2 = !nativeGetSymbols2 ? stubArray2 : function(object) {
if (object == null) {
return [];
}
object = Object2(object);
- return arrayFilter(nativeGetSymbols(object), function(symbol) {
- return propertyIsEnumerable.call(object, symbol);
+ return arrayFilter2(nativeGetSymbols2(object), function(symbol) {
+ return propertyIsEnumerable3.call(object, symbol);
});
};
- var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
+ var getSymbolsIn = !nativeGetSymbols2 ? stubArray2 : function(object) {
var result2 = [];
while (object) {
- arrayPush(result2, getSymbols(object));
+ arrayPush2(result2, getSymbols2(object));
object = getPrototype(object);
}
return result2;
};
- var getTag = baseGetTag2;
- if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
- getTag = function(value) {
- var result2 = baseGetTag2(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : "";
+ var getTag2 = baseGetTag2;
+ if (DataView3 && getTag2(new DataView3(new ArrayBuffer(1))) != dataViewTag4 || Map3 && getTag2(new Map3()) != mapTag4 || Promise3 && getTag2(Promise3.resolve()) != promiseTag2 || Set3 && getTag2(new Set3()) != setTag4 || WeakMap2 && getTag2(new WeakMap2()) != weakMapTag3) {
+ getTag2 = function(value) {
+ var result2 = baseGetTag2(value), Ctor = result2 == objectTag4 ? value.constructor : undefined2, ctorString = Ctor ? toSource2(Ctor) : "";
if (ctorString) {
switch (ctorString) {
- case dataViewCtorString:
- return dataViewTag;
- case mapCtorString:
- return mapTag;
- case promiseCtorString:
- return promiseTag;
- case setCtorString:
- return setTag;
- case weakMapCtorString:
- return weakMapTag;
+ case dataViewCtorString2:
+ return dataViewTag4;
+ case mapCtorString2:
+ return mapTag4;
+ case promiseCtorString2:
+ return promiseTag2;
+ case setCtorString2:
+ return setTag4;
+ case weakMapCtorString2:
+ return weakMapTag3;
}
}
return result2;
return result2;
}
length = object == null ? 0 : object.length;
- return !!length && isLength(length) && isIndex(key, length) && (isArray2(object) || isArguments(object));
+ return !!length && isLength2(length) && isIndex2(key, length) && (isArray2(object) || isArguments2(object));
}
function initCloneArray(array2) {
var length = array2.length, result2 = new array2.constructor(length);
- if (length && typeof array2[0] == "string" && hasOwnProperty2.call(array2, "index")) {
+ if (length && typeof array2[0] == "string" && hasOwnProperty10.call(array2, "index")) {
result2.index = array2.index;
result2.input = array2.input;
}
return result2;
}
function initCloneObject(object) {
- return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
+ return typeof object.constructor == "function" && !isPrototype2(object) ? baseCreate(getPrototype(object)) : {};
}
function initCloneByTag(object, tag, isDeep) {
var Ctor = object.constructor;
switch (tag) {
- case arrayBufferTag:
+ case arrayBufferTag3:
return cloneArrayBuffer(object);
- case boolTag:
- case dateTag:
+ case boolTag3:
+ case dateTag3:
return new Ctor(+object);
- case dataViewTag:
+ case dataViewTag4:
return cloneDataView(object, isDeep);
- case float32Tag:
- case float64Tag:
- case int8Tag:
- case int16Tag:
- case int32Tag:
- case uint8Tag:
- case uint8ClampedTag:
- case uint16Tag:
- case uint32Tag:
+ case float32Tag2:
+ case float64Tag2:
+ case int8Tag2:
+ case int16Tag2:
+ case int32Tag2:
+ case uint8Tag2:
+ case uint8ClampedTag2:
+ case uint16Tag2:
+ case uint32Tag2:
return cloneTypedArray(object, isDeep);
- case mapTag:
+ case mapTag4:
return new Ctor();
- case numberTag:
- case stringTag:
+ case numberTag4:
+ case stringTag3:
return new Ctor(object);
- case regexpTag:
+ case regexpTag3:
return cloneRegExp(object);
- case setTag:
+ case setTag4:
return new Ctor();
- case symbolTag2:
+ case symbolTag3:
return cloneSymbol(object);
}
}
return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
}
function isFlattenable(value) {
- return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
+ return isArray2(value) || isArguments2(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
}
- function isIndex(value, length) {
+ function isIndex2(value, length) {
var type2 = typeof value;
- length = length == null ? MAX_SAFE_INTEGER : length;
- return !!length && (type2 == "number" || type2 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ length = length == null ? MAX_SAFE_INTEGER3 : length;
+ return !!length && (type2 == "number" || type2 != "symbol" && reIsUint2.test(value)) && (value > -1 && value % 1 == 0 && value < length);
}
function isIterateeCall(value, index, object) {
if (!isObject3(object)) {
return false;
}
var type2 = typeof index;
- if (type2 == "number" ? isArrayLike(object) && isIndex(index, object.length) : type2 == "string" && index in object) {
- return eq(object[index], value);
+ if (type2 == "number" ? isArrayLike2(object) && isIndex2(index, object.length) : type2 == "string" && index in object) {
+ return eq2(object[index], value);
}
return false;
}
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);
}
- function isKeyable(value) {
+ function isKeyable2(value) {
var type2 = typeof value;
return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value !== "__proto__" : value === null;
}
var data = getData(other);
return !!data && func === data[0];
}
- function isMasked(func) {
- return !!maskSrcKey && maskSrcKey in func;
+ function isMasked2(func) {
+ return !!maskSrcKey2 && maskSrcKey2 in func;
}
- var isMaskable = coreJsData ? isFunction : stubFalse;
- function isPrototype(value) {
- var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto3;
+ var isMaskable = coreJsData2 ? isFunction2 : stubFalse2;
+ function isPrototype2(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto13;
return value === proto;
}
function isStrictComparable(value) {
var arrLength = array2.length, length = nativeMin2(indexes.length, arrLength), oldArray = copyArray(array2);
while (length--) {
var index = indexes[length];
- array2[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2;
+ array2[length] = isIndex2(index, arrLength) ? oldArray[index] : undefined2;
}
return array2;
}
var result2 = value + "";
return result2 == "0" && 1 / value == -INFINITY2 ? "-0" : result2;
}
- function toSource(func) {
+ function toSource2(func) {
if (func != null) {
try {
- return funcToString.call(func);
- } catch (e) {
+ return funcToString3.call(func);
+ } catch (e3) {
}
try {
return func + "";
- } catch (e) {
+ } catch (e3) {
}
}
return "";
}
function updateWrapDetails(details, bitmask) {
- arrayEach(wrapFlags, function(pair2) {
- var value = "_." + pair2[0];
- if (bitmask & pair2[1] && !arrayIncludes(details, value)) {
+ arrayEach(wrapFlags, function(pair3) {
+ var value = "_." + pair3[0];
+ if (bitmask & pair3[1] && !arrayIncludes(details, value)) {
details.push(value);
}
});
while (index--) {
args[index - 1] = arguments[index];
}
- return arrayPush(isArray2(array2) ? copyArray(array2) : [array2], baseFlatten(args, 1));
+ return arrayPush2(isArray2(array2) ? copyArray(array2) : [array2], baseFlatten(args, 1));
}
var difference = baseRest(function(array2, values2) {
return isArrayLikeObject(array2) ? baseDifference(array2, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
}
return isArrayLikeObject(array2) ? baseDifference(array2, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : [];
});
- function drop(array2, n2, guard) {
+ function drop(array2, n3, guard) {
var length = array2 == null ? 0 : array2.length;
if (!length) {
return [];
}
- n2 = guard || n2 === undefined2 ? 1 : toInteger(n2);
- return baseSlice(array2, n2 < 0 ? 0 : n2, length);
+ n3 = guard || n3 === undefined2 ? 1 : toInteger(n3);
+ return baseSlice(array2, n3 < 0 ? 0 : n3, length);
}
- function dropRight(array2, n2, guard) {
+ function dropRight(array2, n3, guard) {
var length = array2 == null ? 0 : array2.length;
if (!length) {
return [];
}
- n2 = guard || n2 === undefined2 ? 1 : toInteger(n2);
- n2 = length - n2;
- return baseSlice(array2, 0, n2 < 0 ? 0 : n2);
+ n3 = guard || n3 === undefined2 ? 1 : toInteger(n3);
+ n3 = length - n3;
+ return baseSlice(array2, 0, n3 < 0 ? 0 : n3);
}
function dropRightWhile(array2, predicate) {
return array2 && array2.length ? baseWhile(array2, getIteratee(predicate, 3), true, true) : [];
depth = depth === undefined2 ? 1 : toInteger(depth);
return baseFlatten(array2, depth);
}
- function fromPairs(pairs) {
- var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {};
+ function fromPairs(pairs2) {
+ var index = -1, length = pairs2 == null ? 0 : pairs2.length, result2 = {};
while (++index < length) {
- var pair2 = pairs[index];
- result2[pair2[0]] = pair2[1];
+ var pair3 = pairs2[index];
+ result2[pair3[0]] = pair3[1];
}
return result2;
}
}
return value === value ? strictLastIndexOf(array2, value, index) : baseFindIndex(array2, baseIsNaN, index, true);
}
- function nth(array2, n2) {
- return array2 && array2.length ? baseNth(array2, toInteger(n2)) : undefined2;
+ function nth(array2, n3) {
+ return array2 && array2.length ? baseNth(array2, toInteger(n3)) : undefined2;
}
var pull = baseRest(pullAll);
function pullAll(array2, values2) {
var pullAt = flatRest(function(array2, indexes) {
var length = array2 == null ? 0 : array2.length, result2 = baseAt(array2, indexes);
basePullAt(array2, arrayMap2(indexes, function(index) {
- return isIndex(index, length) ? +index : index;
+ return isIndex2(index, length) ? +index : index;
}).sort(compareAscending));
return result2;
});
var length = array2 == null ? 0 : array2.length;
if (length) {
var index = baseSortedIndex(array2, value);
- if (index < length && eq(array2[index], value)) {
+ if (index < length && eq2(array2[index], value)) {
return index;
}
}
var length = array2 == null ? 0 : array2.length;
if (length) {
var index = baseSortedIndex(array2, value, true) - 1;
- if (eq(array2[index], value)) {
+ if (eq2(array2[index], value)) {
return index;
}
}
var length = array2 == null ? 0 : array2.length;
return length ? baseSlice(array2, 1, length) : [];
}
- function take(array2, n2, guard) {
+ function take(array2, n3, guard) {
if (!(array2 && array2.length)) {
return [];
}
- n2 = guard || n2 === undefined2 ? 1 : toInteger(n2);
- return baseSlice(array2, 0, n2 < 0 ? 0 : n2);
+ n3 = guard || n3 === undefined2 ? 1 : toInteger(n3);
+ return baseSlice(array2, 0, n3 < 0 ? 0 : n3);
}
- function takeRight(array2, n2, guard) {
+ function takeRight(array2, n3, guard) {
var length = array2 == null ? 0 : array2.length;
if (!length) {
return [];
}
- n2 = guard || n2 === undefined2 ? 1 : toInteger(n2);
- n2 = length - n2;
- return baseSlice(array2, n2 < 0 ? 0 : n2, length);
+ n3 = guard || n3 === undefined2 ? 1 : toInteger(n3);
+ n3 = length - n3;
+ return baseSlice(array2, n3 < 0 ? 0 : n3, length);
}
function takeRightWhile(array2, predicate) {
return array2 && array2.length ? baseWhile(array2, getIteratee(predicate, 3), false, true) : [];
return [];
}
var length = 0;
- array2 = arrayFilter(array2, function(group) {
+ array2 = arrayFilter2(array2, function(group) {
if (isArrayLikeObject(group)) {
length = nativeMax2(group.length, length);
return true;
}
});
- return baseTimes(length, function(index) {
+ return baseTimes2(length, function(index) {
return arrayMap2(array2, baseProperty(index));
});
}
return isArrayLikeObject(array2) ? baseDifference(array2, values2) : [];
});
var xor = baseRest(function(arrays) {
- return baseXor(arrayFilter(arrays, isArrayLikeObject));
+ return baseXor(arrayFilter2(arrays, isArrayLikeObject));
});
var xorBy = baseRest(function(arrays) {
var iteratee2 = last(arrays);
if (isArrayLikeObject(iteratee2)) {
iteratee2 = undefined2;
}
- return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
+ return baseXor(arrayFilter2(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
});
var xorWith = baseRest(function(arrays) {
var comparator = last(arrays);
comparator = typeof comparator == "function" ? comparator : undefined2;
- return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator);
+ return baseXor(arrayFilter2(arrays, isArrayLikeObject), undefined2, comparator);
});
var zip = baseRest(unzip);
function zipObject(props, values2) {
var length = paths.length, start2 = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
return baseAt(object, paths);
};
- if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start2)) {
+ if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex2(start2)) {
return this.thru(interceptor);
}
value = value.slice(start2, +start2 + (length ? 1 : 0));
return baseWrapperValue(this.__wrapped__, this.__actions__);
}
var countBy = createAggregator(function(result2, value, key) {
- if (hasOwnProperty2.call(result2, key)) {
+ if (hasOwnProperty10.call(result2, key)) {
++result2[key];
} else {
baseAssignValue(result2, key, 1);
return func(collection, getIteratee(predicate, 3));
}
function filter2(collection, predicate) {
- var func = isArray2(collection) ? arrayFilter : baseFilter;
+ var func = isArray2(collection) ? arrayFilter2 : baseFilter;
return func(collection, getIteratee(predicate, 3));
}
var find2 = createFind(findIndex);
return func(collection, getIteratee(iteratee2, 3));
}
var groupBy = createAggregator(function(result2, value, key) {
- if (hasOwnProperty2.call(result2, key)) {
+ if (hasOwnProperty10.call(result2, key)) {
result2[key].push(value);
} else {
baseAssignValue(result2, key, [value]);
}
});
function includes(collection, value, fromIndex, guard) {
- collection = isArrayLike(collection) ? collection : values(collection);
+ collection = isArrayLike2(collection) ? collection : values(collection);
fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
var length = collection.length;
if (fromIndex < 0) {
return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
}
var invokeMap = baseRest(function(collection, path, args) {
- var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
+ var index = -1, isFunc = typeof path == "function", result2 = isArrayLike2(collection) ? Array2(collection.length) : [];
baseEach(collection, function(value) {
result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
});
return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
}
function reject(collection, predicate) {
- var func = isArray2(collection) ? arrayFilter : baseFilter;
+ var func = isArray2(collection) ? arrayFilter2 : baseFilter;
return func(collection, negate(getIteratee(predicate, 3)));
}
function sample(collection) {
var func = isArray2(collection) ? arraySample : baseSample;
return func(collection);
}
- function sampleSize(collection, n2, guard) {
- if (guard ? isIterateeCall(collection, n2, guard) : n2 === undefined2) {
- n2 = 1;
+ function sampleSize(collection, n3, guard) {
+ if (guard ? isIterateeCall(collection, n3, guard) : n3 === undefined2) {
+ n3 = 1;
} else {
- n2 = toInteger(n2);
+ n3 = toInteger(n3);
}
var func = isArray2(collection) ? arraySampleSize : baseSampleSize;
- return func(collection, n2);
+ return func(collection, n3);
}
function shuffle(collection) {
var func = isArray2(collection) ? arrayShuffle : baseShuffle;
if (collection == null) {
return 0;
}
- if (isArrayLike(collection)) {
+ if (isArrayLike2(collection)) {
return isString(collection) ? stringSize(collection) : collection.length;
}
- var tag = getTag(collection);
- if (tag == mapTag || tag == setTag) {
+ var tag = getTag2(collection);
+ if (tag == mapTag4 || tag == setTag4) {
return collection.size;
}
- return baseKeys(collection).length;
+ return baseKeys2(collection).length;
}
function some(collection, predicate, guard) {
- var func = isArray2(collection) ? arraySome : baseSome;
+ var func = isArray2(collection) ? arraySome2 : baseSome;
if (guard && isIterateeCall(collection, predicate, guard)) {
predicate = undefined2;
}
var now3 = ctxNow || function() {
return root3.Date.now();
};
- function after(n2, func) {
+ function after(n3, func) {
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT3);
}
- n2 = toInteger(n2);
+ n3 = toInteger(n3);
return function() {
- if (--n2 < 1) {
+ if (--n3 < 1) {
return func.apply(this, arguments);
}
};
}
- function ary(func, n2, guard) {
- n2 = guard ? undefined2 : n2;
- n2 = func && n2 == null ? func.length : n2;
- return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n2);
+ function ary(func, n3, guard) {
+ n3 = guard ? undefined2 : n3;
+ n3 = func && n3 == null ? func.length : n3;
+ return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n3);
}
- function before(n2, func) {
+ function before(n3, func) {
var result2;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT3);
}
- n2 = toInteger(n2);
+ n3 = toInteger(n3);
return function() {
- if (--n2 > 0) {
+ if (--n3 > 0) {
result2 = func.apply(this, arguments);
}
- if (n2 <= 1) {
+ if (n3 <= 1) {
func = undefined2;
}
return result2;
if (typeof func != "function") {
throw new TypeError2(FUNC_ERROR_TEXT3);
}
- wait = toNumber2(wait) || 0;
+ wait = toNumber3(wait) || 0;
if (isObject3(options2)) {
leading = !!options2.leading;
maxing = "maxWait" in options2;
- maxWait = maxing ? nativeMax2(toNumber2(options2.maxWait) || 0, wait) : maxWait;
+ maxWait = maxing ? nativeMax2(toNumber3(options2.maxWait) || 0, wait) : maxWait;
trailing = "trailing" in options2 ? !!options2.trailing : trailing;
}
function invokeFunc(time) {
return baseDelay(func, 1, args);
});
var delay = baseRest(function(func, wait, args) {
- return baseDelay(func, toNumber2(wait) || 0, args);
+ return baseDelay(func, toNumber3(wait) || 0, args);
});
function flip(func) {
return createWrap(func, WRAP_FLIP_FLAG);
memoized.cache = cache.set(key, result2) || cache;
return result2;
};
- memoized.cache = new (memoize.Cache || MapCache)();
+ memoized.cache = new (memoize.Cache || MapCache2)();
return memoized;
}
- memoize.Cache = MapCache;
+ memoize.Cache = MapCache2;
function negate(predicate) {
if (typeof predicate != "function") {
throw new TypeError2(FUNC_ERROR_TEXT3);
return before(2, func);
}
var overArgs = castRest(function(func, transforms) {
- transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap2(transforms[0], baseUnary(getIteratee())) : arrayMap2(baseFlatten(transforms, 1), baseUnary(getIteratee()));
+ transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap2(transforms[0], baseUnary2(getIteratee())) : arrayMap2(baseFlatten(transforms, 1), baseUnary2(getIteratee()));
var funcsLength = transforms.length;
return baseRest(function(args) {
var index = -1, length = nativeMin2(args.length, funcsLength);
return baseRest(function(args) {
var array2 = args[start2], otherArgs = castSlice(args, 0, start2);
if (array2) {
- arrayPush(otherArgs, array2);
+ arrayPush2(otherArgs, array2);
}
return apply(func, this, otherArgs);
});
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
}
function conformsTo(object, source) {
- return source == null || baseConformsTo(object, source, keys(source));
+ return source == null || baseConformsTo(object, source, keys2(source));
}
- function eq(value, other) {
+ function eq2(value, other) {
return value === other || value !== value && other !== other;
}
- var gt = createRelationalOperation(baseGt);
+ var gt2 = createRelationalOperation(baseGt);
var gte = createRelationalOperation(function(value, other) {
return value >= other;
});
- var isArguments = baseIsArguments(function() {
+ var isArguments2 = baseIsArguments2(function() {
return arguments;
- }()) ? baseIsArguments : function(value) {
- return isObjectLike2(value) && hasOwnProperty2.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
+ }()) ? baseIsArguments2 : function(value) {
+ return isObjectLike2(value) && hasOwnProperty10.call(value, "callee") && !propertyIsEnumerable3.call(value, "callee");
};
var isArray2 = Array2.isArray;
- var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
- function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
+ var isArrayBuffer = nodeIsArrayBuffer ? baseUnary2(nodeIsArrayBuffer) : baseIsArrayBuffer;
+ function isArrayLike2(value) {
+ return value != null && isLength2(value.length) && !isFunction2(value);
}
function isArrayLikeObject(value) {
- return isObjectLike2(value) && isArrayLike(value);
+ return isObjectLike2(value) && isArrayLike2(value);
}
function isBoolean(value) {
- return value === true || value === false || isObjectLike2(value) && baseGetTag2(value) == boolTag;
+ return value === true || value === false || isObjectLike2(value) && baseGetTag2(value) == boolTag3;
}
- var isBuffer = nativeIsBuffer || stubFalse;
- var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
+ var isBuffer2 = nativeIsBuffer2 || stubFalse2;
+ var isDate = nodeIsDate ? baseUnary2(nodeIsDate) : baseIsDate;
function isElement2(value) {
return isObjectLike2(value) && value.nodeType === 1 && !isPlainObject(value);
}
if (value == null) {
return true;
}
- if (isArrayLike(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
+ if (isArrayLike2(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer2(value) || isTypedArray2(value) || isArguments2(value))) {
return !value.length;
}
- var tag = getTag(value);
- if (tag == mapTag || tag == setTag) {
+ var tag = getTag2(value);
+ if (tag == mapTag4 || tag == setTag4) {
return !value.size;
}
- if (isPrototype(value)) {
- return !baseKeys(value).length;
+ if (isPrototype2(value)) {
+ return !baseKeys2(value).length;
}
for (var key in value) {
- if (hasOwnProperty2.call(value, key)) {
+ if (hasOwnProperty10.call(value, key)) {
return false;
}
}
return true;
}
- function isEqual(value, other) {
- return baseIsEqual(value, other);
+ function isEqual4(value, other) {
+ return baseIsEqual2(value, other);
}
function isEqualWith(value, other, customizer) {
customizer = typeof customizer == "function" ? customizer : undefined2;
var result2 = customizer ? customizer(value, other) : undefined2;
- return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2;
+ return result2 === undefined2 ? baseIsEqual2(value, other, undefined2, customizer) : !!result2;
}
function isError(value) {
if (!isObjectLike2(value)) {
return false;
}
var tag = baseGetTag2(value);
- return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
+ return tag == errorTag3 || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
}
function isFinite2(value) {
return typeof value == "number" && nativeIsFinite(value);
}
- function isFunction(value) {
+ function isFunction2(value) {
if (!isObject3(value)) {
return false;
}
var tag = baseGetTag2(value);
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
+ return tag == funcTag3 || tag == genTag2 || tag == asyncTag2 || tag == proxyTag2;
}
function isInteger(value) {
return typeof value == "number" && value == toInteger(value);
}
- function isLength(value) {
- return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ function isLength2(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER3;
}
function isObject3(value) {
var type2 = typeof value;
function isObjectLike2(value) {
return value != null && typeof value == "object";
}
- var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
+ var isMap = nodeIsMap ? baseUnary2(nodeIsMap) : baseIsMap;
function isMatch(object, source) {
return object === source || baseIsMatch(object, source, getMatchData(source));
}
return baseIsMatch(object, source, getMatchData(source), customizer);
}
function isNaN2(value) {
- return isNumber2(value) && value != +value;
+ return isNumber3(value) && value != +value;
}
function isNative(value) {
if (isMaskable(value)) {
throw new Error2(CORE_ERROR_TEXT);
}
- return baseIsNative(value);
+ return baseIsNative2(value);
}
function isNull(value) {
return value === null;
function isNil(value) {
return value == null;
}
- function isNumber2(value) {
- return typeof value == "number" || isObjectLike2(value) && baseGetTag2(value) == numberTag;
+ function isNumber3(value) {
+ return typeof value == "number" || isObjectLike2(value) && baseGetTag2(value) == numberTag4;
}
function isPlainObject(value) {
- if (!isObjectLike2(value) || baseGetTag2(value) != objectTag) {
+ if (!isObjectLike2(value) || baseGetTag2(value) != objectTag4) {
return false;
}
var proto = getPrototype(value);
if (proto === null) {
return true;
}
- var Ctor = hasOwnProperty2.call(proto, "constructor") && proto.constructor;
- return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
+ var Ctor = hasOwnProperty10.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString3.call(Ctor) == objectCtorString;
}
- var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
+ var isRegExp = nodeIsRegExp ? baseUnary2(nodeIsRegExp) : baseIsRegExp;
function isSafeInteger(value) {
- return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
+ return isInteger(value) && value >= -MAX_SAFE_INTEGER3 && value <= MAX_SAFE_INTEGER3;
}
- var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
+ var isSet = nodeIsSet ? baseUnary2(nodeIsSet) : baseIsSet;
function isString(value) {
- return typeof value == "string" || !isArray2(value) && isObjectLike2(value) && baseGetTag2(value) == stringTag;
+ return typeof value == "string" || !isArray2(value) && isObjectLike2(value) && baseGetTag2(value) == stringTag3;
}
function isSymbol2(value) {
- return typeof value == "symbol" || isObjectLike2(value) && baseGetTag2(value) == symbolTag2;
+ return typeof value == "symbol" || isObjectLike2(value) && baseGetTag2(value) == symbolTag3;
}
- var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ var isTypedArray2 = nodeIsTypedArray2 ? baseUnary2(nodeIsTypedArray2) : baseIsTypedArray2;
function isUndefined(value) {
return value === undefined2;
}
function isWeakMap(value) {
- return isObjectLike2(value) && getTag(value) == weakMapTag;
+ return isObjectLike2(value) && getTag2(value) == weakMapTag3;
}
function isWeakSet(value) {
return isObjectLike2(value) && baseGetTag2(value) == weakSetTag;
}
- var lt = createRelationalOperation(baseLt);
+ var lt2 = createRelationalOperation(baseLt);
var lte = createRelationalOperation(function(value, other) {
return value <= other;
});
if (!value) {
return [];
}
- if (isArrayLike(value)) {
+ if (isArrayLike2(value)) {
return isString(value) ? stringToArray(value) : copyArray(value);
}
if (symIterator && value[symIterator]) {
return iteratorToArray(value[symIterator]());
}
- var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
+ var tag = getTag2(value), func = tag == mapTag4 ? mapToArray2 : tag == setTag4 ? setToArray2 : values;
return func(value);
}
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
- value = toNumber2(value);
+ value = toNumber3(value);
if (value === INFINITY2 || value === -INFINITY2) {
var sign2 = value < 0 ? -1 : 1;
return sign2 * MAX_INTEGER;
function toLength(value) {
return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
}
- function toNumber2(value) {
+ function toNumber3(value) {
if (typeof value == "number") {
return value;
}
return copyObject(value, keysIn(value));
}
function toSafeInteger(value) {
- return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
+ return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER3, MAX_SAFE_INTEGER3) : value === 0 ? value : 0;
}
function toString2(value) {
return value == null ? "" : baseToString2(value);
}
var assign = createAssigner(function(object, source) {
- if (isPrototype(source) || isArrayLike(source)) {
- copyObject(source, keys(source), object);
+ if (isPrototype2(source) || isArrayLike2(source)) {
+ copyObject(source, keys2(source), object);
return;
}
for (var key in source) {
- if (hasOwnProperty2.call(source, key)) {
+ if (hasOwnProperty10.call(source, key)) {
assignValue(object, key, source[key]);
}
}
copyObject(source, keysIn(source), object, customizer);
});
var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
- copyObject(source, keys(source), object, customizer);
+ copyObject(source, keys2(source), object, customizer);
});
- var at = flatRest(baseAt);
+ var at2 = flatRest(baseAt);
function create2(prototype, properties) {
var result2 = baseCreate(prototype);
return properties == null ? result2 : baseAssign(result2, properties);
}
- var defaults2 = baseRest(function(object, sources) {
+ var defaults = baseRest(function(object, sources) {
object = Object2(object);
var index = -1;
var length = sources.length;
while (++propsIndex < propsLength) {
var key = props[propsIndex];
var value = object[key];
- if (value === undefined2 || eq(value, objectProto3[key]) && !hasOwnProperty2.call(object, key)) {
+ if (value === undefined2 || eq2(value, objectProto13[key]) && !hasOwnProperty10.call(object, key)) {
object[key] = source[key];
}
}
return object && baseForOwnRight(object, getIteratee(iteratee2, 3));
}
function functions(object) {
- return object == null ? [] : baseFunctions(object, keys(object));
+ return object == null ? [] : baseFunctions(object, keys2(object));
}
function functionsIn(object) {
return object == null ? [] : baseFunctions(object, keysIn(object));
if (value != null && typeof value.toString != "function") {
value = nativeObjectToString3.call(value);
}
- if (hasOwnProperty2.call(result2, value)) {
+ if (hasOwnProperty10.call(result2, value)) {
result2[value].push(key);
} else {
result2[value] = [key];
}
}, getIteratee);
var invoke = baseRest(baseInvoke);
- function keys(object) {
- return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ function keys2(object) {
+ return isArrayLike2(object) ? arrayLikeKeys2(object) : baseKeys2(object);
}
function keysIn(object) {
- return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
+ return isArrayLike2(object) ? arrayLikeKeys2(object, true) : baseKeysIn(object);
}
function mapKeys(object, iteratee2) {
var result2 = {};
});
return result2;
}
- var merge3 = createAssigner(function(object, source, srcIndex) {
+ var merge2 = createAssigner(function(object, source, srcIndex) {
baseMerge(object, source, srcIndex);
});
var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
index = length;
value = defaultValue;
}
- object = isFunction(value) ? value.call(object) : value;
+ object = isFunction2(value) ? value.call(object) : value;
}
return object;
}
customizer = typeof customizer == "function" ? customizer : undefined2;
return object == null ? object : baseSet(object, path, value, customizer);
}
- var toPairs = createToPairs(keys);
+ var toPairs = createToPairs(keys2);
var toPairsIn = createToPairs(keysIn);
function transform2(object, iteratee2, accumulator) {
- var isArr = isArray2(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
+ var isArr = isArray2(object), isArrLike = isArr || isBuffer2(object) || isTypedArray2(object);
iteratee2 = getIteratee(iteratee2, 4);
if (accumulator == null) {
var Ctor = object && object.constructor;
if (isArrLike) {
accumulator = isArr ? new Ctor() : [];
} else if (isObject3(object)) {
- accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
+ accumulator = isFunction2(Ctor) ? baseCreate(getPrototype(object)) : {};
} else {
accumulator = {};
}
return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
}
function values(object) {
- return object == null ? [] : baseValues(object, keys(object));
+ return object == null ? [] : baseValues(object, keys2(object));
}
function valuesIn(object) {
return object == null ? [] : baseValues(object, keysIn(object));
lower2 = undefined2;
}
if (upper !== undefined2) {
- upper = toNumber2(upper);
+ upper = toNumber3(upper);
upper = upper === upper ? upper : 0;
}
if (lower2 !== undefined2) {
- lower2 = toNumber2(lower2);
+ lower2 = toNumber3(lower2);
lower2 = lower2 === lower2 ? lower2 : 0;
}
- return baseClamp(toNumber2(number3), lower2, upper);
+ return baseClamp(toNumber3(number3), lower2, upper);
}
function inRange(number3, start2, end) {
start2 = toFinite(start2);
} else {
end = toFinite(end);
}
- number3 = toNumber2(number3);
+ number3 = toNumber3(number3);
return baseInRange(number3, start2, end);
}
function random(lower2, upper, floating) {
}
function escapeRegExp(string) {
string = toString2(string);
- return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
+ return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar2, "\\$&") : string;
}
var kebabCase = createCompounder(function(result2, word, index) {
return result2 + (index ? "-" : "") + word.toLowerCase();
}
return nativeParseInt(toString2(string).replace(reTrimStart2, ""), radix || 0);
}
- function repeat(string, n2, guard) {
- if (guard ? isIterateeCall(string, n2, guard) : n2 === undefined2) {
- n2 = 1;
+ function repeat(string, n3, guard) {
+ if (guard ? isIterateeCall(string, n3, guard) : n3 === undefined2) {
+ n3 = 1;
} else {
- n2 = toInteger(n2);
+ n3 = toInteger(n3);
}
- return baseRepeat(toString2(string), n2);
+ return baseRepeat(toString2(string), n3);
}
function replace() {
var args = arguments, string = toString2(args[0]);
}
string = toString2(string);
options2 = assignInWith({}, options2, settings, customDefaultsAssignIn);
- var imports = assignInWith({}, options2.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
+ var imports = assignInWith({}, options2.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys2(imports), importsValues = baseValues(imports, importsKeys);
var isEscaping, isEvaluating, index = 0, interpolate = options2.interpolate || reNoMatch, source = "__p += '";
var reDelimiters = RegExp2(
(options2.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options2.evaluate || reNoMatch).source + "|$",
"g"
);
- var sourceURL = "//# sourceURL=" + (hasOwnProperty2.call(options2, "sourceURL") ? (options2.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
+ var sourceURL = "//# sourceURL=" + (hasOwnProperty10.call(options2, "sourceURL") ? (options2.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
interpolateValue || (interpolateValue = esTemplateValue);
source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
return match;
});
source += "';\n";
- var variable = hasOwnProperty2.call(options2, "variable") && options2.variable;
+ var variable = hasOwnProperty10.call(options2, "variable") && options2.variable;
if (!variable) {
source = "with (obj) {\n" + source + "\n}\n";
} else if (reForbiddenIdentifierChars.test(variable)) {
var attempt = baseRest(function(func, args) {
try {
return apply(func, undefined2, args);
- } catch (e) {
- return isError(e) ? e : new Error2(e);
+ } catch (e3) {
+ return isError(e3) ? e3 : new Error2(e3);
}
});
var bindAll = flatRest(function(object, methodNames) {
});
return object;
});
- function cond(pairs) {
- var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
- pairs = !length ? [] : arrayMap2(pairs, function(pair2) {
- if (typeof pair2[1] != "function") {
+ function cond(pairs2) {
+ var length = pairs2 == null ? 0 : pairs2.length, toIteratee = getIteratee();
+ pairs2 = !length ? [] : arrayMap2(pairs2, function(pair3) {
+ if (typeof pair3[1] != "function") {
throw new TypeError2(FUNC_ERROR_TEXT3);
}
- return [toIteratee(pair2[0]), pair2[1]];
+ return [toIteratee(pair3[0]), pair3[1]];
});
return baseRest(function(args) {
var index = -1;
while (++index < length) {
- var pair2 = pairs[index];
- if (apply(pair2[0], this, args)) {
- return apply(pair2[1], this, args);
+ var pair3 = pairs2[index];
+ if (apply(pair3[0], this, args)) {
+ return apply(pair3[1], this, args);
}
}
});
};
});
function mixin(object, source, options2) {
- var props = keys(source), methodNames = baseFunctions(source, props);
+ var props = keys2(source), methodNames = baseFunctions(source, props);
if (options2 == null && !(isObject3(source) && (methodNames.length || !props.length))) {
options2 = source;
source = object;
object = this;
- methodNames = baseFunctions(source, keys(source));
+ methodNames = baseFunctions(source, keys2(source));
}
- var chain2 = !(isObject3(options2) && "chain" in options2) || !!options2.chain, isFunc = isFunction(object);
+ var chain2 = !(isObject3(options2) && "chain" in options2) || !!options2.chain, isFunc = isFunction2(object);
arrayEach(methodNames, function(methodName) {
var func = source[methodName];
object[methodName] = func;
result2.__chain__ = chainAll;
return result2;
}
- return func.apply(object, arrayPush([this.value()], arguments));
+ return func.apply(object, arrayPush2([this.value()], arguments));
};
}
});
}
function noop3() {
}
- function nthArg(n2) {
- n2 = toInteger(n2);
+ function nthArg(n3) {
+ n3 = toInteger(n3);
return baseRest(function(args) {
- return baseNth(args, n2);
+ return baseNth(args, n3);
});
}
var over = createOver(arrayMap2);
var overEvery = createOver(arrayEvery);
- var overSome = createOver(arraySome);
+ var overSome = createOver(arraySome2);
function property(path) {
return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
}
}
var range3 = createRange();
var rangeRight = createRange(true);
- function stubArray() {
+ function stubArray2() {
return [];
}
- function stubFalse() {
+ function stubFalse2() {
return false;
}
function stubObject() {
function stubTrue() {
return true;
}
- function times(n2, iteratee2) {
- n2 = toInteger(n2);
- if (n2 < 1 || n2 > MAX_SAFE_INTEGER) {
+ function times(n3, iteratee2) {
+ n3 = toInteger(n3);
+ if (n3 < 1 || n3 > MAX_SAFE_INTEGER3) {
return [];
}
- var index = MAX_ARRAY_LENGTH, length = nativeMin2(n2, MAX_ARRAY_LENGTH);
+ var index = MAX_ARRAY_LENGTH, length = nativeMin2(n3, MAX_ARRAY_LENGTH);
iteratee2 = getIteratee(iteratee2);
- n2 -= MAX_ARRAY_LENGTH;
- var result2 = baseTimes(length, iteratee2);
- while (++index < n2) {
+ n3 -= MAX_ARRAY_LENGTH;
+ var result2 = baseTimes2(length, iteratee2);
+ while (++index < n3) {
iteratee2(index);
}
return result2;
lodash.assignIn = assignIn;
lodash.assignInWith = assignInWith;
lodash.assignWith = assignWith;
- lodash.at = at;
+ lodash.at = at2;
lodash.before = before;
lodash.bind = bind;
lodash.bindAll = bindAll;
lodash.curry = curry;
lodash.curryRight = curryRight;
lodash.debounce = debounce2;
- lodash.defaults = defaults2;
+ lodash.defaults = defaults;
lodash.defaultsDeep = defaultsDeep;
lodash.defer = defer;
lodash.delay = delay;
lodash.invokeMap = invokeMap;
lodash.iteratee = iteratee;
lodash.keyBy = keyBy;
- lodash.keys = keys;
+ lodash.keys = keys2;
lodash.keysIn = keysIn;
lodash.map = map2;
lodash.mapKeys = mapKeys;
lodash.matches = matches;
lodash.matchesProperty = matchesProperty;
lodash.memoize = memoize;
- lodash.merge = merge3;
+ lodash.merge = merge2;
lodash.mergeWith = mergeWith;
lodash.method = method;
lodash.methodOf = methodOf;
lodash.defaultTo = defaultTo;
lodash.divide = divide;
lodash.endsWith = endsWith;
- lodash.eq = eq;
+ lodash.eq = eq2;
lodash.escape = escape6;
lodash.escapeRegExp = escapeRegExp;
lodash.every = every;
lodash.forOwn = forOwn;
lodash.forOwnRight = forOwnRight;
lodash.get = get4;
- lodash.gt = gt;
+ lodash.gt = gt2;
lodash.gte = gte;
lodash.has = has;
lodash.hasIn = hasIn;
lodash.indexOf = indexOf;
lodash.inRange = inRange;
lodash.invoke = invoke;
- lodash.isArguments = isArguments;
+ lodash.isArguments = isArguments2;
lodash.isArray = isArray2;
lodash.isArrayBuffer = isArrayBuffer;
- lodash.isArrayLike = isArrayLike;
+ lodash.isArrayLike = isArrayLike2;
lodash.isArrayLikeObject = isArrayLikeObject;
lodash.isBoolean = isBoolean;
- lodash.isBuffer = isBuffer;
+ lodash.isBuffer = isBuffer2;
lodash.isDate = isDate;
lodash.isElement = isElement2;
lodash.isEmpty = isEmpty;
- lodash.isEqual = isEqual;
+ lodash.isEqual = isEqual4;
lodash.isEqualWith = isEqualWith;
lodash.isError = isError;
lodash.isFinite = isFinite2;
- lodash.isFunction = isFunction;
+ lodash.isFunction = isFunction2;
lodash.isInteger = isInteger;
- lodash.isLength = isLength;
+ lodash.isLength = isLength2;
lodash.isMap = isMap;
lodash.isMatch = isMatch;
lodash.isMatchWith = isMatchWith;
lodash.isNative = isNative;
lodash.isNil = isNil;
lodash.isNull = isNull;
- lodash.isNumber = isNumber2;
+ lodash.isNumber = isNumber3;
lodash.isObject = isObject3;
lodash.isObjectLike = isObjectLike2;
lodash.isPlainObject = isPlainObject;
lodash.isSet = isSet;
lodash.isString = isString;
lodash.isSymbol = isSymbol2;
- lodash.isTypedArray = isTypedArray;
+ lodash.isTypedArray = isTypedArray2;
lodash.isUndefined = isUndefined;
lodash.isWeakMap = isWeakMap;
lodash.isWeakSet = isWeakSet;
lodash.lastIndexOf = lastIndexOf;
lodash.lowerCase = lowerCase;
lodash.lowerFirst = lowerFirst;
- lodash.lt = lt;
+ lodash.lt = lt2;
lodash.lte = lte;
lodash.max = max3;
lodash.maxBy = maxBy;
lodash.meanBy = meanBy;
lodash.min = min3;
lodash.minBy = minBy;
- lodash.stubArray = stubArray;
- lodash.stubFalse = stubFalse;
+ lodash.stubArray = stubArray2;
+ lodash.stubFalse = stubFalse2;
lodash.stubObject = stubObject;
lodash.stubString = stubString;
lodash.stubTrue = stubTrue;
lodash.toInteger = toInteger;
lodash.toLength = toLength;
lodash.toLower = toLower;
- lodash.toNumber = toNumber2;
+ lodash.toNumber = toNumber3;
lodash.toSafeInteger = toSafeInteger;
lodash.toString = toString2;
lodash.toUpper = toUpper;
mixin(lodash, function() {
var source = {};
baseForOwn(lodash, function(func, methodName) {
- if (!hasOwnProperty2.call(lodash.prototype, methodName)) {
+ if (!hasOwnProperty10.call(lodash.prototype, methodName)) {
source[methodName] = func;
}
});
lodash[methodName].placeholder = lodash;
});
arrayEach(["drop", "take"], function(methodName, index) {
- LazyWrapper.prototype[methodName] = function(n2) {
- n2 = n2 === undefined2 ? 1 : nativeMax2(toInteger(n2), 0);
+ LazyWrapper.prototype[methodName] = function(n3) {
+ n3 = n3 === undefined2 ? 1 : nativeMax2(toInteger(n3), 0);
var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();
if (result2.__filtered__) {
- result2.__takeCount__ = nativeMin2(n2, result2.__takeCount__);
+ result2.__takeCount__ = nativeMin2(n3, result2.__takeCount__);
} else {
result2.__views__.push({
- "size": nativeMin2(n2, MAX_ARRAY_LENGTH),
+ "size": nativeMin2(n3, MAX_ARRAY_LENGTH),
"type": methodName + (result2.__dir__ < 0 ? "Right" : "")
});
}
return result2;
};
- LazyWrapper.prototype[methodName + "Right"] = function(n2) {
- return this.reverse()[methodName](n2).reverse();
+ LazyWrapper.prototype[methodName + "Right"] = function(n3) {
+ return this.reverse()[methodName](n3).reverse();
};
});
arrayEach(["filter", "map", "takeWhile"], function(methodName, index) {
lodash.prototype[methodName] = function() {
var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value);
var interceptor = function(value2) {
- var result3 = lodashFunc.apply(lodash, arrayPush([value2], args));
+ var result3 = lodashFunc.apply(lodash, arrayPush2([value2], args));
return isTaker && chainAll ? result3[0] : result3;
};
if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
};
});
arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
- var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
+ var func = arrayProto2[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
lodash.prototype[methodName] = function() {
var args = arguments;
if (retUnwrapped && !this.__chain__) {
var lodashFunc = lodash[methodName];
if (lodashFunc) {
var key = lodashFunc.name + "";
- if (!hasOwnProperty2.call(realNames, key)) {
+ if (!hasOwnProperty10.call(realNames, key)) {
realNames[key] = [];
}
realNames[key].push({ "name": methodName, "func": lodashFunc });
}
return lodash;
};
- var _ = runInContext();
+ var _2 = runInContext();
if (typeof define == "function" && typeof define.amd == "object" && define.amd) {
- root3._ = _;
+ root3._ = _2;
define(function() {
- return _;
+ return _2;
});
- } else if (freeModule) {
- (freeModule.exports = _)._ = _;
- freeExports._ = _;
+ } else if (freeModule3) {
+ (freeModule3.exports = _2)._ = _2;
+ freeExports3._ = _2;
} else {
- root3._ = _;
+ root3._ = _2;
}
}).call(exports2);
}
});
+ // node_modules/fast-deep-equal/index.js
+ var require_fast_deep_equal = __commonJS({
+ "node_modules/fast-deep-equal/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = function equal(a2, b2) {
+ if (a2 === b2)
+ return true;
+ if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") {
+ if (a2.constructor !== b2.constructor)
+ return false;
+ var length, i3, keys2;
+ if (Array.isArray(a2)) {
+ length = a2.length;
+ if (length != b2.length)
+ return false;
+ for (i3 = length; i3-- !== 0; )
+ if (!equal(a2[i3], b2[i3]))
+ return false;
+ return true;
+ }
+ if (a2.constructor === RegExp)
+ return a2.source === b2.source && a2.flags === b2.flags;
+ if (a2.valueOf !== Object.prototype.valueOf)
+ return a2.valueOf() === b2.valueOf();
+ if (a2.toString !== Object.prototype.toString)
+ return a2.toString() === b2.toString();
+ keys2 = Object.keys(a2);
+ length = keys2.length;
+ if (length !== Object.keys(b2).length)
+ return false;
+ for (i3 = length; i3-- !== 0; )
+ if (!Object.prototype.hasOwnProperty.call(b2, keys2[i3]))
+ return false;
+ for (i3 = length; i3-- !== 0; ) {
+ var key = keys2[i3];
+ if (!equal(a2[key], b2[key]))
+ return false;
+ }
+ return true;
+ }
+ return a2 !== a2 && b2 !== b2;
+ };
+ }
+ });
+
// node_modules/rbush/rbush.min.js
var require_rbush_min = __commonJS({
"node_modules/rbush/rbush.min.js"(exports2, module2) {
- !function(t, i2) {
- "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = i2() : "function" == typeof define && define.amd ? define(i2) : (t = t || self).RBush = i2();
+ !function(t2, i3) {
+ "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = i3() : "function" == typeof define && define.amd ? define(i3) : (t2 = t2 || self).RBush = i3();
}(exports2, function() {
"use strict";
- function t(t2, r2, e3, a2, h2) {
- !function t3(n3, r3, e4, a3, h3) {
- for (; a3 > e4; ) {
- if (a3 - e4 > 600) {
- var o2 = a3 - e4 + 1, s2 = r3 - e4 + 1, l2 = Math.log(o2), f3 = 0.5 * Math.exp(2 * l2 / 3), u2 = 0.5 * Math.sqrt(l2 * f3 * (o2 - f3) / o2) * (s2 - o2 / 2 < 0 ? -1 : 1), m2 = Math.max(e4, Math.floor(r3 - s2 * f3 / o2 + u2)), c2 = Math.min(a3, Math.floor(r3 + (o2 - s2) * f3 / o2 + u2));
- t3(n3, r3, m2, c2, h3);
+ function t2(t3, r3, e4, a3, h3) {
+ !function t4(n4, r4, e6, a4, h4) {
+ for (; a4 > e6; ) {
+ if (a4 - e6 > 600) {
+ var o3 = a4 - e6 + 1, s3 = r4 - e6 + 1, l3 = Math.log(o3), f4 = 0.5 * Math.exp(2 * l3 / 3), u3 = 0.5 * Math.sqrt(l3 * f4 * (o3 - f4) / o3) * (s3 - o3 / 2 < 0 ? -1 : 1), m3 = Math.max(e6, Math.floor(r4 - s3 * f4 / o3 + u3)), c3 = Math.min(a4, Math.floor(r4 + (o3 - s3) * f4 / o3 + u3));
+ t4(n4, r4, m3, c3, h4);
}
- var p2 = n3[r3], d2 = e4, x = a3;
- for (i2(n3, e4, r3), h3(n3[a3], p2) > 0 && i2(n3, e4, a3); d2 < x; ) {
- for (i2(n3, d2, x), d2++, x--; h3(n3[d2], p2) < 0; )
- d2++;
- for (; h3(n3[x], p2) > 0; )
- x--;
+ var p3 = n4[r4], d4 = e6, x2 = a4;
+ for (i3(n4, e6, r4), h4(n4[a4], p3) > 0 && i3(n4, e6, a4); d4 < x2; ) {
+ for (i3(n4, d4, x2), d4++, x2--; h4(n4[d4], p3) < 0; )
+ d4++;
+ for (; h4(n4[x2], p3) > 0; )
+ x2--;
}
- 0 === h3(n3[e4], p2) ? i2(n3, e4, x) : i2(n3, ++x, a3), x <= r3 && (e4 = x + 1), r3 <= x && (a3 = x - 1);
+ 0 === h4(n4[e6], p3) ? i3(n4, e6, x2) : i3(n4, ++x2, a4), x2 <= r4 && (e6 = x2 + 1), r4 <= x2 && (a4 = x2 - 1);
}
- }(t2, r2, e3 || 0, a2 || t2.length - 1, h2 || n2);
+ }(t3, r3, e4 || 0, a3 || t3.length - 1, h3 || n3);
}
- function i2(t2, i3, n3) {
- var r2 = t2[i3];
- t2[i3] = t2[n3], t2[n3] = r2;
+ function i3(t3, i4, n4) {
+ var r3 = t3[i4];
+ t3[i4] = t3[n4], t3[n4] = r3;
}
- function n2(t2, i3) {
- return t2 < i3 ? -1 : t2 > i3 ? 1 : 0;
+ function n3(t3, i4) {
+ return t3 < i4 ? -1 : t3 > i4 ? 1 : 0;
}
- var r = function(t2) {
- void 0 === t2 && (t2 = 9), this._maxEntries = Math.max(4, t2), this._minEntries = Math.max(2, Math.ceil(0.4 * this._maxEntries)), this.clear();
+ var r2 = function(t3) {
+ void 0 === t3 && (t3 = 9), this._maxEntries = Math.max(4, t3), this._minEntries = Math.max(2, Math.ceil(0.4 * this._maxEntries)), this.clear();
};
- function e(t2, i3, n3) {
- if (!n3)
- return i3.indexOf(t2);
- for (var r2 = 0; r2 < i3.length; r2++)
- if (n3(t2, i3[r2]))
- return r2;
+ function e3(t3, i4, n4) {
+ if (!n4)
+ return i4.indexOf(t3);
+ for (var r3 = 0; r3 < i4.length; r3++)
+ if (n4(t3, i4[r3]))
+ return r3;
return -1;
}
- function a(t2, i3) {
- h(t2, 0, t2.children.length, i3, t2);
+ function a2(t3, i4) {
+ h2(t3, 0, t3.children.length, i4, t3);
}
- function h(t2, i3, n3, r2, e3) {
- e3 || (e3 = p(null)), e3.minX = 1 / 0, e3.minY = 1 / 0, e3.maxX = -1 / 0, e3.maxY = -1 / 0;
- for (var a2 = i3; a2 < n3; a2++) {
- var h2 = t2.children[a2];
- o(e3, t2.leaf ? r2(h2) : h2);
+ function h2(t3, i4, n4, r3, e4) {
+ e4 || (e4 = p2(null)), e4.minX = 1 / 0, e4.minY = 1 / 0, e4.maxX = -1 / 0, e4.maxY = -1 / 0;
+ for (var a3 = i4; a3 < n4; a3++) {
+ var h3 = t3.children[a3];
+ o2(e4, t3.leaf ? r3(h3) : h3);
}
- return e3;
+ return e4;
}
- function o(t2, i3) {
- return t2.minX = Math.min(t2.minX, i3.minX), t2.minY = Math.min(t2.minY, i3.minY), t2.maxX = Math.max(t2.maxX, i3.maxX), t2.maxY = Math.max(t2.maxY, i3.maxY), t2;
+ function o2(t3, i4) {
+ return t3.minX = Math.min(t3.minX, i4.minX), t3.minY = Math.min(t3.minY, i4.minY), t3.maxX = Math.max(t3.maxX, i4.maxX), t3.maxY = Math.max(t3.maxY, i4.maxY), t3;
}
- function s(t2, i3) {
- return t2.minX - i3.minX;
+ function s2(t3, i4) {
+ return t3.minX - i4.minX;
}
- function l(t2, i3) {
- return t2.minY - i3.minY;
+ function l2(t3, i4) {
+ return t3.minY - i4.minY;
}
- function f2(t2) {
- return (t2.maxX - t2.minX) * (t2.maxY - t2.minY);
+ function f3(t3) {
+ return (t3.maxX - t3.minX) * (t3.maxY - t3.minY);
}
- function u(t2) {
- return t2.maxX - t2.minX + (t2.maxY - t2.minY);
+ function u2(t3) {
+ return t3.maxX - t3.minX + (t3.maxY - t3.minY);
}
- function m(t2, i3) {
- return t2.minX <= i3.minX && t2.minY <= i3.minY && i3.maxX <= t2.maxX && i3.maxY <= t2.maxY;
+ function m2(t3, i4) {
+ return t3.minX <= i4.minX && t3.minY <= i4.minY && i4.maxX <= t3.maxX && i4.maxY <= t3.maxY;
}
- function c(t2, i3) {
- return i3.minX <= t2.maxX && i3.minY <= t2.maxY && i3.maxX >= t2.minX && i3.maxY >= t2.minY;
+ function c2(t3, i4) {
+ return i4.minX <= t3.maxX && i4.minY <= t3.maxY && i4.maxX >= t3.minX && i4.maxY >= t3.minY;
}
- function p(t2) {
- return { children: t2, height: 1, leaf: true, minX: 1 / 0, minY: 1 / 0, maxX: -1 / 0, maxY: -1 / 0 };
+ function p2(t3) {
+ return { children: t3, height: 1, leaf: true, minX: 1 / 0, minY: 1 / 0, maxX: -1 / 0, maxY: -1 / 0 };
}
- function d(i3, n3, r2, e3, a2) {
- for (var h2 = [n3, r2]; h2.length; )
- if (!((r2 = h2.pop()) - (n3 = h2.pop()) <= e3)) {
- var o2 = n3 + Math.ceil((r2 - n3) / e3 / 2) * e3;
- t(i3, o2, n3, r2, a2), h2.push(n3, o2, o2, r2);
+ function d2(i4, n4, r3, e4, a3) {
+ for (var h3 = [n4, r3]; h3.length; )
+ if (!((r3 = h3.pop()) - (n4 = h3.pop()) <= e4)) {
+ var o3 = n4 + Math.ceil((r3 - n4) / e4 / 2) * e4;
+ t2(i4, o3, n4, r3, a3), h3.push(n4, o3, o3, r3);
}
}
- return r.prototype.all = function() {
+ return r2.prototype.all = function() {
return this._all(this.data, []);
- }, r.prototype.search = function(t2) {
- var i3 = this.data, n3 = [];
- if (!c(t2, i3))
- return n3;
- for (var r2 = this.toBBox, e3 = []; i3; ) {
- for (var a2 = 0; a2 < i3.children.length; a2++) {
- var h2 = i3.children[a2], o2 = i3.leaf ? r2(h2) : h2;
- c(t2, o2) && (i3.leaf ? n3.push(h2) : m(t2, o2) ? this._all(h2, n3) : e3.push(h2));
- }
- i3 = e3.pop();
- }
- return n3;
- }, r.prototype.collides = function(t2) {
- var i3 = this.data;
- if (!c(t2, i3))
+ }, r2.prototype.search = function(t3) {
+ var i4 = this.data, n4 = [];
+ if (!c2(t3, i4))
+ return n4;
+ for (var r3 = this.toBBox, e4 = []; i4; ) {
+ for (var a3 = 0; a3 < i4.children.length; a3++) {
+ var h3 = i4.children[a3], o3 = i4.leaf ? r3(h3) : h3;
+ c2(t3, o3) && (i4.leaf ? n4.push(h3) : m2(t3, o3) ? this._all(h3, n4) : e4.push(h3));
+ }
+ i4 = e4.pop();
+ }
+ return n4;
+ }, r2.prototype.collides = function(t3) {
+ var i4 = this.data;
+ if (!c2(t3, i4))
return false;
- for (var n3 = []; i3; ) {
- for (var r2 = 0; r2 < i3.children.length; r2++) {
- var e3 = i3.children[r2], a2 = i3.leaf ? this.toBBox(e3) : e3;
- if (c(t2, a2)) {
- if (i3.leaf || m(t2, a2))
+ for (var n4 = []; i4; ) {
+ for (var r3 = 0; r3 < i4.children.length; r3++) {
+ var e4 = i4.children[r3], a3 = i4.leaf ? this.toBBox(e4) : e4;
+ if (c2(t3, a3)) {
+ if (i4.leaf || m2(t3, a3))
return true;
- n3.push(e3);
+ n4.push(e4);
}
}
- i3 = n3.pop();
+ i4 = n4.pop();
}
return false;
- }, r.prototype.load = function(t2) {
- if (!t2 || !t2.length)
+ }, r2.prototype.load = function(t3) {
+ if (!t3 || !t3.length)
return this;
- if (t2.length < this._minEntries) {
- for (var i3 = 0; i3 < t2.length; i3++)
- this.insert(t2[i3]);
+ if (t3.length < this._minEntries) {
+ for (var i4 = 0; i4 < t3.length; i4++)
+ this.insert(t3[i4]);
return this;
}
- var n3 = this._build(t2.slice(), 0, t2.length - 1, 0);
+ var n4 = this._build(t3.slice(), 0, t3.length - 1, 0);
if (this.data.children.length)
- if (this.data.height === n3.height)
- this._splitRoot(this.data, n3);
+ if (this.data.height === n4.height)
+ this._splitRoot(this.data, n4);
else {
- if (this.data.height < n3.height) {
- var r2 = this.data;
- this.data = n3, n3 = r2;
+ if (this.data.height < n4.height) {
+ var r3 = this.data;
+ this.data = n4, n4 = r3;
}
- this._insert(n3, this.data.height - n3.height - 1, true);
+ this._insert(n4, this.data.height - n4.height - 1, true);
}
else
- this.data = n3;
+ this.data = n4;
return this;
- }, r.prototype.insert = function(t2) {
- return t2 && this._insert(t2, this.data.height - 1), this;
- }, r.prototype.clear = function() {
- return this.data = p([]), this;
- }, r.prototype.remove = function(t2, i3) {
- if (!t2)
+ }, r2.prototype.insert = function(t3) {
+ return t3 && this._insert(t3, this.data.height - 1), this;
+ }, r2.prototype.clear = function() {
+ return this.data = p2([]), this;
+ }, r2.prototype.remove = function(t3, i4) {
+ if (!t3)
return this;
- for (var n3, r2, a2, h2 = this.data, o2 = this.toBBox(t2), s2 = [], l2 = []; h2 || s2.length; ) {
- if (h2 || (h2 = s2.pop(), r2 = s2[s2.length - 1], n3 = l2.pop(), a2 = true), h2.leaf) {
- var f3 = e(t2, h2.children, i3);
- if (-1 !== f3)
- return h2.children.splice(f3, 1), s2.push(h2), this._condense(s2), this;
+ for (var n4, r3, a3, h3 = this.data, o3 = this.toBBox(t3), s3 = [], l3 = []; h3 || s3.length; ) {
+ if (h3 || (h3 = s3.pop(), r3 = s3[s3.length - 1], n4 = l3.pop(), a3 = true), h3.leaf) {
+ var f4 = e3(t3, h3.children, i4);
+ if (-1 !== f4)
+ return h3.children.splice(f4, 1), s3.push(h3), this._condense(s3), this;
}
- a2 || h2.leaf || !m(h2, o2) ? r2 ? (n3++, h2 = r2.children[n3], a2 = false) : h2 = null : (s2.push(h2), l2.push(n3), n3 = 0, r2 = h2, h2 = h2.children[0]);
+ a3 || h3.leaf || !m2(h3, o3) ? r3 ? (n4++, h3 = r3.children[n4], a3 = false) : h3 = null : (s3.push(h3), l3.push(n4), n4 = 0, r3 = h3, h3 = h3.children[0]);
}
return this;
- }, r.prototype.toBBox = function(t2) {
- return t2;
- }, r.prototype.compareMinX = function(t2, i3) {
- return t2.minX - i3.minX;
- }, r.prototype.compareMinY = function(t2, i3) {
- return t2.minY - i3.minY;
- }, r.prototype.toJSON = function() {
+ }, r2.prototype.toBBox = function(t3) {
+ return t3;
+ }, r2.prototype.compareMinX = function(t3, i4) {
+ return t3.minX - i4.minX;
+ }, r2.prototype.compareMinY = function(t3, i4) {
+ return t3.minY - i4.minY;
+ }, r2.prototype.toJSON = function() {
return this.data;
- }, r.prototype.fromJSON = function(t2) {
- return this.data = t2, this;
- }, r.prototype._all = function(t2, i3) {
- for (var n3 = []; t2; )
- t2.leaf ? i3.push.apply(i3, t2.children) : n3.push.apply(n3, t2.children), t2 = n3.pop();
- return i3;
- }, r.prototype._build = function(t2, i3, n3, r2) {
- var e3, h2 = n3 - i3 + 1, o2 = this._maxEntries;
- if (h2 <= o2)
- return a(e3 = p(t2.slice(i3, n3 + 1)), this.toBBox), e3;
- r2 || (r2 = Math.ceil(Math.log(h2) / Math.log(o2)), o2 = Math.ceil(h2 / Math.pow(o2, r2 - 1))), (e3 = p([])).leaf = false, e3.height = r2;
- var s2 = Math.ceil(h2 / o2), l2 = s2 * Math.ceil(Math.sqrt(o2));
- d(t2, i3, n3, l2, this.compareMinX);
- for (var f3 = i3; f3 <= n3; f3 += l2) {
- var u2 = Math.min(f3 + l2 - 1, n3);
- d(t2, f3, u2, s2, this.compareMinY);
- for (var m2 = f3; m2 <= u2; m2 += s2) {
- var c2 = Math.min(m2 + s2 - 1, u2);
- e3.children.push(this._build(t2, m2, c2, r2 - 1));
- }
- }
- return a(e3, this.toBBox), e3;
- }, r.prototype._chooseSubtree = function(t2, i3, n3, r2) {
- for (; r2.push(i3), !i3.leaf && r2.length - 1 !== n3; ) {
- for (var e3 = 1 / 0, a2 = 1 / 0, h2 = void 0, o2 = 0; o2 < i3.children.length; o2++) {
- var s2 = i3.children[o2], l2 = f2(s2), u2 = (m2 = t2, c2 = s2, (Math.max(c2.maxX, m2.maxX) - Math.min(c2.minX, m2.minX)) * (Math.max(c2.maxY, m2.maxY) - Math.min(c2.minY, m2.minY)) - l2);
- u2 < a2 ? (a2 = u2, e3 = l2 < e3 ? l2 : e3, h2 = s2) : u2 === a2 && l2 < e3 && (e3 = l2, h2 = s2);
- }
- i3 = h2 || i3.children[0];
- }
- var m2, c2;
- return i3;
- }, r.prototype._insert = function(t2, i3, n3) {
- var r2 = n3 ? t2 : this.toBBox(t2), e3 = [], a2 = this._chooseSubtree(r2, this.data, i3, e3);
- for (a2.children.push(t2), o(a2, r2); i3 >= 0 && e3[i3].children.length > this._maxEntries; )
- this._split(e3, i3), i3--;
- this._adjustParentBBoxes(r2, e3, i3);
- }, r.prototype._split = function(t2, i3) {
- var n3 = t2[i3], r2 = n3.children.length, e3 = this._minEntries;
- this._chooseSplitAxis(n3, e3, r2);
- var h2 = this._chooseSplitIndex(n3, e3, r2), o2 = p(n3.children.splice(h2, n3.children.length - h2));
- o2.height = n3.height, o2.leaf = n3.leaf, a(n3, this.toBBox), a(o2, this.toBBox), i3 ? t2[i3 - 1].children.push(o2) : this._splitRoot(n3, o2);
- }, r.prototype._splitRoot = function(t2, i3) {
- this.data = p([t2, i3]), this.data.height = t2.height + 1, this.data.leaf = false, a(this.data, this.toBBox);
- }, r.prototype._chooseSplitIndex = function(t2, i3, n3) {
- for (var r2, e3, a2, o2, s2, l2, u2, m2 = 1 / 0, c2 = 1 / 0, p2 = i3; p2 <= n3 - i3; p2++) {
- var d2 = h(t2, 0, p2, this.toBBox), x = h(t2, p2, n3, this.toBBox), v = (e3 = d2, a2 = x, o2 = void 0, s2 = void 0, l2 = void 0, u2 = void 0, o2 = Math.max(e3.minX, a2.minX), s2 = Math.max(e3.minY, a2.minY), l2 = Math.min(e3.maxX, a2.maxX), u2 = Math.min(e3.maxY, a2.maxY), Math.max(0, l2 - o2) * Math.max(0, u2 - s2)), M = f2(d2) + f2(x);
- v < m2 ? (m2 = v, r2 = p2, c2 = M < c2 ? M : c2) : v === m2 && M < c2 && (c2 = M, r2 = p2);
- }
- return r2 || n3 - i3;
- }, r.prototype._chooseSplitAxis = function(t2, i3, n3) {
- var r2 = t2.leaf ? this.compareMinX : s, e3 = t2.leaf ? this.compareMinY : l;
- this._allDistMargin(t2, i3, n3, r2) < this._allDistMargin(t2, i3, n3, e3) && t2.children.sort(r2);
- }, r.prototype._allDistMargin = function(t2, i3, n3, r2) {
- t2.children.sort(r2);
- for (var e3 = this.toBBox, a2 = h(t2, 0, i3, e3), s2 = h(t2, n3 - i3, n3, e3), l2 = u(a2) + u(s2), f3 = i3; f3 < n3 - i3; f3++) {
- var m2 = t2.children[f3];
- o(a2, t2.leaf ? e3(m2) : m2), l2 += u(a2);
- }
- for (var c2 = n3 - i3 - 1; c2 >= i3; c2--) {
- var p2 = t2.children[c2];
- o(s2, t2.leaf ? e3(p2) : p2), l2 += u(s2);
- }
- return l2;
- }, r.prototype._adjustParentBBoxes = function(t2, i3, n3) {
- for (var r2 = n3; r2 >= 0; r2--)
- o(i3[r2], t2);
- }, r.prototype._condense = function(t2) {
- for (var i3 = t2.length - 1, n3 = void 0; i3 >= 0; i3--)
- 0 === t2[i3].children.length ? i3 > 0 ? (n3 = t2[i3 - 1].children).splice(n3.indexOf(t2[i3]), 1) : this.clear() : a(t2[i3], this.toBBox);
- }, r;
+ }, r2.prototype.fromJSON = function(t3) {
+ return this.data = t3, this;
+ }, r2.prototype._all = function(t3, i4) {
+ for (var n4 = []; t3; )
+ t3.leaf ? i4.push.apply(i4, t3.children) : n4.push.apply(n4, t3.children), t3 = n4.pop();
+ return i4;
+ }, r2.prototype._build = function(t3, i4, n4, r3) {
+ var e4, h3 = n4 - i4 + 1, o3 = this._maxEntries;
+ if (h3 <= o3)
+ return a2(e4 = p2(t3.slice(i4, n4 + 1)), this.toBBox), e4;
+ r3 || (r3 = Math.ceil(Math.log(h3) / Math.log(o3)), o3 = Math.ceil(h3 / Math.pow(o3, r3 - 1))), (e4 = p2([])).leaf = false, e4.height = r3;
+ var s3 = Math.ceil(h3 / o3), l3 = s3 * Math.ceil(Math.sqrt(o3));
+ d2(t3, i4, n4, l3, this.compareMinX);
+ for (var f4 = i4; f4 <= n4; f4 += l3) {
+ var u3 = Math.min(f4 + l3 - 1, n4);
+ d2(t3, f4, u3, s3, this.compareMinY);
+ for (var m3 = f4; m3 <= u3; m3 += s3) {
+ var c3 = Math.min(m3 + s3 - 1, u3);
+ e4.children.push(this._build(t3, m3, c3, r3 - 1));
+ }
+ }
+ return a2(e4, this.toBBox), e4;
+ }, r2.prototype._chooseSubtree = function(t3, i4, n4, r3) {
+ for (; r3.push(i4), !i4.leaf && r3.length - 1 !== n4; ) {
+ for (var e4 = 1 / 0, a3 = 1 / 0, h3 = void 0, o3 = 0; o3 < i4.children.length; o3++) {
+ var s3 = i4.children[o3], l3 = f3(s3), u3 = (m3 = t3, c3 = s3, (Math.max(c3.maxX, m3.maxX) - Math.min(c3.minX, m3.minX)) * (Math.max(c3.maxY, m3.maxY) - Math.min(c3.minY, m3.minY)) - l3);
+ u3 < a3 ? (a3 = u3, e4 = l3 < e4 ? l3 : e4, h3 = s3) : u3 === a3 && l3 < e4 && (e4 = l3, h3 = s3);
+ }
+ i4 = h3 || i4.children[0];
+ }
+ var m3, c3;
+ return i4;
+ }, r2.prototype._insert = function(t3, i4, n4) {
+ var r3 = n4 ? t3 : this.toBBox(t3), e4 = [], a3 = this._chooseSubtree(r3, this.data, i4, e4);
+ for (a3.children.push(t3), o2(a3, r3); i4 >= 0 && e4[i4].children.length > this._maxEntries; )
+ this._split(e4, i4), i4--;
+ this._adjustParentBBoxes(r3, e4, i4);
+ }, r2.prototype._split = function(t3, i4) {
+ var n4 = t3[i4], r3 = n4.children.length, e4 = this._minEntries;
+ this._chooseSplitAxis(n4, e4, r3);
+ var h3 = this._chooseSplitIndex(n4, e4, r3), o3 = p2(n4.children.splice(h3, n4.children.length - h3));
+ o3.height = n4.height, o3.leaf = n4.leaf, a2(n4, this.toBBox), a2(o3, this.toBBox), i4 ? t3[i4 - 1].children.push(o3) : this._splitRoot(n4, o3);
+ }, r2.prototype._splitRoot = function(t3, i4) {
+ this.data = p2([t3, i4]), this.data.height = t3.height + 1, this.data.leaf = false, a2(this.data, this.toBBox);
+ }, r2.prototype._chooseSplitIndex = function(t3, i4, n4) {
+ for (var r3, e4, a3, o3, s3, l3, u3, m3 = 1 / 0, c3 = 1 / 0, p3 = i4; p3 <= n4 - i4; p3++) {
+ var d4 = h2(t3, 0, p3, this.toBBox), x2 = h2(t3, p3, n4, this.toBBox), v2 = (e4 = d4, a3 = x2, o3 = void 0, s3 = void 0, l3 = void 0, u3 = void 0, o3 = Math.max(e4.minX, a3.minX), s3 = Math.max(e4.minY, a3.minY), l3 = Math.min(e4.maxX, a3.maxX), u3 = Math.min(e4.maxY, a3.maxY), Math.max(0, l3 - o3) * Math.max(0, u3 - s3)), M2 = f3(d4) + f3(x2);
+ v2 < m3 ? (m3 = v2, r3 = p3, c3 = M2 < c3 ? M2 : c3) : v2 === m3 && M2 < c3 && (c3 = M2, r3 = p3);
+ }
+ return r3 || n4 - i4;
+ }, r2.prototype._chooseSplitAxis = function(t3, i4, n4) {
+ var r3 = t3.leaf ? this.compareMinX : s2, e4 = t3.leaf ? this.compareMinY : l2;
+ this._allDistMargin(t3, i4, n4, r3) < this._allDistMargin(t3, i4, n4, e4) && t3.children.sort(r3);
+ }, r2.prototype._allDistMargin = function(t3, i4, n4, r3) {
+ t3.children.sort(r3);
+ for (var e4 = this.toBBox, a3 = h2(t3, 0, i4, e4), s3 = h2(t3, n4 - i4, n4, e4), l3 = u2(a3) + u2(s3), f4 = i4; f4 < n4 - i4; f4++) {
+ var m3 = t3.children[f4];
+ o2(a3, t3.leaf ? e4(m3) : m3), l3 += u2(a3);
+ }
+ for (var c3 = n4 - i4 - 1; c3 >= i4; c3--) {
+ var p3 = t3.children[c3];
+ o2(s3, t3.leaf ? e4(p3) : p3), l3 += u2(s3);
+ }
+ return l3;
+ }, r2.prototype._adjustParentBBoxes = function(t3, i4, n4) {
+ for (var r3 = n4; r3 >= 0; r3--)
+ o2(i4[r3], t3);
+ }, r2.prototype._condense = function(t3) {
+ for (var i4 = t3.length - 1, n4 = void 0; i4 >= 0; i4--)
+ 0 === t3[i4].children.length ? i4 > 0 ? (n4 = t3[i4 - 1].children).splice(n4.indexOf(t3[i4]), 1) : this.clear() : a2(t3[i4], this.toBBox);
+ }, r2;
});
}
});
var require_ieee754 = __commonJS({
"node_modules/ieee754/index.js"(exports2) {
exports2.read = function(buffer, offset, isLE, mLen, nBytes) {
- var e, m;
+ var e3, m2;
var eLen = nBytes * 8 - mLen - 1;
var eMax = (1 << eLen) - 1;
var eBias = eMax >> 1;
var nBits = -7;
- var i2 = isLE ? nBytes - 1 : 0;
- var d = isLE ? -1 : 1;
- var s = buffer[offset + i2];
- i2 += d;
- e = s & (1 << -nBits) - 1;
- s >>= -nBits;
+ var i3 = isLE ? nBytes - 1 : 0;
+ var d2 = isLE ? -1 : 1;
+ var s2 = buffer[offset + i3];
+ i3 += d2;
+ e3 = s2 & (1 << -nBits) - 1;
+ s2 >>= -nBits;
nBits += eLen;
- for (; nBits > 0; e = e * 256 + buffer[offset + i2], i2 += d, nBits -= 8) {
+ for (; nBits > 0; e3 = e3 * 256 + buffer[offset + i3], i3 += d2, nBits -= 8) {
}
- m = e & (1 << -nBits) - 1;
- e >>= -nBits;
+ m2 = e3 & (1 << -nBits) - 1;
+ e3 >>= -nBits;
nBits += mLen;
- for (; nBits > 0; m = m * 256 + buffer[offset + i2], i2 += d, nBits -= 8) {
+ for (; nBits > 0; m2 = m2 * 256 + buffer[offset + i3], i3 += d2, nBits -= 8) {
}
- if (e === 0) {
- e = 1 - eBias;
- } else if (e === eMax) {
- return m ? NaN : (s ? -1 : 1) * Infinity;
+ if (e3 === 0) {
+ e3 = 1 - eBias;
+ } else if (e3 === eMax) {
+ return m2 ? NaN : (s2 ? -1 : 1) * Infinity;
} else {
- m = m + Math.pow(2, mLen);
- e = e - eBias;
+ m2 = m2 + Math.pow(2, mLen);
+ e3 = e3 - eBias;
}
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
+ return (s2 ? -1 : 1) * m2 * Math.pow(2, e3 - mLen);
};
exports2.write = function(buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c;
+ var e3, m2, c2;
var eLen = nBytes * 8 - mLen - 1;
var eMax = (1 << eLen) - 1;
var eBias = eMax >> 1;
var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
- var i2 = isLE ? 0 : nBytes - 1;
- var d = isLE ? 1 : -1;
- var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
+ var i3 = isLE ? 0 : nBytes - 1;
+ var d2 = isLE ? 1 : -1;
+ var s2 = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
value = Math.abs(value);
if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0;
- e = eMax;
+ m2 = isNaN(value) ? 1 : 0;
+ e3 = eMax;
} else {
- e = Math.floor(Math.log(value) / Math.LN2);
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--;
- c *= 2;
+ e3 = Math.floor(Math.log(value) / Math.LN2);
+ if (value * (c2 = Math.pow(2, -e3)) < 1) {
+ e3--;
+ c2 *= 2;
}
- if (e + eBias >= 1) {
- value += rt / c;
+ if (e3 + eBias >= 1) {
+ value += rt / c2;
} else {
value += rt * Math.pow(2, 1 - eBias);
}
- if (value * c >= 2) {
- e++;
- c /= 2;
+ if (value * c2 >= 2) {
+ e3++;
+ c2 /= 2;
}
- if (e + eBias >= eMax) {
- m = 0;
- e = eMax;
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen);
- e = e + eBias;
+ if (e3 + eBias >= eMax) {
+ m2 = 0;
+ e3 = eMax;
+ } else if (e3 + eBias >= 1) {
+ m2 = (value * c2 - 1) * Math.pow(2, mLen);
+ e3 = e3 + eBias;
} else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
- e = 0;
+ m2 = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
+ e3 = 0;
}
}
- for (; mLen >= 8; buffer[offset + i2] = m & 255, i2 += d, m /= 256, mLen -= 8) {
+ for (; mLen >= 8; buffer[offset + i3] = m2 & 255, i3 += d2, m2 /= 256, mLen -= 8) {
}
- e = e << mLen | m;
+ e3 = e3 << mLen | m2;
eLen += mLen;
- for (; eLen > 0; buffer[offset + i2] = e & 255, i2 += d, e /= 256, eLen -= 8) {
+ for (; eLen > 0; buffer[offset + i3] = e3 & 255, i3 += d2, e3 /= 256, eLen -= 8) {
}
- buffer[offset + i2 - d] |= s * 128;
+ buffer[offset + i3 - d2] |= s2 * 128;
};
}
});
return val;
},
readVarint: function(isSigned) {
- var buf = this.buf, val, b;
- b = buf[this.pos++];
- val = b & 127;
- if (b < 128)
+ var buf = this.buf, val, b2;
+ b2 = buf[this.pos++];
+ val = b2 & 127;
+ if (b2 < 128)
return val;
- b = buf[this.pos++];
- val |= (b & 127) << 7;
- if (b < 128)
+ b2 = buf[this.pos++];
+ val |= (b2 & 127) << 7;
+ if (b2 < 128)
return val;
- b = buf[this.pos++];
- val |= (b & 127) << 14;
- if (b < 128)
+ b2 = buf[this.pos++];
+ val |= (b2 & 127) << 14;
+ if (b2 < 128)
return val;
- b = buf[this.pos++];
- val |= (b & 127) << 21;
- if (b < 128)
+ b2 = buf[this.pos++];
+ val |= (b2 & 127) << 21;
+ if (b2 < 128)
return val;
- b = buf[this.pos];
- val |= (b & 15) << 28;
+ b2 = buf[this.pos];
+ val |= (b2 & 15) << 28;
return readVarintRemainder(val, isSigned, this);
},
readVarint64: function() {
var len = buffer.length;
this.writeVarint(len);
this.realloc(len);
- for (var i2 = 0; i2 < len; i2++)
- this.buf[this.pos++] = buffer[i2];
+ for (var i3 = 0; i3 < len; i3++)
+ this.buf[this.pos++] = buffer[i3];
},
writeRawMessage: function(fn, obj) {
this.pos++;
this.writeVarintField(tag, Boolean(val));
}
};
- function readVarintRemainder(l, s, p) {
- var buf = p.buf, h, b;
- b = buf[p.pos++];
- h = (b & 112) >> 4;
- if (b < 128)
- return toNum(l, h, s);
- b = buf[p.pos++];
- h |= (b & 127) << 3;
- if (b < 128)
- return toNum(l, h, s);
- b = buf[p.pos++];
- h |= (b & 127) << 10;
- if (b < 128)
- return toNum(l, h, s);
- b = buf[p.pos++];
- h |= (b & 127) << 17;
- if (b < 128)
- return toNum(l, h, s);
- b = buf[p.pos++];
- h |= (b & 127) << 24;
- if (b < 128)
- return toNum(l, h, s);
- b = buf[p.pos++];
- h |= (b & 1) << 31;
- if (b < 128)
- return toNum(l, h, s);
+ function readVarintRemainder(l2, s2, p2) {
+ var buf = p2.buf, h2, b2;
+ b2 = buf[p2.pos++];
+ h2 = (b2 & 112) >> 4;
+ if (b2 < 128)
+ return toNum(l2, h2, s2);
+ b2 = buf[p2.pos++];
+ h2 |= (b2 & 127) << 3;
+ if (b2 < 128)
+ return toNum(l2, h2, s2);
+ b2 = buf[p2.pos++];
+ h2 |= (b2 & 127) << 10;
+ if (b2 < 128)
+ return toNum(l2, h2, s2);
+ b2 = buf[p2.pos++];
+ h2 |= (b2 & 127) << 17;
+ if (b2 < 128)
+ return toNum(l2, h2, s2);
+ b2 = buf[p2.pos++];
+ h2 |= (b2 & 127) << 24;
+ if (b2 < 128)
+ return toNum(l2, h2, s2);
+ b2 = buf[p2.pos++];
+ h2 |= (b2 & 1) << 31;
+ if (b2 < 128)
+ return toNum(l2, h2, s2);
throw new Error("Expected varint not more than 10 bytes");
}
function readPackedEnd(pbf) {
function makeRoomForExtraLength(startPos, len, pbf) {
var extraLen = len <= 16383 ? 1 : len <= 2097151 ? 2 : len <= 268435455 ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));
pbf.realloc(extraLen);
- for (var i2 = pbf.pos - 1; i2 >= startPos; i2--)
- pbf.buf[i2 + extraLen] = pbf.buf[i2];
+ for (var i3 = pbf.pos - 1; i3 >= startPos; i3--)
+ pbf.buf[i3 + extraLen] = pbf.buf[i3];
}
function writePackedVarint(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeVarint(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeVarint(arr[i3]);
}
function writePackedSVarint(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeSVarint(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeSVarint(arr[i3]);
}
function writePackedFloat(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeFloat(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeFloat(arr[i3]);
}
function writePackedDouble(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeDouble(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeDouble(arr[i3]);
}
function writePackedBoolean(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeBoolean(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeBoolean(arr[i3]);
}
function writePackedFixed32(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeFixed32(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeFixed32(arr[i3]);
}
function writePackedSFixed32(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeSFixed32(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeSFixed32(arr[i3]);
}
function writePackedFixed64(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeFixed64(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeFixed64(arr[i3]);
}
function writePackedSFixed64(arr, pbf) {
- for (var i2 = 0; i2 < arr.length; i2++)
- pbf.writeSFixed64(arr[i2]);
+ for (var i3 = 0; i3 < arr.length; i3++)
+ pbf.writeSFixed64(arr[i3]);
}
function readUInt32(buf, pos) {
return (buf[pos] | buf[pos + 1] << 8 | buf[pos + 2] << 16) + buf[pos + 3] * 16777216;
}
function readUtf8(buf, pos, end) {
var str2 = "";
- var i2 = pos;
- while (i2 < end) {
- var b0 = buf[i2];
- var c = null;
+ var i3 = pos;
+ while (i3 < end) {
+ var b0 = buf[i3];
+ var c2 = null;
var bytesPerSequence = b0 > 239 ? 4 : b0 > 223 ? 3 : b0 > 191 ? 2 : 1;
- if (i2 + bytesPerSequence > end)
+ if (i3 + bytesPerSequence > end)
break;
var b1, b2, b3;
if (bytesPerSequence === 1) {
if (b0 < 128) {
- c = b0;
+ c2 = b0;
}
} else if (bytesPerSequence === 2) {
- b1 = buf[i2 + 1];
+ b1 = buf[i3 + 1];
if ((b1 & 192) === 128) {
- c = (b0 & 31) << 6 | b1 & 63;
- if (c <= 127) {
- c = null;
+ c2 = (b0 & 31) << 6 | b1 & 63;
+ if (c2 <= 127) {
+ c2 = null;
}
}
} else if (bytesPerSequence === 3) {
- b1 = buf[i2 + 1];
- b2 = buf[i2 + 2];
+ b1 = buf[i3 + 1];
+ b2 = buf[i3 + 2];
if ((b1 & 192) === 128 && (b2 & 192) === 128) {
- c = (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63;
- if (c <= 2047 || c >= 55296 && c <= 57343) {
- c = null;
+ c2 = (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63;
+ if (c2 <= 2047 || c2 >= 55296 && c2 <= 57343) {
+ c2 = null;
}
}
} else if (bytesPerSequence === 4) {
- b1 = buf[i2 + 1];
- b2 = buf[i2 + 2];
- b3 = buf[i2 + 3];
+ b1 = buf[i3 + 1];
+ b2 = buf[i3 + 2];
+ b3 = buf[i3 + 3];
if ((b1 & 192) === 128 && (b2 & 192) === 128 && (b3 & 192) === 128) {
- c = (b0 & 15) << 18 | (b1 & 63) << 12 | (b2 & 63) << 6 | b3 & 63;
- if (c <= 65535 || c >= 1114112) {
- c = null;
+ c2 = (b0 & 15) << 18 | (b1 & 63) << 12 | (b2 & 63) << 6 | b3 & 63;
+ if (c2 <= 65535 || c2 >= 1114112) {
+ c2 = null;
}
}
}
- if (c === null) {
- c = 65533;
+ if (c2 === null) {
+ c2 = 65533;
bytesPerSequence = 1;
- } else if (c > 65535) {
- c -= 65536;
- str2 += String.fromCharCode(c >>> 10 & 1023 | 55296);
- c = 56320 | c & 1023;
+ } else if (c2 > 65535) {
+ c2 -= 65536;
+ str2 += String.fromCharCode(c2 >>> 10 & 1023 | 55296);
+ c2 = 56320 | c2 & 1023;
}
- str2 += String.fromCharCode(c);
- i2 += bytesPerSequence;
+ str2 += String.fromCharCode(c2);
+ i3 += bytesPerSequence;
}
return str2;
}
return utf8TextDecoder.decode(buf.subarray(pos, end));
}
function writeUtf8(buf, str2, pos) {
- for (var i2 = 0, c, lead; i2 < str2.length; i2++) {
- c = str2.charCodeAt(i2);
- if (c > 55295 && c < 57344) {
+ for (var i3 = 0, c2, lead; i3 < str2.length; i3++) {
+ c2 = str2.charCodeAt(i3);
+ if (c2 > 55295 && c2 < 57344) {
if (lead) {
- if (c < 56320) {
+ if (c2 < 56320) {
buf[pos++] = 239;
buf[pos++] = 191;
buf[pos++] = 189;
- lead = c;
+ lead = c2;
continue;
} else {
- c = lead - 55296 << 10 | c - 56320 | 65536;
+ c2 = lead - 55296 << 10 | c2 - 56320 | 65536;
lead = null;
}
} else {
- if (c > 56319 || i2 + 1 === str2.length) {
+ if (c2 > 56319 || i3 + 1 === str2.length) {
buf[pos++] = 239;
buf[pos++] = 191;
buf[pos++] = 189;
} else {
- lead = c;
+ lead = c2;
}
continue;
}
buf[pos++] = 189;
lead = null;
}
- if (c < 128) {
- buf[pos++] = c;
+ if (c2 < 128) {
+ buf[pos++] = c2;
} else {
- if (c < 2048) {
- buf[pos++] = c >> 6 | 192;
+ if (c2 < 2048) {
+ buf[pos++] = c2 >> 6 | 192;
} else {
- if (c < 65536) {
- buf[pos++] = c >> 12 | 224;
+ if (c2 < 65536) {
+ buf[pos++] = c2 >> 12 | 224;
} else {
- buf[pos++] = c >> 18 | 240;
- buf[pos++] = c >> 12 & 63 | 128;
+ buf[pos++] = c2 >> 18 | 240;
+ buf[pos++] = c2 >> 12 & 63 | 128;
}
- buf[pos++] = c >> 6 & 63 | 128;
+ buf[pos++] = c2 >> 6 & 63 | 128;
}
- buf[pos++] = c & 63 | 128;
+ buf[pos++] = c2 & 63 | 128;
}
}
return pos;
"node_modules/@mapbox/point-geometry/index.js"(exports2, module2) {
"use strict";
module2.exports = Point;
- function Point(x, y) {
- this.x = x;
- this.y = y;
+ function Point(x2, y2) {
+ this.x = x2;
+ this.y = y2;
}
Point.prototype = {
/**
* @param {Point} p the other point
* @return {Point} output point
*/
- add: function(p) {
- return this.clone()._add(p);
+ add: function(p2) {
+ return this.clone()._add(p2);
},
/**
* Subtract this point's x & y coordinates to from point,
* @param {Point} p the other point
* @return {Point} output point
*/
- sub: function(p) {
- return this.clone()._sub(p);
+ sub: function(p2) {
+ return this.clone()._sub(p2);
},
/**
* Multiply this point's x & y coordinates by point,
* @param {Point} p the other point
* @return {Point} output point
*/
- multByPoint: function(p) {
- return this.clone()._multByPoint(p);
+ multByPoint: function(p2) {
+ return this.clone()._multByPoint(p2);
},
/**
* Divide this point's x & y coordinates by point,
* @param {Point} p the other point
* @return {Point} output point
*/
- divByPoint: function(p) {
- return this.clone()._divByPoint(p);
+ divByPoint: function(p2) {
+ return this.clone()._divByPoint(p2);
},
/**
* Multiply this point's x & y coordinates by a factor,
* @param {Point} k factor
* @return {Point} output point
*/
- mult: function(k) {
- return this.clone()._mult(k);
+ mult: function(k2) {
+ return this.clone()._mult(k2);
},
/**
* Divide this point's x & y coordinates by a factor,
* @param {Point} k factor
* @return {Point} output point
*/
- div: function(k) {
- return this.clone()._div(k);
+ div: function(k2) {
+ return this.clone()._div(k2);
},
/**
* Rotate this point around the 0, 0 origin by an angle a,
* @param {Number} a angle to rotate around, in radians
* @return {Point} output point
*/
- rotate: function(a) {
- return this.clone()._rotate(a);
+ rotate: function(a2) {
+ return this.clone()._rotate(a2);
},
/**
* Rotate this point around p point by an angle a,
* @param {Point} p Point to rotate around
* @return {Point} output point
*/
- rotateAround: function(a, p) {
- return this.clone()._rotateAround(a, p);
+ rotateAround: function(a2, p2) {
+ return this.clone()._rotateAround(a2, p2);
},
/**
* Multiply this point by a 4x1 transformation matrix
* @param {Array<Number>} m transformation matrix
* @return {Point} output point
*/
- matMult: function(m) {
- return this.clone()._matMult(m);
+ matMult: function(m2) {
+ return this.clone()._matMult(m2);
},
/**
* Calculate this point but as a unit vector from 0, 0, meaning
* @param {Point} p the other point
* @return {Number} distance
*/
- dist: function(p) {
- return Math.sqrt(this.distSqr(p));
+ dist: function(p2) {
+ return Math.sqrt(this.distSqr(p2));
},
/**
* Calculate the distance from this point to another point,
* @param {Point} p the other point
* @return {Number} distance
*/
- distSqr: function(p) {
- var dx = p.x - this.x, dy = p.y - this.y;
+ distSqr: function(p2) {
+ var dx = p2.x - this.x, dy = p2.y - this.y;
return dx * dx + dy * dy;
},
/**
* @param {Point} b the other point
* @return {Number} angle
*/
- angleTo: function(b) {
- return Math.atan2(this.y - b.y, this.x - b.x);
+ angleTo: function(b2) {
+ return Math.atan2(this.y - b2.y, this.x - b2.x);
},
/**
* Get the angle between this point and another point, in radians
* @param {Point} b the other point
* @return {Number} angle
*/
- angleWith: function(b) {
- return this.angleWithSep(b.x, b.y);
+ angleWith: function(b2) {
+ return this.angleWithSep(b2.x, b2.y);
},
/*
* Find the angle of the two vectors, solving the formula for
* @param {Number} y the y-coordinate
* @return {Number} the angle in radians
*/
- angleWithSep: function(x, y) {
+ angleWithSep: function(x2, y2) {
return Math.atan2(
- this.x * y - this.y * x,
- this.x * x + this.y * y
+ this.x * y2 - this.y * x2,
+ this.x * x2 + this.y * y2
);
},
- _matMult: function(m) {
- var x = m[0] * this.x + m[1] * this.y, y = m[2] * this.x + m[3] * this.y;
- this.x = x;
- this.y = y;
+ _matMult: function(m2) {
+ var x2 = m2[0] * this.x + m2[1] * this.y, y2 = m2[2] * this.x + m2[3] * this.y;
+ this.x = x2;
+ this.y = y2;
return this;
},
- _add: function(p) {
- this.x += p.x;
- this.y += p.y;
+ _add: function(p2) {
+ this.x += p2.x;
+ this.y += p2.y;
return this;
},
- _sub: function(p) {
- this.x -= p.x;
- this.y -= p.y;
+ _sub: function(p2) {
+ this.x -= p2.x;
+ this.y -= p2.y;
return this;
},
- _mult: function(k) {
- this.x *= k;
- this.y *= k;
+ _mult: function(k2) {
+ this.x *= k2;
+ this.y *= k2;
return this;
},
- _div: function(k) {
- this.x /= k;
- this.y /= k;
+ _div: function(k2) {
+ this.x /= k2;
+ this.y /= k2;
return this;
},
- _multByPoint: function(p) {
- this.x *= p.x;
- this.y *= p.y;
+ _multByPoint: function(p2) {
+ this.x *= p2.x;
+ this.y *= p2.y;
return this;
},
- _divByPoint: function(p) {
- this.x /= p.x;
- this.y /= p.y;
+ _divByPoint: function(p2) {
+ this.x /= p2.x;
+ this.y /= p2.y;
return this;
},
_unit: function() {
return this;
},
_perp: function() {
- var y = this.y;
+ var y2 = this.y;
this.y = this.x;
- this.x = -y;
+ this.x = -y2;
return this;
},
_rotate: function(angle2) {
- var cos2 = Math.cos(angle2), sin2 = Math.sin(angle2), x = cos2 * this.x - sin2 * this.y, y = sin2 * this.x + cos2 * this.y;
- this.x = x;
- this.y = y;
+ var cos2 = Math.cos(angle2), sin2 = Math.sin(angle2), x2 = cos2 * this.x - sin2 * this.y, y2 = sin2 * this.x + cos2 * this.y;
+ this.x = x2;
+ this.y = y2;
return this;
},
- _rotateAround: function(angle2, p) {
- var cos2 = Math.cos(angle2), sin2 = Math.sin(angle2), x = p.x + cos2 * (this.x - p.x) - sin2 * (this.y - p.y), y = p.y + sin2 * (this.x - p.x) + cos2 * (this.y - p.y);
- this.x = x;
- this.y = y;
+ _rotateAround: function(angle2, p2) {
+ var cos2 = Math.cos(angle2), sin2 = Math.sin(angle2), x2 = p2.x + cos2 * (this.x - p2.x) - sin2 * (this.y - p2.y), y2 = p2.y + sin2 * (this.x - p2.x) + cos2 * (this.y - p2.y);
+ this.x = x2;
+ this.y = y2;
return this;
},
_round: function() {
return this;
}
};
- Point.convert = function(a) {
- if (a instanceof Point) {
- return a;
+ Point.convert = function(a2) {
+ if (a2 instanceof Point) {
+ return a2;
}
- if (Array.isArray(a)) {
- return new Point(a[0], a[1]);
+ if (Array.isArray(a2)) {
+ return new Point(a2[0], a2[1]);
}
- return a;
+ return a2;
};
}
});
"use strict";
var Point = require_point_geometry();
module2.exports = VectorTileFeature;
- function VectorTileFeature(pbf, end, extent, keys, values) {
+ function VectorTileFeature(pbf, end, extent, keys2, values) {
this.properties = {};
this.extent = extent;
this.type = 0;
this._pbf = pbf;
this._geometry = -1;
- this._keys = keys;
+ this._keys = keys2;
this._values = values;
pbf.readFields(readFeature, this, end);
}
VectorTileFeature.prototype.loadGeometry = function() {
var pbf = this._pbf;
pbf.pos = this._geometry;
- var end = pbf.readVarint() + pbf.pos, cmd = 1, length = 0, x = 0, y = 0, lines = [], line;
+ var end = pbf.readVarint() + pbf.pos, cmd = 1, length = 0, x2 = 0, y2 = 0, lines = [], line;
while (pbf.pos < end) {
if (length <= 0) {
var cmdLen = pbf.readVarint();
}
length--;
if (cmd === 1 || cmd === 2) {
- x += pbf.readSVarint();
- y += pbf.readSVarint();
+ x2 += pbf.readSVarint();
+ y2 += pbf.readSVarint();
if (cmd === 1) {
if (line)
lines.push(line);
line = [];
}
- line.push(new Point(x, y));
+ line.push(new Point(x2, y2));
} else if (cmd === 7) {
if (line) {
line.push(line[0].clone());
VectorTileFeature.prototype.bbox = function() {
var pbf = this._pbf;
pbf.pos = this._geometry;
- var end = pbf.readVarint() + pbf.pos, cmd = 1, length = 0, x = 0, y = 0, x12 = Infinity, x2 = -Infinity, y12 = Infinity, y2 = -Infinity;
+ var end = pbf.readVarint() + pbf.pos, cmd = 1, length = 0, x2 = 0, y2 = 0, x12 = Infinity, x22 = -Infinity, y12 = Infinity, y22 = -Infinity;
while (pbf.pos < end) {
if (length <= 0) {
var cmdLen = pbf.readVarint();
}
length--;
if (cmd === 1 || cmd === 2) {
- x += pbf.readSVarint();
- y += pbf.readSVarint();
- if (x < x12)
- x12 = x;
- if (x > x2)
- x2 = x;
- if (y < y12)
- y12 = y;
- if (y > y2)
- y2 = y;
+ x2 += pbf.readSVarint();
+ y2 += pbf.readSVarint();
+ if (x2 < x12)
+ x12 = x2;
+ if (x2 > x22)
+ x22 = x2;
+ if (y2 < y12)
+ y12 = y2;
+ if (y2 > y22)
+ y22 = y2;
} else if (cmd !== 7) {
throw new Error("unknown command " + cmd);
}
}
- return [x12, y12, x2, y2];
+ return [x12, y12, x22, y22];
};
- VectorTileFeature.prototype.toGeoJSON = function(x, y, z) {
- var size = this.extent * Math.pow(2, z), x05 = this.extent * x, y05 = this.extent * y, coords = this.loadGeometry(), type2 = VectorTileFeature.types[this.type], i2, j2;
+ VectorTileFeature.prototype.toGeoJSON = function(x2, y2, z2) {
+ var size = this.extent * Math.pow(2, z2), x05 = this.extent * x2, y05 = this.extent * y2, coords = this.loadGeometry(), type2 = VectorTileFeature.types[this.type], i3, j3;
function project(line) {
- for (var j3 = 0; j3 < line.length; j3++) {
- var p = line[j3], y2 = 180 - (p.y + y05) * 360 / size;
- line[j3] = [
- (p.x + x05) * 360 / size - 180,
- 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90
+ for (var j4 = 0; j4 < line.length; j4++) {
+ var p2 = line[j4], y22 = 180 - (p2.y + y05) * 360 / size;
+ line[j4] = [
+ (p2.x + x05) * 360 / size - 180,
+ 360 / Math.PI * Math.atan(Math.exp(y22 * Math.PI / 180)) - 90
];
}
}
switch (this.type) {
case 1:
var points = [];
- for (i2 = 0; i2 < coords.length; i2++) {
- points[i2] = coords[i2][0];
+ for (i3 = 0; i3 < coords.length; i3++) {
+ points[i3] = coords[i3][0];
}
coords = points;
project(coords);
break;
case 2:
- for (i2 = 0; i2 < coords.length; i2++) {
- project(coords[i2]);
+ for (i3 = 0; i3 < coords.length; i3++) {
+ project(coords[i3]);
}
break;
case 3:
coords = classifyRings(coords);
- for (i2 = 0; i2 < coords.length; i2++) {
- for (j2 = 0; j2 < coords[i2].length; j2++) {
- project(coords[i2][j2]);
+ for (i3 = 0; i3 < coords.length; i3++) {
+ for (j3 = 0; j3 < coords[i3].length; j3++) {
+ project(coords[i3][j3]);
}
}
break;
if (len <= 1)
return [rings];
var polygons = [], polygon2, ccw;
- for (var i2 = 0; i2 < len; i2++) {
- var area = signedArea(rings[i2]);
+ for (var i3 = 0; i3 < len; i3++) {
+ var area = signedArea(rings[i3]);
if (area === 0)
continue;
if (ccw === void 0)
if (ccw === area < 0) {
if (polygon2)
polygons.push(polygon2);
- polygon2 = [rings[i2]];
+ polygon2 = [rings[i3]];
} else {
- polygon2.push(rings[i2]);
+ polygon2.push(rings[i3]);
}
}
if (polygon2)
}
function signedArea(ring) {
var sum = 0;
- for (var i2 = 0, len = ring.length, j2 = len - 1, p1, p2; i2 < len; j2 = i2++) {
- p1 = ring[i2];
- p2 = ring[j2];
+ for (var i3 = 0, len = ring.length, j3 = len - 1, p1, p2; i3 < len; j3 = i3++) {
+ p1 = ring[i3];
+ p2 = ring[j3];
sum += (p2.x - p1.x) * (p1.y + p2.y);
}
return sum;
}
return value;
}
- VectorTileLayer.prototype.feature = function(i2) {
- if (i2 < 0 || i2 >= this._features.length)
+ VectorTileLayer.prototype.feature = function(i3) {
+ if (i3 < 0 || i3 >= this._features.length)
throw new Error("feature index out of bounds");
- this._pbf.pos = this._features[i2];
+ this._pbf.pos = this._features[i3];
var end = this._pbf.readVarint() + this._pbf.pos;
return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);
};
"node_modules/@mapbox/vector-tile/lib/vectortile.js"(exports2, module2) {
"use strict";
var VectorTileLayer = require_vectortilelayer();
- module2.exports = VectorTile2;
- function VectorTile2(pbf, end) {
+ module2.exports = VectorTile3;
+ function VectorTile3(pbf, end) {
this.layers = pbf.readFields(readTile, {}, end);
}
function readTile(tag, layers, pbf) {
if (typeof opts === "function")
opts = { cmp: opts };
var cycles = typeof opts.cycles === "boolean" ? opts.cycles : false;
- var cmp = opts.cmp && function(f2) {
+ var cmp = opts.cmp && function(f3) {
return function(node) {
- return function(a, b) {
- var aobj = { key: a, value: node[a] };
- var bobj = { key: b, value: node[b] };
- return f2(aobj, bobj);
+ return function(a2, b2) {
+ var aobj = { key: a2, value: node[a2] };
+ var bobj = { key: b2, value: node[b2] };
+ return f3(aobj, bobj);
};
};
}(opts.cmp);
return isFinite(node) ? "" + node : "null";
if (typeof node !== "object")
return JSON.stringify(node);
- var i2, out;
+ var i3, out;
if (Array.isArray(node)) {
out = "[";
- for (i2 = 0; i2 < node.length; i2++) {
- if (i2)
+ for (i3 = 0; i3 < node.length; i3++) {
+ if (i3)
out += ",";
- out += stringify3(node[i2]) || "null";
+ out += stringify3(node[i3]) || "null";
}
return out + "]";
}
throw new TypeError("Converting circular structure to JSON");
}
var seenIndex = seen.push(node) - 1;
- var keys = Object.keys(node).sort(cmp && cmp(node));
+ var keys2 = Object.keys(node).sort(cmp && cmp(node));
out = "";
- for (i2 = 0; i2 < keys.length; i2++) {
- var key = keys[i2];
+ for (i3 = 0; i3 < keys2.length; i3++) {
+ var key = keys2[i3];
var value = stringify3(node[key]);
if (!value)
continue;
var require_sexagesimal = __commonJS({
"node_modules/@mapbox/sexagesimal/index.js"(exports2, module2) {
module2.exports = element;
- module2.exports.pair = pair2;
+ module2.exports.pair = pair3;
module2.exports.format = format2;
module2.exports.formatPair = formatPair;
module2.exports.coordToDMS = coordToDMS;
return null;
input = input.toUpperCase();
var regex = /^[\s\,]*([NSEW])?\s*([\-|\—|\―]?[0-9.]+)[°º˚]?\s*(?:([0-9.]+)['’′‘]\s*)?(?:([0-9.]+)(?:''|"|”|″)\s*)?([NSEW])?/;
- var m = input.match(regex);
- if (!m)
+ var m2 = input.match(regex);
+ if (!m2)
return null;
- var matched = m[0];
+ var matched = m2[0];
var dim;
- if (m[1] && m[5]) {
- dim = m[1];
+ if (m2[1] && m2[5]) {
+ dim = m2[1];
matched = matched.slice(0, -1);
} else {
- dim = m[1] || m[5];
+ dim = m2[1] || m2[5];
}
if (dim && dims.indexOf(dim) === -1)
return null;
- var deg = m[2] ? parseFloat(m[2]) : 0;
- var min3 = m[3] ? parseFloat(m[3]) / 60 : 0;
- var sec = m[4] ? parseFloat(m[4]) / 3600 : 0;
+ var deg = m2[2] ? parseFloat(m2[2]) : 0;
+ var min3 = m2[3] ? parseFloat(m2[3]) / 60 : 0;
+ var sec = m2[4] ? parseFloat(m2[4]) / 3600 : 0;
var sign2 = deg < 0 ? -1 : 1;
if (dim === "S" || dim === "W")
sign2 *= -1;
remain: input.slice(matched.length)
};
}
- function pair2(input, dims) {
+ function pair3(input, dims) {
input = input.trim();
var one2 = search(input, dims);
if (!one2)
return [one2.val, two.val];
}
}
- function swapdim(a, b, dim) {
+ function swapdim(a2, b2, dim) {
if (dim === "N" || dim === "S")
- return [a, b];
+ return [a2, b2];
if (dim === "W" || dim === "E")
- return [b, a];
+ return [b2, a2];
}
}
});
map: map2,
pluck,
isList,
- isFunction,
+ isFunction: isFunction2,
isObject: isObject3,
Global
};
return Object.assign;
} else {
return function shimAssign(obj, props1, props2, etc) {
- for (var i2 = 1; i2 < arguments.length; i2++) {
- each(Object(arguments[i2]), function(val, key) {
+ for (var i3 = 1; i3 < arguments.length; i3++) {
+ each(Object(arguments[i3]), function(val, key) {
obj[key] = val;
});
}
return assign.apply(this, [Object.create(obj)].concat(assignArgsList));
};
} else {
- let F2 = function() {
+ let F3 = function() {
};
- var F = F2;
+ var F2 = F3;
return function create3(obj, assignProps1, assignProps2, etc) {
var assignArgsList = slice(arguments, 1);
- F2.prototype = obj;
- return assign.apply(this, [new F2()].concat(assignArgsList));
+ F3.prototype = obj;
+ return assign.apply(this, [new F3()].concat(assignArgsList));
};
}
}
}
function map2(obj, fn) {
var res = isList(obj) ? [] : {};
- pluck(obj, function(v, k) {
- res[k] = fn(v, k);
+ pluck(obj, function(v2, k2) {
+ res[k2] = fn(v2, k2);
return false;
});
return res;
}
function pluck(obj, fn) {
if (isList(obj)) {
- for (var i2 = 0; i2 < obj.length; i2++) {
- if (fn(obj[i2], i2)) {
- return obj[i2];
+ for (var i3 = 0; i3 < obj.length; i3++) {
+ if (fn(obj[i3], i3)) {
+ return obj[i3];
}
}
} else {
function isList(val) {
return val != null && typeof val != "function" && typeof val.length == "number";
}
- function isFunction(val) {
+ function isFunction2(val) {
return val && {}.toString.call(val) === "[object Function]";
}
function isObject3(val) {
var bind = util.bind;
var create2 = util.create;
var isList = util.isList;
- var isFunction = util.isFunction;
+ var isFunction2 = util.isFunction;
var isObject3 = util.isObject;
module2.exports = {
createStore
var ok = storage.read(testStr) === testStr;
storage.remove(testStr);
return ok;
- } catch (e) {
+ } catch (e3) {
return false;
}
},
if (!oldFn) {
return;
}
- each(arguments, function(arg, i2) {
- args[i2] = arg;
+ each(arguments, function(arg, i3) {
+ args[i3] = arg;
});
return oldFn.apply(self2, args);
}
var val = "";
try {
val = JSON.parse(strVal);
- } catch (e) {
+ } catch (e3) {
val = strVal;
}
return val !== void 0 ? val : defaultVal;
return;
}
this.plugins.push(plugin);
- if (!isFunction(plugin)) {
+ if (!isFunction2(plugin)) {
throw new Error("Plugins must be function values that return objects");
}
var pluginProperties = plugin.call(this);
throw new Error("Plugins must return an object of function properties");
}
each(pluginProperties, function(pluginFnProp, propName) {
- if (!isFunction(pluginFnProp)) {
+ if (!isFunction2(pluginFnProp)) {
throw new Error("Bad plugin property: " + propName + " from plugin " + plugin.name + ". Plugins should only return functions.");
}
self2._assignPluginFnProp(pluginFnProp, propName);
});
store2.raw = {};
each(store2, function(prop, propName) {
- if (isFunction(prop)) {
+ if (isFunction2(prop)) {
store2.raw[propName] = bind(store2, prop);
}
});
return localStorage2().setItem(key, data);
}
function each(fn) {
- for (var i2 = localStorage2().length - 1; i2 >= 0; i2--) {
- var key = localStorage2().key(i2);
+ for (var i3 = localStorage2().length - 1; i3 >= 0; i3--) {
+ var key = localStorage2().key(i3);
fn(read(key), key);
}
}
globalStorage[key] = data;
}
function each(fn) {
- for (var i2 = globalStorage.length - 1; i2 >= 0; i2--) {
- var key = globalStorage.key(i2);
+ for (var i3 = globalStorage.length - 1; i3 >= 0; i3--) {
+ var key = globalStorage.key(i3);
fn(globalStorage[key], key);
}
}
return globalStorage.removeItem(key);
}
function clearAll() {
- each(function(key, _) {
+ each(function(key, _2) {
delete globalStorage[key];
});
}
function each(callback) {
_withStorageEl(function(storageEl) {
var attributes = storageEl.XMLDocument.documentElement.attributes;
- for (var i2 = attributes.length - 1; i2 >= 0; i2--) {
- var attr = attributes[i2];
+ for (var i3 = attributes.length - 1; i3 >= 0; i3--) {
+ var attr = attributes[i3];
callback(storageEl.getAttribute(attr.name), attr.name);
}
});
_withStorageEl(function(storageEl) {
var attributes = storageEl.XMLDocument.documentElement.attributes;
storageEl.load(storageName);
- for (var i2 = attributes.length - 1; i2 >= 0; i2--) {
- storageEl.removeAttribute(attributes[i2].name);
+ for (var i3 = attributes.length - 1; i3 >= 0; i3--) {
+ storageEl.removeAttribute(attributes[i3].name);
}
storageEl.save(storageName);
});
storageContainer.close();
storageOwner = storageContainer.w.frames[0].document;
storageEl = storageOwner.createElement("div");
- } catch (e) {
+ } catch (e3) {
storageEl = doc.createElement("div");
storageOwner = doc.body;
}
}
function each(callback) {
var cookies = doc.cookie.split(/; ?/g);
- for (var i2 = cookies.length - 1; i2 >= 0; i2--) {
- if (!trim(cookies[i2])) {
+ for (var i3 = cookies.length - 1; i3 >= 0; i3--) {
+ if (!trim(cookies[i3])) {
continue;
}
- var kvp = cookies[i2].split("=");
+ var kvp = cookies[i3].split("=");
var key = unescape(kvp[0]);
var val = unescape(kvp[1]);
callback(val, key);
doc.cookie = escape(key) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
}
function clearAll() {
- each(function(_, key) {
+ each(function(_2, key) {
remove2(key);
});
}
return sessionStorage().setItem(key, data);
}
function each(fn) {
- for (var i2 = sessionStorage().length - 1; i2 >= 0; i2--) {
- var key = sessionStorage().key(i2);
+ for (var i3 = sessionStorage().length - 1; i3 >= 0; i3--) {
+ var key = sessionStorage().key(i3);
fn(read(key), key);
}
}
var rx_four = /(?:^|:|,)(?:\s*\[)+/g;
var rx_escapable = /[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
- function f(n2) {
- return n2 < 10 ? "0" + n2 : n2;
+ function f(n3) {
+ return n3 < 10 ? "0" + n3 : n3;
}
function this_value() {
return this.valueOf();
var rep;
function quote(string) {
rx_escapable.lastIndex = 0;
- return rx_escapable.test(string) ? '"' + string.replace(rx_escapable, function(a) {
- var c = meta[a];
- return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
+ return rx_escapable.test(string) ? '"' + string.replace(rx_escapable, function(a2) {
+ var c2 = meta[a2];
+ return typeof c2 === "string" ? c2 : "\\u" + ("0000" + a2.charCodeAt(0).toString(16)).slice(-4);
}) + '"' : '"' + string + '"';
}
function str(key, holder) {
- var i2;
- var k;
- var v;
+ var i3;
+ var k2;
+ var v2;
var length;
var mind = gap;
var partial;
partial = [];
if (Object.prototype.toString.apply(value) === "[object Array]") {
length = value.length;
- for (i2 = 0; i2 < length; i2 += 1) {
- partial[i2] = str(i2, value) || "null";
+ for (i3 = 0; i3 < length; i3 += 1) {
+ partial[i3] = str(i3, value) || "null";
}
- v = partial.length === 0 ? "[]" : gap ? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]" : "[" + partial.join(",") + "]";
+ v2 = partial.length === 0 ? "[]" : gap ? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]" : "[" + partial.join(",") + "]";
gap = mind;
- return v;
+ return v2;
}
if (rep && typeof rep === "object") {
length = rep.length;
- for (i2 = 0; i2 < length; i2 += 1) {
- if (typeof rep[i2] === "string") {
- k = rep[i2];
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ": " : ":") + v);
+ for (i3 = 0; i3 < length; i3 += 1) {
+ if (typeof rep[i3] === "string") {
+ k2 = rep[i3];
+ v2 = str(k2, value);
+ if (v2) {
+ partial.push(quote(k2) + (gap ? ": " : ":") + v2);
}
}
}
} else {
- for (k in value) {
- if (Object.prototype.hasOwnProperty.call(value, k)) {
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ": " : ":") + v);
+ for (k2 in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k2)) {
+ v2 = str(k2, value);
+ if (v2) {
+ partial.push(quote(k2) + (gap ? ": " : ":") + v2);
}
}
}
}
- v = partial.length === 0 ? "{}" : gap ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}" : "{" + partial.join(",") + "}";
+ v2 = partial.length === 0 ? "{}" : gap ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}" : "{" + partial.join(",") + "}";
gap = mind;
- return v;
+ return v2;
}
}
if (typeof JSON.stringify !== "function") {
"\\": "\\\\"
};
JSON.stringify = function(value, replacer, space) {
- var i2;
+ var i3;
gap = "";
indent = "";
if (typeof space === "number") {
- for (i2 = 0; i2 < space; i2 += 1) {
+ for (i3 = 0; i3 < space; i3 += 1) {
indent += " ";
}
} else if (typeof space === "string") {
JSON.parse = function(text, reviver) {
var j;
function walk(holder, key) {
- var k;
- var v;
+ var k2;
+ var v2;
var value = holder[key];
if (value && typeof value === "object") {
- for (k in value) {
- if (Object.prototype.hasOwnProperty.call(value, k)) {
- v = walk(value, k);
- if (v !== void 0) {
- value[k] = v;
+ for (k2 in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k2)) {
+ v2 = walk(value, k2);
+ if (v2 !== void 0) {
+ value[k2] = v2;
} else {
- delete value[k];
+ delete value[k2];
}
}
}
text = String(text);
rx_dangerous.lastIndex = 0;
if (rx_dangerous.test(text)) {
- text = text.replace(rx_dangerous, function(a) {
- return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
+ text = text.replace(rx_dangerous, function(a2) {
+ return "\\u" + ("0000" + a2.charCodeAt(0).toString(16)).slice(-4);
});
}
if (rx_one.test(
});
// node_modules/whatwg-fetch/fetch.js
- var global2 = typeof globalThis !== "undefined" && globalThis || typeof self !== "undefined" && self || typeof global2 !== "undefined" && global2;
+ var g = typeof globalThis !== "undefined" && globalThis || typeof self !== "undefined" && self || // eslint-disable-next-line no-undef
+ typeof global !== "undefined" && global || {};
var support = {
- searchParams: "URLSearchParams" in global2,
- iterable: "Symbol" in global2 && "iterator" in Symbol,
- blob: "FileReader" in global2 && "Blob" in global2 && function() {
+ searchParams: "URLSearchParams" in g,
+ iterable: "Symbol" in g && "iterator" in Symbol,
+ blob: "FileReader" in g && "Blob" in g && function() {
try {
new Blob();
return true;
- } catch (e) {
+ } catch (e3) {
return false;
}
}(),
- formData: "FormData" in global2,
- arrayBuffer: "ArrayBuffer" in global2
+ formData: "FormData" in g,
+ arrayBuffer: "ArrayBuffer" in g
};
function isDataView(obj) {
return obj && DataView.prototype.isPrototypeOf(obj);
}, this);
} else if (Array.isArray(headers)) {
headers.forEach(function(header) {
+ if (header.length != 2) {
+ throw new TypeError("Headers constructor: expected name/value pair to be length 2, found" + header.length);
+ }
this.append(header[0], header[1]);
}, this);
} else if (headers) {
Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
}
function consumed(body) {
+ if (body._noBody)
+ return;
if (body.bodyUsed) {
return Promise.reject(new TypeError("Already read"));
}
function readBlobAsText(blob) {
var reader = new FileReader();
var promise = fileReaderReady(reader);
- reader.readAsText(blob);
+ var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);
+ var encoding = match ? match[1] : "utf-8";
+ reader.readAsText(blob, encoding);
return promise;
}
function readArrayBufferAsText(buf) {
var view = new Uint8Array(buf);
var chars = new Array(view.length);
- for (var i2 = 0; i2 < view.length; i2++) {
- chars[i2] = String.fromCharCode(view[i2]);
+ for (var i3 = 0; i3 < view.length; i3++) {
+ chars[i3] = String.fromCharCode(view[i3]);
}
return chars.join("");
}
this.bodyUsed = this.bodyUsed;
this._bodyInit = body;
if (!body) {
+ this._noBody = true;
this._bodyText = "";
} else if (typeof body === "string") {
this._bodyText = body;
return Promise.resolve(new Blob([this._bodyText]));
}
};
- this.arrayBuffer = function() {
- if (this._bodyArrayBuffer) {
- var isConsumed = consumed(this);
- if (isConsumed) {
- return isConsumed;
- }
- if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
- return Promise.resolve(
- this._bodyArrayBuffer.buffer.slice(
- this._bodyArrayBuffer.byteOffset,
- this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
- )
- );
- } else {
- return Promise.resolve(this._bodyArrayBuffer);
- }
+ }
+ this.arrayBuffer = function() {
+ if (this._bodyArrayBuffer) {
+ var isConsumed = consumed(this);
+ if (isConsumed) {
+ return isConsumed;
+ } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
+ return Promise.resolve(
+ this._bodyArrayBuffer.buffer.slice(
+ this._bodyArrayBuffer.byteOffset,
+ this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
+ )
+ );
} else {
- return this.blob().then(readBlobAsArrayBuffer);
+ return Promise.resolve(this._bodyArrayBuffer);
}
- };
- }
+ } else if (support.blob) {
+ return this.blob().then(readBlobAsArrayBuffer);
+ } else {
+ throw new Error("could not read as ArrayBuffer");
+ }
+ };
this.text = function() {
var rejected = consumed(this);
if (rejected) {
};
return this;
}
- var methods = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
+ var methods = ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"];
function normalizeMethod(method) {
var upcased = method.toUpperCase();
return methods.indexOf(upcased) > -1 ? upcased : method;
}
this.method = normalizeMethod(options2.method || this.method || "GET");
this.mode = options2.mode || this.mode || null;
- this.signal = options2.signal || this.signal;
+ this.signal = options2.signal || this.signal || function() {
+ if ("AbortController" in g) {
+ var ctrl = new AbortController();
+ return ctrl.signal;
+ }
+ }();
this.referrer = null;
if ((this.method === "GET" || this.method === "HEAD") && body) {
throw new TypeError("Body not allowed for GET or HEAD requests");
var key = parts.shift().trim();
if (key) {
var value = parts.join(":").trim();
- headers.append(key, value);
+ try {
+ headers.append(key, value);
+ } catch (error) {
+ console.warn("Response " + error.message);
+ }
}
});
return headers;
}
this.type = "default";
this.status = options2.status === void 0 ? 200 : options2.status;
+ if (this.status < 200 || this.status > 599) {
+ throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");
+ }
this.ok = this.status >= 200 && this.status < 300;
this.statusText = options2.statusText === void 0 ? "" : "" + options2.statusText;
this.headers = new Headers(options2.headers);
});
};
Response.error = function() {
- var response = new Response(null, { status: 0, statusText: "" });
+ var response = new Response(null, { status: 200, statusText: "" });
+ response.status = 0;
response.type = "error";
return response;
};
}
return new Response(null, { status, headers: { location: url } });
};
- var DOMException2 = global2.DOMException;
+ var DOMException2 = g.DOMException;
try {
new DOMException2();
} catch (err) {
};
function fixUrl(url) {
try {
- return url === "" && global2.location.href ? global2.location.href : url;
- } catch (e) {
+ return url === "" && g.location.href ? g.location.href : url;
+ } catch (e3) {
return url;
}
}
if ("responseType" in xhr) {
if (support.blob) {
xhr.responseType = "blob";
- } else if (support.arrayBuffer && request3.headers.get("Content-Type") && request3.headers.get("Content-Type").indexOf("application/octet-stream") !== -1) {
+ } else if (support.arrayBuffer) {
xhr.responseType = "arraybuffer";
}
}
- if (init2 && typeof init2.headers === "object" && !(init2.headers instanceof Headers)) {
+ if (init2 && typeof init2.headers === "object" && !(init2.headers instanceof Headers || g.Headers && init2.headers instanceof g.Headers)) {
+ var names = [];
Object.getOwnPropertyNames(init2.headers).forEach(function(name) {
+ names.push(normalizeName(name));
xhr.setRequestHeader(name, normalizeValue(init2.headers[name]));
});
+ request3.headers.forEach(function(value, name) {
+ if (names.indexOf(name) === -1) {
+ xhr.setRequestHeader(name, value);
+ }
+ });
} else {
request3.headers.forEach(function(value, name) {
xhr.setRequestHeader(name, value);
});
}
fetch2.polyfill = true;
- if (!global2.fetch) {
- global2.fetch = fetch2;
- global2.Headers = Headers;
- global2.Request = Request;
- global2.Response = Response;
+ if (!g.fetch) {
+ g.fetch = fetch2;
+ g.Headers = Headers;
+ g.Request = Request;
+ g.Response = Response;
}
// node_modules/abortcontroller-polyfill/dist/polyfill-patch-fetch.js
}
}
function _defineProperties(target, props) {
- for (var i2 = 0; i2 < props.length; i2++) {
- var descriptor = props[i2];
+ for (var i3 = 0; i3 < props.length; i3++) {
+ var descriptor = props[i3];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor)
_defineProperties(Constructor.prototype, protoProps);
if (staticProps)
_defineProperties(Constructor, staticProps);
+ Object.defineProperty(Constructor, "prototype", {
+ writable: false
+ });
return Constructor;
}
function _inherits(subClass, superClass) {
configurable: true
}
});
+ Object.defineProperty(subClass, "prototype", {
+ writable: false
+ });
if (superClass)
_setPrototypeOf(subClass, superClass);
}
- function _getPrototypeOf(o) {
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) {
- return o2.__proto__ || Object.getPrototypeOf(o2);
+ function _getPrototypeOf(o2) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o3) {
+ return o3.__proto__ || Object.getPrototypeOf(o3);
};
- return _getPrototypeOf(o);
+ return _getPrototypeOf(o2);
}
- function _setPrototypeOf(o, p) {
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {
- o2.__proto__ = p2;
- return o2;
+ function _setPrototypeOf(o2, p2) {
+ _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o3, p3) {
+ o3.__proto__ = p3;
+ return o3;
};
- return _setPrototypeOf(o, p);
+ return _setPrototypeOf(o2, p2);
}
function _isNativeReflectConstruct() {
if (typeof Reflect === "undefined" || !Reflect.construct)
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
}));
return true;
- } catch (e) {
+ } catch (e3) {
return false;
}
}
function _possibleConstructorReturn(self2, call) {
if (call && (typeof call === "object" || typeof call === "function")) {
return call;
+ } else if (call !== void 0) {
+ throw new TypeError("Derived constructors may only return object or undefined");
}
return _assertThisInitialized(self2);
}
}
return object;
}
- function _get(target, property, receiver) {
+ function _get() {
if (typeof Reflect !== "undefined" && Reflect.get) {
- _get = Reflect.get;
+ _get = Reflect.get.bind();
} else {
- _get = function _get2(target2, property2, receiver2) {
- var base = _superPropBase(target2, property2);
+ _get = function _get2(target, property, receiver) {
+ var base = _superPropBase(target, property);
if (!base)
return;
- var desc = Object.getOwnPropertyDescriptor(base, property2);
+ var desc = Object.getOwnPropertyDescriptor(base, property);
if (desc.get) {
- return desc.get.call(receiver2);
+ return desc.get.call(arguments.length < 3 ? target : receiver);
}
return desc.value;
};
}
- return _get(target, property, receiver || target);
+ return _get.apply(this, arguments);
}
var Emitter = /* @__PURE__ */ function() {
function Emitter2() {
return;
}
var stack = this.listeners[type2];
- for (var i2 = 0, l = stack.length; i2 < l; i2++) {
- if (stack[i2].callback === callback) {
- stack.splice(i2, 1);
+ for (var i3 = 0, l2 = stack.length; i3 < l2; i3++) {
+ if (stack[i3].callback === callback) {
+ stack.splice(i3, 1);
return;
}
}
}
var stack = this.listeners[event.type];
var stackToCall = stack.slice();
- for (var i2 = 0, l = stackToCall.length; i2 < l; i2++) {
- var listener = stackToCall[i2];
+ for (var i3 = 0, l2 = stackToCall.length; i3 < l2; i3++) {
+ var listener = stackToCall[i3];
try {
listener.callback.call(this, event);
- } catch (e) {
+ } catch (e3) {
Promise.resolve().then(function() {
- throw e;
+ throw e3;
});
}
if (listener.options && listener.options.once) {
writable: true,
configurable: true
});
+ Object.defineProperty(_assertThisInitialized(_this), "reason", {
+ value: void 0,
+ writable: true,
+ configurable: true
+ });
return _this;
}
_createClass(AbortSignal2, [{
}
_createClass(AbortController3, [{
key: "abort",
- value: function abort() {
+ value: function abort(reason) {
var event;
try {
event = new Event("abort");
- } catch (e) {
+ } catch (e3) {
if (typeof document !== "undefined") {
if (!document.createEvent) {
event = document.createEventObject();
};
}
}
+ var signalReason = reason;
+ if (signalReason === void 0) {
+ if (typeof document === "undefined") {
+ signalReason = new Error("This operation was aborted");
+ signalReason.name = "AbortError";
+ } else {
+ try {
+ signalReason = new DOMException("signal is aborted without reason");
+ } catch (err) {
+ signalReason = new Error("This operation was aborted");
+ signalReason.name = "AbortError";
+ }
+ }
+ }
+ this.signal.reason = signalReason;
this.signal.dispatchEvent(event);
}
}, {
if (signal.aborted) {
return Promise.reject(abortError);
}
- var cancellation = new Promise(function(_, reject) {
+ var cancellation = new Promise(function(_2, reject) {
signal.addEventListener("abort", function() {
return reject(abortError);
}, {
geoVecSubtract: () => geoVecSubtract,
geoViewportEdge: () => geoViewportEdge,
geoZoomToScale: () => geoZoomToScale,
+ likelyRawNumberFormat: () => likelyRawNumberFormat,
localizer: () => _mainLocalizer,
locationManager: () => _sharedLocationManager,
modeAddArea: () => modeAddArea,
serviceKartaview: () => kartaview_default,
serviceKeepRight: () => keepRight_default,
serviceMapRules: () => maprules_default,
+ serviceMapilio: () => mapilio_default,
serviceMapillary: () => mapillary_default,
serviceNominatim: () => nominatim_default,
serviceNsi: () => nsi_default,
serviceStreetside: () => streetside_default,
serviceTaginfo: () => taginfo_default,
serviceVectorTile: () => vector_tile_default,
+ serviceVegbilder: () => vegbilder_default,
serviceWikidata: () => wikidata_default,
serviceWikipedia: () => wikipedia_default,
services: () => services,
svgLabels: () => svgLabels,
svgLayers: () => svgLayers,
svgLines: () => svgLines,
+ svgMapilioImages: () => svgMapilioImages,
svgMapillaryImages: () => svgMapillaryImages,
svgMapillarySigns: () => svgMapillarySigns,
svgMarkerSegments: () => svgMarkerSegments,
svgTagPattern: () => svgTagPattern,
svgTouch: () => svgTouch,
svgTurns: () => svgTurns,
+ svgVegbilder: () => svgVegbilder,
svgVertices: () => svgVertices,
t: () => _t,
uiAccount: () => uiAccount,
NNW: "SSE"
};
function reverseKey(key) {
- for (var i2 = 0; i2 < keyReplacements.length; ++i2) {
- var replacement = keyReplacements[i2];
+ for (var i3 = 0; i3 < keyReplacements.length; ++i3) {
+ var replacement = keyReplacements[i3];
if (replacement[0].test(key)) {
return key.replace(replacement[0], replacement[1]);
}
if (turn_lanes.test(key)) {
return value;
} else if (key === "incline" && numeric.test(value)) {
- return value.replace(numeric, function(_, sign2) {
+ return value.replace(numeric, function(_2, sign2) {
return sign2 === "-" ? "" : "-";
});
} else if (options2 && options2.reverseOneway && key === "oneway") {
return valueReplacements[value] || value;
}
function reverseNodeTags(graph, nodeIDs) {
- for (var i2 = 0; i2 < nodeIDs.length; i2++) {
- var node = graph.hasEntity(nodeIDs[i2]);
+ for (var i3 = 0; i3 < nodeIDs.length; i3++) {
+ var node = graph.hasEntity(nodeIDs[i3]);
if (!node || !Object.keys(node.tags).length)
continue;
var tags = {};
var returnTags = {};
for (var realKey in tags) {
const key = osmRemoveLifecyclePrefix(realKey);
- if (key in osmAreaKeys && !(tags[key] in osmAreaKeys[key])) {
+ if (key in osmAreaKeys && !(tags[realKey] in osmAreaKeys[key])) {
returnTags[realKey] = tags[realKey];
return returnTags;
}
- if (key in osmAreaKeysExceptions && tags[key] in osmAreaKeysExceptions[key]) {
+ if (key in osmAreaKeysExceptions && tags[realKey] in osmAreaKeysExceptions[key]) {
returnTags[realKey] = tags[realKey];
return returnTags;
}
"yes": true
},
"seamark:type": {
+ "two-way_route": true,
+ "recommended_traffic_lane": true,
"separation_lane": true,
"separation_roundabout": true
},
"ditch": true,
"drain": true,
"fish_pass": true,
+ "pressurised": true,
"river": true,
+ "spillway": true,
"stream": true,
"tidal_channel": true
}
"city_wall": true
},
"man_made": {
- "embankment": true
+ "embankment": true,
+ "quay": true
},
"waterway": {
"weir": true
stream: true,
tidal_channel: true
};
+ var allowUpperCaseTagValues = /network|taxon|genus|species|brand|grape_variety|royal_cypher|listed_status|booth|rating|stars|:output|_hours|_times|_ref|manufacturer|country|target|brewery|cai_scale|traffic_sign/;
// node_modules/d3-array/src/ascending.js
- function ascending(a, b) {
- return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+ function ascending(a2, b2) {
+ return a2 == null || b2 == null ? NaN : a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
}
// node_modules/d3-array/src/descending.js
- function descending(a, b) {
- return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+ function descending(a2, b2) {
+ return a2 == null || b2 == null ? NaN : b2 < a2 ? -1 : b2 > a2 ? 1 : b2 >= a2 ? 0 : NaN;
}
// node_modules/d3-array/src/bisector.js
- function bisector(f2) {
+ function bisector(f3) {
let compare1, compare2, delta;
- if (f2.length !== 2) {
+ if (f3.length !== 2) {
compare1 = ascending;
- compare2 = (d, x) => ascending(f2(d), x);
- delta = (d, x) => f2(d) - x;
+ compare2 = (d2, x2) => ascending(f3(d2), x2);
+ delta = (d2, x2) => f3(d2) - x2;
} else {
- compare1 = f2 === ascending || f2 === descending ? f2 : zero;
- compare2 = f2;
- delta = f2;
+ compare1 = f3 === ascending || f3 === descending ? f3 : zero;
+ compare2 = f3;
+ delta = f3;
}
- function left(a, x, lo = 0, hi = a.length) {
+ function left(a2, x2, lo = 0, hi = a2.length) {
if (lo < hi) {
- if (compare1(x, x) !== 0)
+ if (compare1(x2, x2) !== 0)
return hi;
do {
const mid = lo + hi >>> 1;
- if (compare2(a[mid], x) < 0)
+ if (compare2(a2[mid], x2) < 0)
lo = mid + 1;
else
hi = mid;
}
return lo;
}
- function right(a, x, lo = 0, hi = a.length) {
+ function right(a2, x2, lo = 0, hi = a2.length) {
if (lo < hi) {
- if (compare1(x, x) !== 0)
+ if (compare1(x2, x2) !== 0)
return hi;
do {
const mid = lo + hi >>> 1;
- if (compare2(a[mid], x) <= 0)
+ if (compare2(a2[mid], x2) <= 0)
lo = mid + 1;
else
hi = mid;
}
return lo;
}
- function center(a, x, lo = 0, hi = a.length) {
- const i2 = left(a, x, lo, hi - 1);
- return i2 > lo && delta(a[i2 - 1], x) > -delta(a[i2], x) ? i2 - 1 : i2;
+ function center(a2, x2, lo = 0, hi = a2.length) {
+ const i3 = left(a2, x2, lo, hi - 1);
+ return i3 > lo && delta(a2[i3 - 1], x2) > -delta(a2[i3], x2) ? i3 - 1 : i3;
}
return { left, center, right };
}
}
// node_modules/d3-array/src/number.js
- function number(x) {
- return x === null ? NaN : +x;
+ function number(x2) {
+ return x2 === null ? NaN : +x2;
}
function* numbers(values, valueof) {
if (valueof === void 0) {
this._partials = new Float64Array(32);
this._n = 0;
}
- add(x) {
- const p = this._partials;
- let i2 = 0;
- for (let j2 = 0; j2 < this._n && j2 < 32; j2++) {
- const y = p[j2], hi = x + y, lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);
+ add(x2) {
+ const p2 = this._partials;
+ let i3 = 0;
+ for (let j3 = 0; j3 < this._n && j3 < 32; j3++) {
+ const y2 = p2[j3], hi = x2 + y2, lo = Math.abs(x2) < Math.abs(y2) ? x2 - (hi - y2) : y2 - (hi - x2);
if (lo)
- p[i2++] = lo;
- x = hi;
+ p2[i3++] = lo;
+ x2 = hi;
}
- p[i2] = x;
- this._n = i2 + 1;
+ p2[i3] = x2;
+ this._n = i3 + 1;
return this;
}
valueOf() {
- const p = this._partials;
- let n2 = this._n, x, y, lo, hi = 0;
- if (n2 > 0) {
- hi = p[--n2];
- while (n2 > 0) {
- x = hi;
- y = p[--n2];
- hi = x + y;
- lo = y - (hi - x);
+ const p2 = this._partials;
+ let n3 = this._n, x2, y2, lo, hi = 0;
+ if (n3 > 0) {
+ hi = p2[--n3];
+ while (n3 > 0) {
+ x2 = hi;
+ y2 = p2[--n3];
+ hi = x2 + y2;
+ lo = y2 - (hi - x2);
if (lo)
break;
}
- if (n2 > 0 && (lo < 0 && p[n2 - 1] < 0 || lo > 0 && p[n2 - 1] > 0)) {
- y = lo * 2;
- x = hi + y;
- if (y == x - hi)
- hi = x;
+ if (n3 > 0 && (lo < 0 && p2[n3 - 1] < 0 || lo > 0 && p2[n3 - 1] > 0)) {
+ y2 = lo * 2;
+ x2 = hi + y2;
+ if (y2 == x2 - hi)
+ hi = x2;
}
}
return hi;
return ascendingDefined;
if (typeof compare !== "function")
throw new TypeError("compare is not a function");
- return (a, b) => {
- const x = compare(a, b);
- if (x || x === 0)
- return x;
- return (compare(b, b) === 0) - (compare(a, a) === 0);
+ return (a2, b2) => {
+ const x2 = compare(a2, b2);
+ if (x2 || x2 === 0)
+ return x2;
+ return (compare(b2, b2) === 0) - (compare(a2, a2) === 0);
};
}
- function ascendingDefined(a, b) {
- return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);
+ function ascendingDefined(a2, b2) {
+ return (a2 == null || !(a2 >= a2)) - (b2 == null || !(b2 >= b2)) || (a2 < b2 ? -1 : a2 > b2 ? 1 : 0);
}
// node_modules/d3-array/src/ticks.js
var e5 = Math.sqrt(10);
var e2 = Math.sqrt(2);
function ticks(start2, stop, count) {
- var reverse, i2 = -1, n2, ticks2, step;
+ var reverse, i3 = -1, n3, ticks2, step;
stop = +stop, start2 = +start2, count = +count;
if (start2 === stop && count > 0)
return [start2];
if (reverse = stop < start2)
- n2 = start2, start2 = stop, stop = n2;
+ n3 = start2, start2 = stop, stop = n3;
if ((step = tickIncrement(start2, stop, count)) === 0 || !isFinite(step))
return [];
if (step > 0) {
++r0;
if (r1 * step > stop)
--r1;
- ticks2 = new Array(n2 = r1 - r0 + 1);
- while (++i2 < n2)
- ticks2[i2] = (r0 + i2) * step;
+ ticks2 = new Array(n3 = r1 - r0 + 1);
+ while (++i3 < n3)
+ ticks2[i3] = (r0 + i3) * step;
} else {
step = -step;
let r0 = Math.round(start2 * step), r1 = Math.round(stop * step);
++r0;
if (r1 / step > stop)
--r1;
- ticks2 = new Array(n2 = r1 - r0 + 1);
- while (++i2 < n2)
- ticks2[i2] = (r0 + i2) / step;
+ ticks2 = new Array(n3 = r1 - r0 + 1);
+ while (++i3 < n3)
+ ticks2[i3] = (r0 + i3) / step;
}
if (reverse)
ticks2.reverse();
}
// node_modules/d3-array/src/quickselect.js
- function quickselect(array2, k, left = 0, right = array2.length - 1, compare) {
+ function quickselect(array2, k2, left = 0, right = array2.length - 1, compare) {
compare = compare === void 0 ? ascendingDefined : compareDefined(compare);
while (right > left) {
if (right - left > 600) {
- const n2 = right - left + 1;
- const m = k - left + 1;
- const z = Math.log(n2);
- const s = 0.5 * Math.exp(2 * z / 3);
- const sd = 0.5 * Math.sqrt(z * s * (n2 - s) / n2) * (m - n2 / 2 < 0 ? -1 : 1);
- const newLeft = Math.max(left, Math.floor(k - m * s / n2 + sd));
- const newRight = Math.min(right, Math.floor(k + (n2 - m) * s / n2 + sd));
- quickselect(array2, k, newLeft, newRight, compare);
- }
- const t = array2[k];
- let i2 = left;
- let j2 = right;
- swap(array2, left, k);
- if (compare(array2[right], t) > 0)
+ const n3 = right - left + 1;
+ const m2 = k2 - left + 1;
+ const z2 = Math.log(n3);
+ const s2 = 0.5 * Math.exp(2 * z2 / 3);
+ const sd = 0.5 * Math.sqrt(z2 * s2 * (n3 - s2) / n3) * (m2 - n3 / 2 < 0 ? -1 : 1);
+ const newLeft = Math.max(left, Math.floor(k2 - m2 * s2 / n3 + sd));
+ const newRight = Math.min(right, Math.floor(k2 + (n3 - m2) * s2 / n3 + sd));
+ quickselect(array2, k2, newLeft, newRight, compare);
+ }
+ const t2 = array2[k2];
+ let i3 = left;
+ let j3 = right;
+ swap(array2, left, k2);
+ if (compare(array2[right], t2) > 0)
swap(array2, left, right);
- while (i2 < j2) {
- swap(array2, i2, j2), ++i2, --j2;
- while (compare(array2[i2], t) < 0)
- ++i2;
- while (compare(array2[j2], t) > 0)
- --j2;
- }
- if (compare(array2[left], t) === 0)
- swap(array2, left, j2);
+ while (i3 < j3) {
+ swap(array2, i3, j3), ++i3, --j3;
+ while (compare(array2[i3], t2) < 0)
+ ++i3;
+ while (compare(array2[j3], t2) > 0)
+ --j3;
+ }
+ if (compare(array2[left], t2) === 0)
+ swap(array2, left, j3);
else
- ++j2, swap(array2, j2, right);
- if (j2 <= k)
- left = j2 + 1;
- if (k <= j2)
- right = j2 - 1;
+ ++j3, swap(array2, j3, right);
+ if (j3 <= k2)
+ left = j3 + 1;
+ if (k2 <= j3)
+ right = j3 - 1;
}
return array2;
}
- function swap(array2, i2, j2) {
- const t = array2[i2];
- array2[i2] = array2[j2];
- array2[j2] = t;
+ function swap(array2, i3, j3) {
+ const t2 = array2[i3];
+ array2[i3] = array2[j3];
+ array2[j3] = t2;
}
// node_modules/d3-array/src/quantile.js
- function quantile(values, p, valueof) {
+ function quantile(values, p2, valueof) {
values = Float64Array.from(numbers(values, valueof));
- if (!(n2 = values.length))
+ if (!(n3 = values.length))
return;
- if ((p = +p) <= 0 || n2 < 2)
+ if ((p2 = +p2) <= 0 || n3 < 2)
return min(values);
- if (p >= 1)
+ if (p2 >= 1)
return max(values);
- var n2, i2 = (n2 - 1) * p, i0 = Math.floor(i2), value0 = max(quickselect(values, i0).subarray(0, i0 + 1)), value1 = min(values.subarray(i0 + 1));
- return value0 + (value1 - value0) * (i2 - i0);
+ var n3, i3 = (n3 - 1) * p2, i0 = Math.floor(i3), value0 = max(quickselect(values, i0).subarray(0, i0 + 1)), value1 = min(values.subarray(i0 + 1));
+ return value0 + (value1 - value0) * (i3 - i0);
}
// node_modules/d3-array/src/median.js
return Array.from(flatten(arrays));
}
+ // node_modules/d3-array/src/pairs.js
+ function pairs(values, pairof = pair) {
+ const pairs2 = [];
+ let previous;
+ let first = false;
+ for (const value of values) {
+ if (first)
+ pairs2.push(pairof(previous, value));
+ previous = value;
+ first = true;
+ }
+ return pairs2;
+ }
+ function pair(a2, b2) {
+ return [a2, b2];
+ }
+
// node_modules/d3-array/src/range.js
function range(start2, stop, step) {
- start2 = +start2, stop = +stop, step = (n2 = arguments.length) < 2 ? (stop = start2, start2 = 0, 1) : n2 < 3 ? 1 : +step;
- var i2 = -1, n2 = Math.max(0, Math.ceil((stop - start2) / step)) | 0, range3 = new Array(n2);
- while (++i2 < n2) {
- range3[i2] = start2 + i2 * step;
+ start2 = +start2, stop = +stop, step = (n3 = arguments.length) < 2 ? (stop = start2, start2 = 0, 1) : n3 < 3 ? 1 : +step;
+ var i3 = -1, n3 = Math.max(0, Math.ceil((stop - start2) / step)) | 0, range3 = new Array(n3);
+ while (++i3 < n3) {
+ range3[i3] = start2 + i3 * step;
}
return range3;
}
var exp = Math.exp;
var log = Math.log;
var sin = Math.sin;
- var sign = Math.sign || function(x) {
- return x > 0 ? 1 : x < 0 ? -1 : 0;
+ var sign = Math.sign || function(x2) {
+ return x2 > 0 ? 1 : x2 < 0 ? -1 : 0;
};
var sqrt = Math.sqrt;
var tan = Math.tan;
- function acos(x) {
- return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);
+ function acos(x2) {
+ return x2 > 1 ? 0 : x2 < -1 ? pi : Math.acos(x2);
}
- function asin(x) {
- return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);
+ function asin(x2) {
+ return x2 > 1 ? halfPi : x2 < -1 ? -halfPi : Math.asin(x2);
}
// node_modules/d3-geo/src/noop.js
streamGeometry(object.geometry, stream);
},
FeatureCollection: function(object, stream) {
- var features = object.features, i2 = -1, n2 = features.length;
- while (++i2 < n2)
- streamGeometry(features[i2].geometry, stream);
+ var features = object.features, i3 = -1, n3 = features.length;
+ while (++i3 < n3)
+ streamGeometry(features[i3].geometry, stream);
}
};
var streamGeometryType = {
stream.point(object[0], object[1], object[2]);
},
MultiPoint: function(object, stream) {
- var coordinates = object.coordinates, i2 = -1, n2 = coordinates.length;
- while (++i2 < n2)
- object = coordinates[i2], stream.point(object[0], object[1], object[2]);
+ var coordinates = object.coordinates, i3 = -1, n3 = coordinates.length;
+ while (++i3 < n3)
+ object = coordinates[i3], stream.point(object[0], object[1], object[2]);
},
LineString: function(object, stream) {
streamLine(object.coordinates, stream, 0);
},
MultiLineString: function(object, stream) {
- var coordinates = object.coordinates, i2 = -1, n2 = coordinates.length;
- while (++i2 < n2)
- streamLine(coordinates[i2], stream, 0);
+ var coordinates = object.coordinates, i3 = -1, n3 = coordinates.length;
+ while (++i3 < n3)
+ streamLine(coordinates[i3], stream, 0);
},
Polygon: function(object, stream) {
streamPolygon(object.coordinates, stream);
},
MultiPolygon: function(object, stream) {
- var coordinates = object.coordinates, i2 = -1, n2 = coordinates.length;
- while (++i2 < n2)
- streamPolygon(coordinates[i2], stream);
+ var coordinates = object.coordinates, i3 = -1, n3 = coordinates.length;
+ while (++i3 < n3)
+ streamPolygon(coordinates[i3], stream);
},
GeometryCollection: function(object, stream) {
- var geometries = object.geometries, i2 = -1, n2 = geometries.length;
- while (++i2 < n2)
- streamGeometry(geometries[i2], stream);
+ var geometries = object.geometries, i3 = -1, n3 = geometries.length;
+ while (++i3 < n3)
+ streamGeometry(geometries[i3], stream);
}
};
function streamLine(coordinates, stream, closed) {
- var i2 = -1, n2 = coordinates.length - closed, coordinate;
+ var i3 = -1, n3 = coordinates.length - closed, coordinate;
stream.lineStart();
- while (++i2 < n2)
- coordinate = coordinates[i2], stream.point(coordinate[0], coordinate[1], coordinate[2]);
+ while (++i3 < n3)
+ coordinate = coordinates[i3], stream.point(coordinate[0], coordinate[1], coordinate[2]);
stream.lineEnd();
}
function streamPolygon(coordinates, stream) {
- var i2 = -1, n2 = coordinates.length;
+ var i3 = -1, n3 = coordinates.length;
stream.polygonStart();
- while (++i2 < n2)
- streamLine(coordinates[i2], stream, 1);
+ while (++i3 < n3)
+ streamLine(coordinates[i3], stream, 1);
stream.polygonEnd();
}
function stream_default(object, stream) {
function areaPoint(lambda, phi) {
lambda *= radians, phi *= radians;
phi = phi / 2 + quarterPi;
- var dLambda = lambda - lambda0, sdLambda = dLambda >= 0 ? 1 : -1, adLambda = sdLambda * dLambda, cosPhi = cos(phi), sinPhi = sin(phi), k = sinPhi0 * sinPhi, u = cosPhi0 * cosPhi + k * cos(adLambda), v = k * sdLambda * sin(adLambda);
- areaRingSum.add(atan2(v, u));
+ var dLambda = lambda - lambda0, sdLambda = dLambda >= 0 ? 1 : -1, adLambda = sdLambda * dLambda, cosPhi = cos(phi), sinPhi = sin(phi), k2 = sinPhi0 * sinPhi, u2 = cosPhi0 * cosPhi + k2 * cos(adLambda), v2 = k2 * sdLambda * sin(adLambda);
+ areaRingSum.add(atan2(v2, u2));
lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;
}
function area_default(object) {
var lambda = spherical2[0], phi = spherical2[1], cosPhi = cos(phi);
return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];
}
- function cartesianDot(a, b) {
- return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+ function cartesianDot(a2, b2) {
+ return a2[0] * b2[0] + a2[1] * b2[1] + a2[2] * b2[2];
}
- function cartesianCross(a, b) {
- return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
+ function cartesianCross(a2, b2) {
+ return [a2[1] * b2[2] - a2[2] * b2[1], a2[2] * b2[0] - a2[0] * b2[2], a2[0] * b2[1] - a2[1] * b2[0]];
}
- function cartesianAddInPlace(a, b) {
- a[0] += b[0], a[1] += b[1], a[2] += b[2];
+ function cartesianAddInPlace(a2, b2) {
+ a2[0] += b2[0], a2[1] += b2[1], a2[2] += b2[2];
}
- function cartesianScale(vector, k) {
- return [vector[0] * k, vector[1] * k, vector[2] * k];
+ function cartesianScale(vector, k2) {
+ return [vector[0] * k2, vector[1] * k2, vector[2] * k2];
}
- function cartesianNormalizeInPlace(d) {
- var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
- d[0] /= l, d[1] /= l, d[2] /= l;
+ function cartesianNormalizeInPlace(d2) {
+ var l2 = sqrt(d2[0] * d2[0] + d2[1] * d2[1] + d2[2] * d2[2]);
+ d2[0] /= l2, d2[1] /= l2, d2[2] /= l2;
}
// node_modules/d3-geo/src/bounds.js
phi1 = phi;
}
function linePoint(lambda, phi) {
- var p = cartesian([lambda * radians, phi * radians]);
+ var p2 = cartesian([lambda * radians, phi * radians]);
if (p0) {
- var normal = cartesianCross(p0, p), equatorial = [normal[1], -normal[0], 0], inflection = cartesianCross(equatorial, normal);
+ var normal = cartesianCross(p0, p2), equatorial = [normal[1], -normal[0], 0], inflection = cartesianCross(equatorial, normal);
cartesianNormalizeInPlace(inflection);
inflection = spherical(inflection);
var delta = lambda - lambda2, sign2 = delta > 0 ? 1 : -1, lambdai = inflection[0] * degrees * sign2, phii, antimeridian = abs(delta) > 180;
phi0 = phi;
if (phi > phi1)
phi1 = phi;
- p0 = p, lambda2 = lambda;
+ p0 = p2, lambda2 = lambda;
}
function boundsLineStart() {
boundsStream.point = linePoint;
function angle(lambda04, lambda12) {
return (lambda12 -= lambda04) < 0 ? lambda12 + 360 : lambda12;
}
- function rangeCompare(a, b) {
- return a[0] - b[0];
+ function rangeCompare(a2, b2) {
+ return a2[0] - b2[0];
}
- function rangeContains(range3, x) {
- return range3[0] <= range3[1] ? range3[0] <= x && x <= range3[1] : x < range3[0] || range3[1] < x;
+ function rangeContains(range3, x2) {
+ return range3[0] <= range3[1] ? range3[0] <= x2 && x2 <= range3[1] : x2 < range3[0] || range3[1] < x2;
}
function bounds_default(feature3) {
- var i2, n2, a, b, merged, deltaMax, delta;
+ var i3, n3, a2, b2, merged, deltaMax, delta;
phi1 = lambda1 = -(lambda02 = phi0 = Infinity);
ranges = [];
stream_default(feature3, boundsStream);
- if (n2 = ranges.length) {
+ if (n3 = ranges.length) {
ranges.sort(rangeCompare);
- for (i2 = 1, a = ranges[0], merged = [a]; i2 < n2; ++i2) {
- b = ranges[i2];
- if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {
- if (angle(a[0], b[1]) > angle(a[0], a[1]))
- a[1] = b[1];
- if (angle(b[0], a[1]) > angle(a[0], a[1]))
- a[0] = b[0];
+ for (i3 = 1, a2 = ranges[0], merged = [a2]; i3 < n3; ++i3) {
+ b2 = ranges[i3];
+ if (rangeContains(a2, b2[0]) || rangeContains(a2, b2[1])) {
+ if (angle(a2[0], b2[1]) > angle(a2[0], a2[1]))
+ a2[1] = b2[1];
+ if (angle(b2[0], a2[1]) > angle(a2[0], a2[1]))
+ a2[0] = b2[0];
} else {
- merged.push(a = b);
+ merged.push(a2 = b2);
}
}
- for (deltaMax = -Infinity, n2 = merged.length - 1, i2 = 0, a = merged[n2]; i2 <= n2; a = b, ++i2) {
- b = merged[i2];
- if ((delta = angle(a[1], b[0])) > deltaMax)
- deltaMax = delta, lambda02 = b[0], lambda1 = a[1];
+ for (deltaMax = -Infinity, n3 = merged.length - 1, i3 = 0, a2 = merged[n3]; i3 <= n3; a2 = b2, ++i3) {
+ b2 = merged[i3];
+ if ((delta = angle(a2[1], b2[0])) > deltaMax)
+ deltaMax = delta, lambda02 = b2[0], lambda1 = a2[1];
}
}
ranges = range2 = null;
}
// node_modules/d3-geo/src/compose.js
- function compose_default(a, b) {
- function compose(x, y) {
- return x = a(x, y), b(x[0], x[1]);
+ function compose_default(a2, b2) {
+ function compose(x2, y2) {
+ return x2 = a2(x2, y2), b2(x2[0], x2[1]);
}
- if (a.invert && b.invert)
- compose.invert = function(x, y) {
- return x = b.invert(x, y), x && a.invert(x[0], x[1]);
+ if (a2.invert && b2.invert)
+ compose.invert = function(x2, y2) {
+ return x2 = b2.invert(x2, y2), x2 && a2.invert(x2[0], x2[1]);
};
return compose;
}
function rotationPhiGamma(deltaPhi, deltaGamma) {
var cosDeltaPhi = cos(deltaPhi), sinDeltaPhi = sin(deltaPhi), cosDeltaGamma = cos(deltaGamma), sinDeltaGamma = sin(deltaGamma);
function rotation(lambda, phi) {
- var cosPhi = cos(phi), x = cos(lambda) * cosPhi, y = sin(lambda) * cosPhi, z = sin(phi), k = z * cosDeltaPhi + x * sinDeltaPhi;
+ var cosPhi = cos(phi), x2 = cos(lambda) * cosPhi, y2 = sin(lambda) * cosPhi, z2 = sin(phi), k2 = z2 * cosDeltaPhi + x2 * sinDeltaPhi;
return [
- atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),
- asin(k * cosDeltaGamma + y * sinDeltaGamma)
+ atan2(y2 * cosDeltaGamma - k2 * sinDeltaGamma, x2 * cosDeltaPhi - z2 * sinDeltaPhi),
+ asin(k2 * cosDeltaGamma + y2 * sinDeltaGamma)
];
}
rotation.invert = function(lambda, phi) {
- var cosPhi = cos(phi), x = cos(lambda) * cosPhi, y = sin(lambda) * cosPhi, z = sin(phi), k = z * cosDeltaGamma - y * sinDeltaGamma;
+ var cosPhi = cos(phi), x2 = cos(lambda) * cosPhi, y2 = sin(lambda) * cosPhi, z2 = sin(phi), k2 = z2 * cosDeltaGamma - y2 * sinDeltaGamma;
return [
- atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),
- asin(k * cosDeltaPhi - x * sinDeltaPhi)
+ atan2(y2 * cosDeltaGamma + z2 * sinDeltaGamma, x2 * cosDeltaPhi + k2 * sinDeltaPhi),
+ asin(k2 * cosDeltaPhi - x2 * sinDeltaPhi)
];
};
return rotation;
if (direction > 0 ? t0 < t1 : t0 > t1)
t0 += direction * tau;
}
- for (var point2, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {
- point2 = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);
+ for (var point2, t2 = t0; direction > 0 ? t2 > t1 : t2 < t1; t2 -= step) {
+ point2 = spherical([cosRadius, -sinRadius * cos(t2), -sinRadius * sin(t2)]);
stream.point(point2[0], point2[1]);
}
}
function buffer_default() {
var lines = [], line;
return {
- point: function(x, y, m) {
- line.push([x, y, m]);
+ point: function(x2, y2, m2) {
+ line.push([x2, y2, m2]);
},
lineStart: function() {
lines.push(line = []);
}
// node_modules/d3-geo/src/pointEqual.js
- function pointEqual_default(a, b) {
- return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;
+ function pointEqual_default(a2, b2) {
+ return abs(a2[0] - b2[0]) < epsilon && abs(a2[1] - b2[1]) < epsilon;
}
// node_modules/d3-geo/src/clip/rejoin.js
this.n = this.p = null;
}
function rejoin_default(segments, compareIntersection2, startInside, interpolate, stream) {
- var subject = [], clip = [], i2, n2;
+ var subject = [], clip = [], i3, n3;
segments.forEach(function(segment) {
- if ((n3 = segment.length - 1) <= 0)
+ if ((n4 = segment.length - 1) <= 0)
return;
- var n3, p02 = segment[0], p1 = segment[n3], x;
+ var n4, p02 = segment[0], p1 = segment[n4], x2;
if (pointEqual_default(p02, p1)) {
if (!p02[2] && !p1[2]) {
stream.lineStart();
- for (i2 = 0; i2 < n3; ++i2)
- stream.point((p02 = segment[i2])[0], p02[1]);
+ for (i3 = 0; i3 < n4; ++i3)
+ stream.point((p02 = segment[i3])[0], p02[1]);
stream.lineEnd();
return;
}
p1[0] += 2 * epsilon;
}
- subject.push(x = new Intersection(p02, segment, null, true));
- clip.push(x.o = new Intersection(p02, null, x, false));
- subject.push(x = new Intersection(p1, segment, null, false));
- clip.push(x.o = new Intersection(p1, null, x, true));
+ subject.push(x2 = new Intersection(p02, segment, null, true));
+ clip.push(x2.o = new Intersection(p02, null, x2, false));
+ subject.push(x2 = new Intersection(p1, segment, null, false));
+ clip.push(x2.o = new Intersection(p1, null, x2, true));
});
if (!subject.length)
return;
clip.sort(compareIntersection2);
link(subject);
link(clip);
- for (i2 = 0, n2 = clip.length; i2 < n2; ++i2) {
- clip[i2].e = startInside = !startInside;
+ for (i3 = 0, n3 = clip.length; i3 < n3; ++i3) {
+ clip[i3].e = startInside = !startInside;
}
var start2 = subject[0], points, point2;
while (1) {
current.v = current.o.v = true;
if (current.e) {
if (isSubject) {
- for (i2 = 0, n2 = points.length; i2 < n2; ++i2)
- stream.point((point2 = points[i2])[0], point2[1]);
+ for (i3 = 0, n3 = points.length; i3 < n3; ++i3)
+ stream.point((point2 = points[i3])[0], point2[1]);
} else {
interpolate(current.x, current.n.x, 1, stream);
}
} else {
if (isSubject) {
points = current.p.z;
- for (i2 = points.length - 1; i2 >= 0; --i2)
- stream.point((point2 = points[i2])[0], point2[1]);
+ for (i3 = points.length - 1; i3 >= 0; --i3)
+ stream.point((point2 = points[i3])[0], point2[1]);
} else {
interpolate(current.x, current.p.x, -1, stream);
}
}
}
function link(array2) {
- if (!(n2 = array2.length))
+ if (!(n3 = array2.length))
return;
- var n2, i2 = 0, a = array2[0], b;
- while (++i2 < n2) {
- a.n = b = array2[i2];
- b.p = a;
- a = b;
+ var n3, i3 = 0, a2 = array2[0], b2;
+ while (++i3 < n3) {
+ a2.n = b2 = array2[i3];
+ b2.p = a2;
+ a2 = b2;
}
- a.n = b = array2[0];
- b.p = a;
+ a2.n = b2 = array2[0];
+ b2.p = a2;
}
// node_modules/d3-geo/src/polygonContains.js
phi = halfPi + epsilon;
else if (sinPhi === -1)
phi = -halfPi - epsilon;
- for (var i2 = 0, n2 = polygon2.length; i2 < n2; ++i2) {
- if (!(m = (ring = polygon2[i2]).length))
+ for (var i3 = 0, n3 = polygon2.length; i3 < n3; ++i3) {
+ if (!(m2 = (ring = polygon2[i3]).length))
continue;
- var ring, m, point0 = ring[m - 1], lambda04 = longitude(point0), phi02 = point0[1] / 2 + quarterPi, sinPhi03 = sin(phi02), cosPhi03 = cos(phi02);
- for (var j2 = 0; j2 < m; ++j2, lambda04 = lambda12, sinPhi03 = sinPhi1, cosPhi03 = cosPhi1, point0 = point1) {
- var point1 = ring[j2], lambda12 = longitude(point1), phi12 = point1[1] / 2 + quarterPi, sinPhi1 = sin(phi12), cosPhi1 = cos(phi12), delta = lambda12 - lambda04, sign2 = delta >= 0 ? 1 : -1, absDelta = sign2 * delta, antimeridian = absDelta > pi, k = sinPhi03 * sinPhi1;
- sum.add(atan2(k * sign2 * sin(absDelta), cosPhi03 * cosPhi1 + k * cos(absDelta)));
+ var ring, m2, point0 = ring[m2 - 1], lambda04 = longitude(point0), phi02 = point0[1] / 2 + quarterPi, sinPhi03 = sin(phi02), cosPhi03 = cos(phi02);
+ for (var j3 = 0; j3 < m2; ++j3, lambda04 = lambda12, sinPhi03 = sinPhi1, cosPhi03 = cosPhi1, point0 = point1) {
+ var point1 = ring[j3], lambda12 = longitude(point1), phi12 = point1[1] / 2 + quarterPi, sinPhi1 = sin(phi12), cosPhi1 = cos(phi12), delta = lambda12 - lambda04, sign2 = delta >= 0 ? 1 : -1, absDelta = sign2 * delta, antimeridian = absDelta > pi, k2 = sinPhi03 * sinPhi1;
+ sum.add(atan2(k2 * sign2 * sin(absDelta), cosPhi03 * cosPhi1 + k2 * cos(absDelta)));
angle2 += antimeridian ? delta + sign2 * tau : delta;
if (antimeridian ^ lambda04 >= lambda ^ lambda12 >= lambda) {
var arc = cartesianCross(cartesian(point0), cartesian(point1));
function ringEnd() {
pointRing(ring[0][0], ring[0][1]);
ringSink.lineEnd();
- var clean2 = ringSink.clean(), ringSegments = ringBuffer.result(), i2, n2 = ringSegments.length, m, segment, point3;
+ var clean2 = ringSink.clean(), ringSegments = ringBuffer.result(), i3, n3 = ringSegments.length, m2, segment, point3;
ring.pop();
polygon2.push(ring);
ring = null;
- if (!n2)
+ if (!n3)
return;
if (clean2 & 1) {
segment = ringSegments[0];
- if ((m = segment.length - 1) > 0) {
+ if ((m2 = segment.length - 1) > 0) {
if (!polygonStarted)
sink.polygonStart(), polygonStarted = true;
sink.lineStart();
- for (i2 = 0; i2 < m; ++i2)
- sink.point((point3 = segment[i2])[0], point3[1]);
+ for (i3 = 0; i3 < m2; ++i3)
+ sink.point((point3 = segment[i3])[0], point3[1]);
sink.lineEnd();
}
return;
}
- if (n2 > 1 && clean2 & 2)
+ if (n3 > 1 && clean2 & 2)
ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
segments.push(ringSegments.filter(validSegment));
}
function validSegment(segment) {
return segment.length > 1;
}
- function compareIntersection(a, b) {
- return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);
+ function compareIntersection(a2, b2) {
+ return ((a2 = a2.x)[0] < 0 ? a2[1] - halfPi - epsilon : halfPi - a2[1]) - ((b2 = b2.x)[0] < 0 ? b2[1] - halfPi - epsilon : halfPi - b2[1]);
}
// node_modules/d3-geo/src/clip/antimeridian.js
clean2 = 1;
},
point: function(lambda, phi) {
- var point1 = [lambda, phi], point2, v = visible(lambda, phi), c = smallRadius ? v ? 0 : code(lambda, phi) : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;
- if (!point0 && (v00 = v0 = v))
+ var point1 = [lambda, phi], point2, v2 = visible(lambda, phi), c2 = smallRadius ? v2 ? 0 : code(lambda, phi) : v2 ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;
+ if (!point0 && (v00 = v0 = v2))
stream.lineStart();
- if (v !== v0) {
+ if (v2 !== v0) {
point2 = intersect2(point0, point1);
if (!point2 || pointEqual_default(point0, point2) || pointEqual_default(point1, point2))
point1[2] = 1;
}
- if (v !== v0) {
+ if (v2 !== v0) {
clean2 = 0;
- if (v) {
+ if (v2) {
stream.lineStart();
point2 = intersect2(point1, point0);
stream.point(point2[0], point2[1]);
stream.lineEnd();
}
point0 = point2;
- } else if (notHemisphere && point0 && smallRadius ^ v) {
- var t;
- if (!(c & c0) && (t = intersect2(point1, point0, true))) {
+ } else if (notHemisphere && point0 && smallRadius ^ v2) {
+ var t2;
+ if (!(c2 & c0) && (t2 = intersect2(point1, point0, true))) {
clean2 = 0;
if (smallRadius) {
stream.lineStart();
- stream.point(t[0][0], t[0][1]);
- stream.point(t[1][0], t[1][1]);
+ stream.point(t2[0][0], t2[0][1]);
+ stream.point(t2[1][0], t2[1][1]);
stream.lineEnd();
} else {
- stream.point(t[1][0], t[1][1]);
+ stream.point(t2[1][0], t2[1][1]);
stream.lineEnd();
stream.lineStart();
- stream.point(t[0][0], t[0][1], 3);
+ stream.point(t2[0][0], t2[0][1], 3);
}
}
}
- if (v && (!point0 || !pointEqual_default(point0, point1))) {
+ if (v2 && (!point0 || !pointEqual_default(point0, point1))) {
stream.point(point1[0], point1[1]);
}
- point0 = point1, v0 = v, c0 = c;
+ point0 = point1, v0 = v2, c0 = c2;
},
lineEnd: function() {
if (v0)
}
};
}
- function intersect2(a, b, two) {
- var pa = cartesian(a), pb = cartesian(b);
- var n1 = [1, 0, 0], n2 = cartesianCross(pa, pb), n2n2 = cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;
+ function intersect2(a2, b2, two) {
+ var pa = cartesian(a2), pb = cartesian(b2);
+ var n1 = [1, 0, 0], n22 = cartesianCross(pa, pb), n2n2 = cartesianDot(n22, n22), n1n2 = n22[0], determinant = n2n2 - n1n2 * n1n2;
if (!determinant)
- return !two && a;
- var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = cartesianCross(n1, n2), A = cartesianScale(n1, c1), B = cartesianScale(n2, c2);
- cartesianAddInPlace(A, B);
- var u = n1xn2, w = cartesianDot(A, u), uu = cartesianDot(u, u), t2 = w * w - uu * (cartesianDot(A, A) - 1);
+ return !two && a2;
+ var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = cartesianCross(n1, n22), A2 = cartesianScale(n1, c1), B2 = cartesianScale(n22, c2);
+ cartesianAddInPlace(A2, B2);
+ var u2 = n1xn2, w2 = cartesianDot(A2, u2), uu = cartesianDot(u2, u2), t2 = w2 * w2 - uu * (cartesianDot(A2, A2) - 1);
if (t2 < 0)
return;
- var t = sqrt(t2), q = cartesianScale(u, (-w - t) / uu);
- cartesianAddInPlace(q, A);
- q = spherical(q);
+ var t3 = sqrt(t2), q2 = cartesianScale(u2, (-w2 - t3) / uu);
+ cartesianAddInPlace(q2, A2);
+ q2 = spherical(q2);
if (!two)
- return q;
- var lambda04 = a[0], lambda12 = b[0], phi02 = a[1], phi12 = b[1], z;
+ return q2;
+ var lambda04 = a2[0], lambda12 = b2[0], phi02 = a2[1], phi12 = b2[1], z2;
if (lambda12 < lambda04)
- z = lambda04, lambda04 = lambda12, lambda12 = z;
+ z2 = lambda04, lambda04 = lambda12, lambda12 = z2;
var delta2 = lambda12 - lambda04, polar = abs(delta2 - pi) < epsilon, meridian = polar || delta2 < epsilon;
if (!polar && phi12 < phi02)
- z = phi02, phi02 = phi12, phi12 = z;
- if (meridian ? polar ? phi02 + phi12 > 0 ^ q[1] < (abs(q[0] - lambda04) < epsilon ? phi02 : phi12) : phi02 <= q[1] && q[1] <= phi12 : delta2 > pi ^ (lambda04 <= q[0] && q[0] <= lambda12)) {
- var q1 = cartesianScale(u, (-w + t) / uu);
- cartesianAddInPlace(q1, A);
- return [q, spherical(q1)];
+ z2 = phi02, phi02 = phi12, phi12 = z2;
+ if (meridian ? polar ? phi02 + phi12 > 0 ^ q2[1] < (abs(q2[0] - lambda04) < epsilon ? phi02 : phi12) : phi02 <= q2[1] && q2[1] <= phi12 : delta2 > pi ^ (lambda04 <= q2[0] && q2[0] <= lambda12)) {
+ var q1 = cartesianScale(u2, (-w2 + t3) / uu);
+ cartesianAddInPlace(q1, A2);
+ return [q2, spherical(q1)];
}
}
function code(lambda, phi) {
- var r = smallRadius ? radius : pi - radius, code2 = 0;
- if (lambda < -r)
+ var r2 = smallRadius ? radius : pi - radius, code2 = 0;
+ if (lambda < -r2)
code2 |= 1;
- else if (lambda > r)
+ else if (lambda > r2)
code2 |= 2;
- if (phi < -r)
+ if (phi < -r2)
code2 |= 4;
- else if (phi > r)
+ else if (phi > r2)
code2 |= 8;
return code2;
}
}
// node_modules/d3-geo/src/clip/line.js
- function line_default(a, b, x05, y05, x12, y12) {
- var ax = a[0], ay = a[1], bx = b[0], by = b[1], t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;
- r = x05 - ax;
- if (!dx && r > 0)
+ function line_default(a2, b2, x05, y05, x12, y12) {
+ var ax = a2[0], ay = a2[1], bx = b2[0], by = b2[1], t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r2;
+ r2 = x05 - ax;
+ if (!dx && r2 > 0)
return;
- r /= dx;
+ r2 /= dx;
if (dx < 0) {
- if (r < t0)
+ if (r2 < t0)
return;
- if (r < t1)
- t1 = r;
+ if (r2 < t1)
+ t1 = r2;
} else if (dx > 0) {
- if (r > t1)
+ if (r2 > t1)
return;
- if (r > t0)
- t0 = r;
+ if (r2 > t0)
+ t0 = r2;
}
- r = x12 - ax;
- if (!dx && r < 0)
+ r2 = x12 - ax;
+ if (!dx && r2 < 0)
return;
- r /= dx;
+ r2 /= dx;
if (dx < 0) {
- if (r > t1)
+ if (r2 > t1)
return;
- if (r > t0)
- t0 = r;
+ if (r2 > t0)
+ t0 = r2;
} else if (dx > 0) {
- if (r < t0)
+ if (r2 < t0)
return;
- if (r < t1)
- t1 = r;
+ if (r2 < t1)
+ t1 = r2;
}
- r = y05 - ay;
- if (!dy && r > 0)
+ r2 = y05 - ay;
+ if (!dy && r2 > 0)
return;
- r /= dy;
+ r2 /= dy;
if (dy < 0) {
- if (r < t0)
+ if (r2 < t0)
return;
- if (r < t1)
- t1 = r;
+ if (r2 < t1)
+ t1 = r2;
} else if (dy > 0) {
- if (r > t1)
+ if (r2 > t1)
return;
- if (r > t0)
- t0 = r;
+ if (r2 > t0)
+ t0 = r2;
}
- r = y12 - ay;
- if (!dy && r < 0)
+ r2 = y12 - ay;
+ if (!dy && r2 < 0)
return;
- r /= dy;
+ r2 /= dy;
if (dy < 0) {
- if (r > t1)
+ if (r2 > t1)
return;
- if (r > t0)
- t0 = r;
+ if (r2 > t0)
+ t0 = r2;
} else if (dy > 0) {
- if (r < t0)
+ if (r2 < t0)
return;
- if (r < t1)
- t1 = r;
+ if (r2 < t1)
+ t1 = r2;
}
if (t0 > 0)
- a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;
+ a2[0] = ax + t0 * dx, a2[1] = ay + t0 * dy;
if (t1 < 1)
- b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;
+ b2[0] = ax + t1 * dx, b2[1] = ay + t1 * dy;
return true;
}
var clipMax = 1e9;
var clipMin = -clipMax;
function clipRectangle(x05, y05, x12, y12) {
- function visible(x, y) {
- return x05 <= x && x <= x12 && y05 <= y && y <= y12;
+ function visible(x2, y2) {
+ return x05 <= x2 && x2 <= x12 && y05 <= y2 && y2 <= y12;
}
function interpolate(from, to, direction, stream) {
- var a = 0, a1 = 0;
- if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoint(from, to) < 0 ^ direction > 0) {
+ var a2 = 0, a1 = 0;
+ if (from == null || (a2 = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoint(from, to) < 0 ^ direction > 0) {
do
- stream.point(a === 0 || a === 3 ? x05 : x12, a > 1 ? y12 : y05);
- while ((a = (a + direction + 4) % 4) !== a1);
+ stream.point(a2 === 0 || a2 === 3 ? x05 : x12, a2 > 1 ? y12 : y05);
+ while ((a2 = (a2 + direction + 4) % 4) !== a1);
} else {
stream.point(to[0], to[1]);
}
}
- function corner(p, direction) {
- return abs(p[0] - x05) < epsilon ? direction > 0 ? 0 : 3 : abs(p[0] - x12) < epsilon ? direction > 0 ? 2 : 1 : abs(p[1] - y05) < epsilon ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;
+ function corner(p2, direction) {
+ return abs(p2[0] - x05) < epsilon ? direction > 0 ? 0 : 3 : abs(p2[0] - x12) < epsilon ? direction > 0 ? 2 : 1 : abs(p2[1] - y05) < epsilon ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;
}
- function compareIntersection2(a, b) {
- return comparePoint(a.x, b.x);
+ function compareIntersection2(a2, b2) {
+ return comparePoint(a2.x, b2.x);
}
- function comparePoint(a, b) {
- var ca = corner(a, 1), cb = corner(b, 1);
- return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];
+ function comparePoint(a2, b2) {
+ var ca = corner(a2, 1), cb = corner(b2, 1);
+ return ca !== cb ? ca - cb : ca === 0 ? b2[1] - a2[1] : ca === 1 ? a2[0] - b2[0] : ca === 2 ? a2[1] - b2[1] : b2[0] - a2[0];
}
return function(stream) {
var activeStream = stream, bufferStream = buffer_default(), segments, polygon2, ring, x__, y__, v__, x_, y_, v_, first, clean2;
polygonStart,
polygonEnd
};
- function point2(x, y) {
- if (visible(x, y))
- activeStream.point(x, y);
+ function point2(x2, y2) {
+ if (visible(x2, y2))
+ activeStream.point(x2, y2);
}
function polygonInside() {
var winding = 0;
- for (var i2 = 0, n2 = polygon2.length; i2 < n2; ++i2) {
- for (var ring2 = polygon2[i2], j2 = 1, m = ring2.length, point3 = ring2[0], a0, a1, b0 = point3[0], b1 = point3[1]; j2 < m; ++j2) {
- a0 = b0, a1 = b1, point3 = ring2[j2], b0 = point3[0], b1 = point3[1];
+ for (var i3 = 0, n3 = polygon2.length; i3 < n3; ++i3) {
+ for (var ring2 = polygon2[i3], j3 = 1, m2 = ring2.length, point3 = ring2[0], a0, a1, b0 = point3[0], b1 = point3[1]; j3 < m2; ++j3) {
+ a0 = b0, a1 = b1, point3 = ring2[j3], b0 = point3[0], b1 = point3[1];
if (a1 <= y12) {
if (b1 > y12 && (b0 - a0) * (y12 - a1) > (b1 - a1) * (x05 - a0))
++winding;
if (v_)
activeStream.lineEnd();
}
- function linePoint2(x, y) {
- var v = visible(x, y);
+ function linePoint2(x2, y2) {
+ var v2 = visible(x2, y2);
if (polygon2)
- ring.push([x, y]);
+ ring.push([x2, y2]);
if (first) {
- x__ = x, y__ = y, v__ = v;
+ x__ = x2, y__ = y2, v__ = v2;
first = false;
- if (v) {
+ if (v2) {
activeStream.lineStart();
- activeStream.point(x, y);
+ activeStream.point(x2, y2);
}
} else {
- if (v && v_)
- activeStream.point(x, y);
+ if (v2 && v_)
+ activeStream.point(x2, y2);
else {
- var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];
- if (line_default(a, b, x05, y05, x12, y12)) {
+ var a2 = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], b2 = [x2 = Math.max(clipMin, Math.min(clipMax, x2)), y2 = Math.max(clipMin, Math.min(clipMax, y2))];
+ if (line_default(a2, b2, x05, y05, x12, y12)) {
if (!v_) {
activeStream.lineStart();
- activeStream.point(a[0], a[1]);
+ activeStream.point(a2[0], a2[1]);
}
- activeStream.point(b[0], b[1]);
- if (!v)
+ activeStream.point(b2[0], b2[1]);
+ if (!v2)
activeStream.lineEnd();
clean2 = false;
- } else if (v) {
+ } else if (v2) {
activeStream.lineStart();
- activeStream.point(x, y);
+ activeStream.point(x2, y2);
clean2 = false;
}
}
}
- x_ = x, y_ = y, v_ = v;
+ x_ = x2, y_ = y2, v_ = v2;
}
return clipStream;
};
}
function lengthPoint(lambda, phi) {
lambda *= radians, phi *= radians;
- var sinPhi = sin(phi), cosPhi = cos(phi), delta = abs(lambda - lambda03), cosDelta = cos(delta), sinDelta = sin(delta), x = cosPhi * sinDelta, y = cosPhi02 * sinPhi - sinPhi02 * cosPhi * cosDelta, z = sinPhi02 * sinPhi + cosPhi02 * cosPhi * cosDelta;
- lengthSum.add(atan2(sqrt(x * x + y * y), z));
+ var sinPhi = sin(phi), cosPhi = cos(phi), delta = abs(lambda - lambda03), cosDelta = cos(delta), sinDelta = sin(delta), x2 = cosPhi * sinDelta, y2 = cosPhi02 * sinPhi - sinPhi02 * cosPhi * cosDelta, z2 = sinPhi02 * sinPhi + cosPhi02 * cosPhi * cosDelta;
+ lengthSum.add(atan2(sqrt(x2 * x2 + y2 * y2), z2));
lambda03 = lambda, sinPhi02 = sinPhi, cosPhi02 = cosPhi;
}
function length_default(object) {
}
// node_modules/d3-geo/src/identity.js
- var identity_default = (x) => x;
+ var identity_default = (x2) => x2;
// node_modules/d3-geo/src/path/area.js
var areaSum2 = new Adder();
function areaRingStart2() {
areaStream2.point = areaPointFirst2;
}
- function areaPointFirst2(x, y) {
+ function areaPointFirst2(x2, y2) {
areaStream2.point = areaPoint2;
- x00 = x0 = x, y00 = y0 = y;
+ x00 = x0 = x2, y00 = y0 = y2;
}
- function areaPoint2(x, y) {
- areaRingSum2.add(y0 * x - x0 * y);
- x0 = x, y0 = y;
+ function areaPoint2(x2, y2) {
+ areaRingSum2.add(y0 * x2 - x0 * y2);
+ x0 = x2, y0 = y2;
}
function areaRingEnd2() {
areaPoint2(x00, y00);
return bounds;
}
};
- function boundsPoint2(x, y) {
- if (x < x02)
- x02 = x;
- if (x > x1)
- x1 = x;
- if (y < y02)
- y02 = y;
- if (y > y1)
- y1 = y;
+ function boundsPoint2(x2, y2) {
+ if (x2 < x02)
+ x02 = x2;
+ if (x2 > x1)
+ x1 = x2;
+ if (y2 < y02)
+ y02 = y2;
+ if (y2 > y1)
+ y1 = y2;
}
var bounds_default2 = boundsStream2;
return centroid;
}
};
- function centroidPoint(x, y) {
- X0 += x;
- Y0 += y;
+ function centroidPoint(x2, y2) {
+ X0 += x2;
+ Y0 += y2;
++Z0;
}
function centroidLineStart() {
centroidStream.point = centroidPointFirstLine;
}
- function centroidPointFirstLine(x, y) {
+ function centroidPointFirstLine(x2, y2) {
centroidStream.point = centroidPointLine;
- centroidPoint(x03 = x, y03 = y);
+ centroidPoint(x03 = x2, y03 = y2);
}
- function centroidPointLine(x, y) {
- var dx = x - x03, dy = y - y03, z = sqrt(dx * dx + dy * dy);
- X1 += z * (x03 + x) / 2;
- Y1 += z * (y03 + y) / 2;
- Z1 += z;
- centroidPoint(x03 = x, y03 = y);
+ function centroidPointLine(x2, y2) {
+ var dx = x2 - x03, dy = y2 - y03, z2 = sqrt(dx * dx + dy * dy);
+ X1 += z2 * (x03 + x2) / 2;
+ Y1 += z2 * (y03 + y2) / 2;
+ Z1 += z2;
+ centroidPoint(x03 = x2, y03 = y2);
}
function centroidLineEnd() {
centroidStream.point = centroidPoint;
function centroidRingEnd() {
centroidPointRing(x002, y002);
}
- function centroidPointFirstRing(x, y) {
+ function centroidPointFirstRing(x2, y2) {
centroidStream.point = centroidPointRing;
- centroidPoint(x002 = x03 = x, y002 = y03 = y);
- }
- function centroidPointRing(x, y) {
- var dx = x - x03, dy = y - y03, z = sqrt(dx * dx + dy * dy);
- X1 += z * (x03 + x) / 2;
- Y1 += z * (y03 + y) / 2;
- Z1 += z;
- z = y03 * x - x03 * y;
- X2 += z * (x03 + x);
- Y2 += z * (y03 + y);
- Z2 += z * 3;
- centroidPoint(x03 = x, y03 = y);
+ centroidPoint(x002 = x03 = x2, y002 = y03 = y2);
+ }
+ function centroidPointRing(x2, y2) {
+ var dx = x2 - x03, dy = y2 - y03, z2 = sqrt(dx * dx + dy * dy);
+ X1 += z2 * (x03 + x2) / 2;
+ Y1 += z2 * (y03 + y2) / 2;
+ Z1 += z2;
+ z2 = y03 * x2 - x03 * y2;
+ X2 += z2 * (x03 + x2);
+ Y2 += z2 * (y03 + y2);
+ Z2 += z2 * 3;
+ centroidPoint(x03 = x2, y03 = y2);
}
var centroid_default = centroidStream;
}
PathContext.prototype = {
_radius: 4.5,
- pointRadius: function(_) {
- return this._radius = _, this;
+ pointRadius: function(_2) {
+ return this._radius = _2, this;
},
polygonStart: function() {
this._line = 0;
this._context.closePath();
this._point = NaN;
},
- point: function(x, y) {
+ point: function(x2, y2) {
switch (this._point) {
case 0: {
- this._context.moveTo(x, y);
+ this._context.moveTo(x2, y2);
this._point = 1;
break;
}
case 1: {
- this._context.lineTo(x, y);
+ this._context.lineTo(x2, y2);
break;
}
default: {
- this._context.moveTo(x + this._radius, y);
- this._context.arc(x, y, this._radius, 0, tau);
+ this._context.moveTo(x2 + this._radius, y2);
+ this._context.arc(x2, y2, this._radius, 0, tau);
break;
}
}
return length;
}
};
- function lengthPointFirst2(x, y) {
+ function lengthPointFirst2(x2, y2) {
lengthStream2.point = lengthPoint2;
- x003 = x04 = x, y003 = y04 = y;
+ x003 = x04 = x2, y003 = y04 = y2;
}
- function lengthPoint2(x, y) {
- x04 -= x, y04 -= y;
+ function lengthPoint2(x2, y2) {
+ x04 -= x2, y04 -= y2;
lengthSum2.add(sqrt(x04 * x04 + y04 * y04));
- x04 = x, y04 = y;
+ x04 = x2, y04 = y2;
}
var measure_default = lengthStream2;
PathString.prototype = {
_radius: 4.5,
_circle: circle(4.5),
- pointRadius: function(_) {
- if ((_ = +_) !== this._radius)
- this._radius = _, this._circle = null;
+ pointRadius: function(_2) {
+ if ((_2 = +_2) !== this._radius)
+ this._radius = _2, this._circle = null;
return this;
},
polygonStart: function() {
this._string.push("Z");
this._point = NaN;
},
- point: function(x, y) {
+ point: function(x2, y2) {
switch (this._point) {
case 0: {
- this._string.push("M", x, ",", y);
+ this._string.push("M", x2, ",", y2);
this._point = 1;
break;
}
case 1: {
- this._string.push("L", x, ",", y);
+ this._string.push("L", x2, ",", y2);
break;
}
default: {
if (this._circle == null)
this._circle = circle(this._radius);
- this._string.push("M", x, ",", y, this._circle);
+ this._string.push("M", x2, ",", y2, this._circle);
break;
}
}
stream_default(object, projectionStream(centroid_default));
return centroid_default.result();
};
- path.projection = function(_) {
- return arguments.length ? (projectionStream = _ == null ? (projection2 = null, identity_default) : (projection2 = _).stream, path) : projection2;
+ path.projection = function(_2) {
+ return arguments.length ? (projectionStream = _2 == null ? (projection2 = null, identity_default) : (projection2 = _2).stream, path) : projection2;
};
- path.context = function(_) {
+ path.context = function(_2) {
if (!arguments.length)
return context;
- contextStream = _ == null ? (context = null, new PathString()) : new PathContext(context = _);
+ contextStream = _2 == null ? (context = null, new PathString()) : new PathContext(context = _2);
if (typeof pointRadius !== "function")
contextStream.pointRadius(pointRadius);
return path;
};
- path.pointRadius = function(_) {
+ path.pointRadius = function(_2) {
if (!arguments.length)
return pointRadius;
- pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
+ pointRadius = typeof _2 === "function" ? _2 : (contextStream.pointRadius(+_2), +_2);
return path;
};
return path.projection(projection2).context(context);
}
function transformer(methods2) {
return function(stream) {
- var s = new TransformStream();
+ var s2 = new TransformStream();
for (var key in methods2)
- s[key] = methods2[key];
- s.stream = stream;
- return s;
+ s2[key] = methods2[key];
+ s2.stream = stream;
+ return s2;
};
}
function TransformStream() {
}
TransformStream.prototype = {
constructor: TransformStream,
- point: function(x, y) {
- this.stream.point(x, y);
+ point: function(x2, y2) {
+ this.stream.point(x2, y2);
},
sphere: function() {
this.stream.sphere();
return projection2;
}
function fitExtent(projection2, extent, object) {
- return fit(projection2, function(b) {
- var w = extent[1][0] - extent[0][0], h = extent[1][1] - extent[0][1], k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;
- projection2.scale(150 * k).translate([x, y]);
+ return fit(projection2, function(b2) {
+ var w2 = extent[1][0] - extent[0][0], h2 = extent[1][1] - extent[0][1], k2 = Math.min(w2 / (b2[1][0] - b2[0][0]), h2 / (b2[1][1] - b2[0][1])), x2 = +extent[0][0] + (w2 - k2 * (b2[1][0] + b2[0][0])) / 2, y2 = +extent[0][1] + (h2 - k2 * (b2[1][1] + b2[0][1])) / 2;
+ projection2.scale(150 * k2).translate([x2, y2]);
}, object);
}
function fitSize(projection2, size, object) {
return fitExtent(projection2, [[0, 0], size], object);
}
function fitWidth(projection2, width, object) {
- return fit(projection2, function(b) {
- var w = +width, k = w / (b[1][0] - b[0][0]), x = (w - k * (b[1][0] + b[0][0])) / 2, y = -k * b[0][1];
- projection2.scale(150 * k).translate([x, y]);
+ return fit(projection2, function(b2) {
+ var w2 = +width, k2 = w2 / (b2[1][0] - b2[0][0]), x2 = (w2 - k2 * (b2[1][0] + b2[0][0])) / 2, y2 = -k2 * b2[0][1];
+ projection2.scale(150 * k2).translate([x2, y2]);
}, object);
}
function fitHeight(projection2, height, object) {
- return fit(projection2, function(b) {
- var h = +height, k = h / (b[1][1] - b[0][1]), x = -k * b[0][0], y = (h - k * (b[1][1] + b[0][1])) / 2;
- projection2.scale(150 * k).translate([x, y]);
+ return fit(projection2, function(b2) {
+ var h2 = +height, k2 = h2 / (b2[1][1] - b2[0][1]), x2 = -k2 * b2[0][0], y2 = (h2 - k2 * (b2[1][1] + b2[0][1])) / 2;
+ projection2.scale(150 * k2).translate([x2, y2]);
}, object);
}
}
function resampleNone(project) {
return transformer({
- point: function(x, y) {
- x = project(x, y);
- this.stream.point(x[0], x[1]);
+ point: function(x2, y2) {
+ x2 = project(x2, y2);
+ this.stream.point(x2[0], x2[1]);
}
});
}
function resampleLineTo(x05, y05, lambda04, a0, b0, c0, x12, y12, lambda12, a1, b1, c1, depth, stream) {
var dx = x12 - x05, dy = y12 - y05, d2 = dx * dx + dy * dy;
if (d2 > 4 * delta2 && depth--) {
- var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = sqrt(a * a + b * b + c * c), phi2 = asin(c /= m), lambda22 = abs(abs(c) - 1) < epsilon || abs(lambda04 - lambda12) < epsilon ? (lambda04 + lambda12) / 2 : atan2(b, a), p = project(lambda22, phi2), x2 = p[0], y2 = p[1], dx2 = x2 - x05, dy2 = y2 - y05, dz = dy * dx2 - dx * dy2;
+ var a2 = a0 + a1, b2 = b0 + b1, c2 = c0 + c1, m2 = sqrt(a2 * a2 + b2 * b2 + c2 * c2), phi2 = asin(c2 /= m2), lambda22 = abs(abs(c2) - 1) < epsilon || abs(lambda04 - lambda12) < epsilon ? (lambda04 + lambda12) / 2 : atan2(b2, a2), p2 = project(lambda22, phi2), x2 = p2[0], y2 = p2[1], dx2 = x2 - x05, dy2 = y2 - y05, dz = dy * dx2 - dx * dy2;
if (dz * dz / d2 > delta2 || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {
- resampleLineTo(x05, y05, lambda04, a0, b0, c0, x2, y2, lambda22, a /= m, b /= m, c, depth, stream);
+ resampleLineTo(x05, y05, lambda04, a0, b0, c0, x2, y2, lambda22, a2 /= m2, b2 /= m2, c2, depth, stream);
stream.point(x2, y2);
- resampleLineTo(x2, y2, lambda22, a, b, c, x12, y12, lambda12, a1, b1, c1, depth, stream);
+ resampleLineTo(x2, y2, lambda22, a2, b2, c2, x12, y12, lambda12, a1, b1, c1, depth, stream);
}
}
}
resampleStream.lineStart = lineStart;
}
};
- function point2(x, y) {
- x = project(x, y);
- stream.point(x[0], x[1]);
+ function point2(x2, y2) {
+ x2 = project(x2, y2);
+ stream.point(x2[0], x2[1]);
}
function lineStart() {
x05 = NaN;
stream.lineStart();
}
function linePoint2(lambda, phi) {
- var c = cartesian([lambda, phi]), p = project(lambda, phi);
- resampleLineTo(x05, y05, lambda04, a0, b0, c0, x05 = p[0], y05 = p[1], lambda04 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
+ var c2 = cartesian([lambda, phi]), p2 = project(lambda, phi);
+ resampleLineTo(x05, y05, lambda04, a0, b0, c0, x05 = p2[0], y05 = p2[1], lambda04 = lambda, a0 = c2[0], b0 = c2[1], c0 = c2[2], maxDepth, stream);
stream.point(x05, y05);
}
function lineEnd() {
// node_modules/d3-geo/src/projection/index.js
var transformRadians = transformer({
- point: function(x, y) {
- this.stream.point(x * radians, y * radians);
+ point: function(x2, y2) {
+ this.stream.point(x2 * radians, y2 * radians);
}
});
function transformRotate(rotate) {
return transformer({
- point: function(x, y) {
- var r = rotate(x, y);
- return this.stream.point(r[0], r[1]);
+ point: function(x2, y2) {
+ var r2 = rotate(x2, y2);
+ return this.stream.point(r2[0], r2[1]);
}
});
}
- function scaleTranslate(k, dx, dy, sx, sy) {
- function transform2(x, y) {
- x *= sx;
- y *= sy;
- return [dx + k * x, dy - k * y];
+ function scaleTranslate(k2, dx, dy, sx, sy) {
+ function transform2(x2, y2) {
+ x2 *= sx;
+ y2 *= sy;
+ return [dx + k2 * x2, dy - k2 * y2];
}
- transform2.invert = function(x, y) {
- return [(x - dx) / k * sx, (dy - y) / k * sy];
+ transform2.invert = function(x2, y2) {
+ return [(x2 - dx) / k2 * sx, (dy - y2) / k2 * sy];
};
return transform2;
}
- function scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {
+ function scaleTranslateRotate(k2, dx, dy, sx, sy, alpha) {
if (!alpha)
- return scaleTranslate(k, dx, dy, sx, sy);
- var cosAlpha = cos(alpha), sinAlpha = sin(alpha), a = cosAlpha * k, b = sinAlpha * k, ai = cosAlpha / k, bi = sinAlpha / k, ci = (sinAlpha * dy - cosAlpha * dx) / k, fi = (sinAlpha * dx + cosAlpha * dy) / k;
- function transform2(x, y) {
- x *= sx;
- y *= sy;
- return [a * x - b * y + dx, dy - b * x - a * y];
+ return scaleTranslate(k2, dx, dy, sx, sy);
+ var cosAlpha = cos(alpha), sinAlpha = sin(alpha), a2 = cosAlpha * k2, b2 = sinAlpha * k2, ai = cosAlpha / k2, bi = sinAlpha / k2, ci = (sinAlpha * dy - cosAlpha * dx) / k2, fi = (sinAlpha * dx + cosAlpha * dy) / k2;
+ function transform2(x2, y2) {
+ x2 *= sx;
+ y2 *= sy;
+ return [a2 * x2 - b2 * y2 + dx, dy - b2 * x2 - a2 * y2];
}
- transform2.invert = function(x, y) {
- return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];
+ transform2.invert = function(x2, y2) {
+ return [sx * (ai * x2 - bi * y2 + ci), sy * (fi - bi * x2 - ai * y2)];
};
return transform2;
}
})();
}
function projectionMutator(projectAt) {
- var project, k = 150, x = 480, y = 250, lambda = 0, phi = 0, deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, alpha = 0, sx = 1, sy = 1, theta = null, preclip = antimeridian_default, x05 = null, y05, x12, y12, postclip = identity_default, delta2 = 0.5, projectResample, projectTransform, projectRotateTransform, cache, cacheStream;
+ var project, k2 = 150, x2 = 480, y2 = 250, lambda = 0, phi = 0, deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, alpha = 0, sx = 1, sy = 1, theta = null, preclip = antimeridian_default, x05 = null, y05, x12, y12, postclip = identity_default, delta2 = 0.5, projectResample, projectTransform, projectRotateTransform, cache, cacheStream;
function projection2(point2) {
return projectRotateTransform(point2[0] * radians, point2[1] * radians);
}
projection2.stream = function(stream) {
return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));
};
- projection2.preclip = function(_) {
- return arguments.length ? (preclip = _, theta = void 0, reset()) : preclip;
+ projection2.preclip = function(_2) {
+ return arguments.length ? (preclip = _2, theta = void 0, reset()) : preclip;
};
- projection2.postclip = function(_) {
- return arguments.length ? (postclip = _, x05 = y05 = x12 = y12 = null, reset()) : postclip;
+ projection2.postclip = function(_2) {
+ return arguments.length ? (postclip = _2, x05 = y05 = x12 = y12 = null, reset()) : postclip;
};
- projection2.clipAngle = function(_) {
- return arguments.length ? (preclip = +_ ? circle_default(theta = _ * radians) : (theta = null, antimeridian_default), reset()) : theta * degrees;
+ projection2.clipAngle = function(_2) {
+ return arguments.length ? (preclip = +_2 ? circle_default(theta = _2 * radians) : (theta = null, antimeridian_default), reset()) : theta * degrees;
};
- projection2.clipExtent = function(_) {
- return arguments.length ? (postclip = _ == null ? (x05 = y05 = x12 = y12 = null, identity_default) : clipRectangle(x05 = +_[0][0], y05 = +_[0][1], x12 = +_[1][0], y12 = +_[1][1]), reset()) : x05 == null ? null : [[x05, y05], [x12, y12]];
+ projection2.clipExtent = function(_2) {
+ return arguments.length ? (postclip = _2 == null ? (x05 = y05 = x12 = y12 = null, identity_default) : clipRectangle(x05 = +_2[0][0], y05 = +_2[0][1], x12 = +_2[1][0], y12 = +_2[1][1]), reset()) : x05 == null ? null : [[x05, y05], [x12, y12]];
};
- projection2.scale = function(_) {
- return arguments.length ? (k = +_, recenter()) : k;
+ projection2.scale = function(_2) {
+ return arguments.length ? (k2 = +_2, recenter()) : k2;
};
- projection2.translate = function(_) {
- return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];
+ projection2.translate = function(_2) {
+ return arguments.length ? (x2 = +_2[0], y2 = +_2[1], recenter()) : [x2, y2];
};
- projection2.center = function(_) {
- return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];
+ projection2.center = function(_2) {
+ return arguments.length ? (lambda = _2[0] % 360 * radians, phi = _2[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];
};
- projection2.rotate = function(_) {
- return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];
+ projection2.rotate = function(_2) {
+ return arguments.length ? (deltaLambda = _2[0] % 360 * radians, deltaPhi = _2[1] % 360 * radians, deltaGamma = _2.length > 2 ? _2[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];
};
- projection2.angle = function(_) {
- return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;
+ projection2.angle = function(_2) {
+ return arguments.length ? (alpha = _2 % 360 * radians, recenter()) : alpha * degrees;
};
- projection2.reflectX = function(_) {
- return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;
+ projection2.reflectX = function(_2) {
+ return arguments.length ? (sx = _2 ? -1 : 1, recenter()) : sx < 0;
};
- projection2.reflectY = function(_) {
- return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;
+ projection2.reflectY = function(_2) {
+ return arguments.length ? (sy = _2 ? -1 : 1, recenter()) : sy < 0;
};
- projection2.precision = function(_) {
- return arguments.length ? (projectResample = resample_default(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);
+ projection2.precision = function(_2) {
+ return arguments.length ? (projectResample = resample_default(projectTransform, delta2 = _2 * _2), reset()) : sqrt(delta2);
};
projection2.fitExtent = function(extent, object) {
return fitExtent(projection2, extent, object);
return fitHeight(projection2, height, object);
};
function recenter() {
- var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)), transform2 = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);
+ var center = scaleTranslateRotate(k2, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)), transform2 = scaleTranslateRotate(k2, x2 - center[0], y2 - center[1], sx, sy, alpha);
rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);
projectTransform = compose_default(project, transform2);
projectRotateTransform = compose_default(rotate, projectTransform);
function mercatorRaw(lambda, phi) {
return [lambda, log(tan((halfPi + phi) / 2))];
}
- mercatorRaw.invert = function(x, y) {
- return [x, 2 * atan(exp(y)) - halfPi];
+ mercatorRaw.invert = function(x2, y2) {
+ return [x2, 2 * atan(exp(y2)) - halfPi];
};
function mercator_default() {
return mercatorProjection(mercatorRaw).scale(961 / tau);
}
function mercatorProjection(project) {
- var m = projection(project), center = m.center, scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, x05 = null, y05, x12, y12;
- m.scale = function(_) {
- return arguments.length ? (scale(_), reclip()) : scale();
+ var m2 = projection(project), center = m2.center, scale = m2.scale, translate = m2.translate, clipExtent = m2.clipExtent, x05 = null, y05, x12, y12;
+ m2.scale = function(_2) {
+ return arguments.length ? (scale(_2), reclip()) : scale();
};
- m.translate = function(_) {
- return arguments.length ? (translate(_), reclip()) : translate();
+ m2.translate = function(_2) {
+ return arguments.length ? (translate(_2), reclip()) : translate();
};
- m.center = function(_) {
- return arguments.length ? (center(_), reclip()) : center();
+ m2.center = function(_2) {
+ return arguments.length ? (center(_2), reclip()) : center();
};
- m.clipExtent = function(_) {
- return arguments.length ? (_ == null ? x05 = y05 = x12 = y12 = null : (x05 = +_[0][0], y05 = +_[0][1], x12 = +_[1][0], y12 = +_[1][1]), reclip()) : x05 == null ? null : [[x05, y05], [x12, y12]];
+ m2.clipExtent = function(_2) {
+ return arguments.length ? (_2 == null ? x05 = y05 = x12 = y12 = null : (x05 = +_2[0][0], y05 = +_2[0][1], x12 = +_2[1][0], y12 = +_2[1][1]), reclip()) : x05 == null ? null : [[x05, y05], [x12, y12]];
};
function reclip() {
- var k = pi * scale(), t = m(rotation_default(m.rotate()).invert([0, 0]));
- return clipExtent(x05 == null ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw ? [[Math.max(t[0] - k, x05), y05], [Math.min(t[0] + k, x12), y12]] : [[x05, Math.max(t[1] - k, y05)], [x12, Math.min(t[1] + k, y12)]]);
+ var k2 = pi * scale(), t2 = m2(rotation_default(m2.rotate()).invert([0, 0]));
+ return clipExtent(x05 == null ? [[t2[0] - k2, t2[1] - k2], [t2[0] + k2, t2[1] + k2]] : project === mercatorRaw ? [[Math.max(t2[0] - k2, x05), y05], [Math.min(t2[0] + k2, x12), y12]] : [[x05, Math.max(t2[1] - k2, y05)], [x12, Math.min(t2[1] + k2, y12)]]);
}
return reclip();
}
// node_modules/d3-geo/src/projection/identity.js
function identity_default2() {
- var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, alpha = 0, ca, sa, x05 = null, y05, x12, y12, kx = 1, ky = 1, transform2 = transformer({
- point: function(x, y) {
- var p = projection2([x, y]);
- this.stream.point(p[0], p[1]);
+ var k2 = 1, tx = 0, ty = 0, sx = 1, sy = 1, alpha = 0, ca, sa, x05 = null, y05, x12, y12, kx = 1, ky = 1, transform2 = transformer({
+ point: function(x2, y2) {
+ var p2 = projection2([x2, y2]);
+ this.stream.point(p2[0], p2[1]);
}
}), postclip = identity_default, cache, cacheStream;
function reset() {
- kx = k * sx;
- ky = k * sy;
+ kx = k2 * sx;
+ ky = k2 * sy;
cache = cacheStream = null;
return projection2;
}
- function projection2(p) {
- var x = p[0] * kx, y = p[1] * ky;
+ function projection2(p2) {
+ var x2 = p2[0] * kx, y2 = p2[1] * ky;
if (alpha) {
- var t = y * ca - x * sa;
- x = x * ca + y * sa;
- y = t;
+ var t2 = y2 * ca - x2 * sa;
+ x2 = x2 * ca + y2 * sa;
+ y2 = t2;
}
- return [x + tx, y + ty];
+ return [x2 + tx, y2 + ty];
}
- projection2.invert = function(p) {
- var x = p[0] - tx, y = p[1] - ty;
+ projection2.invert = function(p2) {
+ var x2 = p2[0] - tx, y2 = p2[1] - ty;
if (alpha) {
- var t = y * ca + x * sa;
- x = x * ca - y * sa;
- y = t;
+ var t2 = y2 * ca + x2 * sa;
+ x2 = x2 * ca - y2 * sa;
+ y2 = t2;
}
- return [x / kx, y / ky];
+ return [x2 / kx, y2 / ky];
};
projection2.stream = function(stream) {
return cache && cacheStream === stream ? cache : cache = transform2(postclip(cacheStream = stream));
};
- projection2.postclip = function(_) {
- return arguments.length ? (postclip = _, x05 = y05 = x12 = y12 = null, reset()) : postclip;
+ projection2.postclip = function(_2) {
+ return arguments.length ? (postclip = _2, x05 = y05 = x12 = y12 = null, reset()) : postclip;
};
- projection2.clipExtent = function(_) {
- return arguments.length ? (postclip = _ == null ? (x05 = y05 = x12 = y12 = null, identity_default) : clipRectangle(x05 = +_[0][0], y05 = +_[0][1], x12 = +_[1][0], y12 = +_[1][1]), reset()) : x05 == null ? null : [[x05, y05], [x12, y12]];
+ projection2.clipExtent = function(_2) {
+ return arguments.length ? (postclip = _2 == null ? (x05 = y05 = x12 = y12 = null, identity_default) : clipRectangle(x05 = +_2[0][0], y05 = +_2[0][1], x12 = +_2[1][0], y12 = +_2[1][1]), reset()) : x05 == null ? null : [[x05, y05], [x12, y12]];
};
- projection2.scale = function(_) {
- return arguments.length ? (k = +_, reset()) : k;
+ projection2.scale = function(_2) {
+ return arguments.length ? (k2 = +_2, reset()) : k2;
};
- projection2.translate = function(_) {
- return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];
+ projection2.translate = function(_2) {
+ return arguments.length ? (tx = +_2[0], ty = +_2[1], reset()) : [tx, ty];
};
- projection2.angle = function(_) {
- return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;
+ projection2.angle = function(_2) {
+ return arguments.length ? (alpha = _2 % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;
};
- projection2.reflectX = function(_) {
- return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;
+ projection2.reflectX = function(_2) {
+ return arguments.length ? (sx = _2 ? -1 : 1, reset()) : sx < 0;
};
- projection2.reflectY = function(_) {
- return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;
+ projection2.reflectY = function(_2) {
+ return arguments.length ? (sy = _2 ? -1 : 1, reset()) : sy < 0;
};
projection2.fitExtent = function(extent, object) {
return fitExtent(projection2, extent, object);
// modules/geo/geo.js
var TAU = 2 * Math.PI;
- var EQUATORIAL_RADIUS = 6356752314245179e-9;
- var POLAR_RADIUS = 6378137;
+ var EQUATORIAL_RADIUS = 6378137;
+ var POLAR_RADIUS = 63567523e-1;
function geoLatToMeters(dLat) {
return dLat * (TAU * POLAR_RADIUS / 360);
}
function geoLonToMeters(dLon, atLat) {
return Math.abs(atLat) >= 90 ? 0 : dLon * (TAU * EQUATORIAL_RADIUS / 360) * Math.abs(Math.cos(atLat * (Math.PI / 180)));
}
- function geoMetersToLat(m) {
- return m / (TAU * POLAR_RADIUS / 360);
+ function geoMetersToLat(m2) {
+ return m2 / (TAU * POLAR_RADIUS / 360);
}
- function geoMetersToLon(m, atLat) {
- return Math.abs(atLat) >= 90 ? 0 : m / (TAU * EQUATORIAL_RADIUS / 360) / Math.abs(Math.cos(atLat * (Math.PI / 180)));
+ function geoMetersToLon(m2, atLat) {
+ return Math.abs(atLat) >= 90 ? 0 : m2 / (TAU * EQUATORIAL_RADIUS / 360) / Math.abs(Math.cos(atLat * (Math.PI / 180)));
}
function geoMetersToOffset(meters, tileSize) {
tileSize = tileSize || 256;
-offset[1] * TAU * POLAR_RADIUS / tileSize
];
}
- function geoSphericalDistance(a, b) {
- var x = geoLonToMeters(a[0] - b[0], (a[1] + b[1]) / 2);
- var y = geoLatToMeters(a[1] - b[1]);
- return Math.sqrt(x * x + y * y);
+ function geoSphericalDistance(a2, b2) {
+ var x2 = geoLonToMeters(a2[0] - b2[0], (a2[1] + b2[1]) / 2);
+ var y2 = geoLatToMeters(a2[1] - b2[1]);
+ return Math.sqrt(x2 * x2 + y2 * y2);
}
- function geoScaleToZoom(k, tileSize) {
+ function geoScaleToZoom(k2, tileSize) {
tileSize = tileSize || 256;
var log2ts = Math.log(tileSize) * Math.LOG2E;
- return Math.log(k * TAU) / Math.LN2 - log2ts;
+ return Math.log(k2 * TAU) / Math.LN2 - log2ts;
}
- function geoZoomToScale(z, tileSize) {
+ function geoZoomToScale(z2, tileSize) {
tileSize = tileSize || 256;
- return tileSize * Math.pow(2, z) / TAU;
+ return tileSize * Math.pow(2, z2) / TAU;
}
function geoSphericalClosestNode(nodes, point2) {
var minDistance = Infinity, distance;
var indexOfMin;
- for (var i2 in nodes) {
- distance = geoSphericalDistance(nodes[i2].loc, point2);
+ for (var i3 in nodes) {
+ distance = geoSphericalDistance(nodes[i3].loc, point2);
if (distance < minDistance) {
minDistance = distance;
- indexOfMin = i2;
+ indexOfMin = i3;
}
}
if (indexOfMin !== void 0) {
// node_modules/d3-polygon/src/area.js
function area_default3(polygon2) {
- var i2 = -1, n2 = polygon2.length, a, b = polygon2[n2 - 1], area = 0;
- while (++i2 < n2) {
- a = b;
- b = polygon2[i2];
- area += a[1] * b[0] - a[0] * b[1];
+ var i3 = -1, n3 = polygon2.length, a2, b2 = polygon2[n3 - 1], area = 0;
+ while (++i3 < n3) {
+ a2 = b2;
+ b2 = polygon2[i3];
+ area += a2[1] * b2[0] - a2[0] * b2[1];
}
return area / 2;
}
// node_modules/d3-polygon/src/centroid.js
function centroid_default2(polygon2) {
- var i2 = -1, n2 = polygon2.length, x = 0, y = 0, a, b = polygon2[n2 - 1], c, k = 0;
- while (++i2 < n2) {
- a = b;
- b = polygon2[i2];
- k += c = a[0] * b[1] - b[0] * a[1];
- x += (a[0] + b[0]) * c;
- y += (a[1] + b[1]) * c;
+ var i3 = -1, n3 = polygon2.length, x2 = 0, y2 = 0, a2, b2 = polygon2[n3 - 1], c2, k2 = 0;
+ while (++i3 < n3) {
+ a2 = b2;
+ b2 = polygon2[i3];
+ k2 += c2 = a2[0] * b2[1] - b2[0] * a2[1];
+ x2 += (a2[0] + b2[0]) * c2;
+ y2 += (a2[1] + b2[1]) * c2;
}
- return k *= 3, [x / k, y / k];
+ return k2 *= 3, [x2 / k2, y2 / k2];
}
// node_modules/d3-polygon/src/cross.js
- function cross_default(a, b, c) {
- return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
+ function cross_default(a2, b2, c2) {
+ return (b2[0] - a2[0]) * (c2[1] - a2[1]) - (b2[1] - a2[1]) * (c2[0] - a2[0]);
}
// node_modules/d3-polygon/src/hull.js
- function lexicographicOrder(a, b) {
- return a[0] - b[0] || a[1] - b[1];
+ function lexicographicOrder(a2, b2) {
+ return a2[0] - b2[0] || a2[1] - b2[1];
}
function computeUpperHullIndexes(points) {
- const n2 = points.length, indexes = [0, 1];
- let size = 2, i2;
- for (i2 = 2; i2 < n2; ++i2) {
- while (size > 1 && cross_default(points[indexes[size - 2]], points[indexes[size - 1]], points[i2]) <= 0)
+ const n3 = points.length, indexes = [0, 1];
+ let size = 2, i3;
+ for (i3 = 2; i3 < n3; ++i3) {
+ while (size > 1 && cross_default(points[indexes[size - 2]], points[indexes[size - 1]], points[i3]) <= 0)
--size;
- indexes[size++] = i2;
+ indexes[size++] = i3;
}
return indexes.slice(0, size);
}
function hull_default(points) {
- if ((n2 = points.length) < 3)
+ if ((n3 = points.length) < 3)
return null;
- var i2, n2, sortedPoints = new Array(n2), flippedPoints = new Array(n2);
- for (i2 = 0; i2 < n2; ++i2)
- sortedPoints[i2] = [+points[i2][0], +points[i2][1], i2];
+ var i3, n3, sortedPoints = new Array(n3), flippedPoints = new Array(n3);
+ for (i3 = 0; i3 < n3; ++i3)
+ sortedPoints[i3] = [+points[i3][0], +points[i3][1], i3];
sortedPoints.sort(lexicographicOrder);
- for (i2 = 0; i2 < n2; ++i2)
- flippedPoints[i2] = [sortedPoints[i2][0], -sortedPoints[i2][1]];
+ for (i3 = 0; i3 < n3; ++i3)
+ flippedPoints[i3] = [sortedPoints[i3][0], -sortedPoints[i3][1]];
var upperIndexes = computeUpperHullIndexes(sortedPoints), lowerIndexes = computeUpperHullIndexes(flippedPoints);
var skipLeft = lowerIndexes[0] === upperIndexes[0], skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], hull = [];
- for (i2 = upperIndexes.length - 1; i2 >= 0; --i2)
- hull.push(points[sortedPoints[upperIndexes[i2]][2]]);
- for (i2 = +skipLeft; i2 < lowerIndexes.length - skipRight; ++i2)
- hull.push(points[sortedPoints[lowerIndexes[i2]][2]]);
+ for (i3 = upperIndexes.length - 1; i3 >= 0; --i3)
+ hull.push(points[sortedPoints[upperIndexes[i3]][2]]);
+ for (i3 = +skipLeft; i3 < lowerIndexes.length - skipRight; ++i3)
+ hull.push(points[sortedPoints[lowerIndexes[i3]][2]]);
return hull;
}
// modules/geo/vector.js
- function geoVecEqual(a, b, epsilon3) {
+ function geoVecEqual(a2, b2, epsilon3) {
if (epsilon3) {
- return Math.abs(a[0] - b[0]) <= epsilon3 && Math.abs(a[1] - b[1]) <= epsilon3;
+ return Math.abs(a2[0] - b2[0]) <= epsilon3 && Math.abs(a2[1] - b2[1]) <= epsilon3;
} else {
- return a[0] === b[0] && a[1] === b[1];
+ return a2[0] === b2[0] && a2[1] === b2[1];
}
}
- function geoVecAdd(a, b) {
- return [a[0] + b[0], a[1] + b[1]];
+ function geoVecAdd(a2, b2) {
+ return [a2[0] + b2[0], a2[1] + b2[1]];
}
- function geoVecSubtract(a, b) {
- return [a[0] - b[0], a[1] - b[1]];
+ function geoVecSubtract(a2, b2) {
+ return [a2[0] - b2[0], a2[1] - b2[1]];
}
- function geoVecScale(a, mag) {
- return [a[0] * mag, a[1] * mag];
+ function geoVecScale(a2, mag) {
+ return [a2[0] * mag, a2[1] * mag];
}
- function geoVecFloor(a) {
- return [Math.floor(a[0]), Math.floor(a[1])];
+ function geoVecFloor(a2) {
+ return [Math.floor(a2[0]), Math.floor(a2[1])];
}
- function geoVecInterp(a, b, t) {
+ function geoVecInterp(a2, b2, t2) {
return [
- a[0] + (b[0] - a[0]) * t,
- a[1] + (b[1] - a[1]) * t
+ a2[0] + (b2[0] - a2[0]) * t2,
+ a2[1] + (b2[1] - a2[1]) * t2
];
}
- function geoVecLength(a, b) {
- return Math.sqrt(geoVecLengthSquare(a, b));
+ function geoVecLength(a2, b2) {
+ return Math.sqrt(geoVecLengthSquare(a2, b2));
}
- function geoVecLengthSquare(a, b) {
- b = b || [0, 0];
- var x = a[0] - b[0];
- var y = a[1] - b[1];
- return x * x + y * y;
+ function geoVecLengthSquare(a2, b2) {
+ b2 = b2 || [0, 0];
+ var x2 = a2[0] - b2[0];
+ var y2 = a2[1] - b2[1];
+ return x2 * x2 + y2 * y2;
}
- function geoVecNormalize(a) {
- var length = Math.sqrt(a[0] * a[0] + a[1] * a[1]);
+ function geoVecNormalize(a2) {
+ var length = Math.sqrt(a2[0] * a2[0] + a2[1] * a2[1]);
if (length !== 0) {
- return geoVecScale(a, 1 / length);
+ return geoVecScale(a2, 1 / length);
}
return [0, 0];
}
- function geoVecAngle(a, b) {
- return Math.atan2(b[1] - a[1], b[0] - a[0]);
+ function geoVecAngle(a2, b2) {
+ return Math.atan2(b2[1] - a2[1], b2[0] - a2[0]);
}
- function geoVecDot(a, b, origin) {
+ function geoVecDot(a2, b2, origin) {
origin = origin || [0, 0];
- var p = geoVecSubtract(a, origin);
- var q = geoVecSubtract(b, origin);
- return p[0] * q[0] + p[1] * q[1];
+ var p2 = geoVecSubtract(a2, origin);
+ var q2 = geoVecSubtract(b2, origin);
+ return p2[0] * q2[0] + p2[1] * q2[1];
}
- function geoVecNormalizedDot(a, b, origin) {
+ function geoVecNormalizedDot(a2, b2, origin) {
origin = origin || [0, 0];
- var p = geoVecNormalize(geoVecSubtract(a, origin));
- var q = geoVecNormalize(geoVecSubtract(b, origin));
- return geoVecDot(p, q);
+ var p2 = geoVecNormalize(geoVecSubtract(a2, origin));
+ var q2 = geoVecNormalize(geoVecSubtract(b2, origin));
+ return geoVecDot(p2, q2);
}
- function geoVecCross(a, b, origin) {
+ function geoVecCross(a2, b2, origin) {
origin = origin || [0, 0];
- var p = geoVecSubtract(a, origin);
- var q = geoVecSubtract(b, origin);
- return p[0] * q[1] - p[1] * q[0];
+ var p2 = geoVecSubtract(a2, origin);
+ var q2 = geoVecSubtract(b2, origin);
+ return p2[0] * q2[1] - p2[1] * q2[0];
}
- function geoVecProject(a, points) {
+ function geoVecProject(a2, points) {
var min3 = Infinity;
var idx;
var target;
- for (var i2 = 0; i2 < points.length - 1; i2++) {
- var o = points[i2];
- var s = geoVecSubtract(points[i2 + 1], o);
- var v = geoVecSubtract(a, o);
- var proj = geoVecDot(v, s) / geoVecDot(s, s);
- var p;
+ for (var i3 = 0; i3 < points.length - 1; i3++) {
+ var o2 = points[i3];
+ var s2 = geoVecSubtract(points[i3 + 1], o2);
+ var v2 = geoVecSubtract(a2, o2);
+ var proj = geoVecDot(v2, s2) / geoVecDot(s2, s2);
+ var p2;
if (proj < 0) {
- p = o;
+ p2 = o2;
} else if (proj > 1) {
- p = points[i2 + 1];
+ p2 = points[i3 + 1];
} else {
- p = [o[0] + proj * s[0], o[1] + proj * s[1]];
+ p2 = [o2[0] + proj * s2[0], o2[1] + proj * s2[1]];
}
- var dist = geoVecLength(p, a);
+ var dist = geoVecLength(p2, a2);
if (dist < min3) {
min3 = dist;
- idx = i2 + 1;
- target = p;
+ idx = i3 + 1;
+ target = p2;
}
}
if (idx !== void 0) {
}
// modules/geo/geom.js
- function geoAngle(a, b, projection2) {
- return geoVecAngle(projection2(a.loc), projection2(b.loc));
+ function geoAngle(a2, b2, projection2) {
+ return geoVecAngle(projection2(a2.loc), projection2(b2.loc));
}
- function geoEdgeEqual(a, b) {
- return a[0] === b[0] && a[1] === b[1] || a[0] === b[1] && a[1] === b[0];
+ function geoEdgeEqual(a2, b2) {
+ return a2[0] === b2[0] && a2[1] === b2[1] || a2[0] === b2[1] && a2[1] === b2[0];
}
function geoRotate(points, angle2, around) {
return points.map(function(point2) {
}
function geoChooseEdge(nodes, point2, projection2, activeID) {
var dist = geoVecLength;
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
- var ids = nodes.map(function(n2) {
- return n2.id;
+ var ids = nodes.map(function(n3) {
+ return n3.id;
});
var min3 = Infinity;
var idx;
var loc;
- for (var i2 = 0; i2 < points.length - 1; i2++) {
- if (ids[i2] === activeID || ids[i2 + 1] === activeID)
+ for (var i3 = 0; i3 < points.length - 1; i3++) {
+ if (ids[i3] === activeID || ids[i3 + 1] === activeID)
continue;
- var o = points[i2];
- var s = geoVecSubtract(points[i2 + 1], o);
- var v = geoVecSubtract(point2, o);
- var proj = geoVecDot(v, s) / geoVecDot(s, s);
- var p;
+ var o2 = points[i3];
+ var s2 = geoVecSubtract(points[i3 + 1], o2);
+ var v2 = geoVecSubtract(point2, o2);
+ var proj = geoVecDot(v2, s2) / geoVecDot(s2, s2);
+ var p2;
if (proj < 0) {
- p = o;
+ p2 = o2;
} else if (proj > 1) {
- p = points[i2 + 1];
+ p2 = points[i3 + 1];
} else {
- p = [o[0] + proj * s[0], o[1] + proj * s[1]];
+ p2 = [o2[0] + proj * s2[0], o2[1] + proj * s2[1]];
}
- var d = dist(p, point2);
- if (d < min3) {
- min3 = d;
- idx = i2 + 1;
- loc = projection2.invert(p);
+ var d2 = dist(p2, point2);
+ if (d2 < min3) {
+ min3 = d2;
+ idx = i3 + 1;
+ loc = projection2.invert(p2);
}
}
if (idx !== void 0) {
function geoHasLineIntersections(activeNodes, inactiveNodes, activeID) {
var actives = [];
var inactives = [];
- var j2, k, n1, n2, segment;
- for (j2 = 0; j2 < activeNodes.length - 1; j2++) {
- n1 = activeNodes[j2];
- n2 = activeNodes[j2 + 1];
- segment = [n1.loc, n2.loc];
- if (n1.id === activeID || n2.id === activeID) {
+ var j3, k2, n1, n22, segment;
+ for (j3 = 0; j3 < activeNodes.length - 1; j3++) {
+ n1 = activeNodes[j3];
+ n22 = activeNodes[j3 + 1];
+ segment = [n1.loc, n22.loc];
+ if (n1.id === activeID || n22.id === activeID) {
actives.push(segment);
}
}
- for (j2 = 0; j2 < inactiveNodes.length - 1; j2++) {
- n1 = inactiveNodes[j2];
- n2 = inactiveNodes[j2 + 1];
- segment = [n1.loc, n2.loc];
+ for (j3 = 0; j3 < inactiveNodes.length - 1; j3++) {
+ n1 = inactiveNodes[j3];
+ n22 = inactiveNodes[j3 + 1];
+ segment = [n1.loc, n22.loc];
inactives.push(segment);
}
- for (j2 = 0; j2 < actives.length; j2++) {
- for (k = 0; k < inactives.length; k++) {
- var p = actives[j2];
- var q = inactives[k];
- var hit = geoLineIntersection(p, q);
+ for (j3 = 0; j3 < actives.length; j3++) {
+ for (k2 = 0; k2 < inactives.length; k2++) {
+ var p2 = actives[j3];
+ var q2 = inactives[k2];
+ var hit = geoLineIntersection(p2, q2);
if (hit) {
return true;
}
function geoHasSelfIntersections(nodes, activeID) {
var actives = [];
var inactives = [];
- var j2, k;
- for (j2 = 0; j2 < nodes.length - 1; j2++) {
- var n1 = nodes[j2];
- var n2 = nodes[j2 + 1];
- var segment = [n1.loc, n2.loc];
- if (n1.id === activeID || n2.id === activeID) {
+ var j3, k2;
+ for (j3 = 0; j3 < nodes.length - 1; j3++) {
+ var n1 = nodes[j3];
+ var n22 = nodes[j3 + 1];
+ var segment = [n1.loc, n22.loc];
+ if (n1.id === activeID || n22.id === activeID) {
actives.push(segment);
} else {
inactives.push(segment);
}
}
- for (j2 = 0; j2 < actives.length; j2++) {
- for (k = 0; k < inactives.length; k++) {
- var p = actives[j2];
- var q = inactives[k];
- if (geoVecEqual(p[1], q[0]) || geoVecEqual(p[0], q[1]) || geoVecEqual(p[0], q[0]) || geoVecEqual(p[1], q[1])) {
+ for (j3 = 0; j3 < actives.length; j3++) {
+ for (k2 = 0; k2 < inactives.length; k2++) {
+ var p2 = actives[j3];
+ var q2 = inactives[k2];
+ if (geoVecEqual(p2[1], q2[0]) || geoVecEqual(p2[0], q2[1]) || geoVecEqual(p2[0], q2[0]) || geoVecEqual(p2[1], q2[1])) {
continue;
}
- var hit = geoLineIntersection(p, q);
+ var hit = geoLineIntersection(p2, q2);
if (hit) {
var epsilon3 = 1e-8;
- if (geoVecEqual(p[1], hit, epsilon3) || geoVecEqual(p[0], hit, epsilon3) || geoVecEqual(q[1], hit, epsilon3) || geoVecEqual(q[0], hit, epsilon3)) {
+ if (geoVecEqual(p2[1], hit, epsilon3) || geoVecEqual(p2[0], hit, epsilon3) || geoVecEqual(q2[1], hit, epsilon3) || geoVecEqual(q2[0], hit, epsilon3)) {
continue;
} else {
return true;
}
return false;
}
- function geoLineIntersection(a, b) {
- var p = [a[0][0], a[0][1]];
- var p2 = [a[1][0], a[1][1]];
- var q = [b[0][0], b[0][1]];
- var q2 = [b[1][0], b[1][1]];
- var r = geoVecSubtract(p2, p);
- var s = geoVecSubtract(q2, q);
- var uNumerator = geoVecCross(geoVecSubtract(q, p), r);
- var denominator = geoVecCross(r, s);
+ function geoLineIntersection(a2, b2) {
+ var p2 = [a2[0][0], a2[0][1]];
+ var p22 = [a2[1][0], a2[1][1]];
+ var q2 = [b2[0][0], b2[0][1]];
+ var q22 = [b2[1][0], b2[1][1]];
+ var r2 = geoVecSubtract(p22, p2);
+ var s2 = geoVecSubtract(q22, q2);
+ var uNumerator = geoVecCross(geoVecSubtract(q2, p2), r2);
+ var denominator = geoVecCross(r2, s2);
if (uNumerator && denominator) {
- var u = uNumerator / denominator;
- var t = geoVecCross(geoVecSubtract(q, p), s) / denominator;
- if (t >= 0 && t <= 1 && u >= 0 && u <= 1) {
- return geoVecInterp(p, p2, t);
+ var u2 = uNumerator / denominator;
+ var t2 = geoVecCross(geoVecSubtract(q2, p2), s2) / denominator;
+ if (t2 >= 0 && t2 <= 1 && u2 >= 0 && u2 <= 1) {
+ return geoVecInterp(p2, p22, t2);
}
}
return null;
}
function geoPathIntersections(path1, path2) {
var intersections = [];
- for (var i2 = 0; i2 < path1.length - 1; i2++) {
- for (var j2 = 0; j2 < path2.length - 1; j2++) {
- var a = [path1[i2], path1[i2 + 1]];
- var b = [path2[j2], path2[j2 + 1]];
- var hit = geoLineIntersection(a, b);
+ for (var i3 = 0; i3 < path1.length - 1; i3++) {
+ for (var j3 = 0; j3 < path2.length - 1; j3++) {
+ var a2 = [path1[i3], path1[i3 + 1]];
+ var b2 = [path2[j3], path2[j3 + 1]];
+ var hit = geoLineIntersection(a2, b2);
if (hit) {
intersections.push(hit);
}
return intersections;
}
function geoPathHasIntersections(path1, path2) {
- for (var i2 = 0; i2 < path1.length - 1; i2++) {
- for (var j2 = 0; j2 < path2.length - 1; j2++) {
- var a = [path1[i2], path1[i2 + 1]];
- var b = [path2[j2], path2[j2 + 1]];
- var hit = geoLineIntersection(a, b);
+ for (var i3 = 0; i3 < path1.length - 1; i3++) {
+ for (var j3 = 0; j3 < path2.length - 1; j3++) {
+ var a2 = [path1[i3], path1[i3 + 1]];
+ var b2 = [path2[j3], path2[j3 + 1]];
+ var hit = geoLineIntersection(a2, b2);
if (hit) {
return true;
}
return false;
}
function geoPointInPolygon(point2, polygon2) {
- var x = point2[0];
- var y = point2[1];
+ var x2 = point2[0];
+ var y2 = point2[1];
var inside = false;
- for (var i2 = 0, j2 = polygon2.length - 1; i2 < polygon2.length; j2 = i2++) {
- var xi = polygon2[i2][0];
- var yi = polygon2[i2][1];
- var xj = polygon2[j2][0];
- var yj = polygon2[j2][1];
- var intersect2 = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
+ for (var i3 = 0, j3 = polygon2.length - 1; i3 < polygon2.length; j3 = i3++) {
+ var xi = polygon2[i3][0];
+ var yi = polygon2[i3][1];
+ var xj = polygon2[j3][0];
+ var yj = polygon2[j3][1];
+ var intersect2 = yi > y2 !== yj > y2 && x2 < (xj - xi) * (y2 - yi) / (yj - yi) + xi;
if (intersect2)
inside = !inside;
}
var ssrExtent = [];
var ssrAngle = 0;
var c1 = hull[0];
- for (var i2 = 0; i2 <= hull.length - 1; i2++) {
- var c2 = i2 === hull.length - 1 ? hull[0] : hull[i2 + 1];
+ for (var i3 = 0; i3 <= hull.length - 1; i3++) {
+ var c2 = i3 === hull.length - 1 ? hull[0] : hull[i3 + 1];
var angle2 = Math.atan2(c2[1] - c1[1], c2[0] - c1[0]);
var poly = geoRotate(hull, -angle2, centroid);
var extent = poly.reduce(function(extent2, point2) {
}
function geoPathLength(path) {
var length = 0;
- for (var i2 = 0; i2 < path.length - 1; i2++) {
- length += geoVecLength(path[i2], path[i2 + 1]);
+ for (var i3 = 0; i3 < path.length - 1; i3++) {
+ length += geoVecLength(path[i3], path[i3 + 1]);
}
return length;
}
function geoViewportEdge(point2, dimensions) {
var pad2 = [80, 20, 50, 20];
- var x = 0;
- var y = 0;
+ var x2 = 0;
+ var y2 = 0;
if (point2[0] > dimensions[0] - pad2[1]) {
- x = -10;
+ x2 = -10;
}
if (point2[0] < pad2[3]) {
- x = 10;
+ x2 = 10;
}
if (point2[1] > dimensions[1] - pad2[2]) {
- y = -10;
+ y2 = -10;
}
if (point2[1] < pad2[0]) {
- y = 10;
+ y2 = 10;
}
- if (x || y) {
- return [x, y];
+ if (x2 || y2) {
+ return [x2, y2];
} else {
return null;
}
var noop2 = { value: () => {
} };
function dispatch() {
- for (var i2 = 0, n2 = arguments.length, _ = {}, t; i2 < n2; ++i2) {
- if (!(t = arguments[i2] + "") || t in _ || /[\s.]/.test(t))
- throw new Error("illegal type: " + t);
- _[t] = [];
+ for (var i3 = 0, n3 = arguments.length, _2 = {}, t2; i3 < n3; ++i3) {
+ if (!(t2 = arguments[i3] + "") || t2 in _2 || /[\s.]/.test(t2))
+ throw new Error("illegal type: " + t2);
+ _2[t2] = [];
}
- return new Dispatch(_);
+ return new Dispatch(_2);
}
- function Dispatch(_) {
- this._ = _;
+ function Dispatch(_2) {
+ this._ = _2;
}
function parseTypenames(typenames, types) {
- return typenames.trim().split(/^|\s+/).map(function(t) {
- var name = "", i2 = t.indexOf(".");
- if (i2 >= 0)
- name = t.slice(i2 + 1), t = t.slice(0, i2);
- if (t && !types.hasOwnProperty(t))
- throw new Error("unknown type: " + t);
- return { type: t, name };
+ return typenames.trim().split(/^|\s+/).map(function(t2) {
+ var name = "", i3 = t2.indexOf(".");
+ if (i3 >= 0)
+ name = t2.slice(i3 + 1), t2 = t2.slice(0, i3);
+ if (t2 && !types.hasOwnProperty(t2))
+ throw new Error("unknown type: " + t2);
+ return { type: t2, name };
});
}
Dispatch.prototype = dispatch.prototype = {
constructor: Dispatch,
on: function(typename, callback) {
- var _ = this._, T = parseTypenames(typename + "", _), t, i2 = -1, n2 = T.length;
+ var _2 = this._, T2 = parseTypenames(typename + "", _2), t2, i3 = -1, n3 = T2.length;
if (arguments.length < 2) {
- while (++i2 < n2)
- if ((t = (typename = T[i2]).type) && (t = get(_[t], typename.name)))
- return t;
+ while (++i3 < n3)
+ if ((t2 = (typename = T2[i3]).type) && (t2 = get(_2[t2], typename.name)))
+ return t2;
return;
}
if (callback != null && typeof callback !== "function")
throw new Error("invalid callback: " + callback);
- while (++i2 < n2) {
- if (t = (typename = T[i2]).type)
- _[t] = set(_[t], typename.name, callback);
+ while (++i3 < n3) {
+ if (t2 = (typename = T2[i3]).type)
+ _2[t2] = set(_2[t2], typename.name, callback);
else if (callback == null)
- for (t in _)
- _[t] = set(_[t], typename.name, null);
+ for (t2 in _2)
+ _2[t2] = set(_2[t2], typename.name, null);
}
return this;
},
copy: function() {
- var copy2 = {}, _ = this._;
- for (var t in _)
- copy2[t] = _[t].slice();
+ var copy2 = {}, _2 = this._;
+ for (var t2 in _2)
+ copy2[t2] = _2[t2].slice();
return new Dispatch(copy2);
},
call: function(type2, that) {
- if ((n2 = arguments.length - 2) > 0)
- for (var args = new Array(n2), i2 = 0, n2, t; i2 < n2; ++i2)
- args[i2] = arguments[i2 + 2];
+ if ((n3 = arguments.length - 2) > 0)
+ for (var args = new Array(n3), i3 = 0, n3, t2; i3 < n3; ++i3)
+ args[i3] = arguments[i3 + 2];
if (!this._.hasOwnProperty(type2))
throw new Error("unknown type: " + type2);
- for (t = this._[type2], i2 = 0, n2 = t.length; i2 < n2; ++i2)
- t[i2].value.apply(that, args);
+ for (t2 = this._[type2], i3 = 0, n3 = t2.length; i3 < n3; ++i3)
+ t2[i3].value.apply(that, args);
},
apply: function(type2, that, args) {
if (!this._.hasOwnProperty(type2))
throw new Error("unknown type: " + type2);
- for (var t = this._[type2], i2 = 0, n2 = t.length; i2 < n2; ++i2)
- t[i2].value.apply(that, args);
+ for (var t2 = this._[type2], i3 = 0, n3 = t2.length; i3 < n3; ++i3)
+ t2[i3].value.apply(that, args);
}
};
function get(type2, name) {
- for (var i2 = 0, n2 = type2.length, c; i2 < n2; ++i2) {
- if ((c = type2[i2]).name === name) {
- return c.value;
+ for (var i3 = 0, n3 = type2.length, c2; i3 < n3; ++i3) {
+ if ((c2 = type2[i3]).name === name) {
+ return c2.value;
}
}
}
function set(type2, name, callback) {
- for (var i2 = 0, n2 = type2.length; i2 < n2; ++i2) {
- if (type2[i2].name === name) {
- type2[i2] = noop2, type2 = type2.slice(0, i2).concat(type2.slice(i2 + 1));
+ for (var i3 = 0, n3 = type2.length; i3 < n3; ++i3) {
+ if (type2[i3].name === name) {
+ type2[i3] = noop2, type2 = type2.slice(0, i3).concat(type2.slice(i3 + 1));
break;
}
}
// node_modules/d3-selection/src/namespace.js
function namespace_default(name) {
- var prefix = name += "", i2 = prefix.indexOf(":");
- if (i2 >= 0 && (prefix = name.slice(0, i2)) !== "xmlns")
- name = name.slice(i2 + 1);
+ var prefix = name += "", i3 = prefix.indexOf(":");
+ if (i3 >= 0 && (prefix = name.slice(0, i3)) !== "xmlns")
+ name = name.slice(i3 + 1);
return namespaces_default.hasOwnProperty(prefix) ? { space: namespaces_default[prefix], local: name } : name;
}
function select_default(select) {
if (typeof select !== "function")
select = selector_default(select);
- for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, subgroup = subgroups[j2] = new Array(n2), node, subnode, i2 = 0; i2 < n2; ++i2) {
- if ((node = group[i2]) && (subnode = select.call(node, node.__data__, i2, group))) {
+ for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, subgroup = subgroups[j3] = new Array(n3), node, subnode, i3 = 0; i3 < n3; ++i3) {
+ if ((node = group[i3]) && (subnode = select.call(node, node.__data__, i3, group))) {
if ("__data__" in node)
subnode.__data__ = node.__data__;
- subgroup[i2] = subnode;
+ subgroup[i3] = subnode;
}
}
}
}
// node_modules/d3-selection/src/array.js
- function array(x) {
- return x == null ? [] : Array.isArray(x) ? x : Array.from(x);
+ function array(x2) {
+ return x2 == null ? [] : Array.isArray(x2) ? x2 : Array.from(x2);
}
// node_modules/d3-selection/src/selectorAll.js
select = arrayAll(select);
else
select = selectorAll_default(select);
- for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, node, i2 = 0; i2 < n2; ++i2) {
- if (node = group[i2]) {
- subgroups.push(select.call(node, node.__data__, i2, group));
+ for (var groups = this._groups, m2 = groups.length, subgroups = [], parents = [], j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, node, i3 = 0; i3 < n3; ++i3) {
+ if (node = group[i3]) {
+ subgroups.push(select.call(node, node.__data__, i3, group));
parents.push(node);
}
}
function filter_default(match) {
if (typeof match !== "function")
match = matcher_default(match);
- for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, subgroup = subgroups[j2] = [], node, i2 = 0; i2 < n2; ++i2) {
- if ((node = group[i2]) && match.call(node, node.__data__, i2, group)) {
+ for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, subgroup = subgroups[j3] = [], node, i3 = 0; i3 < n3; ++i3) {
+ if ((node = group[i3]) && match.call(node, node.__data__, i3, group)) {
subgroup.push(node);
}
}
};
// node_modules/d3-selection/src/constant.js
- function constant_default(x) {
+ function constant_default(x2) {
return function() {
- return x;
+ return x2;
};
}
// node_modules/d3-selection/src/selection/data.js
function bindIndex(parent, group, enter, update, exit, data) {
- var i2 = 0, node, groupLength = group.length, dataLength = data.length;
- for (; i2 < dataLength; ++i2) {
- if (node = group[i2]) {
- node.__data__ = data[i2];
- update[i2] = node;
+ var i3 = 0, node, groupLength = group.length, dataLength = data.length;
+ for (; i3 < dataLength; ++i3) {
+ if (node = group[i3]) {
+ node.__data__ = data[i3];
+ update[i3] = node;
} else {
- enter[i2] = new EnterNode(parent, data[i2]);
+ enter[i3] = new EnterNode(parent, data[i3]);
}
}
- for (; i2 < groupLength; ++i2) {
- if (node = group[i2]) {
- exit[i2] = node;
+ for (; i3 < groupLength; ++i3) {
+ if (node = group[i3]) {
+ exit[i3] = node;
}
}
}
function bindKey(parent, group, enter, update, exit, data, key) {
- var i2, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue;
- for (i2 = 0; i2 < groupLength; ++i2) {
- if (node = group[i2]) {
- keyValues[i2] = keyValue = key.call(node, node.__data__, i2, group) + "";
+ var i3, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue;
+ for (i3 = 0; i3 < groupLength; ++i3) {
+ if (node = group[i3]) {
+ keyValues[i3] = keyValue = key.call(node, node.__data__, i3, group) + "";
if (nodeByKeyValue.has(keyValue)) {
- exit[i2] = node;
+ exit[i3] = node;
} else {
nodeByKeyValue.set(keyValue, node);
}
}
}
- for (i2 = 0; i2 < dataLength; ++i2) {
- keyValue = key.call(parent, data[i2], i2, data) + "";
+ for (i3 = 0; i3 < dataLength; ++i3) {
+ keyValue = key.call(parent, data[i3], i3, data) + "";
if (node = nodeByKeyValue.get(keyValue)) {
- update[i2] = node;
- node.__data__ = data[i2];
+ update[i3] = node;
+ node.__data__ = data[i3];
nodeByKeyValue.delete(keyValue);
} else {
- enter[i2] = new EnterNode(parent, data[i2]);
+ enter[i3] = new EnterNode(parent, data[i3]);
}
}
- for (i2 = 0; i2 < groupLength; ++i2) {
- if ((node = group[i2]) && nodeByKeyValue.get(keyValues[i2]) === node) {
- exit[i2] = node;
+ for (i3 = 0; i3 < groupLength; ++i3) {
+ if ((node = group[i3]) && nodeByKeyValue.get(keyValues[i3]) === node) {
+ exit[i3] = node;
}
}
}
var bind = key ? bindKey : bindIndex, parents = this._parents, groups = this._groups;
if (typeof value !== "function")
value = constant_default(value);
- for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j2 = 0; j2 < m; ++j2) {
- var parent = parents[j2], group = groups[j2], groupLength = group.length, data = arraylike(value.call(parent, parent && parent.__data__, j2, parents)), dataLength = data.length, enterGroup = enter[j2] = new Array(dataLength), updateGroup = update[j2] = new Array(dataLength), exitGroup = exit[j2] = new Array(groupLength);
+ for (var m2 = groups.length, update = new Array(m2), enter = new Array(m2), exit = new Array(m2), j3 = 0; j3 < m2; ++j3) {
+ var parent = parents[j3], group = groups[j3], groupLength = group.length, data = arraylike(value.call(parent, parent && parent.__data__, j3, parents)), dataLength = data.length, enterGroup = enter[j3] = new Array(dataLength), updateGroup = update[j3] = new Array(dataLength), exitGroup = exit[j3] = new Array(groupLength);
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
if (previous = enterGroup[i0]) {
// node_modules/d3-selection/src/selection/merge.js
function merge_default(context) {
var selection2 = context.selection ? context.selection() : context;
- for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j2 = 0; j2 < m; ++j2) {
- for (var group0 = groups0[j2], group1 = groups1[j2], n2 = group0.length, merge3 = merges[j2] = new Array(n2), node, i2 = 0; i2 < n2; ++i2) {
- if (node = group0[i2] || group1[i2]) {
- merge3[i2] = node;
+ for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m2 = Math.min(m0, m1), merges = new Array(m0), j3 = 0; j3 < m2; ++j3) {
+ for (var group0 = groups0[j3], group1 = groups1[j3], n3 = group0.length, merge2 = merges[j3] = new Array(n3), node, i3 = 0; i3 < n3; ++i3) {
+ if (node = group0[i3] || group1[i3]) {
+ merge2[i3] = node;
}
}
}
- for (; j2 < m0; ++j2) {
- merges[j2] = groups0[j2];
+ for (; j3 < m0; ++j3) {
+ merges[j3] = groups0[j3];
}
return new Selection(merges, this._parents);
}
// node_modules/d3-selection/src/selection/order.js
function order_default() {
- for (var groups = this._groups, j2 = -1, m = groups.length; ++j2 < m; ) {
- for (var group = groups[j2], i2 = group.length - 1, next = group[i2], node; --i2 >= 0; ) {
- if (node = group[i2]) {
+ for (var groups = this._groups, j3 = -1, m2 = groups.length; ++j3 < m2; ) {
+ for (var group = groups[j3], i3 = group.length - 1, next = group[i3], node; --i3 >= 0; ) {
+ if (node = group[i3]) {
if (next && node.compareDocumentPosition(next) ^ 4)
next.parentNode.insertBefore(node, next);
next = node;
function sort_default(compare) {
if (!compare)
compare = ascending2;
- function compareNode(a, b) {
- return a && b ? compare(a.__data__, b.__data__) : !a - !b;
+ function compareNode(a2, b2) {
+ return a2 && b2 ? compare(a2.__data__, b2.__data__) : !a2 - !b2;
}
- for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, sortgroup = sortgroups[j2] = new Array(n2), node, i2 = 0; i2 < n2; ++i2) {
- if (node = group[i2]) {
- sortgroup[i2] = node;
+ for (var groups = this._groups, m2 = groups.length, sortgroups = new Array(m2), j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, sortgroup = sortgroups[j3] = new Array(n3), node, i3 = 0; i3 < n3; ++i3) {
+ if (node = group[i3]) {
+ sortgroup[i3] = node;
}
}
sortgroup.sort(compareNode);
}
return new Selection(sortgroups, this._parents).order();
}
- function ascending2(a, b) {
- return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+ function ascending2(a2, b2) {
+ return a2 < b2 ? -1 : a2 > b2 ? 1 : a2 >= b2 ? 0 : NaN;
}
// node_modules/d3-selection/src/selection/call.js
// node_modules/d3-selection/src/selection/node.js
function node_default() {
- for (var groups = this._groups, j2 = 0, m = groups.length; j2 < m; ++j2) {
- for (var group = groups[j2], i2 = 0, n2 = group.length; i2 < n2; ++i2) {
- var node = group[i2];
+ for (var groups = this._groups, j3 = 0, m2 = groups.length; j3 < m2; ++j3) {
+ for (var group = groups[j3], i3 = 0, n3 = group.length; i3 < n3; ++i3) {
+ var node = group[i3];
if (node)
return node;
}
// node_modules/d3-selection/src/selection/each.js
function each_default(callback) {
- for (var groups = this._groups, j2 = 0, m = groups.length; j2 < m; ++j2) {
- for (var group = groups[j2], i2 = 0, n2 = group.length, node; i2 < n2; ++i2) {
- if (node = group[i2])
- callback.call(node, node.__data__, i2, group);
+ for (var groups = this._groups, j3 = 0, m2 = groups.length; j3 < m2; ++j3) {
+ for (var group = groups[j3], i3 = 0, n3 = group.length, node; i3 < n3; ++i3) {
+ if (node = group[i3])
+ callback.call(node, node.__data__, i3, group);
}
}
return this;
}
function attrFunction(name, value) {
return function() {
- var v = value.apply(this, arguments);
- if (v == null)
+ var v2 = value.apply(this, arguments);
+ if (v2 == null)
this.removeAttribute(name);
else
- this.setAttribute(name, v);
+ this.setAttribute(name, v2);
};
}
function attrFunctionNS(fullname, value) {
return function() {
- var v = value.apply(this, arguments);
- if (v == null)
+ var v2 = value.apply(this, arguments);
+ if (v2 == null)
this.removeAttributeNS(fullname.space, fullname.local);
else
- this.setAttributeNS(fullname.space, fullname.local, v);
+ this.setAttributeNS(fullname.space, fullname.local, v2);
};
}
function attr_default(name, value) {
}
function styleFunction(name, value, priority) {
return function() {
- var v = value.apply(this, arguments);
- if (v == null)
+ var v2 = value.apply(this, arguments);
+ if (v2 == null)
this.style.removeProperty(name);
else
- this.style.setProperty(name, v, priority);
+ this.style.setProperty(name, v2, priority);
};
}
function style_default(name, value, priority) {
}
function propertyFunction(name, value) {
return function() {
- var v = value.apply(this, arguments);
- if (v == null)
+ var v2 = value.apply(this, arguments);
+ if (v2 == null)
delete this[name];
else
- this[name] = v;
+ this[name] = v2;
};
}
function property_default(name, value) {
}
ClassList.prototype = {
add: function(name) {
- var i2 = this._names.indexOf(name);
- if (i2 < 0) {
+ var i3 = this._names.indexOf(name);
+ if (i3 < 0) {
this._names.push(name);
this._node.setAttribute("class", this._names.join(" "));
}
},
remove: function(name) {
- var i2 = this._names.indexOf(name);
- if (i2 >= 0) {
- this._names.splice(i2, 1);
+ var i3 = this._names.indexOf(name);
+ if (i3 >= 0) {
+ this._names.splice(i3, 1);
this._node.setAttribute("class", this._names.join(" "));
}
},
}
};
function classedAdd(node, names) {
- var list = classList(node), i2 = -1, n2 = names.length;
- while (++i2 < n2)
- list.add(names[i2]);
+ var list = classList(node), i3 = -1, n3 = names.length;
+ while (++i3 < n3)
+ list.add(names[i3]);
}
function classedRemove(node, names) {
- var list = classList(node), i2 = -1, n2 = names.length;
- while (++i2 < n2)
- list.remove(names[i2]);
+ var list = classList(node), i3 = -1, n3 = names.length;
+ while (++i3 < n3)
+ list.remove(names[i3]);
}
function classedTrue(names) {
return function() {
function classed_default(name, value) {
var names = classArray(name + "");
if (arguments.length < 2) {
- var list = classList(this.node()), i2 = -1, n2 = names.length;
- while (++i2 < n2)
- if (!list.contains(names[i2]))
+ var list = classList(this.node()), i3 = -1, n3 = names.length;
+ while (++i3 < n3)
+ if (!list.contains(names[i3]))
return false;
return true;
}
}
function textFunction(value) {
return function() {
- var v = value.apply(this, arguments);
- this.textContent = v == null ? "" : v;
+ var v2 = value.apply(this, arguments);
+ this.textContent = v2 == null ? "" : v2;
};
}
function text_default(value) {
}
function htmlFunction(value) {
return function() {
- var v = value.apply(this, arguments);
- this.innerHTML = v == null ? "" : v;
+ var v2 = value.apply(this, arguments);
+ this.innerHTML = v2 == null ? "" : v2;
};
}
function html_default(value) {
};
}
function parseTypenames2(typenames) {
- return typenames.trim().split(/^|\s+/).map(function(t) {
- var name = "", i2 = t.indexOf(".");
- if (i2 >= 0)
- name = t.slice(i2 + 1), t = t.slice(0, i2);
- return { type: t, name };
+ return typenames.trim().split(/^|\s+/).map(function(t2) {
+ var name = "", i3 = t2.indexOf(".");
+ if (i3 >= 0)
+ name = t2.slice(i3 + 1), t2 = t2.slice(0, i3);
+ return { type: t2, name };
});
}
function onRemove(typename) {
var on = this.__on;
if (!on)
return;
- for (var j2 = 0, i2 = -1, m = on.length, o; j2 < m; ++j2) {
- if (o = on[j2], (!typename.type || o.type === typename.type) && o.name === typename.name) {
- this.removeEventListener(o.type, o.listener, o.options);
+ for (var j3 = 0, i3 = -1, m2 = on.length, o2; j3 < m2; ++j3) {
+ if (o2 = on[j3], (!typename.type || o2.type === typename.type) && o2.name === typename.name) {
+ this.removeEventListener(o2.type, o2.listener, o2.options);
} else {
- on[++i2] = o;
+ on[++i3] = o2;
}
}
- if (++i2)
- on.length = i2;
+ if (++i3)
+ on.length = i3;
else
delete this.__on;
};
}
function onAdd(typename, value, options2) {
return function() {
- var on = this.__on, o, listener = contextListener(value);
+ var on = this.__on, o2, listener = contextListener(value);
if (on)
- for (var j2 = 0, m = on.length; j2 < m; ++j2) {
- if ((o = on[j2]).type === typename.type && o.name === typename.name) {
- this.removeEventListener(o.type, o.listener, o.options);
- this.addEventListener(o.type, o.listener = listener, o.options = options2);
- o.value = value;
+ for (var j3 = 0, m2 = on.length; j3 < m2; ++j3) {
+ if ((o2 = on[j3]).type === typename.type && o2.name === typename.name) {
+ this.removeEventListener(o2.type, o2.listener, o2.options);
+ this.addEventListener(o2.type, o2.listener = listener, o2.options = options2);
+ o2.value = value;
return;
}
}
this.addEventListener(typename.type, listener, options2);
- o = { type: typename.type, name: typename.name, value, listener, options: options2 };
+ o2 = { type: typename.type, name: typename.name, value, listener, options: options2 };
if (!on)
- this.__on = [o];
+ this.__on = [o2];
else
- on.push(o);
+ on.push(o2);
};
}
function on_default(typename, value, options2) {
- var typenames = parseTypenames2(typename + ""), i2, n2 = typenames.length, t;
+ var typenames = parseTypenames2(typename + ""), i3, n3 = typenames.length, t2;
if (arguments.length < 2) {
var on = this.node().__on;
if (on)
- for (var j2 = 0, m = on.length, o; j2 < m; ++j2) {
- for (i2 = 0, o = on[j2]; i2 < n2; ++i2) {
- if ((t = typenames[i2]).type === o.type && t.name === o.name) {
- return o.value;
+ for (var j3 = 0, m2 = on.length, o2; j3 < m2; ++j3) {
+ for (i3 = 0, o2 = on[j3]; i3 < n3; ++i3) {
+ if ((t2 = typenames[i3]).type === o2.type && t2.name === o2.name) {
+ return o2.value;
}
}
}
return;
}
on = value ? onAdd : onRemove;
- for (i2 = 0; i2 < n2; ++i2)
- this.each(on(typenames[i2], value, options2));
+ for (i3 = 0; i3 < n3; ++i3)
+ this.each(on(typenames[i3], value, options2));
return this;
}
// node_modules/d3-selection/src/selection/iterator.js
function* iterator_default() {
- for (var groups = this._groups, j2 = 0, m = groups.length; j2 < m; ++j2) {
- for (var group = groups[j2], i2 = 0, n2 = group.length, node; i2 < n2; ++i2) {
- if (node = group[i2])
+ for (var groups = this._groups, j3 = 0, m2 = groups.length; j3 < m2; ++j3) {
+ for (var group = groups[j3], i3 = 0, n3 = group.length, node; i3 < n3; ++i3) {
+ if (node = group[i3])
yield node;
}
}
}
// node_modules/d3-drag/src/constant.js
- var constant_default2 = (x) => () => x;
+ var constant_default2 = (x2) => () => x2;
// node_modules/d3-drag/src/event.js
function DragEvent(type2, {
target,
identifier,
active,
- x,
- y,
+ x: x2,
+ y: y2,
dx,
dy,
- dispatch: dispatch10
+ dispatch: dispatch14
}) {
Object.defineProperties(this, {
type: { value: type2, enumerable: true, configurable: true },
target: { value: target, enumerable: true, configurable: true },
identifier: { value: identifier, enumerable: true, configurable: true },
active: { value: active, enumerable: true, configurable: true },
- x: { value: x, enumerable: true, configurable: true },
- y: { value: y, enumerable: true, configurable: true },
+ x: { value: x2, enumerable: true, configurable: true },
+ y: { value: y2, enumerable: true, configurable: true },
dx: { value: dx, enumerable: true, configurable: true },
dy: { value: dy, enumerable: true, configurable: true },
- _: { value: dispatch10 }
+ _: { value: dispatch14 }
});
}
DragEvent.prototype.on = function() {
function defaultContainer() {
return this.parentNode;
}
- function defaultSubject(event, d) {
- return d == null ? { x: event.x, y: event.y } : d;
+ function defaultSubject(event, d2) {
+ return d2 == null ? { x: event.x, y: event.y } : d2;
}
function defaultTouchable() {
return navigator.maxTouchPoints || "ontouchstart" in this;
function drag(selection2) {
selection2.on("mousedown.drag", mousedowned).filter(touchable).on("touchstart.drag", touchstarted).on("touchmove.drag", touchmoved, nonpassive).on("touchend.drag touchcancel.drag", touchended).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
}
- function mousedowned(event, d) {
- if (touchending || !filter2.call(this, event, d))
+ function mousedowned(event, d2) {
+ if (touchending || !filter2.call(this, event, d2))
return;
- var gesture = beforestart(this, container.call(this, event, d), event, d, "mouse");
+ var gesture = beforestart(this, container.call(this, event, d2), event, d2, "mouse");
if (!gesture)
return;
select_default2(event.view).on("mousemove.drag", mousemoved, nonpassivecapture).on("mouseup.drag", mouseupped, nonpassivecapture);
noevent_default(event);
gestures.mouse("end", event);
}
- function touchstarted(event, d) {
- if (!filter2.call(this, event, d))
+ function touchstarted(event, d2) {
+ if (!filter2.call(this, event, d2))
return;
- var touches = event.changedTouches, c = container.call(this, event, d), n2 = touches.length, i2, gesture;
- for (i2 = 0; i2 < n2; ++i2) {
- if (gesture = beforestart(this, c, event, d, touches[i2].identifier, touches[i2])) {
+ var touches = event.changedTouches, c2 = container.call(this, event, d2), n3 = touches.length, i3, gesture;
+ for (i3 = 0; i3 < n3; ++i3) {
+ if (gesture = beforestart(this, c2, event, d2, touches[i3].identifier, touches[i3])) {
nopropagation(event);
- gesture("start", event, touches[i2]);
+ gesture("start", event, touches[i3]);
}
}
}
function touchmoved(event) {
- var touches = event.changedTouches, n2 = touches.length, i2, gesture;
- for (i2 = 0; i2 < n2; ++i2) {
- if (gesture = gestures[touches[i2].identifier]) {
+ var touches = event.changedTouches, n3 = touches.length, i3, gesture;
+ for (i3 = 0; i3 < n3; ++i3) {
+ if (gesture = gestures[touches[i3].identifier]) {
noevent_default(event);
- gesture("drag", event, touches[i2]);
+ gesture("drag", event, touches[i3]);
}
}
}
function touchended(event) {
- var touches = event.changedTouches, n2 = touches.length, i2, gesture;
+ var touches = event.changedTouches, n3 = touches.length, i3, gesture;
if (touchending)
clearTimeout(touchending);
touchending = setTimeout(function() {
touchending = null;
}, 500);
- for (i2 = 0; i2 < n2; ++i2) {
- if (gesture = gestures[touches[i2].identifier]) {
+ for (i3 = 0; i3 < n3; ++i3) {
+ if (gesture = gestures[touches[i3].identifier]) {
nopropagation(event);
- gesture("end", event, touches[i2]);
+ gesture("end", event, touches[i3]);
}
}
}
- function beforestart(that, container2, event, d, identifier, touch) {
- var dispatch10 = listeners.copy(), p = pointer_default(touch || event, container2), dx, dy, s;
- if ((s = subject.call(that, new DragEvent("beforestart", {
+ function beforestart(that, container2, event, d2, identifier, touch) {
+ var dispatch14 = listeners.copy(), p2 = pointer_default(touch || event, container2), dx, dy, s2;
+ if ((s2 = subject.call(that, new DragEvent("beforestart", {
sourceEvent: event,
target: drag,
identifier,
active,
- x: p[0],
- y: p[1],
+ x: p2[0],
+ y: p2[1],
dx: 0,
dy: 0,
- dispatch: dispatch10
- }), d)) == null)
+ dispatch: dispatch14
+ }), d2)) == null)
return;
- dx = s.x - p[0] || 0;
- dy = s.y - p[1] || 0;
+ dx = s2.x - p2[0] || 0;
+ dy = s2.y - p2[1] || 0;
return function gesture(type2, event2, touch2) {
- var p02 = p, n2;
+ var p02 = p2, n3;
switch (type2) {
case "start":
- gestures[identifier] = gesture, n2 = active++;
+ gestures[identifier] = gesture, n3 = active++;
break;
case "end":
delete gestures[identifier], --active;
case "drag":
- p = pointer_default(touch2 || event2, container2), n2 = active;
+ p2 = pointer_default(touch2 || event2, container2), n3 = active;
break;
}
- dispatch10.call(
+ dispatch14.call(
type2,
that,
new DragEvent(type2, {
sourceEvent: event2,
- subject: s,
+ subject: s2,
target: drag,
identifier,
- active: n2,
- x: p[0] + dx,
- y: p[1] + dy,
- dx: p[0] - p02[0],
- dy: p[1] - p02[1],
- dispatch: dispatch10
+ active: n3,
+ x: p2[0] + dx,
+ y: p2[1] + dy,
+ dx: p2[0] - p02[0],
+ dy: p2[1] - p02[1],
+ dispatch: dispatch14
}),
- d
+ d2
);
};
}
- drag.filter = function(_) {
- return arguments.length ? (filter2 = typeof _ === "function" ? _ : constant_default2(!!_), drag) : filter2;
+ drag.filter = function(_2) {
+ return arguments.length ? (filter2 = typeof _2 === "function" ? _2 : constant_default2(!!_2), drag) : filter2;
};
- drag.container = function(_) {
- return arguments.length ? (container = typeof _ === "function" ? _ : constant_default2(_), drag) : container;
+ drag.container = function(_2) {
+ return arguments.length ? (container = typeof _2 === "function" ? _2 : constant_default2(_2), drag) : container;
};
- drag.subject = function(_) {
- return arguments.length ? (subject = typeof _ === "function" ? _ : constant_default2(_), drag) : subject;
+ drag.subject = function(_2) {
+ return arguments.length ? (subject = typeof _2 === "function" ? _2 : constant_default2(_2), drag) : subject;
};
- drag.touchable = function(_) {
- return arguments.length ? (touchable = typeof _ === "function" ? _ : constant_default2(!!_), drag) : touchable;
+ drag.touchable = function(_2) {
+ return arguments.length ? (touchable = typeof _2 === "function" ? _2 : constant_default2(!!_2), drag) : touchable;
};
drag.on = function() {
var value = listeners.on.apply(listeners, arguments);
return value === listeners ? drag : value;
};
- drag.clickDistance = function(_) {
- return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);
+ drag.clickDistance = function(_2) {
+ return arguments.length ? (clickDistance2 = (_2 = +_2) * _2, drag) : Math.sqrt(clickDistance2);
};
return drag;
}
return this.rgb().formatRgb();
}
function color(format2) {
- var m, l;
+ var m2, l2;
format2 = (format2 + "").trim().toLowerCase();
- return (m = reHex.exec(format2)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) : l === 3 ? new Rgb(m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, (m & 15) << 4 | m & 15, 1) : l === 8 ? rgba(m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, (m & 255) / 255) : l === 4 ? rgba(m >> 12 & 15 | m >> 8 & 240, m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, ((m & 15) << 4 | m & 15) / 255) : null) : (m = reRgbInteger.exec(format2)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format2)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format2)) ? rgba(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format2)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format2)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format2)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format2) ? rgbn(named[format2]) : format2 === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null;
+ return (m2 = reHex.exec(format2)) ? (l2 = m2[1].length, m2 = parseInt(m2[1], 16), l2 === 6 ? rgbn(m2) : l2 === 3 ? new Rgb(m2 >> 8 & 15 | m2 >> 4 & 240, m2 >> 4 & 15 | m2 & 240, (m2 & 15) << 4 | m2 & 15, 1) : l2 === 8 ? rgba(m2 >> 24 & 255, m2 >> 16 & 255, m2 >> 8 & 255, (m2 & 255) / 255) : l2 === 4 ? rgba(m2 >> 12 & 15 | m2 >> 8 & 240, m2 >> 8 & 15 | m2 >> 4 & 240, m2 >> 4 & 15 | m2 & 240, ((m2 & 15) << 4 | m2 & 15) / 255) : null) : (m2 = reRgbInteger.exec(format2)) ? new Rgb(m2[1], m2[2], m2[3], 1) : (m2 = reRgbPercent.exec(format2)) ? new Rgb(m2[1] * 255 / 100, m2[2] * 255 / 100, m2[3] * 255 / 100, 1) : (m2 = reRgbaInteger.exec(format2)) ? rgba(m2[1], m2[2], m2[3], m2[4]) : (m2 = reRgbaPercent.exec(format2)) ? rgba(m2[1] * 255 / 100, m2[2] * 255 / 100, m2[3] * 255 / 100, m2[4]) : (m2 = reHslPercent.exec(format2)) ? hsla(m2[1], m2[2] / 100, m2[3] / 100, 1) : (m2 = reHslaPercent.exec(format2)) ? hsla(m2[1], m2[2] / 100, m2[3] / 100, m2[4]) : named.hasOwnProperty(format2) ? rgbn(named[format2]) : format2 === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null;
}
- function rgbn(n2) {
- return new Rgb(n2 >> 16 & 255, n2 >> 8 & 255, n2 & 255, 1);
+ function rgbn(n3) {
+ return new Rgb(n3 >> 16 & 255, n3 >> 8 & 255, n3 & 255, 1);
}
- function rgba(r, g, b, a) {
- if (a <= 0)
- r = g = b = NaN;
- return new Rgb(r, g, b, a);
+ function rgba(r2, g3, b2, a2) {
+ if (a2 <= 0)
+ r2 = g3 = b2 = NaN;
+ return new Rgb(r2, g3, b2, a2);
}
- function rgbConvert(o) {
- if (!(o instanceof Color))
- o = color(o);
- if (!o)
+ function rgbConvert(o2) {
+ if (!(o2 instanceof Color))
+ o2 = color(o2);
+ if (!o2)
return new Rgb();
- o = o.rgb();
- return new Rgb(o.r, o.g, o.b, o.opacity);
+ o2 = o2.rgb();
+ return new Rgb(o2.r, o2.g, o2.b, o2.opacity);
}
- function rgb(r, g, b, opacity) {
- return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);
+ function rgb(r2, g3, b2, opacity) {
+ return arguments.length === 1 ? rgbConvert(r2) : new Rgb(r2, g3, b2, opacity == null ? 1 : opacity);
}
- function Rgb(r, g, b, opacity) {
- this.r = +r;
- this.g = +g;
- this.b = +b;
+ function Rgb(r2, g3, b2, opacity) {
+ this.r = +r2;
+ this.g = +g3;
+ this.b = +b2;
this.opacity = +opacity;
}
define_default(Rgb, rgb, extend(Color, {
- brighter(k) {
- k = k == null ? brighter : Math.pow(brighter, k);
- return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
+ brighter(k2) {
+ k2 = k2 == null ? brighter : Math.pow(brighter, k2);
+ return new Rgb(this.r * k2, this.g * k2, this.b * k2, this.opacity);
},
- darker(k) {
- k = k == null ? darker : Math.pow(darker, k);
- return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
+ darker(k2) {
+ k2 = k2 == null ? darker : Math.pow(darker, k2);
+ return new Rgb(this.r * k2, this.g * k2, this.b * k2, this.opacity);
},
rgb() {
return this;
return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;
}
function rgb_formatRgb() {
- const a = clampa(this.opacity);
- return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`;
+ const a2 = clampa(this.opacity);
+ return `${a2 === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a2 === 1 ? ")" : `, ${a2})`}`;
}
function clampa(opacity) {
return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));
value = clampi(value);
return (value < 16 ? "0" : "") + value.toString(16);
}
- function hsla(h, s, l, a) {
- if (a <= 0)
- h = s = l = NaN;
- else if (l <= 0 || l >= 1)
- h = s = NaN;
- else if (s <= 0)
- h = NaN;
- return new Hsl(h, s, l, a);
- }
- function hslConvert(o) {
- if (o instanceof Hsl)
- return new Hsl(o.h, o.s, o.l, o.opacity);
- if (!(o instanceof Color))
- o = color(o);
- if (!o)
+ function hsla(h2, s2, l2, a2) {
+ if (a2 <= 0)
+ h2 = s2 = l2 = NaN;
+ else if (l2 <= 0 || l2 >= 1)
+ h2 = s2 = NaN;
+ else if (s2 <= 0)
+ h2 = NaN;
+ return new Hsl(h2, s2, l2, a2);
+ }
+ function hslConvert(o2) {
+ if (o2 instanceof Hsl)
+ return new Hsl(o2.h, o2.s, o2.l, o2.opacity);
+ if (!(o2 instanceof Color))
+ o2 = color(o2);
+ if (!o2)
return new Hsl();
- if (o instanceof Hsl)
- return o;
- o = o.rgb();
- var r = o.r / 255, g = o.g / 255, b = o.b / 255, min3 = Math.min(r, g, b), max3 = Math.max(r, g, b), h = NaN, s = max3 - min3, l = (max3 + min3) / 2;
- if (s) {
- if (r === max3)
- h = (g - b) / s + (g < b) * 6;
- else if (g === max3)
- h = (b - r) / s + 2;
+ if (o2 instanceof Hsl)
+ return o2;
+ o2 = o2.rgb();
+ var r2 = o2.r / 255, g3 = o2.g / 255, b2 = o2.b / 255, min3 = Math.min(r2, g3, b2), max3 = Math.max(r2, g3, b2), h2 = NaN, s2 = max3 - min3, l2 = (max3 + min3) / 2;
+ if (s2) {
+ if (r2 === max3)
+ h2 = (g3 - b2) / s2 + (g3 < b2) * 6;
+ else if (g3 === max3)
+ h2 = (b2 - r2) / s2 + 2;
else
- h = (r - g) / s + 4;
- s /= l < 0.5 ? max3 + min3 : 2 - max3 - min3;
- h *= 60;
+ h2 = (r2 - g3) / s2 + 4;
+ s2 /= l2 < 0.5 ? max3 + min3 : 2 - max3 - min3;
+ h2 *= 60;
} else {
- s = l > 0 && l < 1 ? 0 : h;
+ s2 = l2 > 0 && l2 < 1 ? 0 : h2;
}
- return new Hsl(h, s, l, o.opacity);
+ return new Hsl(h2, s2, l2, o2.opacity);
}
- function hsl(h, s, l, opacity) {
- return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);
+ function hsl(h2, s2, l2, opacity) {
+ return arguments.length === 1 ? hslConvert(h2) : new Hsl(h2, s2, l2, opacity == null ? 1 : opacity);
}
- function Hsl(h, s, l, opacity) {
- this.h = +h;
- this.s = +s;
- this.l = +l;
+ function Hsl(h2, s2, l2, opacity) {
+ this.h = +h2;
+ this.s = +s2;
+ this.l = +l2;
this.opacity = +opacity;
}
define_default(Hsl, hsl, extend(Color, {
- brighter(k) {
- k = k == null ? brighter : Math.pow(brighter, k);
- return new Hsl(this.h, this.s, this.l * k, this.opacity);
+ brighter(k2) {
+ k2 = k2 == null ? brighter : Math.pow(brighter, k2);
+ return new Hsl(this.h, this.s, this.l * k2, this.opacity);
},
- darker(k) {
- k = k == null ? darker : Math.pow(darker, k);
- return new Hsl(this.h, this.s, this.l * k, this.opacity);
+ darker(k2) {
+ k2 = k2 == null ? darker : Math.pow(darker, k2);
+ return new Hsl(this.h, this.s, this.l * k2, this.opacity);
},
rgb() {
- var h = this.h % 360 + (this.h < 0) * 360, s = isNaN(h) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2;
+ var h2 = this.h % 360 + (this.h < 0) * 360, s2 = isNaN(h2) || isNaN(this.s) ? 0 : this.s, l2 = this.l, m2 = l2 + (l2 < 0.5 ? l2 : 1 - l2) * s2, m1 = 2 * l2 - m2;
return new Rgb(
- hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),
- hsl2rgb(h, m1, m2),
- hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),
+ hsl2rgb(h2 >= 240 ? h2 - 240 : h2 + 120, m1, m2),
+ hsl2rgb(h2, m1, m2),
+ hsl2rgb(h2 < 120 ? h2 + 240 : h2 - 120, m1, m2),
this.opacity
);
},
return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1);
},
formatHsl() {
- const a = clampa(this.opacity);
- return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`;
+ const a2 = clampa(this.opacity);
+ return `${a2 === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a2 === 1 ? ")" : `, ${a2})`}`;
}
}));
function clamph(value) {
function clampt(value) {
return Math.max(0, Math.min(1, value || 0));
}
- function hsl2rgb(h, m1, m2) {
- return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255;
+ function hsl2rgb(h2, m1, m2) {
+ return (h2 < 60 ? m1 + (m2 - m1) * h2 / 60 : h2 < 180 ? m2 : h2 < 240 ? m1 + (m2 - m1) * (240 - h2) / 60 : m1) * 255;
}
// node_modules/d3-interpolate/src/basis.js
return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6;
}
function basis_default(values) {
- var n2 = values.length - 1;
- return function(t) {
- var i2 = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n2 - 1) : Math.floor(t * n2), v1 = values[i2], v2 = values[i2 + 1], v0 = i2 > 0 ? values[i2 - 1] : 2 * v1 - v2, v3 = i2 < n2 - 1 ? values[i2 + 2] : 2 * v2 - v1;
- return basis((t - i2 / n2) * n2, v0, v1, v2, v3);
+ var n3 = values.length - 1;
+ return function(t2) {
+ var i3 = t2 <= 0 ? t2 = 0 : t2 >= 1 ? (t2 = 1, n3 - 1) : Math.floor(t2 * n3), v1 = values[i3], v2 = values[i3 + 1], v0 = i3 > 0 ? values[i3 - 1] : 2 * v1 - v2, v3 = i3 < n3 - 1 ? values[i3 + 2] : 2 * v2 - v1;
+ return basis((t2 - i3 / n3) * n3, v0, v1, v2, v3);
};
}
// node_modules/d3-interpolate/src/basisClosed.js
function basisClosed_default(values) {
- var n2 = values.length;
- return function(t) {
- var i2 = Math.floor(((t %= 1) < 0 ? ++t : t) * n2), v0 = values[(i2 + n2 - 1) % n2], v1 = values[i2 % n2], v2 = values[(i2 + 1) % n2], v3 = values[(i2 + 2) % n2];
- return basis((t - i2 / n2) * n2, v0, v1, v2, v3);
+ var n3 = values.length;
+ return function(t2) {
+ var i3 = Math.floor(((t2 %= 1) < 0 ? ++t2 : t2) * n3), v0 = values[(i3 + n3 - 1) % n3], v1 = values[i3 % n3], v2 = values[(i3 + 1) % n3], v3 = values[(i3 + 2) % n3];
+ return basis((t2 - i3 / n3) * n3, v0, v1, v2, v3);
};
}
// node_modules/d3-interpolate/src/constant.js
- var constant_default3 = (x) => () => x;
+ var constant_default3 = (x2) => () => x2;
// node_modules/d3-interpolate/src/color.js
- function linear(a, d) {
- return function(t) {
- return a + t * d;
+ function linear(a2, d2) {
+ return function(t2) {
+ return a2 + t2 * d2;
};
}
- function exponential(a, b, y) {
- return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {
- return Math.pow(a + t * b, y);
+ function exponential(a2, b2, y2) {
+ return a2 = Math.pow(a2, y2), b2 = Math.pow(b2, y2) - a2, y2 = 1 / y2, function(t2) {
+ return Math.pow(a2 + t2 * b2, y2);
};
}
- function gamma(y) {
- return (y = +y) === 1 ? nogamma : function(a, b) {
- return b - a ? exponential(a, b, y) : constant_default3(isNaN(a) ? b : a);
+ function gamma(y2) {
+ return (y2 = +y2) === 1 ? nogamma : function(a2, b2) {
+ return b2 - a2 ? exponential(a2, b2, y2) : constant_default3(isNaN(a2) ? b2 : a2);
};
}
- function nogamma(a, b) {
- var d = b - a;
- return d ? linear(a, d) : constant_default3(isNaN(a) ? b : a);
+ function nogamma(a2, b2) {
+ var d2 = b2 - a2;
+ return d2 ? linear(a2, d2) : constant_default3(isNaN(a2) ? b2 : a2);
}
// node_modules/d3-interpolate/src/rgb.js
- var rgb_default = function rgbGamma(y) {
- var color2 = gamma(y);
+ var rgb_default = function rgbGamma(y2) {
+ var color2 = gamma(y2);
function rgb2(start2, end) {
- var r = color2((start2 = rgb(start2)).r, (end = rgb(end)).r), g = color2(start2.g, end.g), b = color2(start2.b, end.b), opacity = nogamma(start2.opacity, end.opacity);
- return function(t) {
- start2.r = r(t);
- start2.g = g(t);
- start2.b = b(t);
- start2.opacity = opacity(t);
+ var r2 = color2((start2 = rgb(start2)).r, (end = rgb(end)).r), g3 = color2(start2.g, end.g), b2 = color2(start2.b, end.b), opacity = nogamma(start2.opacity, end.opacity);
+ return function(t2) {
+ start2.r = r2(t2);
+ start2.g = g3(t2);
+ start2.b = b2(t2);
+ start2.opacity = opacity(t2);
return start2 + "";
};
}
}(1);
function rgbSpline(spline) {
return function(colors) {
- var n2 = colors.length, r = new Array(n2), g = new Array(n2), b = new Array(n2), i2, color2;
- for (i2 = 0; i2 < n2; ++i2) {
- color2 = rgb(colors[i2]);
- r[i2] = color2.r || 0;
- g[i2] = color2.g || 0;
- b[i2] = color2.b || 0;
- }
- r = spline(r);
- g = spline(g);
- b = spline(b);
+ var n3 = colors.length, r2 = new Array(n3), g3 = new Array(n3), b2 = new Array(n3), i3, color2;
+ for (i3 = 0; i3 < n3; ++i3) {
+ color2 = rgb(colors[i3]);
+ r2[i3] = color2.r || 0;
+ g3[i3] = color2.g || 0;
+ b2[i3] = color2.b || 0;
+ }
+ r2 = spline(r2);
+ g3 = spline(g3);
+ b2 = spline(b2);
color2.opacity = 1;
- return function(t) {
- color2.r = r(t);
- color2.g = g(t);
- color2.b = b(t);
+ return function(t2) {
+ color2.r = r2(t2);
+ color2.g = g3(t2);
+ color2.b = b2(t2);
return color2 + "";
};
};
var rgbBasisClosed = rgbSpline(basisClosed_default);
// node_modules/d3-interpolate/src/numberArray.js
- function numberArray_default(a, b) {
- if (!b)
- b = [];
- var n2 = a ? Math.min(b.length, a.length) : 0, c = b.slice(), i2;
- return function(t) {
- for (i2 = 0; i2 < n2; ++i2)
- c[i2] = a[i2] * (1 - t) + b[i2] * t;
- return c;
+ function numberArray_default(a2, b2) {
+ if (!b2)
+ b2 = [];
+ var n3 = a2 ? Math.min(b2.length, a2.length) : 0, c2 = b2.slice(), i3;
+ return function(t2) {
+ for (i3 = 0; i3 < n3; ++i3)
+ c2[i3] = a2[i3] * (1 - t2) + b2[i3] * t2;
+ return c2;
};
}
- function isNumberArray(x) {
- return ArrayBuffer.isView(x) && !(x instanceof DataView);
+ function isNumberArray(x2) {
+ return ArrayBuffer.isView(x2) && !(x2 instanceof DataView);
}
// node_modules/d3-interpolate/src/array.js
- function genericArray(a, b) {
- var nb = b ? b.length : 0, na = a ? Math.min(nb, a.length) : 0, x = new Array(na), c = new Array(nb), i2;
- for (i2 = 0; i2 < na; ++i2)
- x[i2] = value_default(a[i2], b[i2]);
- for (; i2 < nb; ++i2)
- c[i2] = b[i2];
- return function(t) {
- for (i2 = 0; i2 < na; ++i2)
- c[i2] = x[i2](t);
- return c;
+ function genericArray(a2, b2) {
+ var nb = b2 ? b2.length : 0, na = a2 ? Math.min(nb, a2.length) : 0, x2 = new Array(na), c2 = new Array(nb), i3;
+ for (i3 = 0; i3 < na; ++i3)
+ x2[i3] = value_default(a2[i3], b2[i3]);
+ for (; i3 < nb; ++i3)
+ c2[i3] = b2[i3];
+ return function(t2) {
+ for (i3 = 0; i3 < na; ++i3)
+ c2[i3] = x2[i3](t2);
+ return c2;
};
}
// node_modules/d3-interpolate/src/date.js
- function date_default(a, b) {
- var d = /* @__PURE__ */ new Date();
- return a = +a, b = +b, function(t) {
- return d.setTime(a * (1 - t) + b * t), d;
+ function date_default(a2, b2) {
+ var d2 = /* @__PURE__ */ new Date();
+ return a2 = +a2, b2 = +b2, function(t2) {
+ return d2.setTime(a2 * (1 - t2) + b2 * t2), d2;
};
}
// node_modules/d3-interpolate/src/number.js
- function number_default(a, b) {
- return a = +a, b = +b, function(t) {
- return a * (1 - t) + b * t;
+ function number_default(a2, b2) {
+ return a2 = +a2, b2 = +b2, function(t2) {
+ return a2 * (1 - t2) + b2 * t2;
};
}
// node_modules/d3-interpolate/src/object.js
- function object_default(a, b) {
- var i2 = {}, c = {}, k;
- if (a === null || typeof a !== "object")
- a = {};
- if (b === null || typeof b !== "object")
- b = {};
- for (k in b) {
- if (k in a) {
- i2[k] = value_default(a[k], b[k]);
+ function object_default(a2, b2) {
+ var i3 = {}, c2 = {}, k2;
+ if (a2 === null || typeof a2 !== "object")
+ a2 = {};
+ if (b2 === null || typeof b2 !== "object")
+ b2 = {};
+ for (k2 in b2) {
+ if (k2 in a2) {
+ i3[k2] = value_default(a2[k2], b2[k2]);
} else {
- c[k] = b[k];
+ c2[k2] = b2[k2];
}
}
- return function(t) {
- for (k in i2)
- c[k] = i2[k](t);
- return c;
+ return function(t2) {
+ for (k2 in i3)
+ c2[k2] = i3[k2](t2);
+ return c2;
};
}
// node_modules/d3-interpolate/src/string.js
var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
var reB = new RegExp(reA.source, "g");
- function zero2(b) {
+ function zero2(b2) {
return function() {
- return b;
+ return b2;
};
}
- function one(b) {
- return function(t) {
- return b(t) + "";
+ function one(b2) {
+ return function(t2) {
+ return b2(t2) + "";
};
}
- function string_default(a, b) {
- var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i2 = -1, s = [], q = [];
- a = a + "", b = b + "";
- while ((am = reA.exec(a)) && (bm = reB.exec(b))) {
+ function string_default(a2, b2) {
+ var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i3 = -1, s2 = [], q2 = [];
+ a2 = a2 + "", b2 = b2 + "";
+ while ((am = reA.exec(a2)) && (bm = reB.exec(b2))) {
if ((bs = bm.index) > bi) {
- bs = b.slice(bi, bs);
- if (s[i2])
- s[i2] += bs;
+ bs = b2.slice(bi, bs);
+ if (s2[i3])
+ s2[i3] += bs;
else
- s[++i2] = bs;
+ s2[++i3] = bs;
}
if ((am = am[0]) === (bm = bm[0])) {
- if (s[i2])
- s[i2] += bm;
+ if (s2[i3])
+ s2[i3] += bm;
else
- s[++i2] = bm;
+ s2[++i3] = bm;
} else {
- s[++i2] = null;
- q.push({ i: i2, x: number_default(am, bm) });
+ s2[++i3] = null;
+ q2.push({ i: i3, x: number_default(am, bm) });
}
bi = reB.lastIndex;
}
- if (bi < b.length) {
- bs = b.slice(bi);
- if (s[i2])
- s[i2] += bs;
+ if (bi < b2.length) {
+ bs = b2.slice(bi);
+ if (s2[i3])
+ s2[i3] += bs;
else
- s[++i2] = bs;
+ s2[++i3] = bs;
}
- return s.length < 2 ? q[0] ? one(q[0].x) : zero2(b) : (b = q.length, function(t) {
- for (var i3 = 0, o; i3 < b; ++i3)
- s[(o = q[i3]).i] = o.x(t);
- return s.join("");
+ return s2.length < 2 ? q2[0] ? one(q2[0].x) : zero2(b2) : (b2 = q2.length, function(t2) {
+ for (var i4 = 0, o2; i4 < b2; ++i4)
+ s2[(o2 = q2[i4]).i] = o2.x(t2);
+ return s2.join("");
});
}
// node_modules/d3-interpolate/src/value.js
- function value_default(a, b) {
- var t = typeof b, c;
- return b == null || t === "boolean" ? constant_default3(b) : (t === "number" ? number_default : t === "string" ? (c = color(b)) ? (b = c, rgb_default) : string_default : b instanceof color ? rgb_default : b instanceof Date ? date_default : isNumberArray(b) ? numberArray_default : Array.isArray(b) ? genericArray : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object_default : number_default)(a, b);
+ function value_default(a2, b2) {
+ var t2 = typeof b2, c2;
+ return b2 == null || t2 === "boolean" ? constant_default3(b2) : (t2 === "number" ? number_default : t2 === "string" ? (c2 = color(b2)) ? (b2 = c2, rgb_default) : string_default : b2 instanceof color ? rgb_default : b2 instanceof Date ? date_default : isNumberArray(b2) ? numberArray_default : Array.isArray(b2) ? genericArray : typeof b2.valueOf !== "function" && typeof b2.toString !== "function" || isNaN(b2) ? object_default : number_default)(a2, b2);
}
// node_modules/d3-interpolate/src/round.js
- function round_default(a, b) {
- return a = +a, b = +b, function(t) {
- return Math.round(a * (1 - t) + b * t);
+ function round_default(a2, b2) {
+ return a2 = +a2, b2 = +b2, function(t2) {
+ return Math.round(a2 * (1 - t2) + b2 * t2);
};
}
scaleX: 1,
scaleY: 1
};
- function decompose_default(a, b, c, d, e, f2) {
+ function decompose_default(a2, b2, c2, d2, e3, f3) {
var scaleX, scaleY, skewX;
- if (scaleX = Math.sqrt(a * a + b * b))
- a /= scaleX, b /= scaleX;
- if (skewX = a * c + b * d)
- c -= a * skewX, d -= b * skewX;
- if (scaleY = Math.sqrt(c * c + d * d))
- c /= scaleY, d /= scaleY, skewX /= scaleY;
- if (a * d < b * c)
- a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;
+ if (scaleX = Math.sqrt(a2 * a2 + b2 * b2))
+ a2 /= scaleX, b2 /= scaleX;
+ if (skewX = a2 * c2 + b2 * d2)
+ c2 -= a2 * skewX, d2 -= b2 * skewX;
+ if (scaleY = Math.sqrt(c2 * c2 + d2 * d2))
+ c2 /= scaleY, d2 /= scaleY, skewX /= scaleY;
+ if (a2 * d2 < b2 * c2)
+ a2 = -a2, b2 = -b2, skewX = -skewX, scaleX = -scaleX;
return {
- translateX: e,
- translateY: f2,
- rotate: Math.atan2(b, a) * degrees2,
+ translateX: e3,
+ translateY: f3,
+ rotate: Math.atan2(b2, a2) * degrees2,
skewX: Math.atan(skewX) * degrees2,
scaleX,
scaleY
// node_modules/d3-interpolate/src/transform/parse.js
var svgNode;
function parseCss(value) {
- const m = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + "");
- return m.isIdentity ? identity : decompose_default(m.a, m.b, m.c, m.d, m.e, m.f);
+ const m2 = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + "");
+ return m2.isIdentity ? identity : decompose_default(m2.a, m2.b, m2.c, m2.d, m2.e, m2.f);
}
function parseSvg(value) {
if (value == null)
// node_modules/d3-interpolate/src/transform/index.js
function interpolateTransform(parse, pxComma, pxParen, degParen) {
- function pop(s) {
- return s.length ? s.pop() + " " : "";
+ function pop(s2) {
+ return s2.length ? s2.pop() + " " : "";
}
- function translate(xa, ya, xb, yb, s, q) {
+ function translate(xa, ya, xb, yb, s2, q2) {
if (xa !== xb || ya !== yb) {
- var i2 = s.push("translate(", null, pxComma, null, pxParen);
- q.push({ i: i2 - 4, x: number_default(xa, xb) }, { i: i2 - 2, x: number_default(ya, yb) });
+ var i3 = s2.push("translate(", null, pxComma, null, pxParen);
+ q2.push({ i: i3 - 4, x: number_default(xa, xb) }, { i: i3 - 2, x: number_default(ya, yb) });
} else if (xb || yb) {
- s.push("translate(" + xb + pxComma + yb + pxParen);
+ s2.push("translate(" + xb + pxComma + yb + pxParen);
}
}
- function rotate(a, b, s, q) {
- if (a !== b) {
- if (a - b > 180)
- b += 360;
- else if (b - a > 180)
- a += 360;
- q.push({ i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: number_default(a, b) });
- } else if (b) {
- s.push(pop(s) + "rotate(" + b + degParen);
+ function rotate(a2, b2, s2, q2) {
+ if (a2 !== b2) {
+ if (a2 - b2 > 180)
+ b2 += 360;
+ else if (b2 - a2 > 180)
+ a2 += 360;
+ q2.push({ i: s2.push(pop(s2) + "rotate(", null, degParen) - 2, x: number_default(a2, b2) });
+ } else if (b2) {
+ s2.push(pop(s2) + "rotate(" + b2 + degParen);
}
}
- function skewX(a, b, s, q) {
- if (a !== b) {
- q.push({ i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: number_default(a, b) });
- } else if (b) {
- s.push(pop(s) + "skewX(" + b + degParen);
+ function skewX(a2, b2, s2, q2) {
+ if (a2 !== b2) {
+ q2.push({ i: s2.push(pop(s2) + "skewX(", null, degParen) - 2, x: number_default(a2, b2) });
+ } else if (b2) {
+ s2.push(pop(s2) + "skewX(" + b2 + degParen);
}
}
- function scale(xa, ya, xb, yb, s, q) {
+ function scale(xa, ya, xb, yb, s2, q2) {
if (xa !== xb || ya !== yb) {
- var i2 = s.push(pop(s) + "scale(", null, ",", null, ")");
- q.push({ i: i2 - 4, x: number_default(xa, xb) }, { i: i2 - 2, x: number_default(ya, yb) });
+ var i3 = s2.push(pop(s2) + "scale(", null, ",", null, ")");
+ q2.push({ i: i3 - 4, x: number_default(xa, xb) }, { i: i3 - 2, x: number_default(ya, yb) });
} else if (xb !== 1 || yb !== 1) {
- s.push(pop(s) + "scale(" + xb + "," + yb + ")");
- }
- }
- return function(a, b) {
- var s = [], q = [];
- a = parse(a), b = parse(b);
- translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);
- rotate(a.rotate, b.rotate, s, q);
- skewX(a.skewX, b.skewX, s, q);
- scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);
- a = b = null;
- return function(t) {
- var i2 = -1, n2 = q.length, o;
- while (++i2 < n2)
- s[(o = q[i2]).i] = o.x(t);
- return s.join("");
+ s2.push(pop(s2) + "scale(" + xb + "," + yb + ")");
+ }
+ }
+ return function(a2, b2) {
+ var s2 = [], q2 = [];
+ a2 = parse(a2), b2 = parse(b2);
+ translate(a2.translateX, a2.translateY, b2.translateX, b2.translateY, s2, q2);
+ rotate(a2.rotate, b2.rotate, s2, q2);
+ skewX(a2.skewX, b2.skewX, s2, q2);
+ scale(a2.scaleX, a2.scaleY, b2.scaleX, b2.scaleY, s2, q2);
+ a2 = b2 = null;
+ return function(t2) {
+ var i3 = -1, n3 = q2.length, o2;
+ while (++i3 < n3)
+ s2[(o2 = q2[i3]).i] = o2.x(t2);
+ return s2.join("");
};
};
}
// node_modules/d3-interpolate/src/zoom.js
var epsilon22 = 1e-12;
- function cosh(x) {
- return ((x = Math.exp(x)) + 1 / x) / 2;
+ function cosh(x2) {
+ return ((x2 = Math.exp(x2)) + 1 / x2) / 2;
}
- function sinh(x) {
- return ((x = Math.exp(x)) - 1 / x) / 2;
+ function sinh(x2) {
+ return ((x2 = Math.exp(x2)) - 1 / x2) / 2;
}
- function tanh(x) {
- return ((x = Math.exp(2 * x)) - 1) / (x + 1);
+ function tanh(x2) {
+ return ((x2 = Math.exp(2 * x2)) - 1) / (x2 + 1);
}
var zoom_default = function zoomRho(rho, rho2, rho4) {
function zoom(p02, p1) {
- var ux0 = p02[0], uy0 = p02[1], w0 = p02[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i2, S;
+ var ux0 = p02[0], uy0 = p02[1], w0 = p02[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i3, S2;
if (d2 < epsilon22) {
- S = Math.log(w1 / w0) / rho;
- i2 = function(t) {
+ S2 = Math.log(w1 / w0) / rho;
+ i3 = function(t2) {
return [
- ux0 + t * dx,
- uy0 + t * dy,
- w0 * Math.exp(rho * t * S)
+ ux0 + t2 * dx,
+ uy0 + t2 * dy,
+ w0 * Math.exp(rho * t2 * S2)
];
};
} else {
var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
- S = (r1 - r0) / rho;
- i2 = function(t) {
- var s = t * S, coshr0 = cosh(r0), u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));
+ S2 = (r1 - r0) / rho;
+ i3 = function(t2) {
+ var s2 = t2 * S2, coshr0 = cosh(r0), u2 = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s2 + r0) - sinh(r0));
return [
- ux0 + u * dx,
- uy0 + u * dy,
- w0 * coshr0 / cosh(rho * s + r0)
+ ux0 + u2 * dx,
+ uy0 + u2 * dy,
+ w0 * coshr0 / cosh(rho * s2 + r0)
];
};
}
- i2.duration = S * 1e3 * rho / Math.SQRT2;
- return i2;
+ i3.duration = S2 * 1e3 * rho / Math.SQRT2;
+ return i3;
}
- zoom.rho = function(_) {
- var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;
- return zoomRho(_1, _2, _4);
+ zoom.rho = function(_2) {
+ var _1 = Math.max(1e-3, +_2), _22 = _1 * _1, _4 = _22 * _22;
+ return zoomRho(_1, _22, _4);
};
return zoom;
}(Math.SQRT2, 2, 4);
// node_modules/d3-interpolate/src/quantize.js
- function quantize_default(interpolator, n2) {
- var samples = new Array(n2);
- for (var i2 = 0; i2 < n2; ++i2)
- samples[i2] = interpolator(i2 / (n2 - 1));
+ function quantize_default(interpolator, n3) {
+ var samples = new Array(n3);
+ for (var i3 = 0; i3 < n3; ++i3)
+ samples[i3] = interpolator(i3 / (n3 - 1));
return samples;
}
var clockNow = 0;
var clockSkew = 0;
var clock = typeof performance === "object" && performance.now ? performance : Date;
- var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f2) {
- setTimeout(f2, 17);
+ var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f3) {
+ setTimeout(f3, 17);
};
function now() {
return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
}
};
function timer(callback, delay, time) {
- var t = new Timer();
- t.restart(callback, delay, time);
- return t;
+ var t2 = new Timer();
+ t2.restart(callback, delay, time);
+ return t2;
}
function timerFlush() {
now();
++frame;
- var t = taskHead, e;
- while (t) {
- if ((e = clockNow - t._time) >= 0)
- t._call.call(void 0, e);
- t = t._next;
+ var t2 = taskHead, e3;
+ while (t2) {
+ if ((e3 = clockNow - t2._time) >= 0)
+ t2._call.call(void 0, e3);
+ t2 = t2._next;
}
--frame;
}
// node_modules/d3-timer/src/timeout.js
function timeout_default(callback, delay, time) {
- var t = new Timer();
+ var t2 = new Timer();
delay = delay == null ? 0 : +delay;
- t.restart((elapsed) => {
- t.stop();
+ t2.restart((elapsed) => {
+ t2.stop();
callback(elapsed + delay);
}, delay, time);
- return t;
+ return t2;
}
// node_modules/d3-transition/src/transition/schedule.js
start2(elapsed - self2.delay);
}
function start2(elapsed) {
- var i2, j2, n2, o;
+ var i3, j3, n3, o2;
if (self2.state !== SCHEDULED)
return stop();
- for (i2 in schedules) {
- o = schedules[i2];
- if (o.name !== self2.name)
+ for (i3 in schedules) {
+ o2 = schedules[i3];
+ if (o2.name !== self2.name)
continue;
- if (o.state === STARTED)
+ if (o2.state === STARTED)
return timeout_default(start2);
- if (o.state === RUNNING) {
- o.state = ENDED;
- o.timer.stop();
- o.on.call("interrupt", node, node.__data__, o.index, o.group);
- delete schedules[i2];
- } else if (+i2 < id2) {
- o.state = ENDED;
- o.timer.stop();
- o.on.call("cancel", node, node.__data__, o.index, o.group);
- delete schedules[i2];
+ if (o2.state === RUNNING) {
+ o2.state = ENDED;
+ o2.timer.stop();
+ o2.on.call("interrupt", node, node.__data__, o2.index, o2.group);
+ delete schedules[i3];
+ } else if (+i3 < id2) {
+ o2.state = ENDED;
+ o2.timer.stop();
+ o2.on.call("cancel", node, node.__data__, o2.index, o2.group);
+ delete schedules[i3];
}
}
timeout_default(function() {
if (self2.state !== STARTING)
return;
self2.state = STARTED;
- tween = new Array(n2 = self2.tween.length);
- for (i2 = 0, j2 = -1; i2 < n2; ++i2) {
- if (o = self2.tween[i2].value.call(node, node.__data__, self2.index, self2.group)) {
- tween[++j2] = o;
+ tween = new Array(n3 = self2.tween.length);
+ for (i3 = 0, j3 = -1; i3 < n3; ++i3) {
+ if (o2 = self2.tween[i3].value.call(node, node.__data__, self2.index, self2.group)) {
+ tween[++j3] = o2;
}
}
- tween.length = j2 + 1;
+ tween.length = j3 + 1;
}
function tick(elapsed) {
- var t = elapsed < self2.duration ? self2.ease.call(null, elapsed / self2.duration) : (self2.timer.restart(stop), self2.state = ENDING, 1), i2 = -1, n2 = tween.length;
- while (++i2 < n2) {
- tween[i2].call(node, t);
+ var t2 = elapsed < self2.duration ? self2.ease.call(null, elapsed / self2.duration) : (self2.timer.restart(stop), self2.state = ENDING, 1), i3 = -1, n3 = tween.length;
+ while (++i3 < n3) {
+ tween[i3].call(node, t2);
}
if (self2.state === ENDING) {
self2.on.call("end", node, node.__data__, self2.index, self2.group);
self2.state = ENDED;
self2.timer.stop();
delete schedules[id2];
- for (var i2 in schedules)
+ for (var i3 in schedules)
return;
delete node.__transition;
}
// node_modules/d3-transition/src/interrupt.js
function interrupt_default(node, name) {
- var schedules = node.__transition, schedule, active, empty2 = true, i2;
+ var schedules = node.__transition, schedule, active, empty2 = true, i3;
if (!schedules)
return;
name = name == null ? null : name + "";
- for (i2 in schedules) {
- if ((schedule = schedules[i2]).name !== name) {
+ for (i3 in schedules) {
+ if ((schedule = schedules[i3]).name !== name) {
empty2 = false;
continue;
}
schedule.state = ENDED;
schedule.timer.stop();
schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group);
- delete schedules[i2];
+ delete schedules[i3];
}
if (empty2)
delete node.__transition;
var schedule = set2(this, id2), tween = schedule.tween;
if (tween !== tween0) {
tween1 = tween0 = tween;
- for (var i2 = 0, n2 = tween1.length; i2 < n2; ++i2) {
- if (tween1[i2].name === name) {
+ for (var i3 = 0, n3 = tween1.length; i3 < n3; ++i3) {
+ if (tween1[i3].name === name) {
tween1 = tween1.slice();
- tween1.splice(i2, 1);
+ tween1.splice(i3, 1);
break;
}
}
var schedule = set2(this, id2), tween = schedule.tween;
if (tween !== tween0) {
tween1 = (tween0 = tween).slice();
- for (var t = { name, value }, i2 = 0, n2 = tween1.length; i2 < n2; ++i2) {
- if (tween1[i2].name === name) {
- tween1[i2] = t;
+ for (var t2 = { name, value }, i3 = 0, n3 = tween1.length; i3 < n3; ++i3) {
+ if (tween1[i3].name === name) {
+ tween1[i3] = t2;
break;
}
}
- if (i2 === n2)
- tween1.push(t);
+ if (i3 === n3)
+ tween1.push(t2);
}
schedule.tween = tween1;
};
name += "";
if (arguments.length < 2) {
var tween = get2(this.node(), id2).tween;
- for (var i2 = 0, n2 = tween.length, t; i2 < n2; ++i2) {
- if ((t = tween[i2]).name === name) {
- return t.value;
+ for (var i3 = 0, n3 = tween.length, t2; i3 < n3; ++i3) {
+ if ((t2 = tween[i3]).name === name) {
+ return t2.value;
}
}
return null;
}
// node_modules/d3-transition/src/transition/interpolate.js
- function interpolate_default(a, b) {
- var c;
- return (typeof b === "number" ? number_default : b instanceof color ? rgb_default : (c = color(b)) ? (b = c, rgb_default) : string_default)(a, b);
+ function interpolate_default(a2, b2) {
+ var c2;
+ return (typeof b2 === "number" ? number_default : b2 instanceof color ? rgb_default : (c2 = color(b2)) ? (b2 = c2, rgb_default) : string_default)(a2, b2);
}
// node_modules/d3-transition/src/transition/attr.js
};
}
function attr_default2(name, value) {
- var fullname = namespace_default(name), i2 = fullname === "transform" ? interpolateTransformSvg : interpolate_default;
- return this.attrTween(name, typeof value === "function" ? (fullname.local ? attrFunctionNS2 : attrFunction2)(fullname, i2, tweenValue(this, "attr." + name, value)) : value == null ? (fullname.local ? attrRemoveNS2 : attrRemove2)(fullname) : (fullname.local ? attrConstantNS2 : attrConstant2)(fullname, i2, value));
+ var fullname = namespace_default(name), i3 = fullname === "transform" ? interpolateTransformSvg : interpolate_default;
+ return this.attrTween(name, typeof value === "function" ? (fullname.local ? attrFunctionNS2 : attrFunction2)(fullname, i3, tweenValue(this, "attr." + name, value)) : value == null ? (fullname.local ? attrRemoveNS2 : attrRemove2)(fullname) : (fullname.local ? attrConstantNS2 : attrConstant2)(fullname, i3, value));
}
// node_modules/d3-transition/src/transition/attrTween.js
- function attrInterpolate(name, i2) {
- return function(t) {
- this.setAttribute(name, i2.call(this, t));
+ function attrInterpolate(name, i3) {
+ return function(t2) {
+ this.setAttribute(name, i3.call(this, t2));
};
}
- function attrInterpolateNS(fullname, i2) {
- return function(t) {
- this.setAttributeNS(fullname.space, fullname.local, i2.call(this, t));
+ function attrInterpolateNS(fullname, i3) {
+ return function(t2) {
+ this.setAttributeNS(fullname.space, fullname.local, i3.call(this, t2));
};
}
function attrTweenNS(fullname, value) {
var t0, i0;
function tween() {
- var i2 = value.apply(this, arguments);
- if (i2 !== i0)
- t0 = (i0 = i2) && attrInterpolateNS(fullname, i2);
+ var i3 = value.apply(this, arguments);
+ if (i3 !== i0)
+ t0 = (i0 = i3) && attrInterpolateNS(fullname, i3);
return t0;
}
tween._value = value;
function attrTween(name, value) {
var t0, i0;
function tween() {
- var i2 = value.apply(this, arguments);
- if (i2 !== i0)
- t0 = (i0 = i2) && attrInterpolate(name, i2);
+ var i3 = value.apply(this, arguments);
+ if (i3 !== i0)
+ t0 = (i0 = i3) && attrInterpolate(name, i3);
return t0;
}
tween._value = value;
// node_modules/d3-transition/src/transition/easeVarying.js
function easeVarying(id2, value) {
return function() {
- var v = value.apply(this, arguments);
- if (typeof v !== "function")
+ var v2 = value.apply(this, arguments);
+ if (typeof v2 !== "function")
throw new Error();
- set2(this, id2).ease = v;
+ set2(this, id2).ease = v2;
};
}
function easeVarying_default(value) {
function filter_default2(match) {
if (typeof match !== "function")
match = matcher_default(match);
- for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, subgroup = subgroups[j2] = [], node, i2 = 0; i2 < n2; ++i2) {
- if ((node = group[i2]) && match.call(node, node.__data__, i2, group)) {
+ for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, subgroup = subgroups[j3] = [], node, i3 = 0; i3 < n3; ++i3) {
+ if ((node = group[i3]) && match.call(node, node.__data__, i3, group)) {
subgroup.push(node);
}
}
function merge_default2(transition2) {
if (transition2._id !== this._id)
throw new Error();
- for (var groups0 = this._groups, groups1 = transition2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j2 = 0; j2 < m; ++j2) {
- for (var group0 = groups0[j2], group1 = groups1[j2], n2 = group0.length, merge3 = merges[j2] = new Array(n2), node, i2 = 0; i2 < n2; ++i2) {
- if (node = group0[i2] || group1[i2]) {
- merge3[i2] = node;
+ for (var groups0 = this._groups, groups1 = transition2._groups, m0 = groups0.length, m1 = groups1.length, m2 = Math.min(m0, m1), merges = new Array(m0), j3 = 0; j3 < m2; ++j3) {
+ for (var group0 = groups0[j3], group1 = groups1[j3], n3 = group0.length, merge2 = merges[j3] = new Array(n3), node, i3 = 0; i3 < n3; ++i3) {
+ if (node = group0[i3] || group1[i3]) {
+ merge2[i3] = node;
}
}
}
- for (; j2 < m0; ++j2) {
- merges[j2] = groups0[j2];
+ for (; j3 < m0; ++j3) {
+ merges[j3] = groups0[j3];
}
return new Transition(merges, this._parents, this._name, this._id);
}
// node_modules/d3-transition/src/transition/on.js
function start(name) {
- return (name + "").trim().split(/^|\s+/).every(function(t) {
- var i2 = t.indexOf(".");
- if (i2 >= 0)
- t = t.slice(0, i2);
- return !t || t === "start";
+ return (name + "").trim().split(/^|\s+/).every(function(t2) {
+ var i3 = t2.indexOf(".");
+ if (i3 >= 0)
+ t2 = t2.slice(0, i3);
+ return !t2 || t2 === "start";
});
}
function onFunction(id2, name, listener) {
function removeFunction(id2) {
return function() {
var parent = this.parentNode;
- for (var i2 in this.__transition)
- if (+i2 !== id2)
+ for (var i3 in this.__transition)
+ if (+i3 !== id2)
return;
if (parent)
parent.removeChild(this);
var name = this._name, id2 = this._id;
if (typeof select !== "function")
select = selector_default(select);
- for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, subgroup = subgroups[j2] = new Array(n2), node, subnode, i2 = 0; i2 < n2; ++i2) {
- if ((node = group[i2]) && (subnode = select.call(node, node.__data__, i2, group))) {
+ for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, subgroup = subgroups[j3] = new Array(n3), node, subnode, i3 = 0; i3 < n3; ++i3) {
+ if ((node = group[i3]) && (subnode = select.call(node, node.__data__, i3, group))) {
if ("__data__" in node)
subnode.__data__ = node.__data__;
- subgroup[i2] = subnode;
- schedule_default(subgroup[i2], name, id2, i2, subgroup, get2(node, id2));
+ subgroup[i3] = subnode;
+ schedule_default(subgroup[i3], name, id2, i3, subgroup, get2(node, id2));
}
}
}
var name = this._name, id2 = this._id;
if (typeof select !== "function")
select = selectorAll_default(select);
- for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, node, i2 = 0; i2 < n2; ++i2) {
- if (node = group[i2]) {
- for (var children2 = select.call(node, node.__data__, i2, group), child, inherit2 = get2(node, id2), k = 0, l = children2.length; k < l; ++k) {
- if (child = children2[k]) {
- schedule_default(child, name, id2, k, children2, inherit2);
+ for (var groups = this._groups, m2 = groups.length, subgroups = [], parents = [], j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, node, i3 = 0; i3 < n3; ++i3) {
+ if (node = group[i3]) {
+ for (var children2 = select.call(node, node.__data__, i3, group), child, inherit2 = get2(node, id2), k2 = 0, l2 = children2.length; k2 < l2; ++k2) {
+ if (child = children2[k2]) {
+ schedule_default(child, name, id2, k2, children2, inherit2);
}
}
subgroups.push(children2);
};
}
function style_default2(name, value, priority) {
- var i2 = (name += "") === "transform" ? interpolateTransformCss : interpolate_default;
- return value == null ? this.styleTween(name, styleNull(name, i2)).on("end.style." + name, styleRemove2(name)) : typeof value === "function" ? this.styleTween(name, styleFunction2(name, i2, tweenValue(this, "style." + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant2(name, i2, value), priority).on("end.style." + name, null);
+ var i3 = (name += "") === "transform" ? interpolateTransformCss : interpolate_default;
+ return value == null ? this.styleTween(name, styleNull(name, i3)).on("end.style." + name, styleRemove2(name)) : typeof value === "function" ? this.styleTween(name, styleFunction2(name, i3, tweenValue(this, "style." + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant2(name, i3, value), priority).on("end.style." + name, null);
}
// node_modules/d3-transition/src/transition/styleTween.js
- function styleInterpolate(name, i2, priority) {
- return function(t) {
- this.style.setProperty(name, i2.call(this, t), priority);
+ function styleInterpolate(name, i3, priority) {
+ return function(t2) {
+ this.style.setProperty(name, i3.call(this, t2), priority);
};
}
function styleTween(name, value, priority) {
- var t, i0;
+ var t2, i0;
function tween() {
- var i2 = value.apply(this, arguments);
- if (i2 !== i0)
- t = (i0 = i2) && styleInterpolate(name, i2, priority);
- return t;
+ var i3 = value.apply(this, arguments);
+ if (i3 !== i0)
+ t2 = (i0 = i3) && styleInterpolate(name, i3, priority);
+ return t2;
}
tween._value = value;
return tween;
}
// node_modules/d3-transition/src/transition/textTween.js
- function textInterpolate(i2) {
- return function(t) {
- this.textContent = i2.call(this, t);
+ function textInterpolate(i3) {
+ return function(t2) {
+ this.textContent = i3.call(this, t2);
};
}
function textTween(value) {
var t0, i0;
function tween() {
- var i2 = value.apply(this, arguments);
- if (i2 !== i0)
- t0 = (i0 = i2) && textInterpolate(i2);
+ var i3 = value.apply(this, arguments);
+ if (i3 !== i0)
+ t0 = (i0 = i3) && textInterpolate(i3);
return t0;
}
tween._value = value;
// node_modules/d3-transition/src/transition/transition.js
function transition_default() {
var name = this._name, id0 = this._id, id1 = newId();
- for (var groups = this._groups, m = groups.length, j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, node, i2 = 0; i2 < n2; ++i2) {
- if (node = group[i2]) {
+ for (var groups = this._groups, m2 = groups.length, j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, node, i3 = 0; i3 < n3; ++i3) {
+ if (node = group[i3]) {
var inherit2 = get2(node, id0);
- schedule_default(node, name, id1, i2, group, {
+ schedule_default(node, name, id1, i3, group, {
time: inherit2.time + inherit2.delay + inherit2.duration,
delay: 0,
duration: inherit2.duration,
};
// node_modules/d3-ease/src/linear.js
- var linear2 = (t) => +t;
+ var linear2 = (t2) => +t2;
// node_modules/d3-ease/src/cubic.js
- function cubicInOut(t) {
- return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
+ function cubicInOut(t2) {
+ return ((t2 *= 2) <= 1 ? t2 * t2 * t2 : (t2 -= 2) * t2 * t2 + 2) / 2;
}
// node_modules/d3-transition/src/selection/transition.js
} else {
id2 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + "";
}
- for (var groups = this._groups, m = groups.length, j2 = 0; j2 < m; ++j2) {
- for (var group = groups[j2], n2 = group.length, node, i2 = 0; i2 < n2; ++i2) {
- if (node = group[i2]) {
- schedule_default(node, name, id2, i2, group, timing || inherit(node, id2));
+ for (var groups = this._groups, m2 = groups.length, j3 = 0; j3 < m2; ++j3) {
+ for (var group = groups[j3], n3 = group.length, node, i3 = 0; i3 < n3; ++i3) {
+ if (node = group[i3]) {
+ schedule_default(node, name, id2, i3, group, timing || inherit(node, id2));
}
}
}
selection_default.prototype.transition = transition_default2;
// node_modules/d3-zoom/src/constant.js
- var constant_default4 = (x) => () => x;
+ var constant_default4 = (x2) => () => x2;
// node_modules/d3-zoom/src/event.js
function ZoomEvent(type2, {
sourceEvent,
target,
transform: transform2,
- dispatch: dispatch10
+ dispatch: dispatch14
}) {
Object.defineProperties(this, {
type: { value: type2, enumerable: true, configurable: true },
sourceEvent: { value: sourceEvent, enumerable: true, configurable: true },
target: { value: target, enumerable: true, configurable: true },
transform: { value: transform2, enumerable: true, configurable: true },
- _: { value: dispatch10 }
+ _: { value: dispatch14 }
});
}
// node_modules/d3-zoom/src/transform.js
- function Transform(k, x, y) {
- this.k = k;
- this.x = x;
- this.y = y;
+ function Transform(k2, x2, y2) {
+ this.k = k2;
+ this.x = x2;
+ this.y = y2;
}
Transform.prototype = {
constructor: Transform,
- scale: function(k) {
- return k === 1 ? this : new Transform(this.k * k, this.x, this.y);
+ scale: function(k2) {
+ return k2 === 1 ? this : new Transform(this.k * k2, this.x, this.y);
},
- translate: function(x, y) {
- return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);
+ translate: function(x2, y2) {
+ return x2 === 0 & y2 === 0 ? this : new Transform(this.k, this.x + this.k * x2, this.y + this.k * y2);
},
apply: function(point2) {
return [point2[0] * this.k + this.x, point2[1] * this.k + this.y];
},
- applyX: function(x) {
- return x * this.k + this.x;
+ applyX: function(x2) {
+ return x2 * this.k + this.x;
},
- applyY: function(y) {
- return y * this.k + this.y;
+ applyY: function(y2) {
+ return y2 * this.k + this.y;
},
invert: function(location) {
return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];
},
- invertX: function(x) {
- return (x - this.x) / this.k;
+ invertX: function(x2) {
+ return (x2 - this.x) / this.k;
},
- invertY: function(y) {
- return (y - this.y) / this.k;
+ invertY: function(y2) {
+ return (y2 - this.y) / this.k;
},
- rescaleX: function(x) {
- return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));
+ rescaleX: function(x2) {
+ return x2.copy().domain(x2.range().map(this.invertX, this).map(x2.invert, x2));
},
- rescaleY: function(y) {
- return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));
+ rescaleY: function(y2) {
+ return y2.copy().domain(y2.range().map(this.invertY, this).map(y2.invert, y2));
},
toString: function() {
return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
return (!event.ctrlKey || event.type === "wheel") && !event.button;
}
function defaultExtent() {
- var e = this;
- if (e instanceof SVGElement) {
- e = e.ownerSVGElement || e;
- if (e.hasAttribute("viewBox")) {
- e = e.viewBox.baseVal;
- return [[e.x, e.y], [e.x + e.width, e.y + e.height]];
+ var e3 = this;
+ if (e3 instanceof SVGElement) {
+ e3 = e3.ownerSVGElement || e3;
+ if (e3.hasAttribute("viewBox")) {
+ e3 = e3.viewBox.baseVal;
+ return [[e3.x, e3.y], [e3.x + e3.width, e3.y + e3.height]];
}
- return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];
+ return [[0, 0], [e3.width.baseVal.value, e3.height.baseVal.value]];
}
- return [[0, 0], [e.clientWidth, e.clientHeight]];
+ return [[0, 0], [e3.clientWidth, e3.clientHeight]];
}
function defaultTransform() {
return this.__zoom || identity2;
});
}
};
- zoom.scaleBy = function(selection2, k, p, event) {
+ zoom.scaleBy = function(selection2, k2, p2, event) {
zoom.scaleTo(selection2, function() {
- var k0 = this.__zoom.k, k1 = typeof k === "function" ? k.apply(this, arguments) : k;
+ var k0 = this.__zoom.k, k1 = typeof k2 === "function" ? k2.apply(this, arguments) : k2;
return k0 * k1;
- }, p, event);
+ }, p2, event);
};
- zoom.scaleTo = function(selection2, k, p, event) {
+ zoom.scaleTo = function(selection2, k2, p2, event) {
zoom.transform(selection2, function() {
- var e = extent.apply(this, arguments), t0 = this.__zoom, p02 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, p1 = t0.invert(p02), k1 = typeof k === "function" ? k.apply(this, arguments) : k;
- return constrain(translate(scale(t0, k1), p02, p1), e, translateExtent);
- }, p, event);
+ var e3 = extent.apply(this, arguments), t0 = this.__zoom, p02 = p2 == null ? centroid(e3) : typeof p2 === "function" ? p2.apply(this, arguments) : p2, p1 = t0.invert(p02), k1 = typeof k2 === "function" ? k2.apply(this, arguments) : k2;
+ return constrain(translate(scale(t0, k1), p02, p1), e3, translateExtent);
+ }, p2, event);
};
- zoom.translateBy = function(selection2, x, y, event) {
+ zoom.translateBy = function(selection2, x2, y2, event) {
zoom.transform(selection2, function() {
return constrain(this.__zoom.translate(
- typeof x === "function" ? x.apply(this, arguments) : x,
- typeof y === "function" ? y.apply(this, arguments) : y
+ typeof x2 === "function" ? x2.apply(this, arguments) : x2,
+ typeof y2 === "function" ? y2.apply(this, arguments) : y2
), extent.apply(this, arguments), translateExtent);
}, null, event);
};
- zoom.translateTo = function(selection2, x, y, p, event) {
+ zoom.translateTo = function(selection2, x2, y2, p2, event) {
zoom.transform(selection2, function() {
- var e = extent.apply(this, arguments), t = this.__zoom, p02 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p;
- return constrain(identity2.translate(p02[0], p02[1]).scale(t.k).translate(
- typeof x === "function" ? -x.apply(this, arguments) : -x,
- typeof y === "function" ? -y.apply(this, arguments) : -y
- ), e, translateExtent);
- }, p, event);
+ var e3 = extent.apply(this, arguments), t2 = this.__zoom, p02 = p2 == null ? centroid(e3) : typeof p2 === "function" ? p2.apply(this, arguments) : p2;
+ return constrain(identity2.translate(p02[0], p02[1]).scale(t2.k).translate(
+ typeof x2 === "function" ? -x2.apply(this, arguments) : -x2,
+ typeof y2 === "function" ? -y2.apply(this, arguments) : -y2
+ ), e3, translateExtent);
+ }, p2, event);
};
- function scale(transform2, k) {
- k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));
- return k === transform2.k ? transform2 : new Transform(k, transform2.x, transform2.y);
+ function scale(transform2, k2) {
+ k2 = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k2));
+ return k2 === transform2.k ? transform2 : new Transform(k2, transform2.x, transform2.y);
}
function translate(transform2, p02, p1) {
- var x = p02[0] - p1[0] * transform2.k, y = p02[1] - p1[1] * transform2.k;
- return x === transform2.x && y === transform2.y ? transform2 : new Transform(transform2.k, x, y);
+ var x2 = p02[0] - p1[0] * transform2.k, y2 = p02[1] - p1[1] * transform2.k;
+ return x2 === transform2.x && y2 === transform2.y ? transform2 : new Transform(transform2.k, x2, y2);
}
function centroid(extent2) {
return [(+extent2[0][0] + +extent2[1][0]) / 2, (+extent2[0][1] + +extent2[1][1]) / 2];
}).on("interrupt.zoom end.zoom", function() {
gesture(this, arguments).event(event).end();
}).tween("zoom", function() {
- var that = this, args = arguments, g = gesture(that, args).event(event), e = extent.apply(that, args), p = point2 == null ? centroid(e) : typeof point2 === "function" ? point2.apply(that, args) : point2, w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), a = that.__zoom, b = typeof transform2 === "function" ? transform2.apply(that, args) : transform2, i2 = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));
- return function(t) {
- if (t === 1)
- t = b;
+ var that = this, args = arguments, g3 = gesture(that, args).event(event), e3 = extent.apply(that, args), p2 = point2 == null ? centroid(e3) : typeof point2 === "function" ? point2.apply(that, args) : point2, w2 = Math.max(e3[1][0] - e3[0][0], e3[1][1] - e3[0][1]), a2 = that.__zoom, b2 = typeof transform2 === "function" ? transform2.apply(that, args) : transform2, i3 = interpolate(a2.invert(p2).concat(w2 / a2.k), b2.invert(p2).concat(w2 / b2.k));
+ return function(t2) {
+ if (t2 === 1)
+ t2 = b2;
else {
- var l = i2(t), k = w / l[2];
- t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k);
+ var l2 = i3(t2), k2 = w2 / l2[2];
+ t2 = new Transform(k2, p2[0] - l2[0] * k2, p2[1] - l2[1] * k2);
}
- g.zoom(null, t);
+ g3.zoom(null, t2);
};
});
}
return this;
},
emit: function(type2) {
- var d = select_default2(this.that).datum();
+ var d2 = select_default2(this.that).datum();
listeners.call(
type2,
this.that,
transform: this.that.__zoom,
dispatch: listeners
}),
- d
+ d2
);
}
};
function wheeled(event, ...args) {
if (!filter2.apply(this, arguments))
return;
- var g = gesture(this, args).event(event), t = this.__zoom, k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p = pointer_default(event);
- if (g.wheel) {
- if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {
- g.mouse[1] = t.invert(g.mouse[0] = p);
+ var g3 = gesture(this, args).event(event), t2 = this.__zoom, k2 = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t2.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p2 = pointer_default(event);
+ if (g3.wheel) {
+ if (g3.mouse[0][0] !== p2[0] || g3.mouse[0][1] !== p2[1]) {
+ g3.mouse[1] = t2.invert(g3.mouse[0] = p2);
}
- clearTimeout(g.wheel);
- } else if (t.k === k)
+ clearTimeout(g3.wheel);
+ } else if (t2.k === k2)
return;
else {
- g.mouse = [p, t.invert(p)];
+ g3.mouse = [p2, t2.invert(p2)];
interrupt_default(this);
- g.start();
+ g3.start();
}
noevent_default2(event);
- g.wheel = setTimeout(wheelidled, wheelDelay);
- g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));
+ g3.wheel = setTimeout(wheelidled, wheelDelay);
+ g3.zoom("mouse", constrain(translate(scale(t2, k2), g3.mouse[0], g3.mouse[1]), g3.extent, translateExtent));
function wheelidled() {
- g.wheel = null;
- g.end();
+ g3.wheel = null;
+ g3.end();
}
}
function mousedowned(event, ...args) {
if (touchending || !filter2.apply(this, arguments))
return;
- var currentTarget = event.currentTarget, g = gesture(this, args, true).event(event), v = select_default2(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), p = pointer_default(event, currentTarget), x05 = event.clientX, y05 = event.clientY;
+ var currentTarget = event.currentTarget, g3 = gesture(this, args, true).event(event), v2 = select_default2(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), p2 = pointer_default(event, currentTarget), x05 = event.clientX, y05 = event.clientY;
nodrag_default(event.view);
nopropagation2(event);
- g.mouse = [p, this.__zoom.invert(p)];
+ g3.mouse = [p2, this.__zoom.invert(p2)];
interrupt_default(this);
- g.start();
+ g3.start();
function mousemoved(event2) {
noevent_default2(event2);
- if (!g.moved) {
+ if (!g3.moved) {
var dx = event2.clientX - x05, dy = event2.clientY - y05;
- g.moved = dx * dx + dy * dy > clickDistance2;
+ g3.moved = dx * dx + dy * dy > clickDistance2;
}
- g.event(event2).zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = pointer_default(event2, currentTarget), g.mouse[1]), g.extent, translateExtent));
+ g3.event(event2).zoom("mouse", constrain(translate(g3.that.__zoom, g3.mouse[0] = pointer_default(event2, currentTarget), g3.mouse[1]), g3.extent, translateExtent));
}
function mouseupped(event2) {
- v.on("mousemove.zoom mouseup.zoom", null);
- yesdrag(event2.view, g.moved);
+ v2.on("mousemove.zoom mouseup.zoom", null);
+ yesdrag(event2.view, g3.moved);
noevent_default2(event2);
- g.event(event2).end();
+ g3.event(event2).end();
}
}
function dblclicked(event, ...args) {
function touchstarted(event, ...args) {
if (!filter2.apply(this, arguments))
return;
- var touches = event.touches, n2 = touches.length, g = gesture(this, args, event.changedTouches.length === n2).event(event), started, i2, t, p;
+ var touches = event.touches, n3 = touches.length, g3 = gesture(this, args, event.changedTouches.length === n3).event(event), started, i3, t2, p2;
nopropagation2(event);
- for (i2 = 0; i2 < n2; ++i2) {
- t = touches[i2], p = pointer_default(t, this);
- p = [p, this.__zoom.invert(p), t.identifier];
- if (!g.touch0)
- g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;
- else if (!g.touch1 && g.touch0[2] !== p[2])
- g.touch1 = p, g.taps = 0;
+ for (i3 = 0; i3 < n3; ++i3) {
+ t2 = touches[i3], p2 = pointer_default(t2, this);
+ p2 = [p2, this.__zoom.invert(p2), t2.identifier];
+ if (!g3.touch0)
+ g3.touch0 = p2, started = true, g3.taps = 1 + !!touchstarting;
+ else if (!g3.touch1 && g3.touch0[2] !== p2[2])
+ g3.touch1 = p2, g3.taps = 0;
}
if (touchstarting)
touchstarting = clearTimeout(touchstarting);
if (started) {
- if (g.taps < 2)
- touchfirst = p[0], touchstarting = setTimeout(function() {
+ if (g3.taps < 2)
+ touchfirst = p2[0], touchstarting = setTimeout(function() {
touchstarting = null;
}, touchDelay);
interrupt_default(this);
- g.start();
+ g3.start();
}
}
function touchmoved(event, ...args) {
if (!this.__zooming)
return;
- var g = gesture(this, args).event(event), touches = event.changedTouches, n2 = touches.length, i2, t, p, l;
+ var g3 = gesture(this, args).event(event), touches = event.changedTouches, n3 = touches.length, i3, t2, p2, l2;
noevent_default2(event);
- for (i2 = 0; i2 < n2; ++i2) {
- t = touches[i2], p = pointer_default(t, this);
- if (g.touch0 && g.touch0[2] === t.identifier)
- g.touch0[0] = p;
- else if (g.touch1 && g.touch1[2] === t.identifier)
- g.touch1[0] = p;
- }
- t = g.that.__zoom;
- if (g.touch1) {
- var p02 = g.touch0[0], l0 = g.touch0[1], p1 = g.touch1[0], l1 = g.touch1[1], dp = (dp = p1[0] - p02[0]) * dp + (dp = p1[1] - p02[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
- t = scale(t, Math.sqrt(dp / dl));
- p = [(p02[0] + p1[0]) / 2, (p02[1] + p1[1]) / 2];
- l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
- } else if (g.touch0)
- p = g.touch0[0], l = g.touch0[1];
+ for (i3 = 0; i3 < n3; ++i3) {
+ t2 = touches[i3], p2 = pointer_default(t2, this);
+ if (g3.touch0 && g3.touch0[2] === t2.identifier)
+ g3.touch0[0] = p2;
+ else if (g3.touch1 && g3.touch1[2] === t2.identifier)
+ g3.touch1[0] = p2;
+ }
+ t2 = g3.that.__zoom;
+ if (g3.touch1) {
+ var p02 = g3.touch0[0], l0 = g3.touch0[1], p1 = g3.touch1[0], l1 = g3.touch1[1], dp = (dp = p1[0] - p02[0]) * dp + (dp = p1[1] - p02[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
+ t2 = scale(t2, Math.sqrt(dp / dl));
+ p2 = [(p02[0] + p1[0]) / 2, (p02[1] + p1[1]) / 2];
+ l2 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
+ } else if (g3.touch0)
+ p2 = g3.touch0[0], l2 = g3.touch0[1];
else
return;
- g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent));
+ g3.zoom("touch", constrain(translate(t2, p2, l2), g3.extent, translateExtent));
}
function touchended(event, ...args) {
if (!this.__zooming)
return;
- var g = gesture(this, args).event(event), touches = event.changedTouches, n2 = touches.length, i2, t;
+ var g3 = gesture(this, args).event(event), touches = event.changedTouches, n3 = touches.length, i3, t2;
nopropagation2(event);
if (touchending)
clearTimeout(touchending);
touchending = setTimeout(function() {
touchending = null;
}, touchDelay);
- for (i2 = 0; i2 < n2; ++i2) {
- t = touches[i2];
- if (g.touch0 && g.touch0[2] === t.identifier)
- delete g.touch0;
- else if (g.touch1 && g.touch1[2] === t.identifier)
- delete g.touch1;
- }
- if (g.touch1 && !g.touch0)
- g.touch0 = g.touch1, delete g.touch1;
- if (g.touch0)
- g.touch0[1] = this.__zoom.invert(g.touch0[0]);
+ for (i3 = 0; i3 < n3; ++i3) {
+ t2 = touches[i3];
+ if (g3.touch0 && g3.touch0[2] === t2.identifier)
+ delete g3.touch0;
+ else if (g3.touch1 && g3.touch1[2] === t2.identifier)
+ delete g3.touch1;
+ }
+ if (g3.touch1 && !g3.touch0)
+ g3.touch0 = g3.touch1, delete g3.touch1;
+ if (g3.touch0)
+ g3.touch0[1] = this.__zoom.invert(g3.touch0[0]);
else {
- g.end();
- if (g.taps === 2) {
- t = pointer_default(t, this);
- if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {
- var p = select_default2(this).on("dblclick.zoom");
- if (p)
- p.apply(this, arguments);
+ g3.end();
+ if (g3.taps === 2) {
+ t2 = pointer_default(t2, this);
+ if (Math.hypot(touchfirst[0] - t2[0], touchfirst[1] - t2[1]) < tapDistance) {
+ var p2 = select_default2(this).on("dblclick.zoom");
+ if (p2)
+ p2.apply(this, arguments);
}
}
}
}
- zoom.wheelDelta = function(_) {
- return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant_default4(+_), zoom) : wheelDelta;
+ zoom.wheelDelta = function(_2) {
+ return arguments.length ? (wheelDelta = typeof _2 === "function" ? _2 : constant_default4(+_2), zoom) : wheelDelta;
};
- zoom.filter = function(_) {
- return arguments.length ? (filter2 = typeof _ === "function" ? _ : constant_default4(!!_), zoom) : filter2;
+ zoom.filter = function(_2) {
+ return arguments.length ? (filter2 = typeof _2 === "function" ? _2 : constant_default4(!!_2), zoom) : filter2;
};
- zoom.touchable = function(_) {
- return arguments.length ? (touchable = typeof _ === "function" ? _ : constant_default4(!!_), zoom) : touchable;
+ zoom.touchable = function(_2) {
+ return arguments.length ? (touchable = typeof _2 === "function" ? _2 : constant_default4(!!_2), zoom) : touchable;
};
- zoom.extent = function(_) {
- return arguments.length ? (extent = typeof _ === "function" ? _ : constant_default4([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;
+ zoom.extent = function(_2) {
+ return arguments.length ? (extent = typeof _2 === "function" ? _2 : constant_default4([[+_2[0][0], +_2[0][1]], [+_2[1][0], +_2[1][1]]]), zoom) : extent;
};
- zoom.scaleExtent = function(_) {
- return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];
+ zoom.scaleExtent = function(_2) {
+ return arguments.length ? (scaleExtent[0] = +_2[0], scaleExtent[1] = +_2[1], zoom) : [scaleExtent[0], scaleExtent[1]];
};
- zoom.translateExtent = function(_) {
- return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
+ zoom.translateExtent = function(_2) {
+ return arguments.length ? (translateExtent[0][0] = +_2[0][0], translateExtent[1][0] = +_2[1][0], translateExtent[0][1] = +_2[0][1], translateExtent[1][1] = +_2[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
};
- zoom.constrain = function(_) {
- return arguments.length ? (constrain = _, zoom) : constrain;
+ zoom.constrain = function(_2) {
+ return arguments.length ? (constrain = _2, zoom) : constrain;
};
- zoom.duration = function(_) {
- return arguments.length ? (duration = +_, zoom) : duration;
+ zoom.duration = function(_2) {
+ return arguments.length ? (duration = +_2, zoom) : duration;
};
- zoom.interpolate = function(_) {
- return arguments.length ? (interpolate = _, zoom) : interpolate;
+ zoom.interpolate = function(_2) {
+ return arguments.length ? (interpolate = _2, zoom) : interpolate;
};
zoom.on = function() {
var value = listeners.on.apply(listeners, arguments);
return value === listeners ? zoom : value;
};
- zoom.clickDistance = function(_) {
- return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);
+ zoom.clickDistance = function(_2) {
+ return arguments.length ? (clickDistance2 = (_2 = +_2) * _2, zoom) : Math.sqrt(clickDistance2);
};
- zoom.tapDistance = function(_) {
- return arguments.length ? (tapDistance = +_, zoom) : tapDistance;
+ zoom.tapDistance = function(_2) {
+ return arguments.length ? (tapDistance = +_2, zoom) : tapDistance;
};
return zoom;
}
// modules/geo/raw_mercator.js
function geoRawMercator() {
var project = mercatorRaw;
- var k = 512 / Math.PI;
- var x = 0;
- var y = 0;
+ var k2 = 512 / Math.PI;
+ var x2 = 0;
+ var y2 = 0;
var clipExtent = [[0, 0], [0, 0]];
function projection2(point2) {
point2 = project(point2[0] * Math.PI / 180, point2[1] * Math.PI / 180);
- return [point2[0] * k + x, y - point2[1] * k];
+ return [point2[0] * k2 + x2, y2 - point2[1] * k2];
}
projection2.invert = function(point2) {
- point2 = project.invert((point2[0] - x) / k, (y - point2[1]) / k);
+ point2 = project.invert((point2[0] - x2) / k2, (y2 - point2[1]) / k2);
return point2 && [point2[0] * 180 / Math.PI, point2[1] * 180 / Math.PI];
};
- projection2.scale = function(_) {
+ projection2.scale = function(_2) {
if (!arguments.length)
- return k;
- k = +_;
+ return k2;
+ k2 = +_2;
return projection2;
};
- projection2.translate = function(_) {
+ projection2.translate = function(_2) {
if (!arguments.length)
- return [x, y];
- x = +_[0];
- y = +_[1];
+ return [x2, y2];
+ x2 = +_2[0];
+ y2 = +_2[1];
return projection2;
};
- projection2.clipExtent = function(_) {
+ projection2.clipExtent = function(_2) {
if (!arguments.length)
return clipExtent;
- clipExtent = _;
+ clipExtent = _2;
return projection2;
};
projection2.transform = function(obj) {
if (!arguments.length)
- return identity2.translate(x, y).scale(k);
- x = +obj.x;
- y = +obj.y;
- k = +obj.k;
+ return identity2.translate(x2, y2).scale(k2);
+ x2 = +obj.x;
+ y2 = +obj.y;
+ k2 = +obj.k;
return projection2;
};
projection2.stream = transform_default({
- point: function(x2, y2) {
- var vec = projection2([x2, y2]);
+ point: function(x3, y3) {
+ var vec = projection2([x3, y3]);
this.stream.point(vec[0], vec[1]);
}
}).stream;
}
// modules/geo/ortho.js
- function geoOrthoNormalizedDotProduct(a, b, origin) {
- if (geoVecEqual(origin, a) || geoVecEqual(origin, b)) {
+ function geoOrthoNormalizedDotProduct(a2, b2, origin) {
+ if (geoVecEqual(origin, a2) || geoVecEqual(origin, b2)) {
return 1;
}
- return geoVecNormalizedDot(a, b, origin);
+ return geoVecNormalizedDot(a2, b2, origin);
}
function geoOrthoFilterDotProduct(dotp, epsilon3, lowerThreshold, upperThreshold, allowStraightAngles) {
var val = Math.abs(dotp);
var score = 0;
var first = isClosed ? 0 : 1;
var last = isClosed ? points.length : points.length - 1;
- var coords = points.map(function(p) {
- return p.coord;
+ var coords = points.map(function(p2) {
+ return p2.coord;
});
var lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180);
var upperThreshold = Math.cos(threshold * Math.PI / 180);
- for (var i2 = first; i2 < last; i2++) {
- var a = coords[(i2 - 1 + coords.length) % coords.length];
- var origin = coords[i2];
- var b = coords[(i2 + 1) % coords.length];
- var dotp = geoOrthoFilterDotProduct(geoOrthoNormalizedDotProduct(a, b, origin), epsilon3, lowerThreshold, upperThreshold);
+ for (var i3 = first; i3 < last; i3++) {
+ var a2 = coords[(i3 - 1 + coords.length) % coords.length];
+ var origin = coords[i3];
+ var b2 = coords[(i3 + 1) % coords.length];
+ var dotp = geoOrthoFilterDotProduct(geoOrthoNormalizedDotProduct(a2, b2, origin), epsilon3, lowerThreshold, upperThreshold);
if (dotp === null)
continue;
score = score + 2 * Math.min(Math.abs(dotp - 1), Math.min(Math.abs(dotp), Math.abs(dotp + 1)));
var max3 = -Infinity;
var first = isClosed ? 0 : 1;
var last = isClosed ? coords.length : coords.length - 1;
- for (var i2 = first; i2 < last; i2++) {
- var a = coords[(i2 - 1 + coords.length) % coords.length];
- var origin = coords[i2];
- var b = coords[(i2 + 1) % coords.length];
- var normalizedDotP = geoOrthoNormalizedDotProduct(a, b, origin);
+ for (var i3 = first; i3 < last; i3++) {
+ var a2 = coords[(i3 - 1 + coords.length) % coords.length];
+ var origin = coords[i3];
+ var b2 = coords[(i3 + 1) % coords.length];
+ var normalizedDotP = geoOrthoNormalizedDotProduct(a2, b2, origin);
var angle2 = Math.acos(Math.abs(normalizedDotP)) * 180 / Math.PI;
if (angle2 > 45)
angle2 = 90 - angle2;
var last = isClosed ? coords.length : coords.length - 1;
var lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180);
var upperThreshold = Math.cos(threshold * Math.PI / 180);
- for (var i2 = first; i2 < last; i2++) {
- var a = coords[(i2 - 1 + coords.length) % coords.length];
- var origin = coords[i2];
- var b = coords[(i2 + 1) % coords.length];
- var dotp = geoOrthoFilterDotProduct(geoOrthoNormalizedDotProduct(a, b, origin), epsilon3, lowerThreshold, upperThreshold, allowStraightAngles);
+ for (var i3 = first; i3 < last; i3++) {
+ var a2 = coords[(i3 - 1 + coords.length) % coords.length];
+ var origin = coords[i3];
+ var b2 = coords[(i3 + 1) % coords.length];
+ var dotp = geoOrthoFilterDotProduct(geoOrthoNormalizedDotProduct(a2, b2, origin), epsilon3, lowerThreshold, upperThreshold, allowStraightAngles);
if (dotp === null)
continue;
if (Math.abs(dotp) > 0)
}
// modules/util/array.js
- function utilArrayIdentical(a, b) {
- if (a === b)
+ function utilArrayIdentical(a2, b2) {
+ if (a2 === b2)
return true;
- var i2 = a.length;
- if (i2 !== b.length)
+ var i3 = a2.length;
+ if (i3 !== b2.length)
return false;
- while (i2--) {
- if (a[i2] !== b[i2])
+ while (i3--) {
+ if (a2[i3] !== b2[i3])
return false;
}
return true;
}
- function utilArrayDifference(a, b) {
- var other = new Set(b);
- return Array.from(new Set(a)).filter(function(v) {
- return !other.has(v);
+ function utilArrayDifference(a2, b2) {
+ var other = new Set(b2);
+ return Array.from(new Set(a2)).filter(function(v2) {
+ return !other.has(v2);
});
}
- function utilArrayIntersection(a, b) {
- var other = new Set(b);
- return Array.from(new Set(a)).filter(function(v) {
- return other.has(v);
+ function utilArrayIntersection(a2, b2) {
+ var other = new Set(b2);
+ return Array.from(new Set(a2)).filter(function(v2) {
+ return other.has(v2);
});
}
- function utilArrayUnion(a, b) {
- var result = new Set(a);
- b.forEach(function(v) {
- result.add(v);
+ function utilArrayUnion(a2, b2) {
+ var result = new Set(a2);
+ b2.forEach(function(v2) {
+ result.add(v2);
});
return Array.from(result);
}
- function utilArrayUniq(a) {
- return Array.from(new Set(a));
+ function utilArrayUniq(a2) {
+ return Array.from(new Set(a2));
}
- function utilArrayChunk(a, chunkSize) {
+ function utilArrayChunk(a2, chunkSize) {
if (!chunkSize || chunkSize < 0)
- return [a.slice()];
- var result = new Array(Math.ceil(a.length / chunkSize));
- return Array.from(result, function(item, i2) {
- return a.slice(i2 * chunkSize, i2 * chunkSize + chunkSize);
+ return [a2.slice()];
+ var result = new Array(Math.ceil(a2.length / chunkSize));
+ return Array.from(result, function(item, i3) {
+ return a2.slice(i3 * chunkSize, i3 * chunkSize + chunkSize);
});
}
- function utilArrayFlatten(a) {
- return a.reduce(function(acc, val) {
+ function utilArrayFlatten(a2) {
+ return a2.reduce(function(acc, val) {
return acc.concat(val);
}, []);
}
- function utilArrayGroupBy(a, key) {
- return a.reduce(function(acc, item) {
+ function utilArrayGroupBy(a2, key) {
+ return a2.reduce(function(acc, item) {
var group = typeof key === "function" ? key(item) : item[key];
(acc[group] = acc[group] || []).push(item);
return acc;
}, {});
}
- function utilArrayUniqBy(a, key) {
+ function utilArrayUniqBy(a2, key) {
var seen = /* @__PURE__ */ new Set();
- return a.reduce(function(acc, item) {
+ return a2.reduce(function(acc, item) {
var val = typeof key === "function" ? key(item) : item[key];
if (val && !seen.has(val)) {
seen.add(val);
if (arabicRegex.test(inputText)) {
inputText = (0, import_alif_toolkit.WordShaper)(inputText);
}
- for (var n2 = 0; n2 < inputText.length; n2++) {
- var c = inputText[n2];
- if (arabicMath.test(c)) {
+ for (var n3 = 0; n3 < inputText.length; n3++) {
+ var c2 = inputText[n3];
+ if (arabicMath.test(c2)) {
ret += rtlBuffer.reverse().join("");
- rtlBuffer = [c];
+ rtlBuffer = [c2];
} else {
if (rtlBuffer.length && arabicMath.test(rtlBuffer[rtlBuffer.length - 1])) {
ret += rtlBuffer.reverse().join("");
rtlBuffer = [];
}
- if ((thaanaVowel.test(c) || hebrewSign.test(c) || arabicDiacritics.test(c)) && rtlBuffer.length) {
- rtlBuffer[rtlBuffer.length - 1] += c;
- } else if (rtlRegex.test(c) || c.charCodeAt(0) >= 64336 && c.charCodeAt(0) <= 65023 || c.charCodeAt(0) >= 65136 && c.charCodeAt(0) <= 65279) {
- rtlBuffer.push(c);
- } else if (c === " " && rtlBuffer.length) {
+ if ((thaanaVowel.test(c2) || hebrewSign.test(c2) || arabicDiacritics.test(c2)) && rtlBuffer.length) {
+ rtlBuffer[rtlBuffer.length - 1] += c2;
+ } else if (rtlRegex.test(c2) || c2.charCodeAt(0) >= 64336 && c2.charCodeAt(0) <= 65023 || c2.charCodeAt(0) >= 65136 && c2.charCodeAt(0) <= 65279) {
+ rtlBuffer.push(c2);
+ } else if (c2 === " " && rtlBuffer.length) {
rtlBuffer = [rtlBuffer.reverse().join("") + " "];
} else {
- ret += rtlBuffer.reverse().join("") + c;
+ ret += rtlBuffer.reverse().join("") + c2;
rtlBuffer = [];
}
}
var _storage;
try {
_storage = localStorage;
- } catch (e) {
+ } catch (e3) {
}
_storage = _storage || (() => {
- let s = {};
+ let s2 = {};
return {
- getItem: (k) => s[k],
- setItem: (k, v) => s[k] = v,
- removeItem: (k) => delete s[k]
+ getItem: (k2) => s2[k2],
+ setItem: (k2, v2) => s2[k2] = v2,
+ removeItem: (k2) => delete s2[k2]
};
})();
var _listeners = {};
- function corePreferences(k, v) {
+ function corePreferences(k2, v2) {
try {
- if (v === void 0)
- return _storage.getItem(k);
- else if (v === null)
- _storage.removeItem(k);
+ if (v2 === void 0)
+ return _storage.getItem(k2);
+ else if (v2 === null)
+ _storage.removeItem(k2);
else
- _storage.setItem(k, v);
- if (_listeners[k]) {
- _listeners[k].forEach((handler) => handler(v));
+ _storage.setItem(k2, v2);
+ if (_listeners[k2]) {
+ _listeners[k2].forEach((handler) => handler(v2));
}
return true;
- } catch (e) {
+ } catch (e3) {
if (typeof console !== "undefined") {
console.error("localStorage quota exceeded");
}
return false;
}
}
- corePreferences.onChange = function(k, handler) {
- _listeners[k] = _listeners[k] || [];
- _listeners[k].push(handler);
+ corePreferences.onChange = function(k2, handler) {
+ _listeners[k2] = _listeners[k2] || [];
+ _listeners[k2].push(handler);
};
// modules/core/file_fetcher.js
var wmfSitematrixCdnUrl = "https://cdn.jsdelivr.net/npm/wmf-sitematrix@{version}/";
var nsiCdnUrl = "https://cdn.jsdelivr.net/npm/name-suggestion-index@{version}/";
var defaultOsmApiConnections = {
- "live": {
+ live: {
url: "https://www.openstreetmap.org",
client_id: "0tmNTmd0Jo1dQp4AUmMBLtGiD9YpMuXzHefitcuVStc",
client_secret: "BTlNrNxIPitHdL4sP2clHw5KLoee9aKkA7dQbc0Bj7Q"
},
- "dev": {
+ dev: {
url: "https://api06.dev.openstreetmap.org",
client_id: "Ee1wWJ6UlpERbF6BfTNOpwn0R8k_06mvMXdDUkeHMgw",
client_secret: "OnfWFC-JkZNHyYdr_viNn_h_RTZXRslKcUxllOXqf5g"
// package.json
var package_default = {
name: "iD",
- version: "2.25.2",
+ version: "2.27.1",
description: "A friendly editor for OpenStreetMap",
main: "dist/iD.min.js",
repository: "github:openstreetmap/iD",
clean: "shx rm -f dist/esbuild.json dist/*.js dist/*.map dist/*.css dist/img/*.svg",
dist: "run-p dist:**",
"dist:mapillary": "shx mkdir -p dist/mapillary-js && shx cp -R node_modules/mapillary-js/dist/* dist/mapillary-js/",
- "dist:pannellum": "shx mkdir -p dist/pannellum-streetside && shx cp -R node_modules/pannellum/build/* dist/pannellum-streetside/",
+ "dist:pannellum": "shx mkdir -p dist/pannellum && shx cp -R node_modules/pannellum/build/* dist/pannellum/",
"dist:min": "node config/esbuild.config.min.mjs",
"dist:svg:iD": 'svg-sprite --symbol --symbol-dest . --shape-id-generator "iD-%s" --symbol-sprite dist/img/iD-sprite.svg "svg/iD-sprite/**/*.svg"',
"dist:svg:community": 'svg-sprite --symbol --symbol-dest . --shape-id-generator "community-%s" --symbol-sprite dist/img/community-sprite.svg node_modules/osm-community-index/dist/img/*.svg',
"dist:svg:mapillary:signs": "svg-sprite --symbol --symbol-dest . --symbol-sprite dist/img/mapillary-sprite.svg node_modules/mapillary_sprite_source/package_signs/*.svg",
"dist:svg:mapillary:objects": "svg-sprite --symbol --symbol-dest . --symbol-sprite dist/img/mapillary-object-sprite.svg node_modules/mapillary_sprite_source/package_objects/*.svg",
"dist:svg:roentgen": 'svg-sprite --shape-id-generator "roentgen-%s" --shape-dim-width 16 --shape-dim-height 16 --symbol --symbol-dest . --symbol-sprite dist/img/roentgen-sprite.svg svg/roentgen/*.svg',
- "dist:svg:temaki": 'svg-sprite --symbol --symbol-dest . --shape-id-generator "temaki-%s" --symbol-sprite dist/img/temaki-sprite.svg node_modules/@ideditor/temaki/icons/*.svg',
+ "dist:svg:temaki": 'svg-sprite --symbol --symbol-dest . --shape-id-generator "temaki-%s" --symbol-sprite dist/img/temaki-sprite.svg node_modules/@rapideditor/temaki/icons/*.svg',
imagery: "node scripts/update_imagery.js",
- lint: "eslint scripts test/spec modules",
+ lint: "eslint config scripts test/spec modules --ext js,mjs",
"lint:fix": "eslint scripts test/spec modules --fix",
start: "run-s start:watch",
"start:single-build": "run-p build:js start:server",
translations: "node scripts/update_locales.js"
},
dependencies: {
- "@ideditor/country-coder": "~5.1.0",
- "@ideditor/location-conflation": "~1.1.0",
"@mapbox/geojson-area": "^0.2.2",
"@mapbox/sexagesimal": "1.2.0",
"@mapbox/vector-tile": "^1.3.1",
- "@tmcw/togeojson": "^5.2.1",
+ "@rapideditor/country-coder": "~5.2.0",
+ "@rapideditor/location-conflation": "~1.2.1",
+ "@tmcw/togeojson": "^5.8.1",
"@turf/bbox": "^6.0.0",
"@turf/bbox-clip": "^6.0.0",
- "abortcontroller-polyfill": "^1.4.0",
+ "abortcontroller-polyfill": "^1.7.5",
"aes-js": "^3.1.2",
"alif-toolkit": "^1.2.9",
- "core-js-bundle": "^3.19.0",
+ "core-js-bundle": "^3.32.0",
diacritics: "1.3.0",
+ exifr: "^7.1.3",
"fast-deep-equal": "~3.1.1",
"fast-json-stable-stringify": "2.1.0",
"lodash-es": "~4.17.15",
- marked: "~4.2.2",
+ marked: "~7.0.3",
"node-diff3": "~3.1.0",
- "osm-auth": "~2.0.0",
+ "osm-auth": "~2.2.0",
pannellum: "2.5.6",
pbf: "^3.2.1",
"polygon-clipping": "~0.15.1",
rbush: "3.0.1",
- "whatwg-fetch": "^3.4.1",
- "which-polygon": "2.2.0"
+ "whatwg-fetch": "^3.6.17",
+ "which-polygon": "2.2.1"
},
devDependencies: {
- "@fortawesome/fontawesome-svg-core": "~6.2.0",
- "@fortawesome/free-brands-svg-icons": "~6.2.0",
- "@fortawesome/free-regular-svg-icons": "~6.2.0",
- "@fortawesome/free-solid-svg-icons": "~6.2.0",
- "@ideditor/temaki": "~5.2.0",
- "@mapbox/maki": "^8.0.0",
- "@openstreetmap/id-tagging-schema": "^6.0.0",
- "@transifex/api": "^5.0.1",
- autoprefixer: "^10.0.1",
- chai: "^4.3.4",
+ "@fortawesome/fontawesome-svg-core": "~6.4.2",
+ "@fortawesome/free-brands-svg-icons": "~6.4.2",
+ "@fortawesome/free-regular-svg-icons": "~6.4.2",
+ "@fortawesome/free-solid-svg-icons": "~6.4.2",
+ "@mapbox/maki": "^8.0.1",
+ "@openstreetmap/id-tagging-schema": "^6.4.1",
+ "@rapideditor/temaki": "~5.4.0",
+ "@transifex/api": "^5.4.0",
+ autoprefixer: "^10.4.15",
+ chai: "^4.3.7",
chalk: "^4.1.2",
- "cldr-core": "^41.0.0",
- "cldr-localenames-full": "^41.0.0",
+ "cldr-core": "^43.0.0",
+ "cldr-localenames-full": "^43.1.0",
"concat-files": "^0.1.1",
- d3: "~7.8.1",
- dotenv: "^16.0.3",
+ d3: "~7.8.5",
+ dotenv: "^16.3.1",
"editor-layer-index": "github:osmlab/editor-layer-index#gh-pages",
- esbuild: "^0.17.10",
- "esbuild-visualizer": "^0.4.0",
- eslint: "^8.8.0",
+ esbuild: "^0.19.2",
+ "esbuild-visualizer": "^0.4.1",
+ eslint: "^8.47.0",
"fetch-mock": "^9.11.0",
gaze: "^1.1.3",
- glob: "^8.0.3",
+ glob: "^10.3.3",
happen: "^0.3.2",
"js-yaml": "^4.0.0",
"json-stringify-pretty-compact": "^3.0.0",
- karma: "^6.3.5",
- "karma-chrome-launcher": "^3.1.0",
+ karma: "^6.4.2",
+ "karma-chrome-launcher": "^3.2.0",
"karma-coverage": "2.1.1",
"karma-mocha": "^2.0.1",
"karma-remap-istanbul": "^0.6.0",
mapillary_sprite_source: "^1.8.0",
"mapillary-js": "4.1.1",
- minimist: "^1.2.3",
- mocha: "^10.0.0",
+ minimist: "^1.2.8",
+ mocha: "^10.2.0",
"name-suggestion-index": "~6.0",
- "node-fetch": "^2.6.1",
+ "node-fetch": "^2.6.12",
"npm-run-all": "^4.0.0",
- "osm-community-index": "~5.5.0",
- postcss: "^8.1.1",
+ "osm-community-index": "~5.5.4",
+ postcss: "^8.4.28",
"postcss-selector-prepend": "^0.5.0",
shelljs: "^0.8.0",
shx: "^0.3.0",
var _mainFileFetcher = coreFileFetcher();
function coreFileFetcher() {
const ociVersion = package_default.dependencies["osm-community-index"] || package_default.devDependencies["osm-community-index"];
- const v = (0, import_vparse.default)(ociVersion);
- const ociVersionMinor = `${v.major}.${v.minor}`;
+ const v2 = (0, import_vparse.default)(ociVersion);
+ const ociVersionMinor = `${v2.major}.${v2.minor}`;
const presetsVersion = package_default.devDependencies["@openstreetmap/id-tagging-schema"];
let _this = {};
let _inflight4 = {};
return _this;
}
- // node_modules/@ideditor/country-coder/dist/country-coder.mjs
+ // node_modules/@rapideditor/country-coder/dist/country-coder.mjs
var import_which_polygon = __toESM(require_which_polygon(), 1);
var borders_default = { type: "FeatureCollection", features: [
{ type: "Feature", properties: { wikidata: "Q21", nameEn: "England", aliases: ["GB-ENG"], country: "GB", groups: ["Q23666", "Q3336843", "154", "150", "UN"], driveSide: "left", roadSpeedUnit: "mph", roadHeightUnit: "ft", callingCodes: ["44"] }, geometry: { type: "MultiPolygon", coordinates: [[[[-6.03913, 51.13217], [-7.74976, 48.64773], [1.17405, 50.74239], [2.18458, 51.52087], [2.56575, 51.85301], [0.792, 57.56437], [-2.30613, 55.62698], [-2.17058, 55.45916], [-2.6095, 55.28488], [-2.63532, 55.19452], [-3.02906, 55.04606], [-3.09361, 54.94924], [-3.38407, 54.94278], [-4.1819, 54.57861], [-3.5082, 53.54318], [-3.08228, 53.25526], [-3.03675, 53.25092], [-2.92329, 53.19383], [-2.92022, 53.17685], [-2.98598, 53.15589], [-2.90649, 53.10964], [-2.87469, 53.12337], [-2.89131, 53.09374], [-2.83133, 52.99184], [-2.7251, 52.98389], [-2.72221, 52.92969], [-2.80549, 52.89428], [-2.85897, 52.94487], [-2.92401, 52.93836], [-2.97243, 52.9651], [-3.13576, 52.895], [-3.15744, 52.84947], [-3.16105, 52.79599], [-3.08734, 52.77504], [-3.01001, 52.76636], [-2.95581, 52.71794], [-3.01724, 52.72083], [-3.04398, 52.65435], [-3.13648, 52.58208], [-3.12926, 52.5286], [-3.09746, 52.53077], [-3.08662, 52.54811], [-3.00929, 52.57774], [-2.99701, 52.551], [-3.03603, 52.49969], [-3.13359, 52.49174], [-3.22971, 52.45344], [-3.22754, 52.42526], [-3.04687, 52.34504], [-2.95364, 52.3501], [-2.99701, 52.323], [-3.00785, 52.2753], [-3.09289, 52.20546], [-3.12638, 52.08114], [-2.97111, 51.90456], [-2.8818, 51.93196], [-2.78742, 51.88833], [-2.74277, 51.84367], [-2.66234, 51.83555], [-2.66336, 51.59504], [-3.20563, 51.31615], [-6.03913, 51.13217]]]] } },
{ type: "Feature", properties: { wikidata: "Q7835", nameEn: "Crimea", country: "RU", groups: ["151", "150", "UN"], level: "subterritory", callingCodes: ["7"] }, geometry: { type: "MultiPolygon", coordinates: [[[[33.5, 44], [36.4883, 45.0488], [36.475, 45.2411], [36.5049, 45.3136], [36.6545, 45.3417], [36.6645, 45.4514], [35.0498, 45.7683], [34.9601, 45.7563], [34.7991, 45.8101], [34.8015, 45.9005], [34.7548, 45.907], [34.6668, 45.9714], [34.6086, 45.9935], [34.5589, 45.9935], [34.5201, 45.951], [34.4873, 45.9427], [34.4415, 45.9599], [34.4122, 46.0025], [34.3391, 46.0611], [34.2511, 46.0532], [34.181, 46.068], [34.1293, 46.1049], [34.0731, 46.1177], [34.0527, 46.1084], [33.9155, 46.1594], [33.8523, 46.1986], [33.7972, 46.2048], [33.7405, 46.1855], [33.646, 46.2303], [33.6152, 46.2261], [33.6385, 46.1415], [33.6147, 46.1356], [33.5732, 46.1032], [33.5909, 46.0601], [33.5597, 46.0307], [31.5, 45.5], [33.5, 44]]]] } },
{ type: "Feature", properties: { wikidata: "Q12837", nameEn: "Iberia", level: "sharedLandform" }, geometry: null },
{ type: "Feature", properties: { wikidata: "Q14056", nameEn: "Jan Mayen", aliases: ["NO-22"], country: "NO", groups: ["SJ", "154", "150", "UN"], level: "subterritory" }, geometry: { type: "MultiPolygon", coordinates: [[[[-9.18243, 72.23144], [-10.71459, 70.09565], [-5.93364, 70.76368], [-9.18243, 72.23144]]]] } },
- { type: "Feature", properties: { wikidata: "Q19188", nameEn: "Mainland China", country: "CN", groups: ["030", "142", "UN"], callingCodes: ["86"] }, geometry: { type: "MultiPolygon", coordinates: [[[[125.6131, 53.07229], [125.17522, 53.20225], [124.46078, 53.21881], [123.86158, 53.49391], [123.26989, 53.54843], [122.85966, 53.47395], [122.35063, 53.49565], [121.39213, 53.31888], [120.85633, 53.28499], [120.0451, 52.7359], [120.04049, 52.58773], [120.46454, 52.63811], [120.71673, 52.54099], [120.61346, 52.32447], [120.77337, 52.20805], [120.65907, 51.93544], [120.10963, 51.671], [119.13553, 50.37412], [119.38598, 50.35162], [119.27996, 50.13348], [119.11003, 50.00276], [118.61623, 49.93809], [117.82343, 49.52696], [117.48208, 49.62324], [117.27597, 49.62544], [116.71193, 49.83813], [116.03781, 48.87014], [116.06565, 48.81716], [115.78876, 48.51781], [115.811, 48.25699], [115.52082, 48.15367], [115.57128, 47.91988], [115.94296, 47.67741], [116.21879, 47.88505], [116.4465, 47.83662], [116.67405, 47.89039], [116.9723, 47.87285], [117.37875, 47.63627], [117.50181, 47.77216], [117.80196, 48.01661], [118.03676, 48.00982], [118.11009, 48.04], [118.22677, 48.03853], [118.29654, 48.00246], [118.55766, 47.99277], [118.7564, 47.76947], [119.12343, 47.66458], [119.13995, 47.53997], [119.35892, 47.48104], [119.31964, 47.42617], [119.54918, 47.29505], [119.56019, 47.24874], [119.62403, 47.24575], [119.71209, 47.19192], [119.85518, 46.92196], [119.91242, 46.90091], [119.89261, 46.66423], [119.80455, 46.67631], [119.77373, 46.62947], [119.68127, 46.59015], [119.65265, 46.62342], [119.42827, 46.63783], [119.32827, 46.61433], [119.24978, 46.64761], [119.10448, 46.65516], [119.00541, 46.74273], [118.92616, 46.72765], [118.89974, 46.77139], [118.8337, 46.77742], [118.78747, 46.68689], [118.30534, 46.73519], [117.69554, 46.50991], [117.60748, 46.59771], [117.41782, 46.57862], [117.36609, 46.36335], [116.83166, 46.38637], [116.75551, 46.33083], [116.58612, 46.30211], [116.26678, 45.96479], [116.24012, 45.8778], [116.27366, 45.78637], [116.16989, 45.68603], [115.60329, 45.44717], [114.94546, 45.37377], [114.74612, 45.43585], [114.54801, 45.38337], [114.5166, 45.27189], [113.70918, 44.72891], [112.74662, 44.86297], [112.4164, 45.06858], [111.98695, 45.09074], [111.76275, 44.98032], [111.40498, 44.3461], [111.96289, 43.81596], [111.93776, 43.68709], [111.79758, 43.6637], [111.59087, 43.51207], [111.0149, 43.3289], [110.4327, 42.78293], [110.08401, 42.6411], [109.89402, 42.63111], [109.452, 42.44842], [109.00679, 42.45302], [108.84489, 42.40246], [107.57258, 42.40898], [107.49681, 42.46221], [107.29755, 42.41395], [107.24774, 42.36107], [106.76517, 42.28741], [105.0123, 41.63188], [104.51667, 41.66113], [104.52258, 41.8706], [103.92804, 41.78246], [102.72403, 42.14675], [102.07645, 42.22519], [101.80515, 42.50074], [100.84979, 42.67087], [100.33297, 42.68231], [99.50671, 42.56535], [97.1777, 42.7964], [96.37926, 42.72055], [96.35658, 42.90363], [95.89543, 43.2528], [95.52594, 43.99353], [95.32891, 44.02407], [95.39772, 44.2805], [95.01191, 44.25274], [94.71959, 44.35284], [94.10003, 44.71016], [93.51161, 44.95964], [91.64048, 45.07408], [90.89169, 45.19667], [90.65114, 45.49314], [90.70907, 45.73437], [91.03026, 46.04194], [90.99672, 46.14207], [90.89639, 46.30711], [91.07696, 46.57315], [91.0147, 46.58171], [91.03649, 46.72916], [90.84035, 46.99525], [90.76108, 46.99399], [90.48542, 47.30438], [90.48854, 47.41826], [90.33598, 47.68303], [90.10871, 47.7375], [90.06512, 47.88177], [89.76624, 47.82745], [89.55453, 48.0423], [89.0711, 47.98528], [88.93186, 48.10263], [88.8011, 48.11302], [88.58316, 48.21893], [88.58939, 48.34531], [87.96361, 48.58478], [88.0788, 48.71436], [87.73822, 48.89582], [87.88171, 48.95853], [87.81333, 49.17354], [87.48983, 49.13794], [87.478, 49.07403], [87.28386, 49.11626], [86.87238, 49.12432], [86.73568, 48.99918], [86.75343, 48.70331], [86.38069, 48.46064], [85.73581, 48.3939], [85.5169, 48.05493], [85.61067, 47.49753], [85.69696, 47.2898], [85.54294, 47.06171], [85.22443, 47.04816], [84.93995, 46.87399], [84.73077, 47.01394], [83.92184, 46.98912], [83.04622, 47.19053], [82.21792, 45.56619], [82.58474, 45.40027], [82.51374, 45.1755], [81.73278, 45.3504], [80.11169, 45.03352], [79.8987, 44.89957], [80.38384, 44.63073], [80.40229, 44.23319], [80.40031, 44.10986], [80.75156, 43.44948], [80.69718, 43.32589], [80.77771, 43.30065], [80.78817, 43.14235], [80.62913, 43.141], [80.3735, 43.01557], [80.58999, 42.9011], [80.38169, 42.83142], [80.26886, 42.8366], [80.16892, 42.61137], [80.26841, 42.23797], [80.17807, 42.21166], [80.17842, 42.03211], [79.92977, 42.04113], [78.3732, 41.39603], [78.15757, 41.38565], [78.12873, 41.23091], [77.81287, 41.14307], [77.76206, 41.01574], [77.52723, 41.00227], [77.3693, 41.0375], [77.28004, 41.0033], [76.99302, 41.0696], [76.75681, 40.95354], [76.5261, 40.46114], [76.33659, 40.3482], [75.96168, 40.38064], [75.91361, 40.2948], [75.69663, 40.28642], [75.5854, 40.66874], [75.22834, 40.45382], [75.08243, 40.43945], [74.82013, 40.52197], [74.78168, 40.44886], [74.85996, 40.32857], [74.69875, 40.34668], [74.35063, 40.09742], [74.25533, 40.13191], [73.97049, 40.04378], [73.83006, 39.76136], [73.9051, 39.75073], [73.92354, 39.69565], [73.94683, 39.60733], [73.87018, 39.47879], [73.59831, 39.46425], [73.59241, 39.40843], [73.5004, 39.38402], [73.55396, 39.3543], [73.54572, 39.27567], [73.60638, 39.24534], [73.75823, 39.023], [73.81728, 39.04007], [73.82964, 38.91517], [73.7445, 38.93867], [73.7033, 38.84782], [73.80656, 38.66449], [73.79806, 38.61106], [73.97933, 38.52945], [74.17022, 38.65504], [74.51217, 38.47034], [74.69619, 38.42947], [74.69894, 38.22155], [74.80331, 38.19889], [74.82665, 38.07359], [74.9063, 38.03033], [74.92416, 37.83428], [75.00935, 37.77486], [74.8912, 37.67576], [74.94338, 37.55501], [75.06011, 37.52779], [75.15899, 37.41443], [75.09719, 37.37297], [75.12328, 37.31839], [74.88887, 37.23275], [74.80605, 37.21565], [74.49981, 37.24518], [74.56453, 37.03023], [75.13839, 37.02622], [75.40481, 36.95382], [75.45562, 36.71971], [75.72737, 36.7529], [75.92391, 36.56986], [76.0324, 36.41198], [76.00906, 36.17511], [75.93028, 36.13136], [76.15325, 35.9264], [76.14913, 35.82848], [76.33453, 35.84296], [76.50961, 35.8908], [76.77323, 35.66062], [76.84539, 35.67356], [76.96624, 35.5932], [77.44277, 35.46132], [77.70232, 35.46244], [77.80532, 35.52058], [78.11664, 35.48022], [78.03466, 35.3785], [78.00033, 35.23954], [78.22692, 34.88771], [78.18435, 34.7998], [78.27781, 34.61484], [78.54964, 34.57283], [78.56475, 34.50835], [78.74465, 34.45174], [79.05364, 34.32482], [78.99802, 34.3027], [78.91769, 34.15452], [78.66225, 34.08858], [78.65657, 34.03195], [78.73367, 34.01121], [78.77349, 33.73871], [78.67599, 33.66445], [78.73636, 33.56521], [79.15252, 33.17156], [79.14016, 33.02545], [79.46562, 32.69668], [79.26768, 32.53277], [79.13174, 32.47766], [79.0979, 32.38051], [78.99322, 32.37948], [78.96713, 32.33655], [78.7831, 32.46873], [78.73916, 32.69438], [78.38897, 32.53938], [78.4645, 32.45367], [78.49609, 32.2762], [78.68754, 32.10256], [78.74404, 32.00384], [78.78036, 31.99478], [78.69933, 31.78723], [78.84516, 31.60631], [78.71032, 31.50197], [78.77898, 31.31209], [78.89344, 31.30481], [79.01931, 31.42817], [79.14016, 31.43403], [79.30694, 31.17357], [79.59884, 30.93943], [79.93255, 30.88288], [80.20721, 30.58541], [80.54504, 30.44936], [80.83343, 30.32023], [81.03953, 30.20059], [81.12842, 30.01395], [81.24362, 30.0126], [81.29032, 30.08806], [81.2623, 30.14596], [81.33355, 30.15303], [81.39928, 30.21862], [81.41018, 30.42153], [81.5459, 30.37688], [81.62033, 30.44703], [81.99082, 30.33423], [82.10135, 30.35439], [82.10757, 30.23745], [82.19475, 30.16884], [82.16984, 30.0692], [82.38622, 30.02608], [82.5341, 29.9735], [82.73024, 29.81695], [83.07116, 29.61957], [83.28131, 29.56813], [83.44787, 29.30513], [83.63156, 29.16249], [83.82303, 29.30513], [83.97559, 29.33091], [84.18107, 29.23451], [84.24801, 29.02783], [84.2231, 28.89571], [84.47528, 28.74023], [84.62317, 28.73887], [84.85511, 28.58041], [85.06059, 28.68562], [85.19135, 28.62825], [85.18668, 28.54076], [85.10729, 28.34092], [85.38127, 28.28336], [85.4233, 28.32996], [85.59765, 28.30529], [85.60854, 28.25045], [85.69105, 28.38475], [85.71907, 28.38064], [85.74864, 28.23126], [85.84672, 28.18187], [85.90743, 28.05144], [85.97813, 27.99023], [85.94946, 27.9401], [86.06309, 27.90021], [86.12069, 27.93047], [86.08333, 28.02121], [86.088, 28.09264], [86.18607, 28.17364], [86.22966, 27.9786], [86.42736, 27.91122], [86.51609, 27.96623], [86.56265, 28.09569], [86.74181, 28.10638], [86.75582, 28.04182], [87.03757, 27.94835], [87.11696, 27.84104], [87.56996, 27.84517], [87.72718, 27.80938], [87.82681, 27.95248], [88.13378, 27.88015], [88.1278, 27.95417], [88.25332, 27.9478], [88.54858, 28.06057], [88.63235, 28.12356], [88.83559, 28.01936], [88.88091, 27.85192], [88.77517, 27.45415], [88.82981, 27.38814], [88.91901, 27.32483], [88.93678, 27.33777], [88.96947, 27.30319], [89.00216, 27.32532], [88.95355, 27.4106], [88.97213, 27.51671], [89.0582, 27.60985], [89.12825, 27.62502], [89.59525, 28.16433], [89.79762, 28.23979], [90.13387, 28.19178], [90.58842, 28.02838], [90.69894, 28.07784], [91.20019, 27.98715], [91.25779, 28.07509], [91.46327, 28.0064], [91.48973, 27.93903], [91.5629, 27.84823], [91.6469, 27.76358], [91.84722, 27.76325], [91.87057, 27.7195], [92.27432, 27.89077], [92.32101, 27.79363], [92.42538, 27.80092], [92.7275, 27.98662], [92.73025, 28.05814], [92.65472, 28.07632], [92.67486, 28.15018], [92.93075, 28.25671], [93.14635, 28.37035], [93.18069, 28.50319], [93.44621, 28.67189], [93.72797, 28.68821], [94.35897, 29.01965], [94.2752, 29.11687], [94.69318, 29.31739], [94.81353, 29.17804], [95.0978, 29.14446], [95.11291, 29.09527], [95.2214, 29.10727], [95.26122, 29.07727], [95.3038, 29.13847], [95.41091, 29.13007], [95.50842, 29.13487], [95.72086, 29.20797], [95.75149, 29.32063], [95.84899, 29.31464], [96.05361, 29.38167], [96.31316, 29.18643], [96.18682, 29.11087], [96.20467, 29.02325], [96.3626, 29.10607], [96.61391, 28.72742], [96.40929, 28.51526], [96.48895, 28.42955], [96.6455, 28.61657], [96.85561, 28.4875], [96.88445, 28.39452], [96.98882, 28.32564], [97.1289, 28.3619], [97.34547, 28.21385], [97.41729, 28.29783], [97.47085, 28.2688], [97.50518, 28.49716], [97.56835, 28.55628], [97.70705, 28.5056], [97.79632, 28.33168], [97.90069, 28.3776], [98.15337, 28.12114], [98.13964, 27.9478], [98.32641, 27.51385], [98.42529, 27.55404], [98.43353, 27.67086], [98.69582, 27.56499], [98.7333, 26.85615], [98.77547, 26.61994], [98.72741, 26.36183], [98.67797, 26.24487], [98.7329, 26.17218], [98.66884, 26.09165], [98.63128, 26.15492], [98.57085, 26.11547], [98.60763, 26.01512], [98.70818, 25.86241], [98.63128, 25.79937], [98.54064, 25.85129], [98.40606, 25.61129], [98.31268, 25.55307], [98.25774, 25.6051], [98.16848, 25.62739], [98.18084, 25.56298], [98.12591, 25.50722], [98.14925, 25.41547], [97.92541, 25.20815], [97.83614, 25.2715], [97.77023, 25.11492], [97.72216, 25.08508], [97.72903, 24.91332], [97.79949, 24.85655], [97.76481, 24.8289], [97.73127, 24.83015], [97.70181, 24.84557], [97.64354, 24.79171], [97.56648, 24.76475], [97.56383, 24.75535], [97.5542, 24.74943], [97.54675, 24.74202], [97.56525, 24.72838], [97.56286, 24.54535], [97.52757, 24.43748], [97.60029, 24.4401], [97.66998, 24.45288], [97.7098, 24.35658], [97.65624, 24.33781], [97.66723, 24.30027], [97.71941, 24.29652], [97.76799, 24.26365], [97.72998, 24.2302], [97.72799, 24.18883], [97.75305, 24.16902], [97.72903, 24.12606], [97.62363, 24.00506], [97.5247, 23.94032], [97.64667, 23.84574], [97.72302, 23.89288], [97.79456, 23.94836], [97.79416, 23.95663], [97.84328, 23.97603], [97.86545, 23.97723], [97.88811, 23.97446], [97.8955, 23.97758], [97.89676, 23.97931], [97.89683, 23.98389], [97.88814, 23.98605], [97.88414, 23.99405], [97.88616, 24.00463], [97.90998, 24.02094], [97.93951, 24.01953], [97.98691, 24.03897], [97.99583, 24.04932], [98.04709, 24.07616], [98.05302, 24.07408], [98.05671, 24.07961], [98.0607, 24.07812], [98.06703, 24.08028], [98.07806, 24.07988], [98.20666, 24.11406], [98.54476, 24.13119], [98.59256, 24.08371], [98.85319, 24.13042], [98.87998, 24.15624], [98.89632, 24.10612], [98.67797, 23.9644], [98.68209, 23.80492], [98.79607, 23.77947], [98.82933, 23.72921], [98.81775, 23.694], [98.88396, 23.59555], [98.80294, 23.5345], [98.82877, 23.47908], [98.87683, 23.48995], [98.92104, 23.36946], [98.87573, 23.33038], [98.93958, 23.31414], [98.92515, 23.29535], [98.88597, 23.18656], [99.05975, 23.16382], [99.04601, 23.12215], [99.25741, 23.09025], [99.34127, 23.13099], [99.52214, 23.08218], [99.54218, 22.90014], [99.43537, 22.94086], [99.45654, 22.85726], [99.31243, 22.73893], [99.38247, 22.57544], [99.37972, 22.50188], [99.28771, 22.4105], [99.17318, 22.18025], [99.19176, 22.16983], [99.1552, 22.15874], [99.33166, 22.09656], [99.47585, 22.13345], [99.85351, 22.04183], [99.96612, 22.05965], [99.99084, 21.97053], [99.94003, 21.82782], [99.98654, 21.71064], [100.04956, 21.66843], [100.12679, 21.70539], [100.17486, 21.65306], [100.10757, 21.59945], [100.12542, 21.50365], [100.1625, 21.48704], [100.18447, 21.51898], [100.25863, 21.47043], [100.35201, 21.53176], [100.42892, 21.54325], [100.4811, 21.46148], [100.57861, 21.45637], [100.72143, 21.51898], [100.87265, 21.67396], [101.11744, 21.77659], [101.15156, 21.56129], [101.2124, 21.56422], [101.19349, 21.41959], [101.26912, 21.36482], [101.2229, 21.23271], [101.29326, 21.17254], [101.54563, 21.25668], [101.6068, 21.23329], [101.59491, 21.18621], [101.60886, 21.17947], [101.66977, 21.20004], [101.70548, 21.14911], [101.7622, 21.14813], [101.79266, 21.19025], [101.76745, 21.21571], [101.83887, 21.20983], [101.84412, 21.25291], [101.74014, 21.30967], [101.74224, 21.48276], [101.7727, 21.51794], [101.7475, 21.5873], [101.80001, 21.57461], [101.83257, 21.61562], [101.74555, 21.72852], [101.7791, 21.83019], [101.62566, 21.96574], [101.57525, 22.13026], [101.60675, 22.13513], [101.53638, 22.24794], [101.56789, 22.28876], [101.61306, 22.27515], [101.68973, 22.46843], [101.7685, 22.50337], [101.86828, 22.38397], [101.90714, 22.38688], [101.91344, 22.44417], [101.98487, 22.42766], [102.03633, 22.46164], [102.1245, 22.43372], [102.14099, 22.40092], [102.16621, 22.43336], [102.26428, 22.41321], [102.25339, 22.4607], [102.41061, 22.64184], [102.38415, 22.67919], [102.42618, 22.69212], [102.46665, 22.77108], [102.51802, 22.77969], [102.57095, 22.7036], [102.60675, 22.73376], [102.8636, 22.60735], [102.9321, 22.48659], [103.0722, 22.44775], [103.07843, 22.50097], [103.17961, 22.55705], [103.15782, 22.59873], [103.18895, 22.64471], [103.28079, 22.68063], [103.32282, 22.8127], [103.43179, 22.75816], [103.43646, 22.70648], [103.52675, 22.59155], [103.57812, 22.65764], [103.56255, 22.69499], [103.64506, 22.79979], [103.87904, 22.56683], [103.93286, 22.52703], [103.94513, 22.52553], [103.95191, 22.5134], [103.96352, 22.50584], [103.96783, 22.51173], [103.97384, 22.50634], [103.99247, 22.51958], [104.01088, 22.51823], [104.03734, 22.72945], [104.11384, 22.80363], [104.27084, 22.8457], [104.25683, 22.76534], [104.35593, 22.69353], [104.47225, 22.75813], [104.58122, 22.85571], [104.60457, 22.81841], [104.65283, 22.83419], [104.72755, 22.81984], [104.77114, 22.90017], [104.84942, 22.93631], [104.86765, 22.95178], [104.8334, 23.01484], [104.79478, 23.12934], [104.87382, 23.12854], [104.87992, 23.17141], [104.91435, 23.18666], [104.9486, 23.17235], [104.96532, 23.20463], [104.98712, 23.19176], [105.07002, 23.26248], [105.11672, 23.25247], [105.17276, 23.28679], [105.22569, 23.27249], [105.32376, 23.39684], [105.40782, 23.28107], [105.42805, 23.30824], [105.49966, 23.20669], [105.56037, 23.16806], [105.57594, 23.075], [105.72382, 23.06641], [105.8726, 22.92756], [105.90119, 22.94168], [105.99568, 22.94178], [106.00179, 22.99049], [106.19705, 22.98475], [106.27022, 22.87722], [106.34961, 22.86718], [106.49749, 22.91164], [106.51306, 22.94891], [106.55976, 22.92311], [106.60179, 22.92884], [106.6516, 22.86862], [106.6734, 22.89587], [106.71387, 22.88296], [106.71128, 22.85982], [106.78422, 22.81532], [106.81271, 22.8226], [106.83685, 22.8098], [106.82404, 22.7881], [106.76293, 22.73491], [106.72321, 22.63606], [106.71698, 22.58432], [106.65316, 22.5757], [106.61269, 22.60301], [106.58395, 22.474], [106.55665, 22.46498], [106.57221, 22.37], [106.55976, 22.34841], [106.6516, 22.33977], [106.69986, 22.22309], [106.67495, 22.1885], [106.6983, 22.15102], [106.70142, 22.02409], [106.68274, 21.99811], [106.69276, 21.96013], [106.72551, 21.97923], [106.74345, 22.00965], [106.81038, 21.97934], [106.9178, 21.97357], [106.92714, 21.93459], [106.97228, 21.92592], [106.99252, 21.95191], [107.05634, 21.92303], [107.06101, 21.88982], [107.00964, 21.85948], [107.02615, 21.81981], [107.10771, 21.79879], [107.20734, 21.71493], [107.24625, 21.7077], [107.29296, 21.74674], [107.35834, 21.6672], [107.35989, 21.60063], [107.38636, 21.59774], [107.41593, 21.64839], [107.47197, 21.6672], [107.49532, 21.62958], [107.49065, 21.59774], [107.54047, 21.5934], [107.56537, 21.61945], [107.66967, 21.60787], [107.80355, 21.66141], [107.86114, 21.65128], [107.90006, 21.5905], [107.92652, 21.58906], [107.95232, 21.5388], [107.96774, 21.53601], [107.97074, 21.54072], [107.97383, 21.53961], [107.97932, 21.54503], [108.02926, 21.54997], [108.0569, 21.53604], [108.10003, 21.47338], [108.00365, 17.98159], [111.60491, 13.57105], [118.41371, 24.06775], [118.11703, 24.39734], [118.28244, 24.51231], [118.35291, 24.51645], [118.42453, 24.54644], [118.56434, 24.49266], [120.49232, 25.22863], [121.03532, 26.8787], [123.5458, 31.01942], [122.29378, 31.76513], [122.80525, 33.30571], [123.85601, 37.49093], [123.90497, 38.79949], [124.17532, 39.8232], [124.23201, 39.9248], [124.35029, 39.95639], [124.37089, 40.03004], [124.3322, 40.05573], [124.38556, 40.11047], [124.40719, 40.13655], [124.86913, 40.45387], [125.71172, 40.85223], [125.76869, 40.87908], [126.00335, 40.92835], [126.242, 41.15454], [126.53189, 41.35206], [126.60631, 41.65565], [126.90729, 41.79955], [127.17841, 41.59714], [127.29712, 41.49473], [127.92943, 41.44291], [128.02633, 41.42103], [128.03311, 41.39232], [128.12967, 41.37931], [128.18546, 41.41279], [128.20061, 41.40895], [128.30716, 41.60322], [128.15119, 41.74568], [128.04487, 42.01769], [128.94007, 42.03537], [128.96068, 42.06657], [129.15178, 42.17224], [129.22285, 42.26491], [129.22423, 42.3553], [129.28541, 42.41574], [129.42882, 42.44702], [129.54701, 42.37254], [129.60482, 42.44461], [129.72541, 42.43739], [129.75294, 42.59409], [129.77183, 42.69435], [129.7835, 42.76521], [129.80719, 42.79218], [129.83277, 42.86746], [129.85261, 42.96494], [129.8865, 43.00395], [129.95082, 43.01051], [129.96409, 42.97306], [130.12957, 42.98361], [130.09764, 42.91425], [130.26095, 42.9027], [130.23068, 42.80125], [130.2385, 42.71127], [130.41826, 42.6011], [130.44361, 42.54849], [130.50123, 42.61636], [130.55143, 42.52158], [130.62107, 42.58413], [130.56576, 42.68925], [130.40213, 42.70788], [130.44361, 42.76205], [130.66524, 42.84753], [131.02438, 42.86518], [131.02668, 42.91246], [131.135, 42.94114], [131.10274, 43.04734], [131.20414, 43.13654], [131.19031, 43.21385], [131.30324, 43.39498], [131.29402, 43.46695], [131.19492, 43.53047], [131.21105, 43.82383], [131.26176, 43.94011], [131.23583, 43.96085], [131.25484, 44.03131], [131.30365, 44.04262], [131.1108, 44.70266], [130.95639, 44.85154], [131.48415, 44.99513], [131.68466, 45.12374], [131.66852, 45.2196], [131.76532, 45.22609], [131.86903, 45.33636], [131.99417, 45.2567], [132.83978, 45.05916], [132.96373, 45.0212], [133.12293, 45.1332], [133.09279, 45.25693], [133.19419, 45.51913], [133.41083, 45.57723], [133.48457, 45.86203], [133.60442, 45.90053], [133.67569, 45.9759], [133.72695, 46.05576], [133.68047, 46.14697], [133.88097, 46.25066], [133.91496, 46.4274], [133.84104, 46.46681], [134.03538, 46.75668], [134.20016, 47.33458], [134.50898, 47.4812], [134.7671, 47.72051], [134.55508, 47.98651], [134.67098, 48.1564], [134.75328, 48.36763], [134.49516, 48.42884], [132.66989, 47.96491], [132.57309, 47.71741], [131.90448, 47.68011], [131.2635, 47.73325], [131.09871, 47.6852], [130.95985, 47.6957], [130.90915, 47.90623], [130.65103, 48.10052], [130.84462, 48.30942], [130.52147, 48.61745], [130.66946, 48.88251], [130.43232, 48.90844], [130.2355, 48.86741], [129.85416, 49.11067], [129.67598, 49.29596], [129.50685, 49.42398], [129.40398, 49.44194], [129.35317, 49.3481], [129.23232, 49.40353], [129.11153, 49.36813], [128.72896, 49.58676], [127.83476, 49.5748], [127.53516, 49.84306], [127.49299, 50.01251], [127.60515, 50.23503], [127.37384, 50.28393], [127.36009, 50.43787], [127.28765, 50.46585], [127.36335, 50.58306], [127.28165, 50.72075], [127.14586, 50.91152], [126.93135, 51.0841], [126.90369, 51.3238], [126.68349, 51.70607], [126.44606, 51.98254], [126.558, 52.13738], [125.6131, 53.07229]], [[113.56865, 22.20973], [113.57123, 22.20416], [113.60504, 22.20464], [113.63011, 22.10782], [113.57191, 22.07696], [113.54839, 22.10909], [113.54942, 22.14519], [113.54093, 22.15497], [113.52659, 22.18271], [113.53552, 22.20607], [113.53301, 22.21235], [113.53591, 22.21369], [113.54093, 22.21314], [113.54333, 22.21688], [113.5508, 22.21672], [113.56865, 22.20973]], [[114.50148, 22.15017], [113.92195, 22.13873], [113.83338, 22.1826], [113.81621, 22.2163], [113.86771, 22.42972], [114.03113, 22.5065], [114.05438, 22.5026], [114.05729, 22.51104], [114.06272, 22.51617], [114.07267, 22.51855], [114.07817, 22.52997], [114.08606, 22.53276], [114.09048, 22.53716], [114.09692, 22.53435], [114.1034, 22.5352], [114.11181, 22.52878], [114.11656, 22.53415], [114.12665, 22.54003], [114.13823, 22.54319], [114.1482, 22.54091], [114.15123, 22.55163], [114.1597, 22.56041], [114.17247, 22.55944], [114.18338, 22.55444], [114.20655, 22.55706], [114.22185, 22.55343], [114.22888, 22.5436], [114.25154, 22.55977], [114.44998, 22.55977], [114.50148, 22.15017]]]] } },
+ { type: "Feature", properties: { wikidata: "Q19188", nameEn: "Mainland China", country: "CN", groups: ["030", "142", "UN"], callingCodes: ["86"] }, geometry: { type: "MultiPolygon", coordinates: [[[[125.6131, 53.07229], [125.17522, 53.20225], [124.46078, 53.21881], [123.86158, 53.49391], [123.26989, 53.54843], [122.85966, 53.47395], [122.35063, 53.49565], [121.39213, 53.31888], [120.85633, 53.28499], [120.0451, 52.7359], [120.04049, 52.58773], [120.46454, 52.63811], [120.71673, 52.54099], [120.61346, 52.32447], [120.77337, 52.20805], [120.65907, 51.93544], [120.10963, 51.671], [119.13553, 50.37412], [119.38598, 50.35162], [119.27996, 50.13348], [119.11003, 50.00276], [118.61623, 49.93809], [117.82343, 49.52696], [117.48208, 49.62324], [117.27597, 49.62544], [116.71193, 49.83813], [116.03781, 48.87014], [116.06565, 48.81716], [115.78876, 48.51781], [115.811, 48.25699], [115.52082, 48.15367], [115.57128, 47.91988], [115.94296, 47.67741], [116.21879, 47.88505], [116.4465, 47.83662], [116.67405, 47.89039], [116.9723, 47.87285], [117.37875, 47.63627], [117.50181, 47.77216], [117.80196, 48.01661], [118.03676, 48.00982], [118.11009, 48.04], [118.22677, 48.03853], [118.29654, 48.00246], [118.55766, 47.99277], [118.7564, 47.76947], [119.12343, 47.66458], [119.13995, 47.53997], [119.35892, 47.48104], [119.31964, 47.42617], [119.54918, 47.29505], [119.56019, 47.24874], [119.62403, 47.24575], [119.71209, 47.19192], [119.85518, 46.92196], [119.91242, 46.90091], [119.89261, 46.66423], [119.80455, 46.67631], [119.77373, 46.62947], [119.68127, 46.59015], [119.65265, 46.62342], [119.42827, 46.63783], [119.32827, 46.61433], [119.24978, 46.64761], [119.10448, 46.65516], [119.00541, 46.74273], [118.92616, 46.72765], [118.89974, 46.77139], [118.8337, 46.77742], [118.78747, 46.68689], [118.30534, 46.73519], [117.69554, 46.50991], [117.60748, 46.59771], [117.41782, 46.57862], [117.36609, 46.36335], [116.83166, 46.38637], [116.75551, 46.33083], [116.58612, 46.30211], [116.26678, 45.96479], [116.24012, 45.8778], [116.27366, 45.78637], [116.16989, 45.68603], [115.60329, 45.44717], [114.94546, 45.37377], [114.74612, 45.43585], [114.54801, 45.38337], [114.5166, 45.27189], [113.70918, 44.72891], [112.74662, 44.86297], [112.4164, 45.06858], [111.98695, 45.09074], [111.76275, 44.98032], [111.40498, 44.3461], [111.96289, 43.81596], [111.93776, 43.68709], [111.79758, 43.6637], [111.59087, 43.51207], [111.0149, 43.3289], [110.4327, 42.78293], [110.08401, 42.6411], [109.89402, 42.63111], [109.452, 42.44842], [109.00679, 42.45302], [108.84489, 42.40246], [107.57258, 42.40898], [107.49681, 42.46221], [107.29755, 42.41395], [107.24774, 42.36107], [106.76517, 42.28741], [105.0123, 41.63188], [104.51667, 41.66113], [104.52258, 41.8706], [103.92804, 41.78246], [102.72403, 42.14675], [102.07645, 42.22519], [101.80515, 42.50074], [100.84979, 42.67087], [100.33297, 42.68231], [99.50671, 42.56535], [97.1777, 42.7964], [96.37926, 42.72055], [96.35658, 42.90363], [95.89543, 43.2528], [95.52594, 43.99353], [95.32891, 44.02407], [95.39772, 44.2805], [95.01191, 44.25274], [94.71959, 44.35284], [94.10003, 44.71016], [93.51161, 44.95964], [91.64048, 45.07408], [90.89169, 45.19667], [90.65114, 45.49314], [90.70907, 45.73437], [91.03026, 46.04194], [90.99672, 46.14207], [90.89639, 46.30711], [91.07696, 46.57315], [91.0147, 46.58171], [91.03649, 46.72916], [90.84035, 46.99525], [90.76108, 46.99399], [90.48542, 47.30438], [90.48854, 47.41826], [90.33598, 47.68303], [90.10871, 47.7375], [90.06512, 47.88177], [89.76624, 47.82745], [89.55453, 48.0423], [89.0711, 47.98528], [88.93186, 48.10263], [88.8011, 48.11302], [88.58316, 48.21893], [88.58939, 48.34531], [87.96361, 48.58478], [88.0788, 48.71436], [87.73822, 48.89582], [87.88171, 48.95853], [87.81333, 49.17354], [87.48983, 49.13794], [87.478, 49.07403], [87.28386, 49.11626], [86.87238, 49.12432], [86.73568, 48.99918], [86.75343, 48.70331], [86.38069, 48.46064], [85.73581, 48.3939], [85.5169, 48.05493], [85.61067, 47.49753], [85.69696, 47.2898], [85.54294, 47.06171], [85.22443, 47.04816], [84.93995, 46.87399], [84.73077, 47.01394], [83.92184, 46.98912], [83.04622, 47.19053], [82.21792, 45.56619], [82.58474, 45.40027], [82.51374, 45.1755], [81.73278, 45.3504], [80.11169, 45.03352], [79.8987, 44.89957], [80.38384, 44.63073], [80.40229, 44.23319], [80.40031, 44.10986], [80.75156, 43.44948], [80.69718, 43.32589], [80.77771, 43.30065], [80.78817, 43.14235], [80.62913, 43.141], [80.3735, 43.01557], [80.58999, 42.9011], [80.38169, 42.83142], [80.26886, 42.8366], [80.16892, 42.61137], [80.26841, 42.23797], [80.17807, 42.21166], [80.17842, 42.03211], [79.92977, 42.04113], [78.3732, 41.39603], [78.15757, 41.38565], [78.12873, 41.23091], [77.81287, 41.14307], [77.76206, 41.01574], [77.52723, 41.00227], [77.3693, 41.0375], [77.28004, 41.0033], [76.99302, 41.0696], [76.75681, 40.95354], [76.5261, 40.46114], [76.33659, 40.3482], [75.96168, 40.38064], [75.91361, 40.2948], [75.69663, 40.28642], [75.5854, 40.66874], [75.22834, 40.45382], [75.08243, 40.43945], [74.82013, 40.52197], [74.78168, 40.44886], [74.85996, 40.32857], [74.69875, 40.34668], [74.35063, 40.09742], [74.25533, 40.13191], [73.97049, 40.04378], [73.83006, 39.76136], [73.9051, 39.75073], [73.92354, 39.69565], [73.94683, 39.60733], [73.87018, 39.47879], [73.59831, 39.46425], [73.59241, 39.40843], [73.5004, 39.38402], [73.55396, 39.3543], [73.54572, 39.27567], [73.60638, 39.24534], [73.75823, 39.023], [73.81728, 39.04007], [73.82964, 38.91517], [73.7445, 38.93867], [73.7033, 38.84782], [73.80656, 38.66449], [73.79806, 38.61106], [73.97933, 38.52945], [74.17022, 38.65504], [74.51217, 38.47034], [74.69619, 38.42947], [74.69894, 38.22155], [74.80331, 38.19889], [74.82665, 38.07359], [74.9063, 38.03033], [74.92416, 37.83428], [75.00935, 37.77486], [74.8912, 37.67576], [74.94338, 37.55501], [75.06011, 37.52779], [75.15899, 37.41443], [75.09719, 37.37297], [75.12328, 37.31839], [74.88887, 37.23275], [74.80605, 37.21565], [74.49981, 37.24518], [74.56453, 37.03023], [75.13839, 37.02622], [75.40481, 36.95382], [75.45562, 36.71971], [75.72737, 36.7529], [75.92391, 36.56986], [76.0324, 36.41198], [76.00906, 36.17511], [75.93028, 36.13136], [76.15325, 35.9264], [76.14913, 35.82848], [76.33453, 35.84296], [76.50961, 35.8908], [76.77323, 35.66062], [76.84539, 35.67356], [76.96624, 35.5932], [77.44277, 35.46132], [77.70232, 35.46244], [77.80532, 35.52058], [78.11664, 35.48022], [78.03466, 35.3785], [78.00033, 35.23954], [78.22692, 34.88771], [78.18435, 34.7998], [78.27781, 34.61484], [78.54964, 34.57283], [78.56475, 34.50835], [78.74465, 34.45174], [79.05364, 34.32482], [78.99802, 34.3027], [78.91769, 34.15452], [78.66225, 34.08858], [78.65657, 34.03195], [78.73367, 34.01121], [78.77349, 33.73871], [78.67599, 33.66445], [78.73636, 33.56521], [79.15252, 33.17156], [79.14016, 33.02545], [79.46562, 32.69668], [79.26768, 32.53277], [79.13174, 32.47766], [79.0979, 32.38051], [78.99322, 32.37948], [78.96713, 32.33655], [78.7831, 32.46873], [78.73916, 32.69438], [78.38897, 32.53938], [78.4645, 32.45367], [78.49609, 32.2762], [78.68754, 32.10256], [78.74404, 32.00384], [78.78036, 31.99478], [78.69933, 31.78723], [78.84516, 31.60631], [78.71032, 31.50197], [78.77898, 31.31209], [78.89344, 31.30481], [79.01931, 31.42817], [79.14016, 31.43403], [79.30694, 31.17357], [79.59884, 30.93943], [79.93255, 30.88288], [80.20721, 30.58541], [80.54504, 30.44936], [80.83343, 30.32023], [81.03953, 30.20059], [81.12842, 30.01395], [81.24362, 30.0126], [81.29032, 30.08806], [81.2623, 30.14596], [81.33355, 30.15303], [81.39928, 30.21862], [81.41018, 30.42153], [81.5459, 30.37688], [81.62033, 30.44703], [81.99082, 30.33423], [82.10135, 30.35439], [82.10757, 30.23745], [82.19475, 30.16884], [82.16984, 30.0692], [82.38622, 30.02608], [82.5341, 29.9735], [82.73024, 29.81695], [83.07116, 29.61957], [83.28131, 29.56813], [83.44787, 29.30513], [83.63156, 29.16249], [83.82303, 29.30513], [83.97559, 29.33091], [84.18107, 29.23451], [84.24801, 29.02783], [84.2231, 28.89571], [84.47528, 28.74023], [84.62317, 28.73887], [84.85511, 28.58041], [85.06059, 28.68562], [85.19135, 28.62825], [85.18668, 28.54076], [85.10729, 28.34092], [85.38127, 28.28336], [85.4233, 28.32996], [85.59765, 28.30529], [85.60854, 28.25045], [85.69105, 28.38475], [85.71907, 28.38064], [85.74864, 28.23126], [85.84672, 28.18187], [85.90743, 28.05144], [85.97813, 27.99023], [85.94946, 27.9401], [86.06309, 27.90021], [86.12069, 27.93047], [86.08333, 28.02121], [86.088, 28.09264], [86.18607, 28.17364], [86.22966, 27.9786], [86.42736, 27.91122], [86.51609, 27.96623], [86.56265, 28.09569], [86.74181, 28.10638], [86.75582, 28.04182], [87.03757, 27.94835], [87.11696, 27.84104], [87.56996, 27.84517], [87.72718, 27.80938], [87.82681, 27.95248], [88.13378, 27.88015], [88.1278, 27.95417], [88.25332, 27.9478], [88.54858, 28.06057], [88.63235, 28.12356], [88.83559, 28.01936], [88.88091, 27.85192], [88.77517, 27.45415], [88.82981, 27.38814], [88.91901, 27.32483], [88.93678, 27.33777], [88.96947, 27.30319], [89.00216, 27.32532], [88.95355, 27.4106], [88.97213, 27.51671], [89.0582, 27.60985], [89.12825, 27.62502], [89.59525, 28.16433], [89.79762, 28.23979], [90.13387, 28.19178], [90.58842, 28.02838], [90.69894, 28.07784], [91.20019, 27.98715], [91.25779, 28.07509], [91.46327, 28.0064], [91.48973, 27.93903], [91.5629, 27.84823], [91.6469, 27.76358], [91.84722, 27.76325], [91.87057, 27.7195], [92.27432, 27.89077], [92.32101, 27.79363], [92.42538, 27.80092], [92.7275, 27.98662], [92.73025, 28.05814], [92.65472, 28.07632], [92.67486, 28.15018], [92.93075, 28.25671], [93.14635, 28.37035], [93.18069, 28.50319], [93.44621, 28.67189], [93.72797, 28.68821], [94.35897, 29.01965], [94.2752, 29.11687], [94.69318, 29.31739], [94.81353, 29.17804], [95.0978, 29.14446], [95.11291, 29.09527], [95.2214, 29.10727], [95.26122, 29.07727], [95.3038, 29.13847], [95.41091, 29.13007], [95.50842, 29.13487], [95.72086, 29.20797], [95.75149, 29.32063], [95.84899, 29.31464], [96.05361, 29.38167], [96.31316, 29.18643], [96.18682, 29.11087], [96.20467, 29.02325], [96.3626, 29.10607], [96.61391, 28.72742], [96.40929, 28.51526], [96.48895, 28.42955], [96.6455, 28.61657], [96.85561, 28.4875], [96.88445, 28.39452], [96.98882, 28.32564], [97.1289, 28.3619], [97.34547, 28.21385], [97.41729, 28.29783], [97.47085, 28.2688], [97.50518, 28.49716], [97.56835, 28.55628], [97.70705, 28.5056], [97.79632, 28.33168], [97.90069, 28.3776], [98.15337, 28.12114], [98.13964, 27.9478], [98.32641, 27.51385], [98.42529, 27.55404], [98.43353, 27.67086], [98.69582, 27.56499], [98.7333, 26.85615], [98.77547, 26.61994], [98.72741, 26.36183], [98.67797, 26.24487], [98.7329, 26.17218], [98.66884, 26.09165], [98.63128, 26.15492], [98.57085, 26.11547], [98.60763, 26.01512], [98.70818, 25.86241], [98.63128, 25.79937], [98.54064, 25.85129], [98.40606, 25.61129], [98.31268, 25.55307], [98.25774, 25.6051], [98.16848, 25.62739], [98.18084, 25.56298], [98.12591, 25.50722], [98.14925, 25.41547], [97.92541, 25.20815], [97.83614, 25.2715], [97.77023, 25.11492], [97.72216, 25.08508], [97.72903, 24.91332], [97.79949, 24.85655], [97.76481, 24.8289], [97.73127, 24.83015], [97.70181, 24.84557], [97.64354, 24.79171], [97.56648, 24.76475], [97.56383, 24.75535], [97.5542, 24.74943], [97.54675, 24.74202], [97.56525, 24.72838], [97.56286, 24.54535], [97.52757, 24.43748], [97.60029, 24.4401], [97.66998, 24.45288], [97.7098, 24.35658], [97.65624, 24.33781], [97.66723, 24.30027], [97.71941, 24.29652], [97.76799, 24.26365], [97.72998, 24.2302], [97.72799, 24.18883], [97.75305, 24.16902], [97.72903, 24.12606], [97.62363, 24.00506], [97.5247, 23.94032], [97.64667, 23.84574], [97.72302, 23.89288], [97.79456, 23.94836], [97.79416, 23.95663], [97.84328, 23.97603], [97.86545, 23.97723], [97.88811, 23.97446], [97.8955, 23.97758], [97.89676, 23.97931], [97.89683, 23.98389], [97.88814, 23.98605], [97.88414, 23.99405], [97.88616, 24.00463], [97.90998, 24.02094], [97.93951, 24.01953], [97.98691, 24.03897], [97.99583, 24.04932], [98.04709, 24.07616], [98.05302, 24.07408], [98.05671, 24.07961], [98.0607, 24.07812], [98.06703, 24.08028], [98.07806, 24.07988], [98.20666, 24.11406], [98.54476, 24.13119], [98.59256, 24.08371], [98.85319, 24.13042], [98.87998, 24.15624], [98.89632, 24.10612], [98.67797, 23.9644], [98.68209, 23.80492], [98.79607, 23.77947], [98.82933, 23.72921], [98.81775, 23.694], [98.88396, 23.59555], [98.80294, 23.5345], [98.82877, 23.47908], [98.87683, 23.48995], [98.92104, 23.36946], [98.87573, 23.33038], [98.93958, 23.31414], [98.92515, 23.29535], [98.88597, 23.18656], [99.05975, 23.16382], [99.04601, 23.12215], [99.25741, 23.09025], [99.34127, 23.13099], [99.52214, 23.08218], [99.54218, 22.90014], [99.43537, 22.94086], [99.45654, 22.85726], [99.31243, 22.73893], [99.38247, 22.57544], [99.37972, 22.50188], [99.28771, 22.4105], [99.17318, 22.18025], [99.19176, 22.16983], [99.1552, 22.15874], [99.33166, 22.09656], [99.47585, 22.13345], [99.85351, 22.04183], [99.96612, 22.05965], [99.99084, 21.97053], [99.94003, 21.82782], [99.98654, 21.71064], [100.04956, 21.66843], [100.12679, 21.70539], [100.17486, 21.65306], [100.10757, 21.59945], [100.12542, 21.50365], [100.1625, 21.48704], [100.18447, 21.51898], [100.25863, 21.47043], [100.35201, 21.53176], [100.42892, 21.54325], [100.4811, 21.46148], [100.57861, 21.45637], [100.72143, 21.51898], [100.87265, 21.67396], [101.11744, 21.77659], [101.15156, 21.56129], [101.2124, 21.56422], [101.19349, 21.41959], [101.26912, 21.36482], [101.2229, 21.23271], [101.29326, 21.17254], [101.54563, 21.25668], [101.6068, 21.23329], [101.59491, 21.18621], [101.60886, 21.17947], [101.66977, 21.20004], [101.70548, 21.14911], [101.7622, 21.14813], [101.79266, 21.19025], [101.76745, 21.21571], [101.83887, 21.20983], [101.84412, 21.25291], [101.74014, 21.30967], [101.74224, 21.48276], [101.7727, 21.51794], [101.7475, 21.5873], [101.80001, 21.57461], [101.83257, 21.61562], [101.74555, 21.72852], [101.7791, 21.83019], [101.62566, 21.96574], [101.57525, 22.13026], [101.60675, 22.13513], [101.53638, 22.24794], [101.56789, 22.28876], [101.61306, 22.27515], [101.68973, 22.46843], [101.7685, 22.50337], [101.86828, 22.38397], [101.90714, 22.38688], [101.91344, 22.44417], [101.98487, 22.42766], [102.03633, 22.46164], [102.1245, 22.43372], [102.14099, 22.40092], [102.16621, 22.43336], [102.26428, 22.41321], [102.25339, 22.4607], [102.41061, 22.64184], [102.38415, 22.67919], [102.42618, 22.69212], [102.46665, 22.77108], [102.51802, 22.77969], [102.57095, 22.7036], [102.60675, 22.73376], [102.8636, 22.60735], [102.9321, 22.48659], [103.0722, 22.44775], [103.07843, 22.50097], [103.17961, 22.55705], [103.15782, 22.59873], [103.18895, 22.64471], [103.28079, 22.68063], [103.32282, 22.8127], [103.43179, 22.75816], [103.43646, 22.70648], [103.52675, 22.59155], [103.57812, 22.65764], [103.56255, 22.69499], [103.64506, 22.79979], [103.87904, 22.56683], [103.93286, 22.52703], [103.94513, 22.52553], [103.95191, 22.5134], [103.96352, 22.50584], [103.96783, 22.51173], [103.97384, 22.50634], [103.99247, 22.51958], [104.01088, 22.51823], [104.03734, 22.72945], [104.11384, 22.80363], [104.27084, 22.8457], [104.25683, 22.76534], [104.35593, 22.69353], [104.47225, 22.75813], [104.58122, 22.85571], [104.60457, 22.81841], [104.65283, 22.83419], [104.72755, 22.81984], [104.77114, 22.90017], [104.84942, 22.93631], [104.86765, 22.95178], [104.8334, 23.01484], [104.79478, 23.12934], [104.87382, 23.12854], [104.87992, 23.17141], [104.91435, 23.18666], [104.9486, 23.17235], [104.96532, 23.20463], [104.98712, 23.19176], [105.07002, 23.26248], [105.11672, 23.25247], [105.17276, 23.28679], [105.22569, 23.27249], [105.32376, 23.39684], [105.40782, 23.28107], [105.42805, 23.30824], [105.49966, 23.20669], [105.56037, 23.16806], [105.57594, 23.075], [105.72382, 23.06641], [105.8726, 22.92756], [105.90119, 22.94168], [105.99568, 22.94178], [106.00179, 22.99049], [106.19705, 22.98475], [106.27022, 22.87722], [106.34961, 22.86718], [106.49749, 22.91164], [106.51306, 22.94891], [106.55976, 22.92311], [106.60179, 22.92884], [106.6516, 22.86862], [106.6734, 22.89587], [106.71387, 22.88296], [106.71128, 22.85982], [106.78422, 22.81532], [106.81271, 22.8226], [106.83685, 22.8098], [106.82404, 22.7881], [106.76293, 22.73491], [106.72321, 22.63606], [106.71698, 22.58432], [106.65316, 22.5757], [106.61269, 22.60301], [106.58395, 22.474], [106.55665, 22.46498], [106.57221, 22.37], [106.55976, 22.34841], [106.6516, 22.33977], [106.69986, 22.22309], [106.67495, 22.1885], [106.6983, 22.15102], [106.70142, 22.02409], [106.68274, 21.99811], [106.69276, 21.96013], [106.72551, 21.97923], [106.74345, 22.00965], [106.81038, 21.97934], [106.9178, 21.97357], [106.92714, 21.93459], [106.97228, 21.92592], [106.99252, 21.95191], [107.05634, 21.92303], [107.06101, 21.88982], [107.00964, 21.85948], [107.02615, 21.81981], [107.10771, 21.79879], [107.20734, 21.71493], [107.24625, 21.7077], [107.29296, 21.74674], [107.35834, 21.6672], [107.35989, 21.60063], [107.38636, 21.59774], [107.41593, 21.64839], [107.47197, 21.6672], [107.49532, 21.62958], [107.49065, 21.59774], [107.54047, 21.5934], [107.56537, 21.61945], [107.66967, 21.60787], [107.80355, 21.66141], [107.86114, 21.65128], [107.90006, 21.5905], [107.92652, 21.58906], [107.95232, 21.5388], [107.96774, 21.53601], [107.97074, 21.54072], [107.97383, 21.53961], [107.97932, 21.54503], [108.02926, 21.54997], [108.0569, 21.53604], [108.10003, 21.47338], [108.00365, 17.98159], [111.60491, 13.57105], [118.41371, 24.06775], [118.11703, 24.39734], [118.28244, 24.51231], [118.35291, 24.51645], [118.42453, 24.54644], [118.6333, 24.46259], [119.42295, 25.0886], [119.98511, 25.37624], [119.78816, 26.2348], [120.0693, 26.3959], [120.5128, 26.536], [121.03532, 26.8787], [123.5458, 31.01942], [122.29378, 31.76513], [122.80525, 33.30571], [123.85601, 37.49093], [123.90497, 38.79949], [124.17532, 39.8232], [124.23201, 39.9248], [124.35029, 39.95639], [124.37089, 40.03004], [124.3322, 40.05573], [124.38556, 40.11047], [124.40719, 40.13655], [124.86913, 40.45387], [125.71172, 40.85223], [125.76869, 40.87908], [126.00335, 40.92835], [126.242, 41.15454], [126.53189, 41.35206], [126.60631, 41.65565], [126.90729, 41.79955], [127.17841, 41.59714], [127.29712, 41.49473], [127.92943, 41.44291], [128.02633, 41.42103], [128.03311, 41.39232], [128.12967, 41.37931], [128.18546, 41.41279], [128.20061, 41.40895], [128.30716, 41.60322], [128.15119, 41.74568], [128.04487, 42.01769], [128.94007, 42.03537], [128.96068, 42.06657], [129.15178, 42.17224], [129.22285, 42.26491], [129.22423, 42.3553], [129.28541, 42.41574], [129.42882, 42.44702], [129.54701, 42.37254], [129.60482, 42.44461], [129.72541, 42.43739], [129.75294, 42.59409], [129.77183, 42.69435], [129.7835, 42.76521], [129.80719, 42.79218], [129.83277, 42.86746], [129.85261, 42.96494], [129.8865, 43.00395], [129.95082, 43.01051], [129.96409, 42.97306], [130.12957, 42.98361], [130.09764, 42.91425], [130.26095, 42.9027], [130.23068, 42.80125], [130.2385, 42.71127], [130.41826, 42.6011], [130.44361, 42.54849], [130.50123, 42.61636], [130.55143, 42.52158], [130.62107, 42.58413], [130.56576, 42.68925], [130.40213, 42.70788], [130.44361, 42.76205], [130.66524, 42.84753], [131.02438, 42.86518], [131.02668, 42.91246], [131.135, 42.94114], [131.10274, 43.04734], [131.20414, 43.13654], [131.19031, 43.21385], [131.30324, 43.39498], [131.29402, 43.46695], [131.19492, 43.53047], [131.21105, 43.82383], [131.26176, 43.94011], [131.23583, 43.96085], [131.25484, 44.03131], [131.30365, 44.04262], [131.1108, 44.70266], [130.95639, 44.85154], [131.48415, 44.99513], [131.68466, 45.12374], [131.66852, 45.2196], [131.76532, 45.22609], [131.86903, 45.33636], [131.99417, 45.2567], [132.83978, 45.05916], [132.96373, 45.0212], [133.12293, 45.1332], [133.09279, 45.25693], [133.19419, 45.51913], [133.41083, 45.57723], [133.48457, 45.86203], [133.60442, 45.90053], [133.67569, 45.9759], [133.72695, 46.05576], [133.68047, 46.14697], [133.88097, 46.25066], [133.91496, 46.4274], [133.84104, 46.46681], [134.03538, 46.75668], [134.20016, 47.33458], [134.50898, 47.4812], [134.7671, 47.72051], [134.55508, 47.98651], [134.67098, 48.1564], [134.75328, 48.36763], [134.49516, 48.42884], [132.66989, 47.96491], [132.57309, 47.71741], [131.90448, 47.68011], [131.2635, 47.73325], [131.09871, 47.6852], [130.95985, 47.6957], [130.90915, 47.90623], [130.65103, 48.10052], [130.84462, 48.30942], [130.52147, 48.61745], [130.66946, 48.88251], [130.43232, 48.90844], [130.2355, 48.86741], [129.85416, 49.11067], [129.67598, 49.29596], [129.50685, 49.42398], [129.40398, 49.44194], [129.35317, 49.3481], [129.23232, 49.40353], [129.11153, 49.36813], [128.72896, 49.58676], [127.83476, 49.5748], [127.53516, 49.84306], [127.49299, 50.01251], [127.60515, 50.23503], [127.37384, 50.28393], [127.36009, 50.43787], [127.28765, 50.46585], [127.36335, 50.58306], [127.28165, 50.72075], [127.14586, 50.91152], [126.93135, 51.0841], [126.90369, 51.3238], [126.68349, 51.70607], [126.44606, 51.98254], [126.558, 52.13738], [125.6131, 53.07229]], [[113.56865, 22.20973], [113.57123, 22.20416], [113.60504, 22.20464], [113.63011, 22.10782], [113.57191, 22.07696], [113.54839, 22.10909], [113.54942, 22.14519], [113.54093, 22.15497], [113.52659, 22.18271], [113.53552, 22.20607], [113.53301, 22.21235], [113.53591, 22.21369], [113.54093, 22.21314], [113.54333, 22.21688], [113.5508, 22.21672], [113.56865, 22.20973]], [[114.50148, 22.15017], [113.92195, 22.13873], [113.83338, 22.1826], [113.81621, 22.2163], [113.86771, 22.42972], [114.03113, 22.5065], [114.05438, 22.5026], [114.05729, 22.51104], [114.06272, 22.51617], [114.07267, 22.51855], [114.07817, 22.52997], [114.08606, 22.53276], [114.09048, 22.53716], [114.09692, 22.53435], [114.1034, 22.5352], [114.11181, 22.52878], [114.11656, 22.53415], [114.12665, 22.54003], [114.13823, 22.54319], [114.1482, 22.54091], [114.15123, 22.55163], [114.1597, 22.56041], [114.17247, 22.55944], [114.18338, 22.55444], [114.20655, 22.55706], [114.22185, 22.55343], [114.22888, 22.5436], [114.25154, 22.55977], [114.44998, 22.55977], [114.50148, 22.15017]]]] } },
{ type: "Feature", properties: { wikidata: "Q22890", nameEn: "Ireland", level: "sharedLandform" }, geometry: null },
{ type: "Feature", properties: { wikidata: "Q23666", nameEn: "Great Britain", country: "GB", level: "sharedLandform" }, geometry: null },
{ type: "Feature", properties: { wikidata: "Q23681", nameEn: "Northern Cyprus", groups: ["Q644636", "145", "142"], driveSide: "left", callingCodes: ["90 392"] }, geometry: { type: "MultiPolygon", coordinates: [[[[33.67678, 35.03866], [33.67742, 35.05963], [33.68474, 35.06602], [33.69095, 35.06237], [33.70861, 35.07644], [33.7161, 35.07279], [33.70209, 35.04882], [33.71482, 35.03722], [33.73824, 35.05321], [33.76106, 35.04253], [33.78581, 35.05104], [33.82067, 35.07826], [33.84168, 35.06823], [33.8541, 35.07201], [33.87479, 35.08881], [33.87097, 35.09389], [33.87622, 35.10457], [33.87224, 35.12293], [33.88561, 35.12449], [33.88943, 35.12007], [33.88737, 35.11408], [33.89853, 35.11377], [33.91789, 35.08688], [33.91299, 35.07579], [33.90247, 35.07686], [33.89485, 35.06873], [33.88367, 35.07877], [33.85261, 35.0574], [33.8355, 35.05777], [33.82051, 35.0667], [33.8012, 35.04786], [33.81524, 35.04192], [33.83055, 35.02865], [33.82875, 35.01685], [33.84045, 35.00616], [33.85216, 35.00579], [33.85891, 35.001], [33.85621, 34.98956], [33.83505, 34.98108], [33.84811, 34.97075], [33.86432, 34.97592], [33.90075, 34.96623], [33.98684, 34.76642], [35.48515, 34.70851], [35.51152, 36.10954], [32.82353, 35.70297], [32.46489, 35.48584], [32.60361, 35.16647], [32.64864, 35.19967], [32.70947, 35.18328], [32.70779, 35.14127], [32.85733, 35.07742], [32.86406, 35.1043], [32.94471, 35.09422], [33.01192, 35.15639], [33.08249, 35.17319], [33.11105, 35.15639], [33.15138, 35.19504], [33.27068, 35.16815], [33.3072, 35.16816], [33.31955, 35.18096], [33.35056, 35.18328], [33.34964, 35.17803], [33.35596, 35.17942], [33.35612, 35.17402], [33.36569, 35.17479], [33.3717, 35.1788], [33.37248, 35.18698], [33.38575, 35.2018], [33.4076, 35.20062], [33.41675, 35.16325], [33.46813, 35.10564], [33.48136, 35.0636], [33.47825, 35.04103], [33.45178, 35.02078], [33.45256, 35.00288], [33.47666, 35.00701], [33.48915, 35.06594], [33.53975, 35.08151], [33.57478, 35.06049], [33.567, 35.04803], [33.59658, 35.03635], [33.61215, 35.0527], [33.63765, 35.03869], [33.67678, 35.03866]]]] } },
{ type: "Feature", properties: { iso1A2: "TR", iso1A3: "TUR", iso1N3: "792", wikidata: "Q43", nameEn: "Turkey", groups: ["145", "142", "UN"], callingCodes: ["90"] }, geometry: { type: "MultiPolygon", coordinates: [[[[41.54366, 41.52185], [40.89217, 41.72528], [34.8305, 42.4581], [28.32297, 41.98371], [28.02971, 41.98066], [27.91479, 41.97902], [27.83492, 41.99709], [27.81235, 41.94803], [27.69949, 41.97515], [27.55191, 41.90928], [27.52379, 41.93756], [27.45478, 41.96591], [27.27411, 42.10409], [27.22376, 42.10152], [27.19251, 42.06028], [27.08486, 42.08735], [27.03277, 42.0809], [26.95638, 42.00741], [26.79143, 41.97386], [26.62996, 41.97644], [26.56051, 41.92995], [26.57961, 41.90024], [26.53968, 41.82653], [26.36952, 41.82265], [26.33589, 41.76802], [26.32952, 41.73637], [26.35957, 41.71149], [26.47958, 41.67037], [26.5209, 41.62592], [26.59196, 41.60491], [26.59742, 41.48058], [26.61767, 41.42281], [26.62997, 41.34613], [26.5837, 41.32131], [26.5209, 41.33993], [26.39861, 41.25053], [26.32259, 41.24929], [26.31928, 41.07386], [26.3606, 41.02027], [26.33297, 40.98388], [26.35894, 40.94292], [26.32259, 40.94042], [26.28623, 40.93005], [26.29441, 40.89119], [26.26169, 40.9168], [26.20856, 40.86048], [26.21351, 40.83298], [26.15685, 40.80709], [26.12854, 40.77339], [26.12495, 40.74283], [26.08638, 40.73214], [26.0754, 40.72772], [26.03489, 40.73051], [25.94795, 40.72797], [26.04292, 40.3958], [25.61285, 40.17161], [25.94257, 39.39358], [26.43357, 39.43096], [26.70773, 39.0312], [26.61814, 38.81372], [26.21136, 38.65436], [26.32173, 38.48731], [26.24183, 38.44695], [26.21136, 38.17558], [27.05537, 37.9131], [27.16428, 37.72343], [26.99377, 37.69034], [26.95583, 37.64989], [27.14757, 37.32], [27.20312, 36.94571], [27.45627, 36.9008], [27.24613, 36.71622], [27.46117, 36.53789], [27.89482, 36.69898], [27.95037, 36.46155], [28.23708, 36.56812], [29.30783, 36.01033], [29.48192, 36.18377], [29.61002, 36.1731], [29.61805, 36.14179], [29.69611, 36.10365], [29.73302, 35.92555], [32.82353, 35.70297], [35.51152, 36.10954], [35.931, 35.92109], [35.98499, 35.94107], [36.00514, 35.94113], [36.01844, 35.92403], [35.99829, 35.88242], [36.11827, 35.85923], [36.13919, 35.83692], [36.14029, 35.81015], [36.1623, 35.80925], [36.17441, 35.92076], [36.19973, 35.95195], [36.25366, 35.96264], [36.27678, 35.94839], [36.29769, 35.96086], [36.28338, 36.00273], [36.30099, 36.00985], [36.33956, 35.98687], [36.37474, 36.01163], [36.39206, 36.22088], [36.4617, 36.20461], [36.50463, 36.2419], [36.6125, 36.22592], [36.68672, 36.23677], [36.65653, 36.33861], [36.6081, 36.33772], [36.54206, 36.49539], [36.58829, 36.58295], [36.57398, 36.65186], [36.62681, 36.71189], [36.61581, 36.74629], [36.66727, 36.82901], [36.99557, 36.75997], [36.99886, 36.74012], [37.04399, 36.73483], [37.04619, 36.71101], [37.01647, 36.69512], [37.02088, 36.66422], [37.08279, 36.63495], [37.10894, 36.6704], [37.16177, 36.66069], [37.21988, 36.6736], [37.47253, 36.63243], [37.49103, 36.66904], [37.68048, 36.75065], [37.81974, 36.76055], [38.21064, 36.91842], [38.38859, 36.90064], [38.55908, 36.84429], [38.74042, 36.70629], [39.03217, 36.70911], [39.21538, 36.66834], [39.81589, 36.75538], [40.69136, 37.0996], [40.90856, 37.13147], [41.21937, 37.07665], [41.515, 37.08084], [42.00894, 37.17209], [42.18225, 37.28569], [42.19301, 37.31323], [42.2112, 37.32491], [42.22257, 37.31395], [42.22381, 37.30238], [42.20454, 37.28715], [42.21548, 37.28026], [42.23683, 37.2863], [42.26039, 37.27017], [42.2824, 37.2798], [42.34735, 37.22548], [42.32313, 37.17814], [42.35724, 37.10998], [42.56725, 37.14878], [42.78887, 37.38615], [42.93705, 37.32015], [43.11403, 37.37436], [43.30083, 37.30629], [43.33508, 37.33105], [43.50787, 37.24436], [43.56702, 37.25675], [43.63085, 37.21957], [43.7009, 37.23692], [43.8052, 37.22825], [43.82699, 37.19477], [43.84878, 37.22205], [43.90949, 37.22453], [44.02002, 37.33229], [44.13521, 37.32486], [44.2613, 37.25055], [44.27998, 37.16501], [44.22239, 37.15756], [44.18503, 37.09551], [44.25975, 36.98119], [44.30645, 36.97373], [44.35937, 37.02843], [44.35315, 37.04955], [44.38117, 37.05825], [44.42631, 37.05825], [44.63179, 37.19229], [44.76698, 37.16162], [44.78319, 37.1431], [44.7868, 37.16644], [44.75986, 37.21549], [44.81021, 37.2915], [44.58449, 37.45018], [44.61401, 37.60165], [44.56887, 37.6429], [44.62096, 37.71985], [44.55498, 37.783], [44.45948, 37.77065], [44.3883, 37.85433], [44.22509, 37.88859], [44.42476, 38.25763], [44.50115, 38.33939], [44.44386, 38.38295], [44.38309, 38.36117], [44.3119, 38.37887], [44.3207, 38.49799], [44.32058, 38.62752], [44.28065, 38.6465], [44.26155, 38.71427], [44.30322, 38.81581], [44.18863, 38.93881], [44.20946, 39.13975], [44.1043, 39.19842], [44.03667, 39.39223], [44.22452, 39.4169], [44.29818, 39.378], [44.37921, 39.4131], [44.42832, 39.4131], [44.41849, 39.56659], [44.48111, 39.61579], [44.47298, 39.68788], [44.6137, 39.78393], [44.65422, 39.72163], [44.71806, 39.71124], [44.81043, 39.62677], [44.80977, 39.65768], [44.75779, 39.7148], [44.61845, 39.8281], [44.46635, 39.97733], [44.26973, 40.04866], [44.1778, 40.02845], [44.1057, 40.03555], [43.92307, 40.01787], [43.65688, 40.11199], [43.65221, 40.14889], [43.71136, 40.16673], [43.59928, 40.34019], [43.60862, 40.43267], [43.54791, 40.47413], [43.63664, 40.54159], [43.7425, 40.66805], [43.74872, 40.7365], [43.67712, 40.84846], [43.67712, 40.93084], [43.58683, 40.98961], [43.47319, 41.02251], [43.44984, 41.0988], [43.4717, 41.12611], [43.44973, 41.17666], [43.36118, 41.2028], [43.23096, 41.17536], [43.1945, 41.25242], [43.13373, 41.25503], [43.21707, 41.30331], [43.02956, 41.37891], [42.8785, 41.50516], [42.84899, 41.47265], [42.78995, 41.50126], [42.84471, 41.58912], [42.72794, 41.59714], [42.59202, 41.58183], [42.51772, 41.43606], [42.26387, 41.49346], [41.95134, 41.52466], [41.81939, 41.43621], [41.7124, 41.47417], [41.7148, 41.4932], [41.54366, 41.52185]]]] } },
{ type: "Feature", properties: { iso1A2: "TT", iso1A3: "TTO", iso1N3: "780", wikidata: "Q754", nameEn: "Trinidad and Tobago", groups: ["029", "003", "419", "019", "UN"], driveSide: "left", callingCodes: ["1 868"] }, geometry: { type: "MultiPolygon", coordinates: [[[[-61.62505, 11.18974], [-62.08693, 10.04435], [-60.89962, 9.81445], [-60.07172, 11.77667], [-61.62505, 11.18974]]]] } },
{ type: "Feature", properties: { iso1A2: "TV", iso1A3: "TUV", iso1N3: "798", wikidata: "Q672", nameEn: "Tuvalu", groups: ["061", "009", "UN"], driveSide: "left", callingCodes: ["688"] }, geometry: { type: "MultiPolygon", coordinates: [[[[174, -5], [174, -11.5], [179.99999, -11.5], [179.99999, -5], [174, -5]]]] } },
- { type: "Feature", properties: { iso1A2: "TW", iso1A3: "TWN", iso1N3: "158", wikidata: "Q865", nameEn: "Taiwan", aliases: ["RC"], groups: ["030", "142"], callingCodes: ["886"] }, geometry: { type: "MultiPolygon", coordinates: [[[[121.8109, 21.77688], [122.26612, 25.98197], [120.49232, 25.22863], [118.56434, 24.49266], [118.42453, 24.54644], [118.35291, 24.51645], [118.28244, 24.51231], [118.11703, 24.39734], [120.69238, 21.52331], [121.8109, 21.77688]]]] } },
+ { type: "Feature", properties: { iso1A2: "TW", iso1A3: "TWN", iso1N3: "158", wikidata: "Q865", nameEn: "Taiwan", aliases: ["RC"], groups: ["030", "142"], callingCodes: ["886"] }, geometry: { type: "MultiPolygon", coordinates: [[[[121.8109, 21.77688], [122.26612, 25.98197], [120.5128, 26.536], [120.0693, 26.3959], [119.78816, 26.2348], [119.98511, 25.37624], [119.42295, 25.0886], [118.6333, 24.46259], [118.42453, 24.54644], [118.35291, 24.51645], [118.28244, 24.51231], [118.11703, 24.39734], [120.69238, 21.52331], [121.8109, 21.77688]]]] } },
{ type: "Feature", properties: { iso1A2: "TZ", iso1A3: "TZA", iso1N3: "834", wikidata: "Q924", nameEn: "Tanzania", groups: ["014", "202", "002", "UN"], driveSide: "left", callingCodes: ["255"] }, geometry: { type: "MultiPolygon", coordinates: [[[[30.80408, -0.99911], [30.76635, -0.9852], [30.70631, -1.01175], [30.64166, -1.06601], [30.47194, -1.0555], [30.45116, -1.10641], [30.50889, -1.16412], [30.57123, -1.33264], [30.71974, -1.43244], [30.84079, -1.64652], [30.80802, -1.91477], [30.89303, -2.08223], [30.83915, -2.35795], [30.54501, -2.41404], [30.41789, -2.66266], [30.52747, -2.65841], [30.40662, -2.86151], [30.4987, -2.9573], [30.57926, -2.89791], [30.6675, -2.98987], [30.83823, -2.97837], [30.84165, -3.25152], [30.45915, -3.56532], [30.22042, -4.01738], [30.03323, -4.26631], [29.88172, -4.35743], [29.82885, -4.36153], [29.77289, -4.41733], [29.75109, -4.45836], [29.63827, -4.44681], [29.43673, -4.44845], [29.52552, -6.2731], [30.2567, -7.14121], [30.79243, -8.27382], [31.00796, -8.58615], [31.37533, -8.60769], [31.57147, -8.70619], [31.57147, -8.81388], [31.71158, -8.91386], [31.81587, -8.88618], [31.94663, -8.93846], [31.94196, -9.02303], [31.98866, -9.07069], [32.08206, -9.04609], [32.16146, -9.05993], [32.25486, -9.13371], [32.43543, -9.11988], [32.49147, -9.14754], [32.53661, -9.24281], [32.75611, -9.28583], [32.76233, -9.31963], [32.95389, -9.40138], [32.99397, -9.36712], [33.14925, -9.49322], [33.31581, -9.48554], [33.48052, -9.62442], [33.76677, -9.58516], [33.93298, -9.71647], [33.9638, -9.62206], [33.95829, -9.54066], [34.03865, -9.49398], [34.54499, -10.0678], [34.51911, -10.12279], [34.57581, -10.56271], [34.65946, -10.6828], [34.67047, -10.93796], [34.61161, -11.01611], [34.63305, -11.11731], [34.79375, -11.32245], [34.91153, -11.39799], [34.96296, -11.57354], [35.63599, -11.55927], [35.82767, -11.41081], [36.19094, -11.57593], [36.19094, -11.70008], [36.62068, -11.72884], [36.80309, -11.56836], [37.3936, -11.68949], [37.76614, -11.53352], [37.8388, -11.3123], [37.93618, -11.26228], [38.21598, -11.27289], [38.47258, -11.4199], [38.88996, -11.16978], [39.24395, -11.17433], [39.58249, -10.96043], [40.00295, -10.80255], [40.44265, -10.4618], [40.74206, -10.25691], [40.14328, -4.64201], [39.62121, -4.68136], [39.44306, -4.93877], [39.21631, -4.67835], [37.81321, -3.69179], [37.75036, -3.54243], [37.63099, -3.50723], [37.5903, -3.42735], [37.71745, -3.304], [37.67199, -3.06222], [34.0824, -1.02264], [34.03084, -1.05101], [34.02286, -1.00779], [33.93107, -0.99298], [30.80408, -0.99911]]]] } },
{ type: "Feature", properties: { iso1A2: "UA", iso1A3: "UKR", iso1N3: "804", wikidata: "Q212", nameEn: "Ukraine", groups: ["151", "150", "UN"], callingCodes: ["380"] }, geometry: { type: "MultiPolygon", coordinates: [[[[33.57318, 46.10317], [33.61467, 46.13561], [33.63854, 46.14147], [33.61517, 46.22615], [33.646, 46.23028], [33.74047, 46.18555], [33.79715, 46.20482], [33.85234, 46.19863], [33.91549, 46.15938], [34.05272, 46.10838], [34.07311, 46.11769], [34.12929, 46.10494], [34.181, 46.06804], [34.25111, 46.0532], [34.33912, 46.06114], [34.41221, 46.00245], [34.44155, 45.95995], [34.48729, 45.94267], [34.52011, 45.95097], [34.55889, 45.99347], [34.60861, 45.99347], [34.66679, 45.97136], [34.75479, 45.90705], [34.80153, 45.90047], [34.79905, 45.81009], [34.96015, 45.75634], [35.23066, 45.79231], [37.62608, 46.82615], [38.12112, 46.86078], [38.3384, 46.98085], [38.22955, 47.12069], [38.23049, 47.2324], [38.32112, 47.2585], [38.33074, 47.30508], [38.22225, 47.30788], [38.28954, 47.39255], [38.28679, 47.53552], [38.35062, 47.61631], [38.76379, 47.69346], [38.79628, 47.81109], [38.87979, 47.87719], [39.73935, 47.82876], [39.82213, 47.96396], [39.77544, 48.04206], [39.88256, 48.04482], [39.83724, 48.06501], [39.94847, 48.22811], [40.00752, 48.22445], [39.99241, 48.31768], [39.97325, 48.31399], [39.9693, 48.29904], [39.95248, 48.29972], [39.91465, 48.26743], [39.90041, 48.3049], [39.84273, 48.30947], [39.84136, 48.33321], [39.94847, 48.35055], [39.88794, 48.44226], [39.86196, 48.46633], [39.84548, 48.57821], [39.79764, 48.58668], [39.67226, 48.59368], [39.71765, 48.68673], [39.73104, 48.7325], [39.79466, 48.83739], [39.97182, 48.79398], [40.08168, 48.87443], [40.03636, 48.91957], [39.98967, 48.86901], [39.78368, 48.91596], [39.74874, 48.98675], [39.72649, 48.9754], [39.71353, 48.98959], [39.6683, 48.99454], [39.6836, 49.05121], [39.93437, 49.05709], [40.01988, 49.1761], [40.22176, 49.25683], [40.18331, 49.34996], [40.14912, 49.37681], [40.1141, 49.38798], [40.03087, 49.45452], [40.03636, 49.52321], [40.16683, 49.56865], [40.13249, 49.61672], [39.84548, 49.56064], [39.65047, 49.61761], [39.59142, 49.73758], [39.44496, 49.76067], [39.27968, 49.75976], [39.1808, 49.88911], [38.9391, 49.79524], [38.90477, 49.86787], [38.73311, 49.90238], [38.68677, 50.00904], [38.65688, 49.97176], [38.35408, 50.00664], [38.32524, 50.08866], [38.18517, 50.08161], [38.21675, 49.98104], [38.02999, 49.90592], [38.02999, 49.94482], [37.90776, 50.04194], [37.79515, 50.08425], [37.75807, 50.07896], [37.61113, 50.21976], [37.62879, 50.24481], [37.62486, 50.29966], [37.47243, 50.36277], [37.48204, 50.46079], [37.08468, 50.34935], [36.91762, 50.34963], [36.69377, 50.26982], [36.64571, 50.218], [36.56655, 50.2413], [36.58371, 50.28563], [36.47817, 50.31457], [36.30101, 50.29088], [36.20763, 50.3943], [36.06893, 50.45205], [35.8926, 50.43829], [35.80388, 50.41356], [35.73659, 50.35489], [35.61711, 50.35707], [35.58003, 50.45117], [35.47463, 50.49247], [35.39464, 50.64751], [35.48116, 50.66405], [35.47704, 50.77274], [35.41367, 50.80227], [35.39307, 50.92145], [35.32598, 50.94524], [35.40837, 51.04119], [35.31774, 51.08434], [35.20375, 51.04723], [35.12685, 51.16191], [35.14058, 51.23162], [34.97304, 51.2342], [34.82472, 51.17483], [34.6874, 51.18], [34.6613, 51.25053], [34.38802, 51.2746], [34.31661, 51.23936], [34.23009, 51.26429], [34.33446, 51.363], [34.22048, 51.4187], [34.30562, 51.5205], [34.17599, 51.63253], [34.07765, 51.67065], [34.42922, 51.72852], [34.41136, 51.82793], [34.09413, 52.00835], [34.11199, 52.14087], [34.05239, 52.20132], [33.78789, 52.37204], [33.55718, 52.30324], [33.48027, 52.31499], [33.51323, 52.35779], [33.18913, 52.3754], [32.89937, 52.2461], [32.85405, 52.27888], [32.69475, 52.25535], [32.54781, 52.32423], [32.3528, 52.32842], [32.38988, 52.24946], [32.33083, 52.23685], [32.34044, 52.1434], [32.2777, 52.10266], [32.23331, 52.08085], [32.08813, 52.03319], [31.92159, 52.05144], [31.96141, 52.08015], [31.85018, 52.11305], [31.81722, 52.09955], [31.7822, 52.11406], [31.38326, 52.12991], [31.25142, 52.04131], [31.13332, 52.1004], [30.95589, 52.07775], [30.90897, 52.00699], [30.76443, 51.89739], [30.68804, 51.82806], [30.51946, 51.59649], [30.64992, 51.35014], [30.56203, 51.25655], [30.36153, 51.33984], [30.34642, 51.42555], [30.17888, 51.51025], [29.77376, 51.4461], [29.7408, 51.53417], [29.54372, 51.48372], [29.49773, 51.39814], [29.42357, 51.4187], [29.32881, 51.37843], [29.25191, 51.49828], [29.25603, 51.57089], [29.20659, 51.56918], [29.16402, 51.64679], [29.1187, 51.65872], [28.99098, 51.56833], [28.95528, 51.59222], [28.81795, 51.55552], [28.76027, 51.48802], [28.78224, 51.45294], [28.75615, 51.41442], [28.73143, 51.46236], [28.69161, 51.44695], [28.64429, 51.5664], [28.47051, 51.59734], [28.37592, 51.54505], [28.23452, 51.66988], [28.10658, 51.57857], [27.95827, 51.56065], [27.91844, 51.61952], [27.85253, 51.62293], [27.76052, 51.47604], [27.67125, 51.50854], [27.71932, 51.60672], [27.55727, 51.63486], [27.51058, 51.5854], [27.47212, 51.61184], [27.24828, 51.60161], [27.26613, 51.65957], [27.20948, 51.66713], [27.20602, 51.77291], [26.99422, 51.76933], [26.9489, 51.73788], [26.80043, 51.75777], [26.69759, 51.82284], [26.46962, 51.80501], [26.39367, 51.87315], [26.19084, 51.86781], [26.00408, 51.92967], [25.83217, 51.92587], [25.80574, 51.94556], [25.73673, 51.91973], [25.46163, 51.92205], [25.20228, 51.97143], [24.98784, 51.91273], [24.37123, 51.88222], [24.29021, 51.80841], [24.3163, 51.75063], [24.13075, 51.66979], [23.99907, 51.58369], [23.8741, 51.59734], [23.91118, 51.63316], [23.7766, 51.66809], [23.60906, 51.62122], [23.6736, 51.50255], [23.62751, 51.50512], [23.69905, 51.40871], [23.63858, 51.32182], [23.80678, 51.18405], [23.90376, 51.07697], [23.92217, 51.00836], [24.04576, 50.90196], [24.14524, 50.86128], [24.0952, 50.83262], [23.99254, 50.83847], [23.95925, 50.79271], [24.0595, 50.71625], [24.0996, 50.60752], [24.07048, 50.5071], [24.03668, 50.44507], [23.99563, 50.41289], [23.79445, 50.40481], [23.71382, 50.38248], [23.67635, 50.33385], [23.28221, 50.0957], [22.99329, 49.84249], [22.83179, 49.69875], [22.80261, 49.69098], [22.78304, 49.65543], [22.64534, 49.53094], [22.69444, 49.49378], [22.748, 49.32759], [22.72009, 49.20288], [22.86336, 49.10513], [22.89122, 49.00725], [22.56155, 49.08865], [22.54338, 49.01424], [22.48296, 48.99172], [22.42934, 48.92857], [22.34151, 48.68893], [22.21379, 48.6218], [22.16023, 48.56548], [22.14689, 48.4005], [22.2083, 48.42534], [22.38133, 48.23726], [22.49806, 48.25189], [22.59007, 48.15121], [22.58733, 48.10813], [22.66835, 48.09162], [22.73427, 48.12005], [22.81804, 48.11363], [22.87847, 48.04665], [22.84276, 47.98602], [22.89849, 47.95851], [22.94301, 47.96672], [22.92241, 48.02002], [23.0158, 47.99338], [23.08858, 48.00716], [23.1133, 48.08061], [23.15999, 48.12188], [23.27397, 48.08245], [23.33577, 48.0237], [23.4979, 47.96858], [23.52803, 48.01818], [23.5653, 48.00499], [23.63894, 48.00293], [23.66262, 47.98786], [23.75188, 47.99705], [23.80904, 47.98142], [23.8602, 47.9329], [23.89352, 47.94512], [23.94192, 47.94868], [23.96337, 47.96672], [23.98553, 47.96076], [24.00801, 47.968], [24.02999, 47.95087], [24.06466, 47.95317], [24.11281, 47.91487], [24.22566, 47.90231], [24.34926, 47.9244], [24.43578, 47.97131], [24.61994, 47.95062], [24.70632, 47.84428], [24.81893, 47.82031], [24.88896, 47.7234], [25.11144, 47.75203], [25.23778, 47.89403], [25.63878, 47.94924], [25.77723, 47.93919], [26.05901, 47.9897], [26.17711, 47.99246], [26.33504, 48.18418], [26.55202, 48.22445], [26.62823, 48.25804], [26.6839, 48.35828], [26.79239, 48.29071], [26.82809, 48.31629], [26.71274, 48.40388], [26.85556, 48.41095], [26.93384, 48.36558], [27.03821, 48.37653], [27.0231, 48.42485], [27.08078, 48.43214], [27.13434, 48.37288], [27.27855, 48.37534], [27.32159, 48.4434], [27.37604, 48.44398], [27.37741, 48.41026], [27.44333, 48.41209], [27.46942, 48.454], [27.5889, 48.49224], [27.59027, 48.46311], [27.6658, 48.44034], [27.74422, 48.45926], [27.79225, 48.44244], [27.81902, 48.41874], [27.87533, 48.4037], [27.88391, 48.36699], [27.95883, 48.32368], [28.04527, 48.32661], [28.09873, 48.3124], [28.07504, 48.23494], [28.17666, 48.25963], [28.19314, 48.20749], [28.2856, 48.23202], [28.32508, 48.23384], [28.35519, 48.24957], [28.36996, 48.20543], [28.34912, 48.1787], [28.30586, 48.1597], [28.30609, 48.14018], [28.34009, 48.13147], [28.38712, 48.17567], [28.43701, 48.15832], [28.42454, 48.12047], [28.48428, 48.0737], [28.53921, 48.17453], [28.69896, 48.13106], [28.85232, 48.12506], [28.8414, 48.03392], [28.9306, 47.96255], [29.1723, 47.99013], [29.19839, 47.89261], [29.27804, 47.88893], [29.20663, 47.80367], [29.27255, 47.79953], [29.22242, 47.73607], [29.22414, 47.60012], [29.11743, 47.55001], [29.18603, 47.43387], [29.3261, 47.44664], [29.39889, 47.30179], [29.47854, 47.30366], [29.48678, 47.36043], [29.5733, 47.36508], [29.59665, 47.25521], [29.54996, 47.24962], [29.57696, 47.13581], [29.49732, 47.12878], [29.53044, 47.07851], [29.61038, 47.09932], [29.62137, 47.05069], [29.57056, 46.94766], [29.72986, 46.92234], [29.75458, 46.8604], [29.87405, 46.88199], [29.98814, 46.82358], [29.94522, 46.80055], [29.9743, 46.75325], [29.94409, 46.56002], [29.88916, 46.54302], [30.02511, 46.45132], [30.16794, 46.40967], [30.09103, 46.38694], [29.94114, 46.40114], [29.88329, 46.35851], [29.74496, 46.45605], [29.66359, 46.4215], [29.6763, 46.36041], [29.5939, 46.35472], [29.49914, 46.45889], [29.35357, 46.49505], [29.24886, 46.37912], [29.23547, 46.55435], [29.02409, 46.49582], [29.01241, 46.46177], [28.9306, 46.45699], [29.004, 46.31495], [28.98478, 46.31803], [28.94953, 46.25852], [29.06656, 46.19716], [28.94643, 46.09176], [29.00613, 46.04962], [28.98004, 46.00385], [28.74383, 45.96664], [28.78503, 45.83475], [28.69852, 45.81753], [28.70401, 45.78019], [28.52823, 45.73803], [28.47879, 45.66994], [28.51587, 45.6613], [28.54196, 45.58062], [28.49252, 45.56716], [28.51449, 45.49982], [28.43072, 45.48538], [28.41836, 45.51715], [28.30201, 45.54744], [28.21139, 45.46895], [28.28504, 45.43907], [28.34554, 45.32102], [28.5735, 45.24759], [28.71358, 45.22631], [28.78911, 45.24179], [28.81383, 45.3384], [28.94292, 45.28045], [28.96077, 45.33164], [29.24779, 45.43388], [29.42632, 45.44545], [29.59798, 45.38857], [29.68175, 45.26885], [29.65428, 45.25629], [29.69272, 45.19227], [30.04414, 45.08461], [31.62627, 45.50633], [33.54017, 46.0123], [33.59087, 46.06013], [33.57318, 46.10317]]]] } },
{ type: "Feature", properties: { iso1A2: "UG", iso1A3: "UGA", iso1N3: "800", wikidata: "Q1036", nameEn: "Uganda", groups: ["014", "202", "002", "UN"], driveSide: "left", callingCodes: ["256"] }, geometry: { type: "MultiPolygon", coordinates: [[[[33.93107, -0.99298], [33.9264, -0.54188], [33.98449, -0.13079], [33.90936, 0.10581], [34.10067, 0.36372], [34.08727, 0.44713], [34.11408, 0.48884], [34.13493, 0.58118], [34.20196, 0.62289], [34.27345, 0.63182], [34.31516, 0.75693], [34.40041, 0.80266], [34.43349, 0.85254], [34.52369, 1.10692], [34.57427, 1.09868], [34.58029, 1.14712], [34.67562, 1.21265], [34.80223, 1.22754], [34.82606, 1.26626], [34.82606, 1.30944], [34.7918, 1.36752], [34.87819, 1.5596], [34.92734, 1.56109], [34.9899, 1.6668], [34.98692, 1.97348], [34.90947, 2.42447], [34.95267, 2.47209], [34.77244, 2.70272], [34.78137, 2.76223], [34.73967, 2.85447], [34.65774, 2.8753], [34.60114, 2.93034], [34.56242, 3.11478], [34.45815, 3.18319], [34.40006, 3.37949], [34.41794, 3.44342], [34.39112, 3.48802], [34.44922, 3.51627], [34.45815, 3.67385], [34.15429, 3.80464], [34.06046, 4.15235], [33.9873, 4.23316], [33.51264, 3.75068], [33.18356, 3.77812], [33.02852, 3.89296], [32.89746, 3.81339], [32.72021, 3.77327], [32.41337, 3.748], [32.20782, 3.6053], [32.19888, 3.50867], [32.08866, 3.53543], [32.08491, 3.56287], [32.05187, 3.589], [31.95907, 3.57408], [31.96205, 3.6499], [31.86821, 3.78664], [31.81459, 3.82083], [31.72075, 3.74354], [31.50776, 3.63652], [31.50478, 3.67814], [31.29476, 3.8015], [31.16666, 3.79853], [30.97601, 3.693], [30.85153, 3.48867], [30.94081, 3.50847], [30.93486, 3.40737], [30.84251, 3.26908], [30.77101, 3.04897], [30.8574, 2.9508], [30.8857, 2.83923], [30.75612, 2.5863], [30.74271, 2.43601], [30.83059, 2.42559], [30.91102, 2.33332], [30.96911, 2.41071], [31.06593, 2.35862], [31.07934, 2.30207], [31.12104, 2.27676], [31.1985, 2.29462], [31.20148, 2.2217], [31.28042, 2.17853], [31.30127, 2.11006], [30.48503, 1.21675], [30.24671, 1.14974], [30.22139, 0.99635], [30.1484, 0.89805], [29.98307, 0.84295], [29.95477, 0.64486], [29.97413, 0.52124], [29.87284, 0.39166], [29.81922, 0.16824], [29.77454, 0.16675], [29.7224, 0.07291], [29.72687, -0.08051], [29.65091, -0.46777], [29.67474, -0.47969], [29.67176, -0.55714], [29.62708, -0.71055], [29.63006, -0.8997], [29.58388, -0.89821], [29.59061, -1.39016], [29.82657, -1.31187], [29.912, -1.48269], [30.16369, -1.34303], [30.35212, -1.06896], [30.47194, -1.0555], [30.64166, -1.06601], [30.70631, -1.01175], [30.76635, -0.9852], [30.80408, -0.99911], [33.93107, -0.99298]]]] } },
{ type: "Feature", properties: { iso1A2: "ZW", iso1A3: "ZWE", iso1N3: "716", wikidata: "Q954", nameEn: "Zimbabwe", groups: ["014", "202", "002", "UN"], driveSide: "left", callingCodes: ["263"] }, geometry: { type: "MultiPolygon", coordinates: [[[[30.41902, -15.62269], [30.35574, -15.6513], [29.8317, -15.6126], [29.4437, -15.68702], [29.21955, -15.76589], [29.01298, -15.93805], [28.9243, -15.93987], [28.8501, -16.04537], [28.81454, -16.48611], [28.76199, -16.51575], [28.73725, -16.5528], [27.83141, -16.96274], [27.62795, -17.24365], [27.61377, -17.34378], [27.30736, -17.60487], [27.14196, -17.81398], [26.89926, -17.98756], [26.74314, -18.0199], [26.68403, -18.07411], [26.55918, -17.99638], [26.21601, -17.88608], [26.0908, -17.93021], [26.08925, -17.98168], [25.85892, -17.97726], [25.85738, -17.91403], [25.6827, -17.81987], [25.51646, -17.86232], [25.26433, -17.79571], [25.23909, -17.90832], [25.31799, -18.07091], [25.39972, -18.12691], [25.53465, -18.39041], [25.68859, -18.56165], [25.79217, -18.6355], [25.82353, -18.82808], [25.94326, -18.90362], [25.99837, -19.02943], [25.96226, -19.08152], [26.17227, -19.53709], [26.72246, -19.92707], [27.21278, -20.08244], [27.29831, -20.28935], [27.28865, -20.49873], [27.69361, -20.48531], [27.72972, -20.51735], [27.69171, -21.08409], [27.91407, -21.31621], [28.01669, -21.57624], [28.29416, -21.59037], [28.49942, -21.66634], [28.58114, -21.63455], [29.07763, -21.81877], [29.04023, -21.85864], [29.02191, -21.90647], [29.02191, -21.95665], [29.04108, -22.00563], [29.08495, -22.04867], [29.14501, -22.07275], [29.1974, -22.07472], [29.24648, -22.05967], [29.3533, -22.18363], [29.37703, -22.19581], [29.64609, -22.12917], [29.76848, -22.14128], [29.92242, -22.19408], [30.13147, -22.30841], [30.2265, -22.2961], [30.28351, -22.35587], [30.38614, -22.34533], [30.48686, -22.31368], [30.6294, -22.32599], [30.86696, -22.28907], [31.08932, -22.34884], [31.16344, -22.32599], [31.30611, -22.422], [31.38336, -22.36919], [32.41234, -21.31246], [32.48236, -21.32873], [32.37115, -21.133], [32.51644, -20.91929], [32.48122, -20.63319], [32.55167, -20.56312], [32.66174, -20.56106], [32.85987, -20.27841], [32.85987, -20.16686], [32.93032, -20.03868], [33.01178, -20.02007], [33.06461, -19.77787], [32.95013, -19.67219], [32.84666, -19.68462], [32.84446, -19.48343], [32.78282, -19.47513], [32.77966, -19.36098], [32.85107, -19.29238], [32.87088, -19.09279], [32.84006, -19.0262], [32.72118, -19.02204], [32.69917, -18.94293], [32.73439, -18.92628], [32.70137, -18.84712], [32.82465, -18.77419], [32.9017, -18.7992], [32.95013, -18.69079], [32.88629, -18.58023], [32.88629, -18.51344], [33.02278, -18.4696], [33.03159, -18.35054], [32.94133, -17.99705], [33.0492, -17.60298], [32.98536, -17.55891], [32.96554, -17.48964], [33.0426, -17.3468], [33.00517, -17.30477], [32.96554, -17.11971], [32.84113, -16.92259], [32.91051, -16.89446], [32.97655, -16.70689], [32.78943, -16.70267], [32.69917, -16.66893], [32.71017, -16.59932], [32.42838, -16.4727], [32.28529, -16.43892], [32.02772, -16.43892], [31.91324, -16.41569], [31.90223, -16.34388], [31.67988, -16.19595], [31.42451, -16.15154], [31.30563, -16.01193], [31.13171, -15.98019], [30.97761, -16.05848], [30.91597, -15.99924], [30.42568, -15.9962], [30.41902, -15.62269]]]] } }
] };
var borders = borders_default;
- var whichPolygonGetter = {};
- var featuresByCode = {};
+ var _whichPolygon = {};
+ var _featuresByCode = {};
var idFilterRegex = /(?=(?!^(and|the|of|el|la|de)$))(\b(and|the|of|el|la|de)\b)|[-_ .,'()&[\]/]/gi;
function canonicalID(id2) {
- const s = id2 || "";
- if (s.charAt(0) === ".") {
- return s.toUpperCase();
+ const s2 = id2 || "";
+ if (s2.charAt(0) === ".") {
+ return s2.toUpperCase();
} else {
- return s.replace(idFilterRegex, "").toUpperCase();
+ return s2.replace(idFilterRegex, "").toUpperCase();
}
}
var levels = [
function loadDerivedDataAndCaches(borders2) {
const identifierProps = ["iso1A2", "iso1A3", "m49", "wikidata", "emojiFlag", "ccTLD", "nameEn"];
let geometryFeatures = [];
- borders2.features.forEach((feature22) => {
- feature22.properties.id = feature22.properties.iso1A2 || feature22.properties.m49 || feature22.properties.wikidata;
+ for (const feature22 of borders2.features) {
+ const props = feature22.properties;
+ props.id = props.iso1A2 || props.m49 || props.wikidata;
loadM49(feature22);
loadTLD(feature22);
loadIsoStatus(feature22);
loadGroups(feature22);
loadFlag(feature22);
cacheFeatureByIDs(feature22);
- if (feature22.geometry)
+ if (feature22.geometry) {
geometryFeatures.push(feature22);
- });
- borders2.features.forEach((feature22) => {
+ }
+ }
+ for (const feature22 of borders2.features) {
feature22.properties.groups = feature22.properties.groups.map((groupID) => {
- return featuresByCode[groupID].properties.id;
+ return _featuresByCode[groupID].properties.id;
});
loadMembersForGroupsOf(feature22);
- });
- borders2.features.forEach((feature22) => {
+ }
+ for (const feature22 of borders2.features) {
loadRoadSpeedUnit(feature22);
loadRoadHeightUnit(feature22);
loadDriveSide(feature22);
loadCallingCodes(feature22);
loadGroupGroups(feature22);
- });
- borders2.features.forEach((feature22) => {
+ }
+ for (const feature22 of borders2.features) {
feature22.properties.groups.sort((groupID1, groupID2) => {
- return levels.indexOf(featuresByCode[groupID1].properties.level) - levels.indexOf(featuresByCode[groupID2].properties.level);
+ return levels.indexOf(_featuresByCode[groupID1].properties.level) - levels.indexOf(_featuresByCode[groupID2].properties.level);
});
- if (feature22.properties.members)
+ if (feature22.properties.members) {
feature22.properties.members.sort((id1, id2) => {
- const diff = levels.indexOf(featuresByCode[id1].properties.level) - levels.indexOf(featuresByCode[id2].properties.level);
+ const diff = levels.indexOf(_featuresByCode[id1].properties.level) - levels.indexOf(_featuresByCode[id2].properties.level);
if (diff === 0) {
- return borders2.features.indexOf(featuresByCode[id1]) - borders2.features.indexOf(featuresByCode[id2]);
+ return borders2.features.indexOf(_featuresByCode[id1]) - borders2.features.indexOf(_featuresByCode[id2]);
}
return diff;
});
- });
+ }
+ }
const geometryOnlyCollection = {
type: "FeatureCollection",
features: geometryFeatures
};
- whichPolygonGetter = (0, import_which_polygon.default)(geometryOnlyCollection);
+ _whichPolygon = (0, import_which_polygon.default)(geometryOnlyCollection);
function loadGroups(feature22) {
const props = feature22.properties;
if (!props.groups) {
const featureLevelIndex = levels.indexOf(props.level);
let sharedGroups = [];
props.members.forEach((memberID, index) => {
- const member = featuresByCode[memberID];
+ const member = _featuresByCode[memberID];
const memberGroups = member.properties.groups.filter((groupID) => {
- return groupID !== feature22.properties.id && featureLevelIndex < levels.indexOf(featuresByCode[groupID].properties.level);
+ return groupID !== feature22.properties.id && featureLevelIndex < levels.indexOf(_featuresByCode[groupID].properties.level);
});
if (index === 0) {
sharedGroups = memberGroups;
props.groups = props.groups.concat(
sharedGroups.filter((groupID) => props.groups.indexOf(groupID) === -1)
);
- sharedGroups.forEach((groupID) => {
- const groupFeature = featuresByCode[groupID];
+ for (const groupID of sharedGroups) {
+ const groupFeature = _featuresByCode[groupID];
if (groupFeature.properties.members.indexOf(props.id) === -1) {
groupFeature.properties.members.push(props.id);
}
- });
+ }
}
function loadRoadSpeedUnit(feature22) {
const props = feature22.properties;
const vals = Array.from(
new Set(
props.members.map((id2) => {
- const member = featuresByCode[id2];
+ const member = _featuresByCode[id2];
if (member.geometry)
return member.properties.roadSpeedUnit || "km/h";
}).filter(Boolean)
const vals = Array.from(
new Set(
props.members.map((id2) => {
- const member = featuresByCode[id2];
+ const member = _featuresByCode[id2];
if (member.geometry)
return member.properties.roadHeightUnit || "m";
}).filter(Boolean)
const vals = Array.from(
new Set(
props.members.map((id2) => {
- const member = featuresByCode[id2];
+ const member = _featuresByCode[id2];
if (member.geometry)
return member.properties.driveSide || "right";
}).filter(Boolean)
props.callingCodes = Array.from(
new Set(
props.members.reduce((array2, id2) => {
- const member = featuresByCode[id2];
+ const member = _featuresByCode[id2];
if (member.geometry && member.properties.callingCodes) {
return array2.concat(member.properties.callingCodes);
}
feature22.properties.emojiFlag = flag;
}
function loadMembersForGroupsOf(feature22) {
- feature22.properties.groups.forEach((groupID) => {
- const groupFeature = featuresByCode[groupID];
+ for (const groupID of feature22.properties.groups) {
+ const groupFeature = _featuresByCode[groupID];
if (!groupFeature.properties.members) {
groupFeature.properties.members = [];
}
groupFeature.properties.members.push(feature22.properties.id);
- });
+ }
}
function cacheFeatureByIDs(feature22) {
let ids = [];
- identifierProps.forEach((prop) => {
+ for (const prop of identifierProps) {
const id2 = feature22.properties[prop];
- if (id2)
+ if (id2) {
ids.push(id2);
- });
- (feature22.properties.aliases || []).forEach((alias) => {
+ }
+ }
+ for (const alias of feature22.properties.aliases || []) {
ids.push(alias);
- });
- ids.forEach((id2) => {
- let cid = canonicalID(id2);
- featuresByCode[cid] = feature22;
- });
+ }
+ for (const id2 of ids) {
+ const cid = canonicalID(id2);
+ _featuresByCode[cid] = feature22;
+ }
}
}
function locArray(loc) {
}
function smallestFeature(loc) {
const query = locArray(loc);
- const featureProperties = whichPolygonGetter(query);
+ const featureProperties = _whichPolygon(query);
if (!featureProperties)
return null;
- return featuresByCode[featureProperties.id];
+ return _featuresByCode[featureProperties.id];
}
function countryFeature(loc) {
const feature22 = smallestFeature(loc);
if (!feature22)
return null;
const countryCode = feature22.properties.country || feature22.properties.iso1A2;
- return featuresByCode[countryCode] || null;
+ return _featuresByCode[countryCode] || null;
}
var defaultOpts = {
level: void 0,
const features = featuresContaining(loc);
const match = features.find((feature22) => {
let levelIndex = levels.indexOf(feature22.properties.level);
- if (feature22.properties.level === targetLevel || levelIndex > targetLevelIndex && levelIndex <= maxLevelIndex) {
+ if (feature22.properties.level === targetLevel || // if no feature exists at the target level, return the first feature at the next level up
+ levelIndex > targetLevelIndex && levelIndex <= maxLevelIndex) {
if (!withProp || feature22.properties[withProp]) {
return feature22;
}
} else {
stringID = canonicalID(id2);
}
- return featuresByCode[stringID] || null;
+ return _featuresByCode[stringID] || null;
}
function smallestFeaturesForBbox(bbox2) {
- return whichPolygonGetter.bbox(bbox2).map((props) => featuresByCode[props.id]);
+ return _whichPolygon.bbox(bbox2).map((props) => _featuresByCode[props.id]);
}
function smallestOrMatchingFeature(query) {
if (typeof query === "object") {
return null;
return match.properties.iso1A2 || null;
}
+ function propertiesForQuery(query, property) {
+ const features = featuresContaining(query, false);
+ return features.map((feature22) => feature22.properties[property]).filter(Boolean);
+ }
+ function iso1A2Codes(query) {
+ return propertiesForQuery(query, "iso1A2");
+ }
function featuresContaining(query, strict) {
let matchingFeatures;
if (Array.isArray(query) && query.length === 4) {
} else {
returnFeatures = [];
}
- matchingFeatures.forEach((feature22) => {
+ for (const feature22 of matchingFeatures) {
const properties = feature22.properties;
- properties.groups.forEach((groupID) => {
- const groupFeature = featuresByCode[groupID];
+ for (const groupID of properties.groups) {
+ const groupFeature = _featuresByCode[groupID];
if (returnFeatures.indexOf(groupFeature) === -1) {
returnFeatures.push(groupFeature);
}
- });
- });
+ }
+ }
return returnFeatures;
}
function featuresIn(id2, strict) {
features.push(feature22);
}
const properties = feature22.properties;
- (properties.members || []).forEach((memberID) => {
- features.push(featuresByCode[memberID]);
- });
+ for (const memberID of properties.members || []) {
+ features.push(_featuresByCode[memberID]);
+ }
return features;
}
function aggregateFeature(id2) {
if (features.length === 0)
return null;
let aggregateCoordinates = [];
- features.forEach((feature22) => {
- if (feature22.geometry && feature22.geometry.type === "MultiPolygon" && feature22.geometry.coordinates) {
+ for (const feature22 of features) {
+ if (feature22.geometry?.type === "MultiPolygon" && feature22.geometry.coordinates) {
aggregateCoordinates = aggregateCoordinates.concat(feature22.geometry.coordinates);
}
- });
+ }
return {
type: "Feature",
properties: features[0].properties,
return feature22 && feature22.properties.roadHeightUnit || null;
}
- // node_modules/@ideditor/location-conflation/index.mjs
+ // node_modules/@rapideditor/location-conflation/index.mjs
var import_geojson_area = __toESM(require_geojson_area(), 1);
var import_circle_to_polygon = __toESM(require_circle_to_polygon(), 1);
var import_polygon_clipping = __toESM(require_polygon_clipping_umd(), 1);
}
}
include.sort(_sortLocations);
- let id2 = "+[" + include.map((d) => d.id).join(",") + "]";
+ let id2 = "+[" + include.map((d2) => d2.id).join(",") + "]";
if (exclude.length) {
exclude.sort(_sortLocations);
- id2 += "-[" + exclude.map((d) => d.id).join(",") + "]";
+ id2 += "-[" + exclude.map((d2) => d2.id).join(",") + "]";
}
return { type: "locationset", locationSet, id: id2 };
}
if (includes.length === 1 && excludes.length === 0) {
return Object.assign(valid, { feature: includes[0].feature });
}
- const includeGeoJSON = _clip(includes.map((d) => d.feature), "UNION");
- const excludeGeoJSON = _clip(excludes.map((d) => d.feature), "UNION");
+ const includeGeoJSON = _clip(includes.map((d2) => d2.feature), "UNION");
+ const excludeGeoJSON = _clip(excludes.map((d2) => d2.feature), "UNION");
let resultGeoJSON = excludeGeoJSON ? _clip([includeGeoJSON, excludeGeoJSON], "DIFFERENCE") : includeGeoJSON;
const area = import_geojson_area.default.geometry(resultGeoJSON.geometry) / 1e6;
resultGeoJSON.id = id2;
}
};
function whichType(coords2) {
- const a = Array.isArray(coords2);
- const b = a && Array.isArray(coords2[0]);
- const c = b && Array.isArray(coords2[0][0]);
- const d = c && Array.isArray(coords2[0][0][0]);
- return d ? "MultiPolygon" : "Polygon";
+ const a2 = Array.isArray(coords2);
+ const b2 = a2 && Array.isArray(coords2[0]);
+ const c2 = b2 && Array.isArray(coords2[0][0]);
+ const d2 = c2 && Array.isArray(coords2[0][0][0]);
+ return d2 ? "MultiPolygon" : "Polygon";
}
}
function _cloneDeep(obj) {
return JSON.parse(JSON.stringify(obj));
}
- function _sortLocations(a, b) {
+ function _sortLocations(a2, b2) {
const rank = { countrycoder: 1, geojson: 2, point: 3 };
- const aRank = rank[a.type];
- const bRank = rank[b.type];
- return aRank > bRank ? 1 : aRank < bRank ? -1 : a.id.localeCompare(b.id);
+ const aRank = rank[a2.type];
+ const bRank = rank[b2.type];
+ return aRank > bRank ? 1 : aRank < bRank ? -1 : a2.id.localeCompare(b2.id);
}
// modules/core/LocationManager.js
this._resolved.set(locationID, geojson);
}
area += geojson.properties.area;
- let s = this._locationIncludedIn.get(locationID);
- if (!s) {
- s = /* @__PURE__ */ new Set();
- this._locationIncludedIn.set(locationID, s);
+ let s2 = this._locationIncludedIn.get(locationID);
+ if (!s2) {
+ s2 = /* @__PURE__ */ new Set();
+ this._locationIncludedIn.set(locationID, s2);
}
- s.add(locationSetID);
+ s2.add(locationSetID);
});
(locationSet.exclude || []).forEach((location) => {
const locationID = _loco.validateLocation(location).id;
this._resolved.set(locationID, geojson);
}
area -= geojson.properties.area;
- let s = this._locationExcludedIn.get(locationID);
- if (!s) {
- s = /* @__PURE__ */ new Set();
- this._locationExcludedIn.set(locationID, s);
+ let s2 = this._locationExcludedIn.get(locationID);
+ if (!s2) {
+ s2 = /* @__PURE__ */ new Set();
+ this._locationExcludedIn.set(locationID, s2);
}
- s.add(locationSetID);
+ s2.add(locationSetID);
});
this._knownLocationSets.set(locationSetID, area);
} catch (err) {
try {
value[symToStringTag] = void 0;
var unmasked = true;
- } catch (e) {
+ } catch (e3) {
}
var result = nativeObjectToString.call(value);
if (unmasked) {
}
var toNumber_default = toNumber;
+ // node_modules/lodash-es/isFunction.js
+ var asyncTag = "[object AsyncFunction]";
+ var funcTag = "[object Function]";
+ var genTag = "[object GeneratorFunction]";
+ var proxyTag = "[object Proxy]";
+ function isFunction(value) {
+ if (!isObject_default(value)) {
+ return false;
+ }
+ var tag = baseGetTag_default(value);
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
+ }
+ var isFunction_default = isFunction;
+
+ // node_modules/lodash-es/_coreJsData.js
+ var coreJsData = root_default["__core-js_shared__"];
+ var coreJsData_default = coreJsData;
+
+ // node_modules/lodash-es/_isMasked.js
+ var maskSrcKey = function() {
+ var uid = /[^.]+$/.exec(coreJsData_default && coreJsData_default.keys && coreJsData_default.keys.IE_PROTO || "");
+ return uid ? "Symbol(src)_1." + uid : "";
+ }();
+ function isMasked(func) {
+ return !!maskSrcKey && maskSrcKey in func;
+ }
+ var isMasked_default = isMasked;
+
+ // node_modules/lodash-es/_toSource.js
+ var funcProto = Function.prototype;
+ var funcToString = funcProto.toString;
+ function toSource(func) {
+ if (func != null) {
+ try {
+ return funcToString.call(func);
+ } catch (e3) {
+ }
+ try {
+ return func + "";
+ } catch (e3) {
+ }
+ }
+ return "";
+ }
+ var toSource_default = toSource;
+
+ // node_modules/lodash-es/_baseIsNative.js
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ var funcProto2 = Function.prototype;
+ var objectProto3 = Object.prototype;
+ var funcToString2 = funcProto2.toString;
+ var hasOwnProperty2 = objectProto3.hasOwnProperty;
+ var reIsNative = RegExp(
+ "^" + funcToString2.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
+ );
+ function baseIsNative(value) {
+ if (!isObject_default(value) || isMasked_default(value)) {
+ return false;
+ }
+ var pattern = isFunction_default(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource_default(value));
+ }
+ var baseIsNative_default = baseIsNative;
+
+ // node_modules/lodash-es/_getValue.js
+ function getValue(object, key) {
+ return object == null ? void 0 : object[key];
+ }
+ var getValue_default = getValue;
+
+ // node_modules/lodash-es/_getNative.js
+ function getNative(object, key) {
+ var value = getValue_default(object, key);
+ return baseIsNative_default(value) ? value : void 0;
+ }
+ var getNative_default = getNative;
+
+ // node_modules/lodash-es/_WeakMap.js
+ var WeakMap = getNative_default(root_default, "WeakMap");
+ var WeakMap_default = WeakMap;
+
+ // node_modules/lodash-es/_isIndex.js
+ var MAX_SAFE_INTEGER = 9007199254740991;
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ function isIndex(value, length) {
+ var type2 = typeof value;
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (type2 == "number" || type2 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
+ }
+ var isIndex_default = isIndex;
+
+ // node_modules/lodash-es/eq.js
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ var eq_default = eq;
+
+ // node_modules/lodash-es/isLength.js
+ var MAX_SAFE_INTEGER2 = 9007199254740991;
+ function isLength(value) {
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;
+ }
+ var isLength_default = isLength;
+
+ // node_modules/lodash-es/isArrayLike.js
+ function isArrayLike(value) {
+ return value != null && isLength_default(value.length) && !isFunction_default(value);
+ }
+ var isArrayLike_default = isArrayLike;
+
+ // node_modules/lodash-es/_isPrototype.js
+ var objectProto4 = Object.prototype;
+ function isPrototype(value) {
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto4;
+ return value === proto;
+ }
+ var isPrototype_default = isPrototype;
+
+ // node_modules/lodash-es/_baseTimes.js
+ function baseTimes(n3, iteratee) {
+ var index = -1, result = Array(n3);
+ while (++index < n3) {
+ result[index] = iteratee(index);
+ }
+ return result;
+ }
+ var baseTimes_default = baseTimes;
+
+ // node_modules/lodash-es/_baseIsArguments.js
+ var argsTag = "[object Arguments]";
+ function baseIsArguments(value) {
+ return isObjectLike_default(value) && baseGetTag_default(value) == argsTag;
+ }
+ var baseIsArguments_default = baseIsArguments;
+
+ // node_modules/lodash-es/isArguments.js
+ var objectProto5 = Object.prototype;
+ var hasOwnProperty3 = objectProto5.hasOwnProperty;
+ var propertyIsEnumerable = objectProto5.propertyIsEnumerable;
+ var isArguments = baseIsArguments_default(function() {
+ return arguments;
+ }()) ? baseIsArguments_default : function(value) {
+ return isObjectLike_default(value) && hasOwnProperty3.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
+ };
+ var isArguments_default = isArguments;
+
+ // node_modules/lodash-es/stubFalse.js
+ function stubFalse() {
+ return false;
+ }
+ var stubFalse_default = stubFalse;
+
+ // node_modules/lodash-es/isBuffer.js
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
+ var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ var Buffer2 = moduleExports ? root_default.Buffer : void 0;
+ var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;
+ var isBuffer = nativeIsBuffer || stubFalse_default;
+ var isBuffer_default = isBuffer;
+
+ // node_modules/lodash-es/_baseIsTypedArray.js
+ var argsTag2 = "[object Arguments]";
+ var arrayTag = "[object Array]";
+ var boolTag = "[object Boolean]";
+ var dateTag = "[object Date]";
+ var errorTag = "[object Error]";
+ var funcTag2 = "[object Function]";
+ var mapTag = "[object Map]";
+ var numberTag = "[object Number]";
+ var objectTag = "[object Object]";
+ var regexpTag = "[object RegExp]";
+ var setTag = "[object Set]";
+ var stringTag = "[object String]";
+ var weakMapTag = "[object WeakMap]";
+ var arrayBufferTag = "[object ArrayBuffer]";
+ var dataViewTag = "[object DataView]";
+ var float32Tag = "[object Float32Array]";
+ var float64Tag = "[object Float64Array]";
+ var int8Tag = "[object Int8Array]";
+ var int16Tag = "[object Int16Array]";
+ var int32Tag = "[object Int32Array]";
+ var uint8Tag = "[object Uint8Array]";
+ var uint8ClampedTag = "[object Uint8ClampedArray]";
+ var uint16Tag = "[object Uint16Array]";
+ var uint32Tag = "[object Uint32Array]";
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag2] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag2] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ function baseIsTypedArray(value) {
+ return isObjectLike_default(value) && isLength_default(value.length) && !!typedArrayTags[baseGetTag_default(value)];
+ }
+ var baseIsTypedArray_default = baseIsTypedArray;
+
+ // node_modules/lodash-es/_baseUnary.js
+ function baseUnary(func) {
+ return function(value) {
+ return func(value);
+ };
+ }
+ var baseUnary_default = baseUnary;
+
+ // node_modules/lodash-es/_nodeUtil.js
+ var freeExports2 = typeof exports == "object" && exports && !exports.nodeType && exports;
+ var freeModule2 = freeExports2 && typeof module == "object" && module && !module.nodeType && module;
+ var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2;
+ var freeProcess = moduleExports2 && freeGlobal_default.process;
+ var nodeUtil = function() {
+ try {
+ var types = freeModule2 && freeModule2.require && freeModule2.require("util").types;
+ if (types) {
+ return types;
+ }
+ return freeProcess && freeProcess.binding && freeProcess.binding("util");
+ } catch (e3) {
+ }
+ }();
+ var nodeUtil_default = nodeUtil;
+
+ // node_modules/lodash-es/isTypedArray.js
+ var nodeIsTypedArray = nodeUtil_default && nodeUtil_default.isTypedArray;
+ var isTypedArray = nodeIsTypedArray ? baseUnary_default(nodeIsTypedArray) : baseIsTypedArray_default;
+ var isTypedArray_default = isTypedArray;
+
+ // node_modules/lodash-es/_arrayLikeKeys.js
+ var objectProto6 = Object.prototype;
+ var hasOwnProperty4 = objectProto6.hasOwnProperty;
+ function arrayLikeKeys(value, inherited) {
+ var isArr = isArray_default(value), isArg = !isArr && isArguments_default(value), isBuff = !isArr && !isArg && isBuffer_default(value), isType = !isArr && !isArg && !isBuff && isTypedArray_default(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes_default(value.length, String) : [], length = result.length;
+ for (var key in value) {
+ if ((inherited || hasOwnProperty4.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
+ (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
+ isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
+ isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
+ isIndex_default(key, length)))) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ var arrayLikeKeys_default = arrayLikeKeys;
+
+ // node_modules/lodash-es/_overArg.js
+ function overArg(func, transform2) {
+ return function(arg) {
+ return func(transform2(arg));
+ };
+ }
+ var overArg_default = overArg;
+
+ // node_modules/lodash-es/_nativeKeys.js
+ var nativeKeys = overArg_default(Object.keys, Object);
+ var nativeKeys_default = nativeKeys;
+
+ // node_modules/lodash-es/_baseKeys.js
+ var objectProto7 = Object.prototype;
+ var hasOwnProperty5 = objectProto7.hasOwnProperty;
+ function baseKeys(object) {
+ if (!isPrototype_default(object)) {
+ return nativeKeys_default(object);
+ }
+ var result = [];
+ for (var key in Object(object)) {
+ if (hasOwnProperty5.call(object, key) && key != "constructor") {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+ var baseKeys_default = baseKeys;
+
+ // node_modules/lodash-es/keys.js
+ function keys(object) {
+ return isArrayLike_default(object) ? arrayLikeKeys_default(object) : baseKeys_default(object);
+ }
+ var keys_default = keys;
+
+ // node_modules/lodash-es/_nativeCreate.js
+ var nativeCreate = getNative_default(Object, "create");
+ var nativeCreate_default = nativeCreate;
+
+ // node_modules/lodash-es/_hashClear.js
+ function hashClear() {
+ this.__data__ = nativeCreate_default ? nativeCreate_default(null) : {};
+ this.size = 0;
+ }
+ var hashClear_default = hashClear;
+
+ // node_modules/lodash-es/_hashDelete.js
+ function hashDelete(key) {
+ var result = this.has(key) && delete this.__data__[key];
+ this.size -= result ? 1 : 0;
+ return result;
+ }
+ var hashDelete_default = hashDelete;
+
+ // node_modules/lodash-es/_hashGet.js
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
+ var objectProto8 = Object.prototype;
+ var hasOwnProperty6 = objectProto8.hasOwnProperty;
+ function hashGet(key) {
+ var data = this.__data__;
+ if (nativeCreate_default) {
+ var result = data[key];
+ return result === HASH_UNDEFINED ? void 0 : result;
+ }
+ return hasOwnProperty6.call(data, key) ? data[key] : void 0;
+ }
+ var hashGet_default = hashGet;
+
+ // node_modules/lodash-es/_hashHas.js
+ var objectProto9 = Object.prototype;
+ var hasOwnProperty7 = objectProto9.hasOwnProperty;
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate_default ? data[key] !== void 0 : hasOwnProperty7.call(data, key);
+ }
+ var hashHas_default = hashHas;
+
+ // node_modules/lodash-es/_hashSet.js
+ var HASH_UNDEFINED2 = "__lodash_hash_undefined__";
+ function hashSet(key, value) {
+ var data = this.__data__;
+ this.size += this.has(key) ? 0 : 1;
+ data[key] = nativeCreate_default && value === void 0 ? HASH_UNDEFINED2 : value;
+ return this;
+ }
+ var hashSet_default = hashSet;
+
+ // node_modules/lodash-es/_Hash.js
+ function Hash(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ Hash.prototype.clear = hashClear_default;
+ Hash.prototype["delete"] = hashDelete_default;
+ Hash.prototype.get = hashGet_default;
+ Hash.prototype.has = hashHas_default;
+ Hash.prototype.set = hashSet_default;
+ var Hash_default = Hash;
+
+ // node_modules/lodash-es/_listCacheClear.js
+ function listCacheClear() {
+ this.__data__ = [];
+ this.size = 0;
+ }
+ var listCacheClear_default = listCacheClear;
+
+ // node_modules/lodash-es/_assocIndexOf.js
+ function assocIndexOf(array2, key) {
+ var length = array2.length;
+ while (length--) {
+ if (eq_default(array2[length][0], key)) {
+ return length;
+ }
+ }
+ return -1;
+ }
+ var assocIndexOf_default = assocIndexOf;
+
+ // node_modules/lodash-es/_listCacheDelete.js
+ var arrayProto = Array.prototype;
+ var splice = arrayProto.splice;
+ function listCacheDelete(key) {
+ var data = this.__data__, index = assocIndexOf_default(data, key);
+ if (index < 0) {
+ return false;
+ }
+ var lastIndex = data.length - 1;
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+ --this.size;
+ return true;
+ }
+ var listCacheDelete_default = listCacheDelete;
+
+ // node_modules/lodash-es/_listCacheGet.js
+ function listCacheGet(key) {
+ var data = this.__data__, index = assocIndexOf_default(data, key);
+ return index < 0 ? void 0 : data[index][1];
+ }
+ var listCacheGet_default = listCacheGet;
+
+ // node_modules/lodash-es/_listCacheHas.js
+ function listCacheHas(key) {
+ return assocIndexOf_default(this.__data__, key) > -1;
+ }
+ var listCacheHas_default = listCacheHas;
+
+ // node_modules/lodash-es/_listCacheSet.js
+ function listCacheSet(key, value) {
+ var data = this.__data__, index = assocIndexOf_default(data, key);
+ if (index < 0) {
+ ++this.size;
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+ return this;
+ }
+ var listCacheSet_default = listCacheSet;
+
+ // node_modules/lodash-es/_ListCache.js
+ function ListCache(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ ListCache.prototype.clear = listCacheClear_default;
+ ListCache.prototype["delete"] = listCacheDelete_default;
+ ListCache.prototype.get = listCacheGet_default;
+ ListCache.prototype.has = listCacheHas_default;
+ ListCache.prototype.set = listCacheSet_default;
+ var ListCache_default = ListCache;
+
+ // node_modules/lodash-es/_Map.js
+ var Map2 = getNative_default(root_default, "Map");
+ var Map_default = Map2;
+
+ // node_modules/lodash-es/_mapCacheClear.js
+ function mapCacheClear() {
+ this.size = 0;
+ this.__data__ = {
+ "hash": new Hash_default(),
+ "map": new (Map_default || ListCache_default)(),
+ "string": new Hash_default()
+ };
+ }
+ var mapCacheClear_default = mapCacheClear;
+
+ // node_modules/lodash-es/_isKeyable.js
+ function isKeyable(value) {
+ var type2 = typeof value;
+ return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value !== "__proto__" : value === null;
+ }
+ var isKeyable_default = isKeyable;
+
+ // node_modules/lodash-es/_getMapData.js
+ function getMapData(map2, key) {
+ var data = map2.__data__;
+ return isKeyable_default(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+ }
+ var getMapData_default = getMapData;
+
+ // node_modules/lodash-es/_mapCacheDelete.js
+ function mapCacheDelete(key) {
+ var result = getMapData_default(this, key)["delete"](key);
+ this.size -= result ? 1 : 0;
+ return result;
+ }
+ var mapCacheDelete_default = mapCacheDelete;
+
+ // node_modules/lodash-es/_mapCacheGet.js
+ function mapCacheGet(key) {
+ return getMapData_default(this, key).get(key);
+ }
+ var mapCacheGet_default = mapCacheGet;
+
+ // node_modules/lodash-es/_mapCacheHas.js
+ function mapCacheHas(key) {
+ return getMapData_default(this, key).has(key);
+ }
+ var mapCacheHas_default = mapCacheHas;
+
+ // node_modules/lodash-es/_mapCacheSet.js
+ function mapCacheSet(key, value) {
+ var data = getMapData_default(this, key), size = data.size;
+ data.set(key, value);
+ this.size += data.size == size ? 0 : 1;
+ return this;
+ }
+ var mapCacheSet_default = mapCacheSet;
+
+ // node_modules/lodash-es/_MapCache.js
+ function MapCache(entries) {
+ var index = -1, length = entries == null ? 0 : entries.length;
+ this.clear();
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ MapCache.prototype.clear = mapCacheClear_default;
+ MapCache.prototype["delete"] = mapCacheDelete_default;
+ MapCache.prototype.get = mapCacheGet_default;
+ MapCache.prototype.has = mapCacheHas_default;
+ MapCache.prototype.set = mapCacheSet_default;
+ var MapCache_default = MapCache;
+
// node_modules/lodash-es/toString.js
function toString(value) {
return value == null ? "" : baseToString_default(value);
}
var toString_default = toString;
+ // node_modules/lodash-es/_arrayPush.js
+ function arrayPush(array2, values) {
+ var index = -1, length = values.length, offset = array2.length;
+ while (++index < length) {
+ array2[offset + index] = values[index];
+ }
+ return array2;
+ }
+ var arrayPush_default = arrayPush;
+
// node_modules/lodash-es/_basePropertyOf.js
function basePropertyOf(object) {
return function(key) {
}
var basePropertyOf_default = basePropertyOf;
+ // node_modules/lodash-es/_stackClear.js
+ function stackClear() {
+ this.__data__ = new ListCache_default();
+ this.size = 0;
+ }
+ var stackClear_default = stackClear;
+
+ // node_modules/lodash-es/_stackDelete.js
+ function stackDelete(key) {
+ var data = this.__data__, result = data["delete"](key);
+ this.size = data.size;
+ return result;
+ }
+ var stackDelete_default = stackDelete;
+
+ // node_modules/lodash-es/_stackGet.js
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ var stackGet_default = stackGet;
+
+ // node_modules/lodash-es/_stackHas.js
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ var stackHas_default = stackHas;
+
+ // node_modules/lodash-es/_stackSet.js
+ var LARGE_ARRAY_SIZE = 200;
+ function stackSet(key, value) {
+ var data = this.__data__;
+ if (data instanceof ListCache_default) {
+ var pairs2 = data.__data__;
+ if (!Map_default || pairs2.length < LARGE_ARRAY_SIZE - 1) {
+ pairs2.push([key, value]);
+ this.size = ++data.size;
+ return this;
+ }
+ data = this.__data__ = new MapCache_default(pairs2);
+ }
+ data.set(key, value);
+ this.size = data.size;
+ return this;
+ }
+ var stackSet_default = stackSet;
+
+ // node_modules/lodash-es/_Stack.js
+ function Stack(entries) {
+ var data = this.__data__ = new ListCache_default(entries);
+ this.size = data.size;
+ }
+ Stack.prototype.clear = stackClear_default;
+ Stack.prototype["delete"] = stackDelete_default;
+ Stack.prototype.get = stackGet_default;
+ Stack.prototype.has = stackHas_default;
+ Stack.prototype.set = stackSet_default;
+ var Stack_default = Stack;
+
+ // node_modules/lodash-es/_arrayFilter.js
+ function arrayFilter(array2, predicate) {
+ var index = -1, length = array2 == null ? 0 : array2.length, resIndex = 0, result = [];
+ while (++index < length) {
+ var value = array2[index];
+ if (predicate(value, index, array2)) {
+ result[resIndex++] = value;
+ }
+ }
+ return result;
+ }
+ var arrayFilter_default = arrayFilter;
+
+ // node_modules/lodash-es/stubArray.js
+ function stubArray() {
+ return [];
+ }
+ var stubArray_default = stubArray;
+
+ // node_modules/lodash-es/_getSymbols.js
+ var objectProto10 = Object.prototype;
+ var propertyIsEnumerable2 = objectProto10.propertyIsEnumerable;
+ var nativeGetSymbols = Object.getOwnPropertySymbols;
+ var getSymbols = !nativeGetSymbols ? stubArray_default : function(object) {
+ if (object == null) {
+ return [];
+ }
+ object = Object(object);
+ return arrayFilter_default(nativeGetSymbols(object), function(symbol) {
+ return propertyIsEnumerable2.call(object, symbol);
+ });
+ };
+ var getSymbols_default = getSymbols;
+
+ // node_modules/lodash-es/_baseGetAllKeys.js
+ function baseGetAllKeys(object, keysFunc, symbolsFunc) {
+ var result = keysFunc(object);
+ return isArray_default(object) ? result : arrayPush_default(result, symbolsFunc(object));
+ }
+ var baseGetAllKeys_default = baseGetAllKeys;
+
+ // node_modules/lodash-es/_getAllKeys.js
+ function getAllKeys(object) {
+ return baseGetAllKeys_default(object, keys_default, getSymbols_default);
+ }
+ var getAllKeys_default = getAllKeys;
+
+ // node_modules/lodash-es/_DataView.js
+ var DataView2 = getNative_default(root_default, "DataView");
+ var DataView_default = DataView2;
+
+ // node_modules/lodash-es/_Promise.js
+ var Promise2 = getNative_default(root_default, "Promise");
+ var Promise_default = Promise2;
+
+ // node_modules/lodash-es/_Set.js
+ var Set2 = getNative_default(root_default, "Set");
+ var Set_default = Set2;
+
+ // node_modules/lodash-es/_getTag.js
+ var mapTag2 = "[object Map]";
+ var objectTag2 = "[object Object]";
+ var promiseTag = "[object Promise]";
+ var setTag2 = "[object Set]";
+ var weakMapTag2 = "[object WeakMap]";
+ var dataViewTag2 = "[object DataView]";
+ var dataViewCtorString = toSource_default(DataView_default);
+ var mapCtorString = toSource_default(Map_default);
+ var promiseCtorString = toSource_default(Promise_default);
+ var setCtorString = toSource_default(Set_default);
+ var weakMapCtorString = toSource_default(WeakMap_default);
+ var getTag = baseGetTag_default;
+ if (DataView_default && getTag(new DataView_default(new ArrayBuffer(1))) != dataViewTag2 || Map_default && getTag(new Map_default()) != mapTag2 || Promise_default && getTag(Promise_default.resolve()) != promiseTag || Set_default && getTag(new Set_default()) != setTag2 || WeakMap_default && getTag(new WeakMap_default()) != weakMapTag2) {
+ getTag = function(value) {
+ var result = baseGetTag_default(value), Ctor = result == objectTag2 ? value.constructor : void 0, ctorString = Ctor ? toSource_default(Ctor) : "";
+ if (ctorString) {
+ switch (ctorString) {
+ case dataViewCtorString:
+ return dataViewTag2;
+ case mapCtorString:
+ return mapTag2;
+ case promiseCtorString:
+ return promiseTag;
+ case setCtorString:
+ return setTag2;
+ case weakMapCtorString:
+ return weakMapTag2;
+ }
+ }
+ return result;
+ };
+ }
+ var getTag_default = getTag;
+
+ // node_modules/lodash-es/_Uint8Array.js
+ var Uint8Array2 = root_default.Uint8Array;
+ var Uint8Array_default = Uint8Array2;
+
+ // node_modules/lodash-es/_setCacheAdd.js
+ var HASH_UNDEFINED3 = "__lodash_hash_undefined__";
+ function setCacheAdd(value) {
+ this.__data__.set(value, HASH_UNDEFINED3);
+ return this;
+ }
+ var setCacheAdd_default = setCacheAdd;
+
+ // node_modules/lodash-es/_setCacheHas.js
+ function setCacheHas(value) {
+ return this.__data__.has(value);
+ }
+ var setCacheHas_default = setCacheHas;
+
+ // node_modules/lodash-es/_SetCache.js
+ function SetCache(values) {
+ var index = -1, length = values == null ? 0 : values.length;
+ this.__data__ = new MapCache_default();
+ while (++index < length) {
+ this.add(values[index]);
+ }
+ }
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd_default;
+ SetCache.prototype.has = setCacheHas_default;
+ var SetCache_default = SetCache;
+
+ // node_modules/lodash-es/_arraySome.js
+ function arraySome(array2, predicate) {
+ var index = -1, length = array2 == null ? 0 : array2.length;
+ while (++index < length) {
+ if (predicate(array2[index], index, array2)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ var arraySome_default = arraySome;
+
+ // node_modules/lodash-es/_cacheHas.js
+ function cacheHas(cache, key) {
+ return cache.has(key);
+ }
+ var cacheHas_default = cacheHas;
+
+ // node_modules/lodash-es/_equalArrays.js
+ var COMPARE_PARTIAL_FLAG = 1;
+ var COMPARE_UNORDERED_FLAG = 2;
+ function equalArrays(array2, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array2.length, othLength = other.length;
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+ return false;
+ }
+ var arrStacked = stack.get(array2);
+ var othStacked = stack.get(other);
+ if (arrStacked && othStacked) {
+ return arrStacked == other && othStacked == array2;
+ }
+ var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache_default() : void 0;
+ stack.set(array2, other);
+ stack.set(other, array2);
+ while (++index < arrLength) {
+ var arrValue = array2[index], othValue = other[index];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, arrValue, index, other, array2, stack) : customizer(arrValue, othValue, index, array2, other, stack);
+ }
+ if (compared !== void 0) {
+ if (compared) {
+ continue;
+ }
+ result = false;
+ break;
+ }
+ if (seen) {
+ if (!arraySome_default(other, function(othValue2, othIndex) {
+ if (!cacheHas_default(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
+ return seen.push(othIndex);
+ }
+ })) {
+ result = false;
+ break;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
+ result = false;
+ break;
+ }
+ }
+ stack["delete"](array2);
+ stack["delete"](other);
+ return result;
+ }
+ var equalArrays_default = equalArrays;
+
+ // node_modules/lodash-es/_mapToArray.js
+ function mapToArray(map2) {
+ var index = -1, result = Array(map2.size);
+ map2.forEach(function(value, key) {
+ result[++index] = [key, value];
+ });
+ return result;
+ }
+ var mapToArray_default = mapToArray;
+
+ // node_modules/lodash-es/_setToArray.js
+ function setToArray(set3) {
+ var index = -1, result = Array(set3.size);
+ set3.forEach(function(value) {
+ result[++index] = value;
+ });
+ return result;
+ }
+ var setToArray_default = setToArray;
+
+ // node_modules/lodash-es/_equalByTag.js
+ var COMPARE_PARTIAL_FLAG2 = 1;
+ var COMPARE_UNORDERED_FLAG2 = 2;
+ var boolTag2 = "[object Boolean]";
+ var dateTag2 = "[object Date]";
+ var errorTag2 = "[object Error]";
+ var mapTag3 = "[object Map]";
+ var numberTag2 = "[object Number]";
+ var regexpTag2 = "[object RegExp]";
+ var setTag3 = "[object Set]";
+ var stringTag2 = "[object String]";
+ var symbolTag2 = "[object Symbol]";
+ var arrayBufferTag2 = "[object ArrayBuffer]";
+ var dataViewTag3 = "[object DataView]";
+ var symbolProto2 = Symbol_default ? Symbol_default.prototype : void 0;
+ var symbolValueOf = symbolProto2 ? symbolProto2.valueOf : void 0;
+ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
+ switch (tag) {
+ case dataViewTag3:
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
+ return false;
+ }
+ object = object.buffer;
+ other = other.buffer;
+ case arrayBufferTag2:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array_default(object), new Uint8Array_default(other))) {
+ return false;
+ }
+ return true;
+ case boolTag2:
+ case dateTag2:
+ case numberTag2:
+ return eq_default(+object, +other);
+ case errorTag2:
+ return object.name == other.name && object.message == other.message;
+ case regexpTag2:
+ case stringTag2:
+ return object == other + "";
+ case mapTag3:
+ var convert = mapToArray_default;
+ case setTag3:
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG2;
+ convert || (convert = setToArray_default);
+ if (object.size != other.size && !isPartial) {
+ return false;
+ }
+ var stacked = stack.get(object);
+ if (stacked) {
+ return stacked == other;
+ }
+ bitmask |= COMPARE_UNORDERED_FLAG2;
+ stack.set(object, other);
+ var result = equalArrays_default(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
+ stack["delete"](object);
+ return result;
+ case symbolTag2:
+ if (symbolValueOf) {
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
+ }
+ }
+ return false;
+ }
+ var equalByTag_default = equalByTag;
+
+ // node_modules/lodash-es/_equalObjects.js
+ var COMPARE_PARTIAL_FLAG3 = 1;
+ var objectProto11 = Object.prototype;
+ var hasOwnProperty8 = objectProto11.hasOwnProperty;
+ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG3, objProps = getAllKeys_default(object), objLength = objProps.length, othProps = getAllKeys_default(other), othLength = othProps.length;
+ if (objLength != othLength && !isPartial) {
+ return false;
+ }
+ var index = objLength;
+ while (index--) {
+ var key = objProps[index];
+ if (!(isPartial ? key in other : hasOwnProperty8.call(other, key))) {
+ return false;
+ }
+ }
+ var objStacked = stack.get(object);
+ var othStacked = stack.get(other);
+ if (objStacked && othStacked) {
+ return objStacked == other && othStacked == object;
+ }
+ var result = true;
+ stack.set(object, other);
+ stack.set(other, object);
+ var skipCtor = isPartial;
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key], othValue = other[key];
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
+ }
+ if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
+ result = false;
+ break;
+ }
+ skipCtor || (skipCtor = key == "constructor");
+ }
+ if (result && !skipCtor) {
+ var objCtor = object.constructor, othCtor = other.constructor;
+ if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
+ result = false;
+ }
+ }
+ stack["delete"](object);
+ stack["delete"](other);
+ return result;
+ }
+ var equalObjects_default = equalObjects;
+
+ // node_modules/lodash-es/_baseIsEqualDeep.js
+ var COMPARE_PARTIAL_FLAG4 = 1;
+ var argsTag3 = "[object Arguments]";
+ var arrayTag2 = "[object Array]";
+ var objectTag3 = "[object Object]";
+ var objectProto12 = Object.prototype;
+ var hasOwnProperty9 = objectProto12.hasOwnProperty;
+ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
+ var objIsArr = isArray_default(object), othIsArr = isArray_default(other), objTag = objIsArr ? arrayTag2 : getTag_default(object), othTag = othIsArr ? arrayTag2 : getTag_default(other);
+ objTag = objTag == argsTag3 ? objectTag3 : objTag;
+ othTag = othTag == argsTag3 ? objectTag3 : othTag;
+ var objIsObj = objTag == objectTag3, othIsObj = othTag == objectTag3, isSameTag = objTag == othTag;
+ if (isSameTag && isBuffer_default(object)) {
+ if (!isBuffer_default(other)) {
+ return false;
+ }
+ objIsArr = true;
+ objIsObj = false;
+ }
+ if (isSameTag && !objIsObj) {
+ stack || (stack = new Stack_default());
+ return objIsArr || isTypedArray_default(object) ? equalArrays_default(object, other, bitmask, customizer, equalFunc, stack) : equalByTag_default(object, other, objTag, bitmask, customizer, equalFunc, stack);
+ }
+ if (!(bitmask & COMPARE_PARTIAL_FLAG4)) {
+ var objIsWrapped = objIsObj && hasOwnProperty9.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty9.call(other, "__wrapped__");
+ if (objIsWrapped || othIsWrapped) {
+ var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
+ stack || (stack = new Stack_default());
+ return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
+ }
+ }
+ if (!isSameTag) {
+ return false;
+ }
+ stack || (stack = new Stack_default());
+ return equalObjects_default(object, other, bitmask, customizer, equalFunc, stack);
+ }
+ var baseIsEqualDeep_default = baseIsEqualDeep;
+
+ // node_modules/lodash-es/_baseIsEqual.js
+ function baseIsEqual(value, other, bitmask, customizer, stack) {
+ if (value === other) {
+ return true;
+ }
+ if (value == null || other == null || !isObjectLike_default(value) && !isObjectLike_default(other)) {
+ return value !== value && other !== other;
+ }
+ return baseIsEqualDeep_default(value, other, bitmask, customizer, baseIsEqual, stack);
+ }
+ var baseIsEqual_default = baseIsEqual;
+
// node_modules/lodash-es/now.js
var now2 = function() {
return root_default.Date.now();
}
var escape_default = escape2;
+ // node_modules/lodash-es/isEqual.js
+ function isEqual(value, other) {
+ return baseIsEqual_default(value, other);
+ }
+ var isEqual_default = isEqual;
+
+ // node_modules/lodash-es/isNumber.js
+ var numberTag3 = "[object Number]";
+ function isNumber(value) {
+ return typeof value == "number" || isObjectLike_default(value) && baseGetTag_default(value) == numberTag3;
+ }
+ var isNumber_default = isNumber;
+
// node_modules/lodash-es/throttle.js
var FUNC_ERROR_TEXT2 = "Expected a function";
function throttle(func, wait, options2) {
return _detected;
_detected = {};
const ua = navigator.userAgent;
- let m = null;
- m = ua.match(/(edge)\/?\s*(\.?\d+(\.\d+)*)/i);
- if (m !== null) {
- _detected.browser = m[1];
- _detected.version = m[2];
+ let m2 = null;
+ m2 = ua.match(/(edge)\/?\s*(\.?\d+(\.\d+)*)/i);
+ if (m2 !== null) {
+ _detected.browser = m2[1];
+ _detected.version = m2[2];
}
if (!_detected.browser) {
- m = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i);
- if (m !== null) {
+ m2 = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i);
+ if (m2 !== null) {
_detected.browser = "msie";
- _detected.version = m[1];
+ _detected.version = m2[1];
}
}
if (!_detected.browser) {
- m = ua.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i);
- if (m !== null) {
+ m2 = ua.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i);
+ if (m2 !== null) {
_detected.browser = "Opera";
- _detected.version = m[2];
+ _detected.version = m2[2];
}
}
if (!_detected.browser) {
- m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
- if (m !== null) {
- _detected.browser = m[1];
- _detected.version = m[2];
- m = ua.match(/version\/([\.\d]+)/i);
- if (m !== null)
- _detected.version = m[1];
+ m2 = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
+ if (m2 !== null) {
+ _detected.browser = m2[1];
+ _detected.version = m2[2];
+ m2 = ua.match(/version\/([\.\d]+)/i);
+ if (m2 !== null)
+ _detected.version = m2[1];
}
}
if (!_detected.browser) {
// modules/util/clean_tags.js
function utilCleanTags(tags) {
var out = {};
- for (var k in tags) {
- if (!k)
+ for (var k2 in tags) {
+ if (!k2)
continue;
- var v = tags[k];
- if (v !== void 0) {
- out[k] = cleanValue(k, v);
+ var v2 = tags[k2];
+ if (v2 !== void 0) {
+ out[k2] = cleanValue(k2, v2);
}
}
return out;
- function cleanValue(k2, v2) {
- function keepSpaces(k3) {
- return /_hours|_times|:conditional$/.test(k3);
- }
- function skip(k3) {
- return /^(description|note|fixme)$/.test(k3);
- }
- if (skip(k2))
- return v2;
- var cleaned = v2.split(";").map(function(s) {
- return s.trim();
- }).join(keepSpaces(k2) ? "; " : ";");
- if (k2.indexOf("website") !== -1 || k2.indexOf("email") !== -1 || cleaned.indexOf("http") === 0) {
+ function cleanValue(k3, v3) {
+ function keepSpaces(k4) {
+ return /_hours|_times|:conditional$/.test(k4);
+ }
+ function skip(k4) {
+ return /^(description|note|fixme)$/.test(k4);
+ }
+ if (skip(k3))
+ return v3;
+ var cleaned = v3.split(";").map(function(s2) {
+ return s2.trim();
+ }).join(keepSpaces(k3) ? "; " : ";");
+ if (k3.indexOf("website") !== -1 || k3.indexOf("email") !== -1 || cleaned.indexOf("http") === 0) {
cleaned = cleaned.replace(/[\u200B-\u200F\uFEFF]/g, "");
}
return cleaned;
}
// modules/util/get_set_value.js
- function utilGetSetValue(selection2, value) {
- function d3_selection_value(value2) {
+ function utilGetSetValue(selection2, value, shouldUpdate) {
+ function setValue(value2, shouldUpdate2) {
function valueNull() {
delete this.value;
}
function valueConstant() {
- if (this.value !== value2) {
+ if (shouldUpdate2(this.value, value2)) {
this.value = value2;
}
}
function valueFunction() {
- var x = value2.apply(this, arguments);
- if (x === null || x === void 0) {
+ var x2 = value2.apply(this, arguments);
+ if (x2 === null || x2 === void 0) {
delete this.value;
- } else if (this.value !== x) {
- this.value = x;
+ } else if (shouldUpdate2(this.value, x2)) {
+ this.value = x2;
}
}
return value2 === null || value2 === void 0 ? valueNull : typeof value2 === "function" ? valueFunction : valueConstant;
if (arguments.length === 1) {
return selection2.property("value");
}
- return selection2.each(d3_selection_value(value));
+ if (shouldUpdate === void 0) {
+ shouldUpdate = (a2, b2) => a2 !== b2;
+ }
+ return selection2.each(setValue(value, shouldUpdate));
}
// modules/util/keybinding.js
var bindings = Object.keys(_keybindings).map(function(id2) {
return _keybindings[id2];
});
- var i2, binding;
- for (i2 = 0; i2 < bindings.length; i2++) {
- binding = bindings[i2];
+ var i3, binding;
+ for (i3 = 0; i3 < bindings.length; i3++) {
+ binding = bindings[i3];
if (!binding.event.modifiers.shiftKey)
continue;
if (!!binding.capture !== isCapturing)
}
if (didMatch)
return;
- for (i2 = 0; i2 < bindings.length; i2++) {
- binding = bindings[i2];
+ for (i3 = 0; i3 < bindings.length; i3++) {
+ binding = bindings[i3];
if (binding.event.modifiers.shiftKey)
continue;
if (!!binding.capture !== isCapturing)
if (binding2.event.key === void 0) {
isMatch = false;
} else if (Array.isArray(binding2.event.key)) {
- if (binding2.event.key.map(function(s) {
- return s.toLowerCase();
+ if (binding2.event.key.map(function(s2) {
+ return s2.toLowerCase();
}).indexOf(event.key.toLowerCase()) === -1) {
isMatch = false;
}
};
keybinding.off = function(codes, capture2) {
var arr = utilArrayUniq([].concat(codes));
- for (var i2 = 0; i2 < arr.length; i2++) {
- var id2 = arr[i2] + (capture2 ? "-capture" : "-bubble");
+ for (var i3 = 0; i3 < arr.length; i3++) {
+ var id2 = arr[i3] + (capture2 ? "-capture" : "-bubble");
delete _keybindings[id2];
}
return keybinding;
return keybinding.off(codes, capture2);
}
var arr = utilArrayUniq([].concat(codes));
- for (var i2 = 0; i2 < arr.length; i2++) {
- var id2 = arr[i2] + (capture2 ? "-capture" : "-bubble");
+ for (var i3 = 0; i3 < arr.length; i3++) {
+ var id2 = arr[i3] + (capture2 ? "-capture" : "-bubble");
var binding = {
id: id2,
capture: capture2,
console.warn('warning: duplicate keybinding for "' + id2 + '"');
}
_keybindings[id2] = binding;
- var matches = arr[i2].toLowerCase().match(/(?:(?:[^+⇧⌃⌥⌘])+|[⇧⌃⌥⌘]|\+\+|^\+$)/g);
- for (var j2 = 0; j2 < matches.length; j2++) {
- if (matches[j2] === "++")
- matches[j2] = "+";
- if (matches[j2] in utilKeybinding.modifierCodes) {
- var prop = utilKeybinding.modifierProperties[utilKeybinding.modifierCodes[matches[j2]]];
+ var matches = arr[i3].toLowerCase().match(/(?:(?:[^+⇧⌃⌥⌘])+|[⇧⌃⌥⌘]|\+\+|^\+$)/g);
+ for (var j3 = 0; j3 < matches.length; j3++) {
+ if (matches[j3] === "++")
+ matches[j3] = "+";
+ if (matches[j3] in utilKeybinding.modifierCodes) {
+ var prop = utilKeybinding.modifierProperties[utilKeybinding.modifierCodes[matches[j3]]];
binding.event.modifiers[prop] = true;
} else {
- binding.event.key = utilKeybinding.keys[matches[j2]] || matches[j2];
- if (matches[j2] in utilKeybinding.keyCodes) {
- binding.event.keyCode = utilKeybinding.keyCodes[matches[j2]];
+ binding.event.key = utilKeybinding.keys[matches[j3]] || matches[j3];
+ if (matches[j3] in utilKeybinding.keyCodes) {
+ binding.event.keyCode = utilKeybinding.keyCodes[matches[j3]];
}
}
}
// modules/util/rebind.js
function utilRebind(target, source) {
- var i2 = 1, n2 = arguments.length, method;
- while (++i2 < n2) {
- target[method = arguments[i2]] = d3_rebind(target, source, source[method]);
+ var i3 = 1, n3 = arguments.length, method;
+ while (++i3 < n3) {
+ target[method = arguments[i3]] = d3_rebind(target, source, source[method]);
}
return target;
}
return Math.max(min3, Math.min(num, max3));
}
function nearNullIsland(tile) {
- var x = tile[0];
- var y = tile[1];
- var z = tile[2];
- if (z >= 7) {
- var center = Math.pow(2, z - 1);
- var width = Math.pow(2, z - 6);
+ var x2 = tile[0];
+ var y2 = tile[1];
+ var z2 = tile[2];
+ if (z2 >= 7) {
+ var center = Math.pow(2, z2 - 1);
+ var width = Math.pow(2, z2 - 6);
var min3 = center - width / 2;
var max3 = center + width / 2 - 1;
- return x >= min3 && x <= max3 && y >= min3 && y <= max3;
+ return x2 >= min3 && x2 <= max3 && y2 >= min3 && y2 <= max3;
}
return false;
}
- function tiler8() {
- var z = geoScaleToZoom(_scale / (2 * Math.PI), _tileSize);
- var z0 = clamp3(Math.round(z), _zoomExtent[0], _zoomExtent[1]);
+ function tiler9() {
+ var z2 = geoScaleToZoom(_scale / (2 * Math.PI), _tileSize);
+ var z0 = clamp3(Math.round(z2), _zoomExtent[0], _zoomExtent[1]);
var tileMin = 0;
var tileMax = Math.pow(2, z0) - 1;
var log2ts = Math.log(_tileSize) * Math.LOG2E;
- var k = Math.pow(2, z - z0 + log2ts);
+ var k2 = Math.pow(2, z2 - z0 + log2ts);
var origin = [
- (_translate[0] - _scale / 2) / k,
- (_translate[1] - _scale / 2) / k
+ (_translate[0] - _scale / 2) / k2,
+ (_translate[1] - _scale / 2) / k2
];
var cols = range(
clamp3(Math.floor(-origin[0]) - _margin, tileMin, tileMax + 1),
- clamp3(Math.ceil(_size[0] / k - origin[0]) + _margin, tileMin, tileMax + 1)
+ clamp3(Math.ceil(_size[0] / k2 - origin[0]) + _margin, tileMin, tileMax + 1)
);
var rows = range(
clamp3(Math.floor(-origin[1]) - _margin, tileMin, tileMax + 1),
- clamp3(Math.ceil(_size[1] / k - origin[1]) + _margin, tileMin, tileMax + 1)
+ clamp3(Math.ceil(_size[1] / k2 - origin[1]) + _margin, tileMin, tileMax + 1)
);
var tiles = [];
- for (var i2 = 0; i2 < rows.length; i2++) {
- var y = rows[i2];
- for (var j2 = 0; j2 < cols.length; j2++) {
- var x = cols[j2];
- if (i2 >= _margin && i2 <= rows.length - _margin && j2 >= _margin && j2 <= cols.length - _margin) {
- tiles.unshift([x, y, z0]);
+ for (var i3 = 0; i3 < rows.length; i3++) {
+ var y2 = rows[i3];
+ for (var j3 = 0; j3 < cols.length; j3++) {
+ var x2 = cols[j3];
+ if (i3 >= _margin && i3 <= rows.length - _margin && j3 >= _margin && j3 <= cols.length - _margin) {
+ tiles.unshift([x2, y2, z0]);
} else {
- tiles.push([x, y, z0]);
+ tiles.push([x2, y2, z0]);
}
}
}
tiles.translate = origin;
- tiles.scale = k;
+ tiles.scale = k2;
return tiles;
}
- tiler8.getTiles = function(projection2) {
+ tiler9.getTiles = function(projection2) {
var origin = [
projection2.scale() * Math.PI - projection2.translate()[0],
projection2.scale() * Math.PI - projection2.translate()[1]
];
this.size(projection2.clipExtent()[1]).scale(projection2.scale() * 2 * Math.PI).translate(projection2.translate());
- var tiles = tiler8();
+ var tiles = tiler9();
var ts = tiles.scale;
return tiles.map(function(tile) {
if (_skipNullIsland && nearNullIsland(tile)) {
return false;
}
- var x = tile[0] * ts - origin[0];
- var y = tile[1] * ts - origin[1];
+ var x2 = tile[0] * ts - origin[0];
+ var y2 = tile[1] * ts - origin[1];
return {
id: tile.toString(),
xyz: tile,
extent: geoExtent(
- projection2.invert([x, y + ts]),
- projection2.invert([x + ts, y])
+ projection2.invert([x2, y2 + ts]),
+ projection2.invert([x2 + ts, y2])
)
};
}).filter(Boolean);
};
- tiler8.getGeoJSON = function(projection2) {
- var features = tiler8.getTiles(projection2).map(function(tile) {
+ tiler9.getGeoJSON = function(projection2) {
+ var features = tiler9.getTiles(projection2).map(function(tile) {
return {
type: "Feature",
properties: {
features
};
};
- tiler8.tileSize = function(val) {
+ tiler9.tileSize = function(val) {
if (!arguments.length)
return _tileSize;
_tileSize = val;
- return tiler8;
+ return tiler9;
};
- tiler8.zoomExtent = function(val) {
+ tiler9.zoomExtent = function(val) {
if (!arguments.length)
return _zoomExtent;
_zoomExtent = val;
- return tiler8;
+ return tiler9;
};
- tiler8.size = function(val) {
+ tiler9.size = function(val) {
if (!arguments.length)
return _size;
_size = val;
- return tiler8;
+ return tiler9;
};
- tiler8.scale = function(val) {
+ tiler9.scale = function(val) {
if (!arguments.length)
return _scale;
_scale = val;
- return tiler8;
+ return tiler9;
};
- tiler8.translate = function(val) {
+ tiler9.translate = function(val) {
if (!arguments.length)
return _translate;
_translate = val;
- return tiler8;
+ return tiler9;
};
- tiler8.margin = function(val) {
+ tiler9.margin = function(val) {
if (!arguments.length)
return _margin;
_margin = +val;
- return tiler8;
+ return tiler9;
};
- tiler8.skipNullIsland = function(val) {
+ tiler9.skipNullIsland = function(val) {
if (!arguments.length)
return _skipNullIsland;
_skipNullIsland = val;
- return tiler8;
+ return tiler9;
};
- return tiler8;
+ return tiler9;
}
// modules/util/trigger_event.js
- function utilTriggerEvent(target, type2) {
+ function utilTriggerEvent(target, type2, eventProperties) {
target.each(function() {
var evt = document.createEvent("HTMLEvents");
evt.initEvent(type2, true, true);
+ for (var prop in eventProperties) {
+ evt[prop] = eventProperties[prop];
+ }
this.dispatchEvent(evt);
});
}
_localeCodes = localesToUseFrom(requestedLocales);
_localeCode = _localeCodes[0];
let loadStringsPromises = [];
- indexes.forEach((index, i2) => {
+ indexes.forEach((index, i3) => {
const fullCoverageIndex = _localeCodes.findIndex(function(locale2) {
return index[locale2] && index[locale2].pct === 1;
});
_localeCodes.slice(0, fullCoverageIndex + 1).forEach(function(code) {
- let scopeId = Object.keys(localeDirs)[i2];
- let directory = Object.values(localeDirs)[i2];
+ let scopeId = Object.keys(localeDirs)[i3];
+ let directory = Object.values(localeDirs)[i3];
if (index[code])
loadStringsPromises.push(localizer.loadLocale(code, scopeId, directory));
});
function localesToUseFrom(requestedLocales) {
let supportedLocales = _dataLocales;
let toUse = [];
- for (let i2 in requestedLocales) {
- let locale2 = requestedLocales[i2];
+ for (let i3 in requestedLocales) {
+ let locale2 = requestedLocales[i3];
if (supportedLocales[locale2])
toUse.push(locale2);
if (locale2.includes("-")) {
let locale2 = _localeCode;
if (locale2.toLowerCase() === "en-us")
locale2 = "en";
- _languageNames = _localeStrings.general[locale2].languageNames;
- _scriptNames = _localeStrings.general[locale2].scriptNames;
+ _languageNames = _localeStrings.general[locale2].languageNames || _localeStrings.general[_languageCode].languageNames;
+ _scriptNames = _localeStrings.general[locale2].scriptNames || _localeStrings.general[_languageCode].scriptNames;
_usesMetric = _localeCode.slice(-3).toLowerCase() !== "-us";
}
localizer.loadLocale = (locale2, scopeId, directory) => {
if (!fileMap[key]) {
fileMap[key] = `${directory}/${locale2}.min.json`;
}
- return _mainFileFetcher.get(key).then((d) => {
+ return _mainFileFetcher.get(key).then((d2) => {
if (!_localeStrings[scopeId])
_localeStrings[scopeId] = {};
- _localeStrings[scopeId][locale2] = d[locale2];
+ _localeStrings[scopeId][locale2] = d2[locale2];
return locale2;
});
};
stringId = split.slice(1).join(".");
}
locale2 = locale2 || _localeCode;
- let path = stringId.split(".").map((s) => s.replace(/<TX_DOT>/g, ".")).reverse();
+ let path = stringId.split(".").map((s2) => s2.replace(/<TX_DOT>/g, ".")).reverse();
let stringsKey = locale2;
if (stringsKey.toLowerCase() === "en-us")
stringsKey = "en";
};
localizer.t.html = function(stringId, replacements, locale2) {
replacements = Object.assign({}, replacements);
- for (var k in replacements) {
- if (typeof replacements[k] === "string") {
- replacements[k] = escape_default(replacements[k]);
+ for (var k2 in replacements) {
+ if (typeof replacements[k2] === "string") {
+ replacements[k2] = escape_default(replacements[k2]);
}
- if (typeof replacements[k] === "object" && typeof replacements[k].html === "string") {
- replacements[k] = replacements[k].html;
+ if (typeof replacements[k2] === "object" && typeof replacements[k2].html === "string") {
+ replacements[k2] = replacements[k2].html;
}
}
const info = localizer.tInfo(stringId, replacements, locale2);
return ret;
};
localizer.languageName = (code, options2) => {
- if (_languageNames[code]) {
+ if (_languageNames && _languageNames[code]) {
return _languageNames[code];
}
if (options2 && options2.localOnly)
return localizer.t("translate.language_and_code", { language: langInfo.nativeName, code });
} else if (langInfo.base && langInfo.script) {
const base = langInfo.base;
- if (_languageNames[base]) {
+ if (_languageNames && _languageNames[base]) {
const scriptCode = langInfo.script;
- const script = _scriptNames[scriptCode] || scriptCode;
+ const script = _scriptNames && _scriptNames[scriptCode] || scriptCode;
return localizer.t("translate.language_and_code", { language: _languageNames[base], code: script });
} else if (_dataLanguages[base] && _dataLanguages[base].nativeName) {
return localizer.t("translate.language_and_code", { language: _dataLanguages[base].nativeName, code });
}
return code;
};
+ localizer.floatFormatter = (locale2) => {
+ if (!("Intl" in window && "NumberFormat" in Intl && "formatToParts" in Intl.NumberFormat.prototype)) {
+ return (number3, fractionDigits) => {
+ return fractionDigits === void 0 ? number3.toString() : number3.toFixed(fractionDigits);
+ };
+ } else {
+ return (number3, fractionDigits) => number3.toLocaleString(locale2, {
+ minimumFractionDigits: fractionDigits,
+ maximumFractionDigits: fractionDigits === void 0 ? 20 : fractionDigits
+ });
+ }
+ };
+ localizer.floatParser = (locale2) => {
+ const polyfill = (string) => +string.trim();
+ if (!("Intl" in window && "NumberFormat" in Intl))
+ return polyfill;
+ const format2 = new Intl.NumberFormat(locale2, { maximumFractionDigits: 20 });
+ if (!("formatToParts" in format2))
+ return polyfill;
+ const parts = format2.formatToParts(-12345.6);
+ const numerals = Array.from({ length: 10 }).map((_2, i3) => format2.format(i3));
+ const index = new Map(numerals.map((d2, i3) => [d2, i3]));
+ const literalPart = parts.find((d2) => d2.type === "literal");
+ const literal = literalPart && new RegExp(`[${literalPart.value}]`, "g");
+ const groupPart = parts.find((d2) => d2.type === "group");
+ const group = groupPart && new RegExp(`[${groupPart.value}]`, "g");
+ const decimalPart = parts.find((d2) => d2.type === "decimal");
+ const decimal = decimalPart && new RegExp(`[${decimalPart.value}]`);
+ const numeral = new RegExp(`[${numerals.join("")}]`, "g");
+ const getIndex = (d2) => index.get(d2);
+ return (string) => {
+ string = string.trim();
+ if (literal)
+ string = string.replace(literal, "");
+ if (group)
+ string = string.replace(group, "");
+ if (decimal)
+ string = string.replace(decimal, ".");
+ string = string.replace(numeral, getIndex);
+ return string ? +string : NaN;
+ };
+ };
+ localizer.decimalPlaceCounter = (locale2) => {
+ var literal, group, decimal;
+ if ("Intl" in window && "NumberFormat" in Intl) {
+ const format2 = new Intl.NumberFormat(locale2, { maximumFractionDigits: 20 });
+ if ("formatToParts" in format2) {
+ const parts = format2.formatToParts(-12345.6);
+ const literalPart = parts.find((d2) => d2.type === "literal");
+ literal = literalPart && new RegExp(`[${literalPart.value}]`, "g");
+ const groupPart = parts.find((d2) => d2.type === "group");
+ group = groupPart && new RegExp(`[${groupPart.value}]`, "g");
+ const decimalPart = parts.find((d2) => d2.type === "decimal");
+ decimal = decimalPart && new RegExp(`[${decimalPart.value}]`);
+ }
+ }
+ return (string) => {
+ string = string.trim();
+ if (literal)
+ string = string.replace(literal, "");
+ if (group)
+ string = string.replace(group, "");
+ const parts = string.split(decimal || ".");
+ return parts && parts[1] && parts[1].length || 0;
+ };
+ };
return localizer;
}
_this.item = (id2) => {
if (_memo[id2])
return _memo[id2];
- const found = _this.collection.find((d) => d.id === id2);
+ const found = _this.collection.find((d2) => d2.id === id2);
if (found)
_memo[id2] = found;
return found;
};
- _this.index = (id2) => _this.collection.findIndex((d) => d.id === id2);
+ _this.index = (id2) => _this.collection.findIndex((d2) => d2.id === id2);
_this.matchGeometry = (geometry) => {
return presetCollection(
- _this.collection.filter((d) => d.matchGeometry(geometry))
+ _this.collection.filter((d2) => d2.matchGeometry(geometry))
);
};
_this.matchAllGeometry = (geometries) => {
return presetCollection(
- _this.collection.filter((d) => d && d.matchAllGeometry(geometries))
+ _this.collection.filter((d2) => d2 && d2.matchAllGeometry(geometries))
);
};
_this.matchAnyGeometry = (geometries) => {
return presetCollection(
- _this.collection.filter((d) => geometries.some((geom) => d.matchGeometry(geom)))
+ _this.collection.filter((d2) => geometries.some((geom) => d2.matchGeometry(geom)))
);
};
_this.fallback = (geometry) => {
if (!value)
return _this;
value = value.toLowerCase().trim();
- function leading(a) {
- const index = a.indexOf(value);
- return index === 0 || a[index - 1] === " ";
+ function leading(a2) {
+ const index = a2.indexOf(value);
+ return index === 0 || a2[index - 1] === " ";
}
- function leadingStrict(a) {
- const index = a.indexOf(value);
+ function leadingStrict(a2) {
+ const index = a2.indexOf(value);
return index === 0;
}
function sortPresets(nameProp, aliasesProp) {
- return function sortNames(a, b) {
- let aCompare = a[nameProp]();
- let bCompare = b[nameProp]();
+ return function sortNames(a2, b2) {
+ let aCompare = a2[nameProp]();
+ let bCompare = b2[nameProp]();
if (aliasesProp) {
const findMatchingAlias = (strings) => {
- if (strings.some((s) => s === value)) {
- return strings.find((s) => s === value);
+ if (strings.some((s2) => s2 === value)) {
+ return strings.find((s2) => s2 === value);
} else {
- return strings.filter((s) => s.includes(value)).sort((a2, b2) => a2.length - b2.length)[0];
+ return strings.filter((s2) => s2.includes(value)).sort((a3, b3) => a3.length - b3.length)[0];
}
};
- aCompare = findMatchingAlias([aCompare].concat(a[aliasesProp]()));
- bCompare = findMatchingAlias([bCompare].concat(b[aliasesProp]()));
+ aCompare = findMatchingAlias([aCompare].concat(a2[aliasesProp]()));
+ bCompare = findMatchingAlias([bCompare].concat(b2[aliasesProp]()));
}
if (value === aCompare)
return -1;
if (value === bCompare)
return 1;
- let i2 = b.originalScore - a.originalScore;
- if (i2 !== 0)
- return i2;
- i2 = aCompare.indexOf(value) - bCompare.indexOf(value);
- if (i2 !== 0)
- return i2;
+ let i3 = b2.originalScore - a2.originalScore;
+ if (i3 !== 0)
+ return i3;
+ i3 = aCompare.indexOf(value) - bCompare.indexOf(value);
+ if (i3 !== 0)
+ return i3;
return aCompare.length - bCompare.length;
};
}
let pool = _this.collection;
if (Array.isArray(loc)) {
const validHere = _sharedLocationManager.locationSetsAt(loc);
- pool = pool.filter((a) => !a.locationSetID || validHere[a.locationSetID]);
- }
- const searchable = pool.filter((a) => a.searchable !== false && a.suggestion !== true);
- const suggestions = pool.filter((a) => a.suggestion === true);
- const leadingNames = searchable.filter((a) => leading(a.searchName()) || a.searchAliases().some(leading)).sort(sortPresets("searchName", "searchAliases"));
- const leadingSuggestions = suggestions.filter((a) => leadingStrict(a.searchName())).sort(sortPresets("searchName"));
- const leadingNamesStripped = searchable.filter((a) => leading(a.searchNameStripped()) || a.searchAliasesStripped().some(leading)).sort(sortPresets("searchNameStripped", "searchAliasesStripped"));
- const leadingSuggestionsStripped = suggestions.filter((a) => leadingStrict(a.searchNameStripped())).sort(sortPresets("searchNameStripped"));
- const leadingTerms = searchable.filter((a) => (a.terms() || []).some(leading));
- const leadingSuggestionTerms = suggestions.filter((a) => (a.terms() || []).some(leading));
- const leadingTagValues = searchable.filter((a) => Object.values(a.tags || {}).filter((val) => val !== "*").some(leading));
- const similarName = searchable.map((a) => ({ preset: a, dist: utilEditDistance(value, a.searchName()) })).filter((a) => a.dist + Math.min(value.length - a.preset.searchName().length, 0) < 3).sort((a, b) => a.dist - b.dist).map((a) => a.preset);
- const similarSuggestions = suggestions.map((a) => ({ preset: a, dist: utilEditDistance(value, a.searchName()) })).filter((a) => a.dist + Math.min(value.length - a.preset.searchName().length, 0) < 1).sort((a, b) => a.dist - b.dist).map((a) => a.preset);
- const similarTerms = searchable.filter((a) => {
- return (a.terms() || []).some((b) => {
- return utilEditDistance(value, b) + Math.min(value.length - b.length, 0) < 3;
+ pool = pool.filter((a2) => !a2.locationSetID || validHere[a2.locationSetID]);
+ }
+ const searchable = pool.filter((a2) => a2.searchable !== false && a2.suggestion !== true);
+ const suggestions = pool.filter((a2) => a2.suggestion === true);
+ const leadingNames = searchable.filter((a2) => leading(a2.searchName()) || a2.searchAliases().some(leading)).sort(sortPresets("searchName", "searchAliases"));
+ const leadingSuggestions = suggestions.filter((a2) => leadingStrict(a2.searchName())).sort(sortPresets("searchName"));
+ const leadingNamesStripped = searchable.filter((a2) => leading(a2.searchNameStripped()) || a2.searchAliasesStripped().some(leading)).sort(sortPresets("searchNameStripped", "searchAliasesStripped"));
+ const leadingSuggestionsStripped = suggestions.filter((a2) => leadingStrict(a2.searchNameStripped())).sort(sortPresets("searchNameStripped"));
+ const leadingTerms = searchable.filter((a2) => (a2.terms() || []).some(leading));
+ const leadingSuggestionTerms = suggestions.filter((a2) => (a2.terms() || []).some(leading));
+ const leadingTagValues = searchable.filter((a2) => Object.values(a2.tags || {}).filter((val) => val !== "*").some(leading));
+ const similarName = searchable.map((a2) => ({ preset: a2, dist: utilEditDistance(value, a2.searchName()) })).filter((a2) => a2.dist + Math.min(value.length - a2.preset.searchName().length, 0) < 3).sort((a2, b2) => a2.dist - b2.dist).map((a2) => a2.preset);
+ const similarSuggestions = suggestions.map((a2) => ({ preset: a2, dist: utilEditDistance(value, a2.searchName()) })).filter((a2) => a2.dist + Math.min(value.length - a2.preset.searchName().length, 0) < 1).sort((a2, b2) => a2.dist - b2.dist).map((a2) => a2.preset);
+ const similarTerms = searchable.filter((a2) => {
+ return (a2.terms() || []).some((b2) => {
+ return utilEditDistance(value, b2) + Math.min(value.length - b2.length, 0) < 3;
});
});
let leadingTagKeyValues = [];
if (value.includes("=")) {
- leadingTagKeyValues = searchable.filter((a) => a.tags && Object.keys(a.tags).some((key) => key + "=" + a.tags[key] === value)).concat(searchable.filter((a) => a.tags && Object.keys(a.tags).some((key) => leading(key + "=" + a.tags[key]))));
+ leadingTagKeyValues = searchable.filter((a2) => a2.tags && Object.keys(a2.tags).some((key) => key + "=" + a2.tags[key] === value)).concat(searchable.filter((a2) => a2.tags && Object.keys(a2.tags).some((key) => leading(key + "=" + a2.tags[key]))));
}
let results = leadingNames.concat(
leadingSuggestions,
(category.members || []).map((presetID) => allPresets[presetID]).filter(Boolean)
);
_this.geometry = _this.members.collection.reduce((acc, preset) => {
- for (let i2 in preset.geometry) {
- const geometry = preset.geometry[i2];
+ for (let i3 in preset.geometry) {
+ const geometry = preset.geometry[i3];
if (acc.indexOf(geometry) === -1) {
acc.push(geometry);
}
}
// modules/presets/preset.js
+ var import_lodash = __toESM(require_lodash());
function presetPreset(presetID, preset, addable, allFields, allPresets) {
allFields = allFields || {};
allPresets = allPresets || {};
let _this = Object.assign({}, preset);
let _addable = addable || false;
- let _resolvedFields;
- let _resolvedMoreFields;
let _searchName;
let _searchNameStripped;
let _searchAliases;
_this.originalReference = _this.reference || {};
_this.originalFields = _this.fields || [];
_this.originalMoreFields = _this.moreFields || [];
- _this.fields = () => _resolvedFields || (_resolvedFields = resolveFields("fields"));
- _this.moreFields = () => _resolvedMoreFields || (_resolvedMoreFields = resolveFields("moreFields"));
- _this.resetFields = () => _resolvedFields = _resolvedMoreFields = null;
+ _this.fields = (loc) => resolveFields("fields", loc);
+ _this.moreFields = (loc) => resolveFields("moreFields", loc);
_this.tags = _this.tags || {};
_this.addTags = _this.addTags || _this.tags;
_this.removeTags = _this.removeTags || _this.addTags;
const tags = _this.tags;
let seen = {};
let score = 0;
- for (let k in tags) {
- seen[k] = true;
- if (entityTags[k] === tags[k]) {
+ for (let k2 in tags) {
+ seen[k2] = true;
+ if (entityTags[k2] === tags[k2]) {
score += _this.originalScore;
- } else if (tags[k] === "*" && k in entityTags) {
+ } else if (tags[k2] === "*" && k2 in entityTags) {
score += _this.originalScore / 2;
} else {
return -1;
}
}
const addTags = _this.addTags;
- for (let k in addTags) {
- if (!seen[k] && entityTags[k] === addTags[k]) {
+ for (let k2 in addTags) {
+ if (!seen[k2] && entityTags[k2] === addTags[k2]) {
score += _this.originalScore;
}
}
return { key, value };
}
};
- _this.unsetTags = (tags, geometry, ignoringKeys, skipFieldDefaults) => {
+ _this.unsetTags = (tags, geometry, ignoringKeys, skipFieldDefaults, loc) => {
let removeTags = ignoringKeys ? utilObjectOmit(_this.removeTags, ignoringKeys) : _this.removeTags;
tags = utilObjectOmit(tags, Object.keys(removeTags));
if (geometry && !skipFieldDefaults) {
- _this.fields().forEach((field) => {
+ _this.fields(loc).forEach((field) => {
if (field.matchGeometry(geometry) && field.key && field.default === tags[field.key] && (!ignoringKeys || ignoringKeys.indexOf(field.key) === -1)) {
delete tags[field.key];
}
delete tags.area;
return tags;
};
- _this.setTags = (tags, geometry, skipFieldDefaults) => {
+ _this.setTags = (tags, geometry, skipFieldDefaults, loc) => {
const addTags = _this.addTags;
tags = Object.assign({}, tags);
- for (let k in addTags) {
- if (addTags[k] === "*") {
- if (_this.tags[k] || !tags[k]) {
- tags[k] = "yes";
+ for (let k2 in addTags) {
+ if (addTags[k2] === "*") {
+ if (_this.tags[k2] || !tags[k2]) {
+ tags[k2] = "yes";
}
} else {
- tags[k] = addTags[k];
+ tags[k2] = addTags[k2];
}
}
if (!addTags.hasOwnProperty("area")) {
delete tags.area;
if (geometry === "area") {
let needsAreaTag = true;
- for (let k in addTags) {
- if (_this.geometry.indexOf("line") === -1 && k in osmAreaKeys || k in osmAreaKeysExceptions && addTags[k] in osmAreaKeysExceptions[k]) {
+ for (let k2 in addTags) {
+ if (_this.geometry.indexOf("line") === -1 && k2 in osmAreaKeys || k2 in osmAreaKeysExceptions && addTags[k2] in osmAreaKeysExceptions[k2]) {
needsAreaTag = false;
break;
}
}
}
if (geometry && !skipFieldDefaults) {
- _this.fields().forEach((field) => {
+ _this.fields(loc).forEach((field) => {
if (field.matchGeometry(geometry) && field.key && !tags[field.key] && field.default) {
tags[field.key] = field.default;
}
}
return tags;
};
- function resolveFields(which) {
+ function resolveFields(which, loc) {
const fieldIDs = which === "fields" ? _this.originalFields : _this.originalMoreFields;
let resolved = [];
fieldIDs.forEach((fieldID) => {
const match = fieldID.match(referenceRegex);
if (match !== null) {
- resolved = resolved.concat(inheritFields(match[1], which));
+ resolved = resolved.concat(inheritFields(allPresets[match[1]], which));
} else if (allFields[fieldID]) {
resolved.push(allFields[fieldID]);
} else {
const endIndex = _this.id.lastIndexOf("/");
const parentID = endIndex && _this.id.substring(0, endIndex);
if (parentID) {
- resolved = inheritFields(parentID, which);
+ let parent = allPresets[parentID];
+ if (loc) {
+ const validHere = _sharedLocationManager.locationSetsAt(loc);
+ if (parent?.locationSetID && !validHere[parent.locationSetID]) {
+ const candidateIDs = Object.keys(allPresets).filter((k2) => k2.startsWith(parentID));
+ parent = allPresets[candidateIDs.find((candidateID) => {
+ const candidate = allPresets[candidateID];
+ return validHere[candidate.locationSetID] && (0, import_lodash.isEqual)(candidate.tags, parent.tags);
+ })];
+ }
+ }
+ resolved = inheritFields(parent, which);
}
}
return utilArrayUniq(resolved);
- function inheritFields(presetID2, which2) {
- const parent = allPresets[presetID2];
+ function inheritFields(parent, which2) {
if (!parent)
return [];
if (which2 === "fields") {
return [];
}
}
- function shouldInherit(f2) {
- if (f2.key && _this.tags[f2.key] !== void 0 && // inherit anyway if multiple values are allowed or just a checkbox
- f2.type !== "multiCombo" && f2.type !== "semiCombo" && f2.type !== "manyCombo" && f2.type !== "check")
+ function shouldInherit(f3) {
+ if (f3.key && _this.tags[f3.key] !== void 0 && // inherit anyway if multiple values are allowed or just a checkbox
+ f3.type !== "multiCombo" && f3.type !== "semiCombo" && f3.type !== "manyCombo" && f3.type !== "check")
return false;
return true;
}
}
- function stripDiacritics(s) {
- if (s.normalize)
- s = s.normalize("NFD");
- s = s.replace(/[\u0300-\u036f]/g, "");
- return s;
+ function stripDiacritics(s2) {
+ if (s2.normalize)
+ s2 = s2.normalize("NFD");
+ s2 = s2.replace(/[\u0300-\u036f]/g, "");
+ return s2;
}
return _this;
}
// modules/presets/index.js
var _mainPresetIndex = presetIndex();
function presetIndex() {
- const dispatch10 = dispatch_default("favoritePreset", "recentsChange");
+ const dispatch14 = dispatch_default("favoritePreset", "recentsChange");
const MAXRECENTS = 30;
const POINT = presetPreset("point", { name: "Point", tags: {}, geometry: ["point", "vertex"], matchScore: 0.1 });
const LINE = presetPreset("line", { name: "Line", tags: {}, geometry: ["line"], matchScore: 0.1 });
const RELATION = presetPreset("relation", { name: "Relation", tags: {}, geometry: ["relation"], matchScore: 0.1 });
let _this = presetCollection([POINT, LINE, AREA, RELATION]);
let _presets = { point: POINT, line: LINE, area: AREA, relation: RELATION };
- let _defaults = {
+ let _defaults2 = {
point: presetCollection([POINT]),
vertex: presetCollection([POINT]),
line: presetCollection([LINE]),
osmSetVertexTags(_this.vertexTags());
});
};
- _this.merge = (d) => {
+ _this.merge = (d2) => {
let newLocationSets = [];
- if (d.fields) {
- Object.keys(d.fields).forEach((fieldID) => {
- let f2 = d.fields[fieldID];
- if (f2) {
- f2 = presetField(fieldID, f2, _fields);
- if (f2.locationSet)
- newLocationSets.push(f2);
- _fields[fieldID] = f2;
+ if (d2.fields) {
+ Object.keys(d2.fields).forEach((fieldID) => {
+ let f3 = d2.fields[fieldID];
+ if (f3) {
+ f3 = presetField(fieldID, f3, _fields);
+ if (f3.locationSet)
+ newLocationSets.push(f3);
+ _fields[fieldID] = f3;
} else {
delete _fields[fieldID];
}
});
}
- if (d.presets) {
- Object.keys(d.presets).forEach((presetID) => {
- let p = d.presets[presetID];
- if (p) {
+ if (d2.presets) {
+ Object.keys(d2.presets).forEach((presetID) => {
+ let p2 = d2.presets[presetID];
+ if (p2) {
const isAddable = !_addablePresetIDs || _addablePresetIDs.has(presetID);
- p = presetPreset(presetID, p, isAddable, _fields, _presets);
- if (p.locationSet)
- newLocationSets.push(p);
- _presets[presetID] = p;
+ p2 = presetPreset(presetID, p2, isAddable, _fields, _presets);
+ if (p2.locationSet)
+ newLocationSets.push(p2);
+ _presets[presetID] = p2;
} else {
const existing = _presets[presetID];
if (existing && !existing.isFallback()) {
}
});
}
- if (d.categories) {
- Object.keys(d.categories).forEach((categoryID) => {
- let c = d.categories[categoryID];
- if (c) {
- c = presetCategory(categoryID, c, _presets);
- if (c.locationSet)
- newLocationSets.push(c);
- _categories[categoryID] = c;
+ if (d2.categories) {
+ Object.keys(d2.categories).forEach((categoryID) => {
+ let c2 = d2.categories[categoryID];
+ if (c2) {
+ c2 = presetCategory(categoryID, c2, _presets);
+ if (c2.locationSet)
+ newLocationSets.push(c2);
+ _categories[categoryID] = c2;
} else {
delete _categories[categoryID];
}
});
}
_this.collection = Object.values(_presets).concat(Object.values(_categories));
- if (d.defaults) {
- Object.keys(d.defaults).forEach((geometry) => {
- const def = d.defaults[geometry];
+ if (d2.defaults) {
+ Object.keys(d2.defaults).forEach((geometry) => {
+ const def = d2.defaults[geometry];
if (Array.isArray(def)) {
- _defaults[geometry] = presetCollection(
+ _defaults2[geometry] = presetCollection(
def.map((id2) => _presets[id2] || _categories[id2]).filter(Boolean)
);
} else {
- delete _defaults[geometry];
+ delete _defaults2[geometry];
}
});
}
_universal = Object.values(_fields).filter((field) => field.universal);
- Object.values(_presets).forEach((preset) => preset.resetFields());
_geometryIndex = { point: {}, vertex: {}, line: {}, area: {}, relation: {} };
_this.collection.forEach((preset) => {
(preset.geometry || []).forEach((geometry) => {
- let g = _geometryIndex[geometry];
+ let g3 = _geometryIndex[geometry];
for (let key in preset.tags) {
- g[key] = g[key] || {};
+ g3[key] = g3[key] || {};
let value = preset.tags[key];
- (g[key][value] = g[key][value] || []).push(preset);
+ (g3[key][value] = g3[key][value] || []).push(preset);
}
});
});
- if (d.featureCollection && Array.isArray(d.featureCollection.features)) {
- _sharedLocationManager.mergeCustomGeoJSON(d.featureCollection);
+ if (d2.featureCollection && Array.isArray(d2.featureCollection.features)) {
+ _sharedLocationManager.mergeCustomGeoJSON(d2.featureCollection);
}
if (newLocationSets.length) {
_sharedLocationManager.mergeLocationSets(newLocationSets);
let bestScore = -1;
let bestMatch;
let matchCandidates = [];
- for (let k in tags) {
+ for (let k2 in tags) {
let indexMatches = [];
- let valueIndex = keyIndex[k];
+ let valueIndex = keyIndex[k2];
if (!valueIndex)
continue;
- let keyValueMatches = valueIndex[tags[k]];
+ let keyValueMatches = valueIndex[tags[k2]];
if (keyValueMatches)
indexMatches.push(...keyValueMatches);
let keyStarMatches = valueIndex["*"];
indexMatches.push(...keyStarMatches);
if (indexMatches.length === 0)
continue;
- for (let i2 = 0; i2 < indexMatches.length; i2++) {
- const candidate = indexMatches[i2];
+ for (let i3 = 0; i3 < indexMatches.length; i3++) {
+ const candidate = indexMatches[i3];
const score = candidate.matchScore(tags);
if (score === -1) {
continue;
if (bestMatch && bestMatch.locationSetID && bestMatch.locationSetID !== "+[Q2]" && Array.isArray(loc)) {
const validHere = _sharedLocationManager.locationSetsAt(loc);
if (!validHere[bestMatch.locationSetID]) {
- matchCandidates.sort((a, b) => a.score < b.score ? 1 : -1);
- for (let i2 = 0; i2 < matchCandidates.length; i2++) {
- const candidateScore = matchCandidates[i2];
+ matchCandidates.sort((a2, b2) => a2.score < b2.score ? 1 : -1);
+ for (let i3 = 0; i3 < matchCandidates.length; i3++) {
+ const candidateScore = matchCandidates[i3];
if (!candidateScore.candidate.locationSetID || validHere[candidateScore.candidate.locationSetID]) {
bestMatch = candidateScore.candidate;
bestScore = candidateScore.score;
}
}
if (!bestMatch || bestMatch.isFallback()) {
- for (let k in tags) {
- if (/^addr:/.test(k) && keyIndex["addr:*"] && keyIndex["addr:*"]["*"]) {
+ for (let k2 in tags) {
+ if (/^addr:/.test(k2) && keyIndex["addr:*"] && keyIndex["addr:*"]["*"]) {
bestMatch = keyIndex["addr:*"]["*"][0];
break;
}
type: true
};
let areaKeys = {};
- const presets = _this.collection.filter((p) => !p.suggestion && !p.replacement);
- presets.forEach((p) => {
- const keys = p.tags && Object.keys(p.tags);
- const key = keys && keys.length && keys[0];
+ const presets = _this.collection.filter((p2) => !p2.suggestion && !p2.replacement);
+ presets.forEach((p2) => {
+ const keys2 = p2.tags && Object.keys(p2.tags);
+ const key = keys2 && keys2.length && keys2[0];
if (!key)
return;
if (ignore[key])
return;
- if (p.geometry.indexOf("area") !== -1) {
+ if (p2.geometry.indexOf("area") !== -1) {
areaKeys[key] = areaKeys[key] || {};
}
});
- presets.forEach((p) => {
+ presets.forEach((p2) => {
let key;
- for (key in p.addTags) {
- const value = p.addTags[key];
+ for (key in p2.addTags) {
+ const value = p2.addTags[key];
if (key in areaKeys && // probably an area...
- p.geometry.indexOf("line") !== -1 && // but sometimes a line
+ p2.geometry.indexOf("line") !== -1 && // but sometimes a line
value !== "*") {
areaKeys[key][value] = true;
}
return areaKeys;
};
_this.lineTags = () => {
- return _this.collection.filter((lineTags, d) => {
- if (d.suggestion || d.replacement || d.searchable === false)
+ return _this.collection.filter((lineTags, d2) => {
+ if (d2.suggestion || d2.replacement || d2.searchable === false)
return lineTags;
- const keys = d.tags && Object.keys(d.tags);
- const key = keys && keys.length && keys[0];
+ const keys2 = d2.tags && Object.keys(d2.tags);
+ const key = keys2 && keys2.length && keys2[0];
if (!key)
return lineTags;
- if (d.geometry.indexOf("line") !== -1) {
+ if (d2.geometry.indexOf("line") !== -1) {
lineTags[key] = lineTags[key] || [];
- lineTags[key].push(d.tags);
+ lineTags[key].push(d2.tags);
}
return lineTags;
}, {});
};
_this.pointTags = () => {
- return _this.collection.reduce((pointTags, d) => {
- if (d.suggestion || d.replacement || d.searchable === false)
+ return _this.collection.reduce((pointTags, d2) => {
+ if (d2.suggestion || d2.replacement || d2.searchable === false)
return pointTags;
- const keys = d.tags && Object.keys(d.tags);
- const key = keys && keys.length && keys[0];
+ const keys2 = d2.tags && Object.keys(d2.tags);
+ const key = keys2 && keys2.length && keys2[0];
if (!key)
return pointTags;
- if (d.geometry.indexOf("point") !== -1) {
+ if (d2.geometry.indexOf("point") !== -1) {
pointTags[key] = pointTags[key] || {};
- pointTags[key][d.tags[key]] = true;
+ pointTags[key][d2.tags[key]] = true;
}
return pointTags;
}, {});
};
_this.vertexTags = () => {
- return _this.collection.reduce((vertexTags, d) => {
- if (d.suggestion || d.replacement || d.searchable === false)
+ return _this.collection.reduce((vertexTags, d2) => {
+ if (d2.suggestion || d2.replacement || d2.searchable === false)
return vertexTags;
- const keys = d.tags && Object.keys(d.tags);
- const key = keys && keys.length && keys[0];
+ const keys2 = d2.tags && Object.keys(d2.tags);
+ const key = keys2 && keys2.length && keys2[0];
if (!key)
return vertexTags;
- if (d.geometry.indexOf("vertex") !== -1) {
+ if (d2.geometry.indexOf("vertex") !== -1) {
vertexTags[key] = vertexTags[key] || {};
- vertexTags[key][d.tags[key]] = true;
+ vertexTags[key][d2.tags[key]] = true;
}
return vertexTags;
}, {});
};
_this.field = (id2) => _fields[id2];
_this.universal = () => _universal;
- _this.defaults = (geometry, n2, startWithRecents, loc, extraPresets) => {
+ _this.defaults = (geometry, n3, startWithRecents, loc, extraPresets) => {
let recents = [];
if (startWithRecents) {
recents = _this.recent().matchGeometry(geometry).collection.slice(0, 4);
}
- let defaults2;
+ let defaults;
if (_addablePresetIDs) {
- defaults2 = Array.from(_addablePresetIDs).map(function(id2) {
+ defaults = Array.from(_addablePresetIDs).map(function(id2) {
var preset = _this.item(id2);
if (preset && preset.matchGeometry(geometry))
return preset;
return null;
}).filter(Boolean);
} else {
- defaults2 = _defaults[geometry].collection.concat(_this.fallback(geometry));
+ defaults = _defaults2[geometry].collection.concat(_this.fallback(geometry));
}
let result = presetCollection(
- utilArrayUniq(recents.concat(defaults2).concat(extraPresets || [])).slice(0, n2 - 1)
+ utilArrayUniq(recents.concat(defaults).concat(extraPresets || [])).slice(0, n3 - 1)
);
if (Array.isArray(loc)) {
const validHere = _sharedLocationManager.locationSetsAt(loc);
- result.collection = result.collection.filter((a) => !a.locationSetID || validHere[a.locationSetID]);
+ result.collection = result.collection.filter((a2) => !a2.locationSetID || validHere[a2.locationSetID]);
}
return result;
};
val = new Set(val);
_addablePresetIDs = val;
if (_addablePresetIDs) {
- _this.collection.forEach((p) => {
- if (p.addable)
- p.addable(_addablePresetIDs.has(p.id));
+ _this.collection.forEach((p2) => {
+ if (p2.addable)
+ p2.addable(_addablePresetIDs.has(p2.id));
});
} else {
- _this.collection.forEach((p) => {
- if (p.addable)
- p.addable(true);
+ _this.collection.forEach((p2) => {
+ if (p2.addable)
+ p2.addable(true);
});
}
return _this;
};
_this.recent = () => {
return presetCollection(
- utilArrayUniq(_this.getRecents().map((d) => d.preset).filter((d) => d.searchable !== false))
+ utilArrayUniq(_this.getRecents().map((d2) => d2.preset).filter((d2) => d2.searchable !== false))
);
};
function RibbonItem(preset, source) {
item.minified = () => ({ pID: item.preset.id });
return item;
}
- function ribbonItemForMinified(d, source) {
- if (d && d.pID) {
- const preset = _this.item(d.pID);
+ function ribbonItemForMinified(d2, source) {
+ if (d2 && d2.pID) {
+ const preset = _this.item(d2.pID);
if (!preset)
return null;
return RibbonItem(preset, source);
};
function setRecents(items) {
_recents = items;
- const minifiedItems = items.map((d) => d.minified());
+ const minifiedItems = items.map((d2) => d2.minified());
corePreferences("preset_recents", JSON.stringify(minifiedItems));
- dispatch10.call("recentsChange");
+ dispatch14.call("recentsChange");
}
_this.getRecents = () => {
if (!_recents) {
- _recents = (JSON.parse(corePreferences("preset_recents")) || []).reduce((acc, d) => {
- let item = ribbonItemForMinified(d, "recent");
+ _recents = (JSON.parse(corePreferences("preset_recents")) || []).reduce((acc, d2) => {
+ let item = ribbonItemForMinified(d2, "recent");
if (item && item.preset.addable())
acc.push(item);
return acc;
};
_this.recentMatching = (preset) => {
const items = _this.getRecents();
- for (let i2 in items) {
- if (items[i2].matches(preset)) {
- return items[i2];
+ for (let i3 in items) {
+ if (items[i3].matches(preset)) {
+ return items[i3];
}
}
return null;
};
function setFavorites(items) {
_favorites = items;
- const minifiedItems = items.map((d) => d.minified());
+ const minifiedItems = items.map((d2) => d2.minified());
corePreferences("preset_favorites", JSON.stringify(minifiedItems));
- dispatch10.call("favoritePreset");
+ dispatch14.call("favoritePreset");
}
_this.addFavorite = (preset, besidePreset, after) => {
const favorites = _this.getFavorites();
rawFavorites = [];
corePreferences("preset_favorites", JSON.stringify(rawFavorites));
}
- _favorites = rawFavorites.reduce((output, d) => {
- const item = ribbonItemForMinified(d, "favorite");
+ _favorites = rawFavorites.reduce((output, d2) => {
+ const item = ribbonItemForMinified(d2, "favorite");
if (item && item.preset.addable())
output.push(item);
return output;
}
return null;
};
- return utilRebind(_this, dispatch10, "on");
+ return utilRebind(_this, dispatch14, "on");
}
// modules/util/util.js
function utilTagText(entity) {
var obj = entity && entity.tags || {};
- return Object.keys(obj).map(function(k) {
- return k + "=" + obj[k];
+ return Object.keys(obj).map(function(k2) {
+ return k2 + "=" + obj[k2];
}).join(", ");
}
function utilTotalExtent(array2, graph) {
var extent = geoExtent();
var val, entity;
- for (var i2 = 0; i2 < array2.length; i2++) {
- val = array2[i2];
+ for (var i3 = 0; i3 < array2.length; i3++) {
+ val = array2[i3];
entity = typeof val === "string" ? graph.hasEntity(val) : val;
if (entity) {
extent._extend(entity.extent(graph));
}
function utilTagDiff(oldTags, newTags) {
var tagDiff = [];
- var keys = utilArrayUnion(Object.keys(oldTags), Object.keys(newTags)).sort();
- keys.forEach(function(k) {
- var oldVal = oldTags[k];
- var newVal = newTags[k];
+ var keys2 = utilArrayUnion(Object.keys(oldTags), Object.keys(newTags)).sort();
+ keys2.forEach(function(k2) {
+ var oldVal = oldTags[k2];
+ var newVal = newTags[k2];
if ((oldVal || oldVal === "") && (newVal === void 0 || newVal !== oldVal)) {
tagDiff.push({
type: "-",
- key: k,
+ key: k2,
oldVal,
newVal,
- display: "- " + k + "=" + oldVal
+ display: "- " + k2 + "=" + oldVal
});
}
if ((newVal || newVal === "") && (oldVal === void 0 || newVal !== oldVal)) {
tagDiff.push({
type: "+",
- key: k,
+ key: k2,
oldVal,
newVal,
- display: "+ " + k + "=" + newVal
+ display: "+ " + k2 + "=" + newVal
});
}
});
return graph.hasEntity(entityID);
}).filter(Boolean);
entities.forEach(function(entity) {
- var keys = Object.keys(entity.tags).filter(Boolean);
- keys.forEach(function(key2) {
+ var keys2 = Object.keys(entity.tags).filter(Boolean);
+ keys2.forEach(function(key2) {
allKeys.add(key2);
});
});
return tags;
}
function utilStringQs(str2) {
- var i2 = 0;
- while (i2 < str2.length && (str2[i2] === "?" || str2[i2] === "#"))
- i2++;
- str2 = str2.slice(i2);
- return str2.split("&").reduce(function(obj, pair2) {
- var parts = pair2.split("=");
+ var i3 = 0;
+ while (i3 < str2.length && (str2[i3] === "?" || str2[i3] === "#"))
+ i3++;
+ str2 = str2.slice(i3);
+ return str2.split("&").reduce(function(obj, pair3) {
+ var parts = pair3.split("=");
if (parts.length === 2) {
obj[parts[0]] = null === parts[1] ? "" : decodeURIComponent(parts[1]);
}
}, {});
}
function utilQsString(obj, noencode) {
- function softEncode(s) {
- return encodeURIComponent(s).replace(/(%2F|%3A|%2C|%7B|%7D)/g, decodeURIComponent);
+ function softEncode(s2) {
+ return encodeURIComponent(s2).replace(/(%2F|%3A|%2C|%7B|%7D)/g, decodeURIComponent);
}
return Object.keys(obj).sort().map(function(key) {
return encodeURIComponent(key) + "=" + (noencode ? softEncode(obj[key]) : encodeURIComponent(obj[key]));
}
function utilPrefixDOMProperty(property) {
var prefixes2 = ["webkit", "ms", "moz", "o"];
- var i2 = -1;
- var n2 = prefixes2.length;
- var s = document.body;
- if (property in s)
+ var i3 = -1;
+ var n3 = prefixes2.length;
+ var s2 = document.body;
+ if (property in s2)
return property;
property = property.slice(0, 1).toUpperCase() + property.slice(1);
- while (++i2 < n2) {
- if (prefixes2[i2] + property in s) {
- return prefixes2[i2] + property;
+ while (++i3 < n3) {
+ if (prefixes2[i3] + property in s2) {
+ return prefixes2[i3] + property;
}
}
return false;
}
function utilPrefixCSSProperty(property) {
var prefixes2 = ["webkit", "ms", "Moz", "O"];
- var i2 = -1;
- var n2 = prefixes2.length;
- var s = document.body.style;
- if (property.toLowerCase() in s) {
+ var i3 = -1;
+ var n3 = prefixes2.length;
+ var s2 = document.body.style;
+ if (property.toLowerCase() in s2) {
return property.toLowerCase();
}
- while (++i2 < n2) {
- if (prefixes2[i2] + property in s) {
- return "-" + prefixes2[i2].toLowerCase() + property.replace(/([A-Z])/g, "-$1").toLowerCase();
+ while (++i3 < n3) {
+ if (prefixes2[i3] + property in s2) {
+ return "-" + prefixes2[i3].toLowerCase() + property.replace(/([A-Z])/g, "-$1").toLowerCase();
}
}
return false;
}
var transformProperty;
- function utilSetTransform(el, x, y, scale) {
+ function utilSetTransform(el, x2, y2, scale) {
var prop = transformProperty = transformProperty || utilPrefixCSSProperty("Transform");
- var translate = utilDetect().opera ? "translate(" + x + "px," + y + "px)" : "translate3d(" + x + "px," + y + "px,0)";
+ var translate = utilDetect().opera ? "translate(" + x2 + "px," + y2 + "px)" : "translate3d(" + x2 + "px," + y2 + "px,0)";
return el.style(prop, translate + (scale ? " scale(" + scale + ")" : ""));
}
- function utilEditDistance(a, b) {
- a = (0, import_diacritics.remove)(a.toLowerCase());
- b = (0, import_diacritics.remove)(b.toLowerCase());
- if (a.length === 0)
- return b.length;
- if (b.length === 0)
- return a.length;
+ function utilEditDistance(a2, b2) {
+ a2 = (0, import_diacritics.remove)(a2.toLowerCase());
+ b2 = (0, import_diacritics.remove)(b2.toLowerCase());
+ if (a2.length === 0)
+ return b2.length;
+ if (b2.length === 0)
+ return a2.length;
var matrix = [];
- var i2, j2;
- for (i2 = 0; i2 <= b.length; i2++) {
- matrix[i2] = [i2];
+ var i3, j3;
+ for (i3 = 0; i3 <= b2.length; i3++) {
+ matrix[i3] = [i3];
}
- for (j2 = 0; j2 <= a.length; j2++) {
- matrix[0][j2] = j2;
+ for (j3 = 0; j3 <= a2.length; j3++) {
+ matrix[0][j3] = j3;
}
- for (i2 = 1; i2 <= b.length; i2++) {
- for (j2 = 1; j2 <= a.length; j2++) {
- if (b.charAt(i2 - 1) === a.charAt(j2 - 1)) {
- matrix[i2][j2] = matrix[i2 - 1][j2 - 1];
+ for (i3 = 1; i3 <= b2.length; i3++) {
+ for (j3 = 1; j3 <= a2.length; j3++) {
+ if (b2.charAt(i3 - 1) === a2.charAt(j3 - 1)) {
+ matrix[i3][j3] = matrix[i3 - 1][j3 - 1];
} else {
- matrix[i2][j2] = Math.min(
- matrix[i2 - 1][j2 - 1] + 1,
+ matrix[i3][j3] = Math.min(
+ matrix[i3 - 1][j3 - 1] + 1,
// substitution
Math.min(
- matrix[i2][j2 - 1] + 1,
+ matrix[i3][j3 - 1] + 1,
// insertion
- matrix[i2 - 1][j2] + 1
+ matrix[i3 - 1][j3] + 1
)
);
}
}
}
- return matrix[b.length][a.length];
+ return matrix[b2.length][a2.length];
}
function utilFastMouse(container) {
var rect = container.getBoundingClientRect();
var rectTop = rect.top;
var clientLeft = +container.clientLeft;
var clientTop = +container.clientTop;
- return function(e) {
+ return function(e3) {
return [
- e.clientX - rectLeft - clientLeft,
- e.clientY - rectTop - clientTop
+ e3.clientX - rectLeft - clientLeft,
+ e3.clientY - rectTop - clientTop
];
};
}
var remaining = inputs.length;
var results = [];
var errors = [];
- inputs.forEach(function(d, i2) {
- func(d, function done(err, data) {
- errors[i2] = err;
- results[i2] = data;
+ inputs.forEach(function(d2, i3) {
+ func(d2, function done(err, data) {
+ errors[i3] = err;
+ results[i3] = data;
remaining--;
if (!remaining)
callback(errors, results);
if (str2.length === 0) {
return hash;
}
- for (var i2 = 0; i2 < str2.length; i2++) {
- var char = str2.charCodeAt(i2);
+ for (var i3 = 0; i3 < str2.length; i3++) {
+ var char = str2.charCodeAt(i3);
hash = (hash << 5) - hash + char;
hash = hash & hash;
}
}
var oldestIDIndex = 0;
var oldestID = toNumericID(ids[0]);
- for (var i2 = 1; i2 < ids.length; i2++) {
- var num = toNumericID(ids[i2]);
+ for (var i3 = 1; i3 < ids.length; i3++) {
+ var num = toNumericID(ids[i3]);
if (compareNumericIDs(oldestID, num) === 1) {
- oldestIDIndex = i2;
+ oldestIDIndex = i3;
oldestID = num;
}
}
osmEntity.deprecatedTagValuesByKey = function(dataDeprecated) {
if (!_deprecatedTagValuesByKey) {
_deprecatedTagValuesByKey = {};
- dataDeprecated.forEach(function(d) {
- var oldKeys = Object.keys(d.old);
+ dataDeprecated.forEach(function(d2) {
+ var oldKeys = Object.keys(d2.old);
if (oldKeys.length === 1) {
var oldKey = oldKeys[0];
- var oldValue = d.old[oldKey];
+ var oldValue = d2.old[oldKey];
if (oldValue !== "*") {
if (!_deprecatedTagValuesByKey[oldKey]) {
_deprecatedTagValuesByKey[oldKey] = [oldValue];
osmEntity.prototype = {
tags: {},
initialize: function(sources) {
- for (var i2 = 0; i2 < sources.length; ++i2) {
- var source = sources[i2];
+ for (var i3 = 0; i3 < sources.length; ++i3) {
+ var source = sources[i3];
for (var prop in source) {
if (Object.prototype.hasOwnProperty.call(source, prop)) {
if (source[prop] === void 0) {
mergeTags: function(tags) {
var merged = Object.assign({}, this.tags);
var changed = false;
- for (var k in tags) {
- var t1 = merged[k];
- var t2 = tags[k];
+ for (var k2 in tags) {
+ var t1 = merged[k2];
+ var t2 = tags[k2];
if (!t1) {
changed = true;
- merged[k] = t2;
+ merged[k2] = t2;
} else if (t1 !== t2) {
changed = true;
- merged[k] = utilUnicodeCharsTruncated(
+ merged[k2] = utilUnicodeCharsTruncated(
utilArrayUnion(t1.split(/;\s*/), t2.split(/;\s*/)).join(";"),
255
// avoid exceeding character limit; see also context.maxCharsForTagValue()
return this.extent(resolver).intersects(extent);
},
hasNonGeometryTags: function() {
- return Object.keys(this.tags).some(function(k) {
- return k !== "area";
+ return Object.keys(this.tags).some(function(k2) {
+ return k2 !== "area";
});
},
hasParentRelations: function(resolver) {
if (Object.keys(tags).length === 0)
return [];
var deprecated = [];
- dataDeprecated.forEach(function(d) {
- var oldKeys = Object.keys(d.old);
- if (d.replace) {
- var hasExistingValues = Object.keys(d.replace).some(function(replaceKey) {
- if (!tags[replaceKey] || d.old[replaceKey])
+ dataDeprecated.forEach(function(d2) {
+ var oldKeys = Object.keys(d2.old);
+ if (d2.replace) {
+ var hasExistingValues = Object.keys(d2.replace).some(function(replaceKey) {
+ if (!tags[replaceKey] || d2.old[replaceKey])
return false;
- var replaceValue = d.replace[replaceKey];
+ var replaceValue = d2.replace[replaceKey];
if (replaceValue === "*")
return false;
if (replaceValue === tags[replaceKey])
var matchesDeprecatedTags = oldKeys.every(function(oldKey) {
if (!tags[oldKey])
return false;
- if (d.old[oldKey] === "*")
+ if (d2.old[oldKey] === "*")
return true;
- if (d.old[oldKey] === tags[oldKey])
+ if (d2.old[oldKey] === tags[oldKey])
return true;
var vals = tags[oldKey].split(";").filter(Boolean);
if (vals.length === 0) {
return false;
} else if (vals.length > 1) {
- return vals.indexOf(d.old[oldKey]) !== -1;
+ return vals.indexOf(d2.old[oldKey]) !== -1;
} else {
- if (tags[oldKey] === d.old[oldKey]) {
- if (d.replace && d.old[oldKey] === d.replace[oldKey]) {
- var replaceKeys = Object.keys(d.replace);
+ if (tags[oldKey] === d2.old[oldKey]) {
+ if (d2.replace && d2.old[oldKey] === d2.replace[oldKey]) {
+ var replaceKeys = Object.keys(d2.replace);
return !replaceKeys.every(function(replaceKey) {
- return tags[replaceKey] === d.replace[replaceKey];
+ return tags[replaceKey] === d2.replace[replaceKey];
});
} else {
return true;
return false;
});
if (matchesDeprecatedTags) {
- deprecated.push(d);
+ deprecated.push(d2);
}
});
return deprecated;
"merge_to_right",
"none"
];
- return tag.split("|").map(function(s) {
- if (s === "")
- s = "none";
- return s.split(";").map(function(d) {
- return validValues.indexOf(d) === -1 ? "unknown" : d;
+ return tag.split("|").map(function(s2) {
+ if (s2 === "")
+ s2 = "none";
+ return s2.split(";").map(function(d2) {
+ return validValues.indexOf(d2) === -1 ? "unknown" : d2;
});
});
}
function parseMaxspeedLanes(tag, maxspeed) {
if (!tag)
return;
- return tag.split("|").map(function(s) {
- if (s === "none")
- return s;
- var m = parseInt(s, 10);
- if (s === "" || m === maxspeed)
+ return tag.split("|").map(function(s2) {
+ if (s2 === "none")
+ return s2;
+ var m2 = parseInt(s2, 10);
+ if (s2 === "" || m2 === maxspeed)
return null;
- return isNaN(m) ? "unknown" : m;
+ return isNaN(m2) ? "unknown" : m2;
});
}
function parseMiscLanes(tag) {
"no",
"designated"
];
- return tag.split("|").map(function(s) {
- if (s === "")
- s = "no";
- return validValues.indexOf(s) === -1 ? "unknown" : s;
+ return tag.split("|").map(function(s2) {
+ if (s2 === "")
+ s2 = "no";
+ return validValues.indexOf(s2) === -1 ? "unknown" : s2;
});
}
function parseBicycleWay(tag) {
"designated",
"lane"
];
- return tag.split("|").map(function(s) {
- if (s === "")
- s = "no";
- return validValues.indexOf(s) === -1 ? "unknown" : s;
+ return tag.split("|").map(function(s2) {
+ if (s2 === "")
+ s2 = "no";
+ return validValues.indexOf(s2) === -1 ? "unknown" : s2;
});
}
function mapToLanesObj(lanesObj, data, key) {
if (data.forward) {
- data.forward.forEach(function(l, i2) {
- if (!lanesObj.forward[i2])
- lanesObj.forward[i2] = {};
- lanesObj.forward[i2][key] = l;
+ data.forward.forEach(function(l2, i3) {
+ if (!lanesObj.forward[i3])
+ lanesObj.forward[i3] = {};
+ lanesObj.forward[i3][key] = l2;
});
}
if (data.backward) {
- data.backward.forEach(function(l, i2) {
- if (!lanesObj.backward[i2])
- lanesObj.backward[i2] = {};
- lanesObj.backward[i2][key] = l;
+ data.backward.forEach(function(l2, i3) {
+ if (!lanesObj.backward[i3])
+ lanesObj.backward[i3] = {};
+ lanesObj.backward[i3][key] = l2;
});
}
if (data.unspecified) {
- data.unspecified.forEach(function(l, i2) {
- if (!lanesObj.unspecified[i2])
- lanesObj.unspecified[i2] = {};
- lanesObj.unspecified[i2][key] = l;
+ data.unspecified.forEach(function(l2, i3) {
+ if (!lanesObj.unspecified[i3])
+ lanesObj.unspecified[i3] = {};
+ lanesObj.unspecified[i3][key] = l2;
});
}
}
extent: function(resolver) {
return resolver.transient(this, "extent", function() {
var extent = geoExtent();
- for (var i2 = 0; i2 < this.nodes.length; i2++) {
- var node = resolver.hasEntity(this.nodes[i2]);
+ for (var i3 = 0; i3 < this.nodes.length; i3++) {
+ var node = resolver.hasEntity(this.nodes[i3]);
if (node) {
extent._extend(node.extent());
}
// i.e. the right side is the 'inside' (e.g. the right side of a
// natural=cliff is lower).
sidednessIdentifier: function() {
- for (var key in this.tags) {
- var value = this.tags[key];
+ for (const realKey in this.tags) {
+ const value = this.tags[realKey];
+ const key = osmRemoveLifecyclePrefix(realKey);
if (key in osmRightSideIsInsideTags && value in osmRightSideIsInsideTags[key]) {
if (osmRightSideIsInsideTags[key][value] === true) {
return key;
if (!this.isClosed() || this.isDegenerate())
return null;
var nodes = utilArrayUniq(resolver.childNodes(this));
- var coords = nodes.map(function(n2) {
- return n2.loc;
+ var coords = nodes.map(function(n3) {
+ return n3.loc;
});
var curr = 0;
var prev = 0;
- for (var i2 = 0; i2 < coords.length; i2++) {
- var o = coords[(i2 + 1) % coords.length];
- var a = coords[i2];
- var b = coords[(i2 + 2) % coords.length];
- var res = geoVecCross(a, b, o);
+ for (var i3 = 0; i3 < coords.length; i3++) {
+ var o2 = coords[(i3 + 1) % coords.length];
+ var a2 = coords[i3];
+ var b2 = coords[(i3 + 2) % coords.length];
+ var res = geoVecCross(a2, b2, o2);
curr = res > 0 ? 1 : res < 0 ? -1 : 0;
if (curr === 0) {
continue;
isDegenerate: function() {
return new Set(this.nodes).size < (this.isArea() ? 3 : 2);
},
- areAdjacent: function(n1, n2) {
- for (var i2 = 0; i2 < this.nodes.length; i2++) {
- if (this.nodes[i2] === n1) {
- if (this.nodes[i2 - 1] === n2)
+ areAdjacent: function(n1, n22) {
+ for (var i3 = 0; i3 < this.nodes.length; i3++) {
+ if (this.nodes[i3] === n1) {
+ if (this.nodes[i3 - 1] === n22)
return true;
- if (this.nodes[i2 + 1] === n2)
+ if (this.nodes[i3 + 1] === n22)
return true;
}
}
segments: function(graph) {
function segmentExtent(graph2) {
var n1 = graph2.hasEntity(this.nodes[0]);
- var n2 = graph2.hasEntity(this.nodes[1]);
- return n1 && n2 && geoExtent([
+ var n22 = graph2.hasEntity(this.nodes[1]);
+ return n1 && n22 && geoExtent([
[
- Math.min(n1.loc[0], n2.loc[0]),
- Math.min(n1.loc[1], n2.loc[1])
+ Math.min(n1.loc[0], n22.loc[0]),
+ Math.min(n1.loc[1], n22.loc[1])
],
[
- Math.max(n1.loc[0], n2.loc[0]),
- Math.max(n1.loc[1], n2.loc[1])
+ Math.max(n1.loc[0], n22.loc[0]),
+ Math.max(n1.loc[1], n22.loc[1])
]
]);
}
return graph.transient(this, "segments", function() {
var segments = [];
- for (var i2 = 0; i2 < this.nodes.length - 1; i2++) {
+ for (var i3 = 0; i3 < this.nodes.length - 1; i3++) {
segments.push({
- id: this.id + "-" + i2,
+ id: this.id + "-" + i3,
wayId: this.id,
- index: i2,
- nodes: [this.nodes[i2], this.nodes[i2 + 1]],
+ index: i3,
+ nodes: [this.nodes[i3], this.nodes[i3 + 1]],
extent: segmentExtent
});
}
return this;
var nodes = this.nodes.slice();
var connector = this.first();
- var i2 = nodes.length - 1;
- while (i2 > 0 && nodes.length > 1 && nodes[i2] === connector) {
- nodes.splice(i2, 1);
- i2 = nodes.length - 1;
+ var i3 = nodes.length - 1;
+ while (i3 > 0 && nodes.length > 1 && nodes[i3] === connector) {
+ nodes.splice(i3, 1);
+ i3 = nodes.length - 1;
}
nodes = nodes.filter(noRepeatNodes);
return this.update({ nodes });
}
if (isClosed) {
var connector = this.first();
- var i2 = 1;
- while (i2 < nodes.length && nodes.length > 2 && nodes[i2] === connector) {
- nodes.splice(i2, 1);
- if (index > i2)
+ var i3 = 1;
+ while (i3 < nodes.length && nodes.length > 2 && nodes[i3] === connector) {
+ nodes.splice(i3, 1);
+ if (index > i3)
index--;
}
- i2 = nodes.length - 1;
- while (i2 > 0 && nodes.length > 1 && nodes[i2] === connector) {
- nodes.splice(i2, 1);
- if (index > i2)
+ i3 = nodes.length - 1;
+ while (i3 > 0 && nodes.length > 1 && nodes[i3] === connector) {
+ nodes.splice(i3, 1);
+ if (index > i3)
index--;
- i2 = nodes.length - 1;
+ i3 = nodes.length - 1;
}
}
nodes.splice(index, 0, id2);
}
if (isClosed) {
var connector = this.first();
- var i2 = 1;
- while (i2 < nodes.length && nodes.length > 2 && nodes[i2] === connector) {
- nodes.splice(i2, 1);
- if (index > i2)
+ var i3 = 1;
+ while (i3 < nodes.length && nodes.length > 2 && nodes[i3] === connector) {
+ nodes.splice(i3, 1);
+ if (index > i3)
index--;
}
- i2 = nodes.length - 1;
- while (i2 > 0 && nodes.length > 1 && nodes[i2] === connector) {
- nodes.splice(i2, 1);
- if (index === i2)
+ i3 = nodes.length - 1;
+ while (i3 > 0 && nodes.length > 1 && nodes[i3] === connector) {
+ nodes.splice(i3, 1);
+ if (index === i3)
index = 0;
- i2 = nodes.length - 1;
+ i3 = nodes.length - 1;
}
}
nodes.splice(index, 1, id2);
replaceNode: function(needleID, replacementID) {
var nodes = this.nodes.slice();
var isClosed = this.isClosed();
- for (var i2 = 0; i2 < nodes.length; i2++) {
- if (nodes[i2] === needleID) {
- nodes[i2] = replacementID;
+ for (var i3 = 0; i3 < nodes.length; i3++) {
+ if (nodes[i3] === needleID) {
+ nodes[i3] = replacementID;
}
}
nodes = nodes.filter(noRepeatNodes);
return this.update({ nodes });
},
asJXON: function(changeset_id) {
- var r = {
+ var r2 = {
way: {
"@id": this.osmId(),
"@version": this.version || 0,
nd: this.nodes.map(function(id2) {
return { keyAttributes: { ref: osmEntity.id.toOSM(id2) } };
}, this),
- tag: Object.keys(this.tags).map(function(k) {
- return { keyAttributes: { k, v: this.tags[k] } };
+ tag: Object.keys(this.tags).map(function(k2) {
+ return { keyAttributes: { k: k2, v: this.tags[k2] } };
}, this)
}
};
if (changeset_id) {
- r.way["@changeset"] = changeset_id;
+ r2.way["@changeset"] = changeset_id;
}
- return r;
+ return r2;
},
asGeoJSON: function(resolver) {
return resolver.transient(this, "GeoJSON", function() {
- var coordinates = resolver.childNodes(this).map(function(n2) {
- return n2.loc;
+ var coordinates = resolver.childNodes(this).map(function(n3) {
+ return n3.loc;
});
if (this.isArea() && this.isClosed()) {
return {
var nodes = resolver.childNodes(this);
var json = {
type: "Polygon",
- coordinates: [nodes.map(function(n2) {
- return n2.loc;
+ coordinates: [nodes.map(function(n3) {
+ return n3.loc;
})]
};
if (!this.isClosed() && nodes.length) {
});
}
});
- function noRepeatNodes(node, i2, arr) {
- return i2 === 0 || node !== arr[i2 - 1];
+ function noRepeatNodes(node, i3, arr) {
+ return i3 === 0 || node !== arr[i3 - 1];
}
// modules/osm/multipolygon.js
return false;
}
var members = parent.members, member;
- for (var i2 = 0; i2 < members.length; i2++) {
- member = members[i2];
+ for (var i3 = 0; i3 < members.length; i3++) {
+ member = members[i3];
if (member.id === entity.id && member.role && member.role !== "outer") {
return false;
}
return false;
}
var members = parent.members, member, outerMember;
- for (var i2 = 0; i2 < members.length; i2++) {
- member = members[i2];
+ for (var i3 = 0; i3 < members.length; i3++) {
+ member = members[i3];
if (!member.role || member.role === "outer") {
if (outerMember)
return false;
toJoin = toJoin.filter(function(member) {
return member.type === "way" && graph.hasEntity(member.id);
});
- var i2;
+ var i3;
var joinAsMembers = true;
- for (i2 = 0; i2 < toJoin.length; i2++) {
- if (toJoin[i2] instanceof osmWay) {
+ for (i3 = 0; i3 < toJoin.length; i3++) {
+ if (toJoin[i3] instanceof osmWay) {
joinAsMembers = false;
break;
}
var end = currNodes[currNodes.length - 1];
var fn = null;
var nodes = null;
- for (i2 = 0; i2 < toJoin.length; i2++) {
- item = toJoin[i2];
+ for (i3 = 0; i3 < toJoin.length; i3++) {
+ item = toJoin[i3];
nodes = resolve(item);
if (joinAsMembers && currWays.length === 1 && nodes[0] !== end && nodes[nodes.length - 1] !== end && (nodes[nodes.length - 1] === start2 || nodes[0] === start2)) {
currWays[0] = reverse(currWays[0]);
}
fn.apply(currWays, [item]);
fn.apply(currNodes, nodes);
- toJoin.splice(i2, 1);
+ toJoin.splice(i3, 1);
}
currWays.nodes = currNodes;
sequences.push(currWays);
return graph;
};
function addWayMember(relation, graph) {
- var groups, tempWay, insertPairIsReversed, item, i2, j2, k;
+ var groups, tempWay, insertPairIsReversed, item, i3, j3, k2;
var PTv2members = [];
var members = [];
- for (i2 = 0; i2 < relation.members.length; i2++) {
- var m = relation.members[i2];
- if (/stop|platform/.test(m.role)) {
- PTv2members.push(m);
+ for (i3 = 0; i3 < relation.members.length; i3++) {
+ var m2 = relation.members[i3];
+ if (/stop|platform/.test(m2.role)) {
+ PTv2members.push(m2);
} else {
- members.push(m);
+ members.push(m2);
}
}
relation = relation.update({ members });
}
members = withIndex(groups.way);
var joined = osmJoinWays(members, graph);
- for (i2 = 0; i2 < joined.length; i2++) {
- var segment = joined[i2];
+ for (i3 = 0; i3 < joined.length; i3++) {
+ var segment = joined[i3];
var nodes = segment.nodes.slice();
var startIndex = segment[0].index;
- for (j2 = 0; j2 < members.length; j2++) {
- if (members[j2].index === startIndex) {
+ for (j3 = 0; j3 < members.length; j3++) {
+ if (members[j3].index === startIndex) {
break;
}
}
- for (k = 0; k < segment.length; k++) {
- item = segment[k];
+ for (k2 = 0; k2 < segment.length; k2++) {
+ item = segment[k2];
var way = graph.entity(item.id);
if (tempWay && item.id === tempWay.id) {
var reverse = nodes[0].id !== insertPair.nodes[0] ^ insertPairIsReversed;
];
}
}
- if (k > 0) {
- if (j2 + k >= members.length || item.index !== members[j2 + k].index) {
- moveMember(members, item.index, j2 + k);
+ if (k2 > 0) {
+ if (j3 + k2 >= members.length || item.index !== members[j3 + k2].index) {
+ moveMember(members, item.index, j3 + k2);
}
}
nodes.splice(0, way.nodes.length - 1);
graph = graph.remove(tempWay);
}
var wayMembers = [];
- for (i2 = 0; i2 < members.length; i2++) {
- item = members[i2];
+ for (i3 = 0; i3 < members.length; i3++) {
+ item = members[i3];
if (item.index === -1)
continue;
if (item.pair) {
var newMembers = PTv2members.concat(groups.node || [], wayMembers, groups.relation || []);
return graph.replace(relation.update({ members: newMembers }));
function moveMember(arr, findIndex, toIndex) {
- var i3;
- for (i3 = 0; i3 < arr.length; i3++) {
- if (arr[i3].index === findIndex) {
+ var i4;
+ for (i4 = 0; i4 < arr.length; i4++) {
+ if (arr[i4].index === findIndex) {
break;
}
}
- var item2 = Object.assign({}, arr[i3]);
- arr[i3].index = -1;
+ var item2 = Object.assign({}, arr[i4]);
+ arr[i4].index = -1;
item2.index = toIndex;
arr.splice(toIndex, 0, item2);
}
function withIndex(arr) {
var result = new Array(arr.length);
- for (var i3 = 0; i3 < arr.length; i3++) {
- result[i3] = Object.assign({}, arr[i3]);
- result[i3].index = i3;
+ for (var i4 = 0; i4 < arr.length; i4++) {
+ result[i4] = Object.assign({}, arr[i4]);
+ result[i4].index = i4;
}
return result;
}
graph.parentWays(graph.entity(midpoint.edge[1]))
);
parents.forEach(function(way) {
- for (var i2 = 0; i2 < way.nodes.length - 1; i2++) {
- if (geoEdgeEqual([way.nodes[i2], way.nodes[i2 + 1]], midpoint.edge)) {
- graph = graph.replace(graph.entity(way.id).addNode(node.id, i2 + 1));
+ for (var i3 = 0; i3 < way.nodes.length - 1; i3++) {
+ if (geoEdgeEqual([way.nodes[i3], way.nodes[i3 + 1]], midpoint.edge)) {
+ graph = graph.replace(graph.entity(way.id).addNode(node.id, i3 + 1));
return;
}
}
var entity = graph.entity(entityID);
var geometry = entity.geometry(graph);
var tags = entity.tags;
+ const loc = entity.extent(graph).center();
var preserveKeys;
if (newPreset) {
preserveKeys = [];
preserveKeys = preserveKeys.concat(Object.keys(newPreset.addTags));
}
if (oldPreset && !oldPreset.id.startsWith(newPreset.id)) {
- newPreset.fields().concat(newPreset.moreFields()).filter((f2) => f2.matchGeometry(geometry)).map((f2) => f2.key).filter(Boolean).forEach((key) => preserveKeys.push(key));
+ newPreset.fields(loc).concat(newPreset.moreFields(loc)).filter((f3) => f3.matchGeometry(geometry)).map((f3) => f3.key).filter(Boolean).forEach((key) => preserveKeys.push(key));
}
}
if (oldPreset)
- tags = oldPreset.unsetTags(tags, geometry, preserveKeys);
+ tags = oldPreset.unsetTags(tags, geometry, preserveKeys, false, loc);
if (newPreset)
- tags = newPreset.setTags(tags, geometry, skipFieldDefaults);
+ tags = newPreset.setTags(tags, geometry, skipFieldDefaults, loc);
return graph.replace(entity.update({ tags }));
};
}
// Inspect tags and geometry to determine which direction(s) this node/vertex points
directions: function(resolver, projection2) {
var val;
- var i2;
+ var i3;
if (this.isHighwayIntersection(resolver) && (this.tags.stop || "").toLowerCase() === "all") {
val = "all";
} else {
val = (this.tags.direction || "").toLowerCase();
- var re2 = /:direction$/i;
- var keys = Object.keys(this.tags);
- for (i2 = 0; i2 < keys.length; i2++) {
- if (re2.test(keys[i2])) {
- val = this.tags[keys[i2]].toLowerCase();
+ var re3 = /:direction$/i;
+ var keys2 = Object.keys(this.tags);
+ for (i3 = 0; i3 < keys2.length; i3++) {
+ if (re3.test(keys2[i3])) {
+ val = this.tags[keys2[i3]].toLowerCase();
break;
}
}
return [];
var values = val.split(";");
var results = [];
- values.forEach(function(v) {
- if (cardinal[v] !== void 0) {
- v = cardinal[v];
+ values.forEach(function(v2) {
+ if (cardinal[v2] !== void 0) {
+ v2 = cardinal[v2];
}
- if (v !== "" && !isNaN(+v)) {
- results.push(+v);
+ if (v2 !== "" && !isNaN(+v2)) {
+ results.push(+v2);
return;
}
- var lookBackward = this.tags["traffic_sign:backward"] || v === "backward" || v === "both" || v === "all";
- var lookForward = this.tags["traffic_sign:forward"] || v === "forward" || v === "both" || v === "all";
+ var lookBackward = this.tags["traffic_sign:backward"] || v2 === "backward" || v2 === "both" || v2 === "all";
+ var lookForward = this.tags["traffic_sign:forward"] || v2 === "forward" || v2 === "both" || v2 === "all";
if (!lookForward && !lookBackward)
return;
var nodeIds = {};
resolver.parentWays(this).forEach(function(parent) {
var nodes = parent.nodes;
- for (i2 = 0; i2 < nodes.length; i2++) {
- if (nodes[i2] === this.id) {
- if (lookForward && i2 > 0) {
- nodeIds[nodes[i2 - 1]] = true;
+ for (i3 = 0; i3 < nodes.length; i3++) {
+ if (nodes[i3] === this.id) {
+ if (lookForward && i3 > 0) {
+ nodeIds[nodes[i3 - 1]] = true;
}
- if (lookBackward && i2 < nodes.length - 1) {
- nodeIds[nodes[i2 + 1]] = true;
+ if (lookBackward && i3 < nodes.length - 1) {
+ nodeIds[nodes[i3 + 1]] = true;
}
}
}
return resolver.transient(this, "isConnected", function() {
var parents = resolver.parentWays(this);
if (parents.length > 1) {
- for (var i2 in parents) {
- if (parents[i2].geometry(resolver) === "line" && parents[i2].hasInterestingTags())
+ for (var i3 in parents) {
+ if (parents[i3].geometry(resolver) === "line" && parents[i3].hasInterestingTags())
return true;
}
} else if (parents.length === 1) {
});
},
asJXON: function(changeset_id) {
- var r = {
+ var r2 = {
node: {
"@id": this.osmId(),
"@lon": this.loc[0],
"@lat": this.loc[1],
"@version": this.version || 0,
- tag: Object.keys(this.tags).map(function(k) {
- return { keyAttributes: { k, v: this.tags[k] } };
+ tag: Object.keys(this.tags).map(function(k2) {
+ return { keyAttributes: { k: k2, v: this.tags[k2] } };
}, this)
}
};
if (changeset_id)
- r.node["@changeset"] = changeset_id;
- return r;
+ r2.node["@changeset"] = changeset_id;
+ return r2;
},
asGeoJSON: function() {
return {
// modules/actions/circularize.js
function actionCircularize(wayId, projection2, maxAngle) {
maxAngle = (maxAngle || 20) * Math.PI / 180;
- var action = function(graph, t) {
- if (t === null || !isFinite(t))
- t = 1;
- t = Math.min(Math.max(+t, 0), 1);
+ var action = function(graph, t2) {
+ if (t2 === null || !isFinite(t2))
+ t2 = 1;
+ t2 = Math.min(Math.max(+t2, 0), 1);
var way = graph.entity(wayId);
var origNodes = {};
graph.childNodes(way).forEach(function(node2) {
graph = action.makeConvex(graph);
}
var nodes = utilArrayUniq(graph.childNodes(way));
- var keyNodes = nodes.filter(function(n2) {
- return graph.parentWays(n2).length !== 1;
+ var keyNodes = nodes.filter(function(n3) {
+ return graph.parentWays(n3).length !== 1;
});
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
- var keyPoints = keyNodes.map(function(n2) {
- return projection2(n2.loc);
+ var keyPoints = keyNodes.map(function(n3) {
+ return projection2(n3.loc);
});
var centroid = points.length === 2 ? geoVecInterp(points[0], points[1], 0.5) : centroid_default2(points);
- var radius = median(points, function(p) {
- return geoVecLength(centroid, p);
+ var radius = median(points, function(p2) {
+ return geoVecLength(centroid, p2);
});
var sign2 = area_default3(points) > 0 ? 1 : -1;
- var ids, i2, j2, k;
+ var ids, i3, j3, k2;
if (!keyNodes.length) {
keyNodes = [nodes[0]];
keyPoints = [points[0]];
keyNodes.push(nodes[oppositeIndex]);
keyPoints.push(points[oppositeIndex]);
}
- for (i2 = 0; i2 < keyPoints.length; i2++) {
- var nextKeyNodeIndex = (i2 + 1) % keyNodes.length;
- var startNode = keyNodes[i2];
+ for (i3 = 0; i3 < keyPoints.length; i3++) {
+ var nextKeyNodeIndex = (i3 + 1) % keyNodes.length;
+ var startNode = keyNodes[i3];
var endNode = keyNodes[nextKeyNodeIndex];
var startNodeIndex = nodes.indexOf(startNode);
var endNodeIndex = nodes.indexOf(endNode);
if (indexRange < 0) {
indexRange += nodes.length;
}
- var distance = geoVecLength(centroid, keyPoints[i2]) || 1e-4;
- keyPoints[i2] = [
- centroid[0] + (keyPoints[i2][0] - centroid[0]) / distance * radius,
- centroid[1] + (keyPoints[i2][1] - centroid[1]) / distance * radius
+ var distance = geoVecLength(centroid, keyPoints[i3]) || 1e-4;
+ keyPoints[i3] = [
+ centroid[0] + (keyPoints[i3][0] - centroid[0]) / distance * radius,
+ centroid[1] + (keyPoints[i3][1] - centroid[1]) / distance * radius
];
- loc = projection2.invert(keyPoints[i2]);
- node = keyNodes[i2];
+ loc = projection2.invert(keyPoints[i3]);
+ node = keyNodes[i3];
origNode = origNodes[node.id];
- node = node.move(geoVecInterp(origNode.loc, loc, t));
+ node = node.move(geoVecInterp(origNode.loc, loc, t2));
graph = graph.replace(node);
- startAngle = Math.atan2(keyPoints[i2][1] - centroid[1], keyPoints[i2][0] - centroid[0]);
+ startAngle = Math.atan2(keyPoints[i3][1] - centroid[1], keyPoints[i3][0] - centroid[0]);
endAngle = Math.atan2(keyPoints[nextKeyNodeIndex][1] - centroid[1], keyPoints[nextKeyNodeIndex][0] - centroid[0]);
totalAngle = endAngle - startAngle;
if (totalAngle * sign2 > 0) {
numberNewPoints++;
eachAngle = totalAngle / (indexRange + numberNewPoints);
} while (Math.abs(eachAngle) > maxAngle);
- for (j2 = 1; j2 < indexRange; j2++) {
- angle2 = startAngle + j2 * eachAngle;
+ for (j3 = 1; j3 < indexRange; j3++) {
+ angle2 = startAngle + j3 * eachAngle;
loc = projection2.invert([
centroid[0] + Math.cos(angle2) * radius,
centroid[1] + Math.sin(angle2) * radius
]);
- node = nodes[(j2 + startNodeIndex) % nodes.length];
+ node = nodes[(j3 + startNodeIndex) % nodes.length];
origNode = origNodes[node.id];
nearNodes[node.id] = angle2;
- node = node.move(geoVecInterp(origNode.loc, loc, t));
+ node = node.move(geoVecInterp(origNode.loc, loc, t2));
graph = graph.replace(node);
}
- for (j2 = 0; j2 < numberNewPoints; j2++) {
- angle2 = startAngle + (indexRange + j2) * eachAngle;
+ for (j3 = 0; j3 < numberNewPoints; j3++) {
+ angle2 = startAngle + (indexRange + j3) * eachAngle;
loc = projection2.invert([
centroid[0] + Math.cos(angle2) * radius,
centroid[1] + Math.sin(angle2) * radius
origNode = origNodes[nodeId];
}
}
- node = osmNode({ loc: geoVecInterp(origNode.loc, loc, t) });
+ node = osmNode({ loc: geoVecInterp(origNode.loc, loc, t2) });
graph = graph.replace(node);
- nodes.splice(endNodeIndex + j2, 0, node);
+ nodes.splice(endNodeIndex + j3, 0, node);
inBetweenNodes.push(node.id);
}
if (indexRange === 1 && inBetweenNodes.length) {
if (wayDirection1 < -1) {
wayDirection1 = 1;
}
- var parentWays = graph.parentWays(keyNodes[i2]);
- for (j2 = 0; j2 < parentWays.length; j2++) {
- var sharedWay = parentWays[j2];
+ var parentWays = graph.parentWays(keyNodes[i3]);
+ for (j3 = 0; j3 < parentWays.length; j3++) {
+ var sharedWay = parentWays[j3];
if (sharedWay === way)
continue;
if (sharedWay.areAdjacent(startNode.id, endNode.id)) {
inBetweenNodes.reverse();
insertAt = startIndex2;
}
- for (k = 0; k < inBetweenNodes.length; k++) {
- sharedWay = sharedWay.addNode(inBetweenNodes[k], insertAt + k);
+ for (k2 = 0; k2 < inBetweenNodes.length; k2++) {
+ sharedWay = sharedWay.addNode(inBetweenNodes[k2], insertAt + k2);
}
graph = graph.replace(sharedWay);
}
}
}
}
- ids = nodes.map(function(n2) {
- return n2.id;
+ ids = nodes.map(function(n3) {
+ return n3.id;
});
ids.push(ids[0]);
way = way.update({ nodes: ids });
action.makeConvex = function(graph) {
var way = graph.entity(wayId);
var nodes = utilArrayUniq(graph.childNodes(way));
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var sign2 = area_default3(points) > 0 ? 1 : -1;
var hull = hull_default(points);
- var i2, j2;
+ var i3, j3;
if (sign2 === -1) {
nodes.reverse();
points.reverse();
}
- for (i2 = 0; i2 < hull.length - 1; i2++) {
- var startIndex = points.indexOf(hull[i2]);
- var endIndex = points.indexOf(hull[i2 + 1]);
+ for (i3 = 0; i3 < hull.length - 1; i3++) {
+ var startIndex = points.indexOf(hull[i3]);
+ var endIndex = points.indexOf(hull[i3 + 1]);
var indexRange = endIndex - startIndex;
if (indexRange < 0) {
indexRange += nodes.length;
}
- for (j2 = 1; j2 < indexRange; j2++) {
- var point2 = geoVecInterp(hull[i2], hull[i2 + 1], j2 / indexRange);
- var node = nodes[(j2 + startIndex) % nodes.length].move(projection2.invert(point2));
+ for (j3 = 1; j3 < indexRange; j3++) {
+ var point2 = geoVecInterp(hull[i3], hull[i3 + 1], j3 / indexRange);
+ var node = nodes[(j3 + startIndex) % nodes.length].move(projection2.invert(point2));
graph = graph.replace(node);
}
}
}
var way = graph.entity(wayId);
var nodes = utilArrayUniq(graph.childNodes(way));
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var hull = hull_default(points);
var epsilonAngle = Math.PI / 180;
}
var centroid = centroid_default2(points);
var radius = geoVecLengthSquare(centroid, points[0]);
- var i2, actualPoint;
- for (i2 = 0; i2 < hull.length; i2++) {
- actualPoint = hull[i2];
+ var i3, actualPoint;
+ for (i3 = 0; i3 < hull.length; i3++) {
+ actualPoint = hull[i3];
var actualDist = geoVecLengthSquare(actualPoint, centroid);
var diff = Math.abs(actualDist - radius);
if (diff > 0.05 * radius) {
return false;
}
}
- for (i2 = 0; i2 < hull.length; i2++) {
- actualPoint = hull[i2];
- var nextPoint = hull[(i2 + 1) % hull.length];
+ for (i3 = 0; i3 < hull.length; i3++) {
+ actualPoint = hull[i3];
+ var nextPoint = hull[(i3 + 1) % hull.length];
var startAngle = Math.atan2(actualPoint[1] - centroid[1], actualPoint[0] - centroid[0]);
var endAngle = Math.atan2(nextPoint[1] - centroid[1], nextPoint[0] - centroid[0]);
var angle2 = endAngle - startAngle;
graph = actionDeleteRelation(parent.id)(graph);
}
});
- var memberIDs = utilArrayUniq(relation.members.map(function(m) {
- return m.id;
+ var memberIDs = utilArrayUniq(relation.members.map(function(m2) {
+ return m2.id;
}));
memberIDs.forEach(function(memberID) {
graph = graph.replace(relation.removeMembersWithID(memberID));
var survivor;
var node;
var parents;
- var i2, j2;
+ var i3, j3;
nodeIDs.reverse();
var interestingIDs = [];
- for (i2 = 0; i2 < nodeIDs.length; i2++) {
- node = graph.entity(nodeIDs[i2]);
+ for (i3 = 0; i3 < nodeIDs.length; i3++) {
+ node = graph.entity(nodeIDs[i3]);
if (node.hasInterestingTags()) {
if (!node.isNew()) {
interestingIDs.push(node.id);
}
}
survivor = graph.entity(utilOldestID(interestingIDs.length > 0 ? interestingIDs : nodeIDs));
- for (i2 = 0; i2 < nodeIDs.length; i2++) {
- node = graph.entity(nodeIDs[i2]);
+ for (i3 = 0; i3 < nodeIDs.length; i3++) {
+ node = graph.entity(nodeIDs[i3]);
if (node.id === survivor.id)
continue;
parents = graph.parentWays(node);
- for (j2 = 0; j2 < parents.length; j2++) {
- graph = graph.replace(parents[j2].replaceNode(node.id, survivor.id));
+ for (j3 = 0; j3 < parents.length; j3++) {
+ graph = graph.replace(parents[j3].replaceNode(node.id, survivor.id));
}
parents = graph.parentRelations(node);
- for (j2 = 0; j2 < parents.length; j2++) {
- graph = graph.replace(parents[j2].replaceMember(node, survivor));
+ for (j3 = 0; j3 < parents.length; j3++) {
+ graph = graph.replace(parents[j3].replaceMember(node, survivor));
}
survivor = survivor.mergeTags(node.tags);
graph = actionDeleteNode(node.id)(graph);
}
graph = graph.replace(survivor);
parents = graph.parentWays(survivor);
- for (i2 = 0; i2 < parents.length; i2++) {
- if (parents[i2].isDegenerate()) {
- graph = actionDeleteWay(parents[i2].id)(graph);
+ for (i3 = 0; i3 < parents.length; i3++) {
+ if (parents[i3].isDegenerate()) {
+ graph = actionDeleteWay(parents[i3].id)(graph);
}
}
return graph;
var survivor;
var node, way;
var relations, relation, role;
- var i2, j2, k;
+ var i3, j3, k2;
survivor = graph.entity(utilOldestID(nodeIDs));
- for (i2 = 0; i2 < nodeIDs.length; i2++) {
- node = graph.entity(nodeIDs[i2]);
+ for (i3 = 0; i3 < nodeIDs.length; i3++) {
+ node = graph.entity(nodeIDs[i3]);
relations = graph.parentRelations(node);
- for (j2 = 0; j2 < relations.length; j2++) {
- relation = relations[j2];
+ for (j3 = 0; j3 < relations.length; j3++) {
+ relation = relations[j3];
role = relation.memberById(node.id).role || "";
if (relation.hasFromViaTo()) {
restrictionIDs.push(relation.id);
}
}
}
- for (i2 = 0; i2 < nodeIDs.length; i2++) {
- node = graph.entity(nodeIDs[i2]);
+ for (i3 = 0; i3 < nodeIDs.length; i3++) {
+ node = graph.entity(nodeIDs[i3]);
var parents = graph.parentWays(node);
- for (j2 = 0; j2 < parents.length; j2++) {
- var parent = parents[j2];
+ for (j3 = 0; j3 < parents.length; j3++) {
+ var parent = parents[j3];
relations = graph.parentRelations(parent);
- for (k = 0; k < relations.length; k++) {
- relation = relations[k];
+ for (k2 = 0; k2 < relations.length; k2++) {
+ relation = relations[k2];
if (relation.hasFromViaTo()) {
restrictionIDs.push(relation.id);
}
}
}
restrictionIDs = utilArrayUniq(restrictionIDs);
- for (i2 = 0; i2 < restrictionIDs.length; i2++) {
- relation = graph.entity(restrictionIDs[i2]);
+ for (i3 = 0; i3 < restrictionIDs.length; i3++) {
+ relation = graph.entity(restrictionIDs[i3]);
if (!relation.isComplete(graph))
continue;
- var memberWays = relation.members.filter(function(m) {
- return m.type === "way";
- }).map(function(m) {
- return graph.entity(m.id);
+ var memberWays = relation.members.filter(function(m2) {
+ return m2.type === "way";
+ }).map(function(m2) {
+ return graph.entity(m2.id);
});
memberWays = utilArrayUniq(memberWays);
- var f2 = relation.memberByRole("from");
- var t = relation.memberByRole("to");
- var isUturn = f2.id === t.id;
+ var f3 = relation.memberByRole("from");
+ var t2 = relation.memberByRole("to");
+ var isUturn = f3.id === t2.id;
var nodes = { from: [], via: [], to: [], keyfrom: [], keyto: [] };
- for (j2 = 0; j2 < relation.members.length; j2++) {
- collectNodes(relation.members[j2], nodes);
+ for (j3 = 0; j3 < relation.members.length; j3++) {
+ collectNodes(relation.members[j3], nodes);
}
nodes.keyfrom = utilArrayUniq(nodes.keyfrom.filter(hasDuplicates));
nodes.keyto = utilArrayUniq(nodes.keyto.filter(hasDuplicates));
var connectTo = false;
var connectKeyFrom = false;
var connectKeyTo = false;
- for (j2 = 0; j2 < nodeIDs.length; j2++) {
- var n2 = nodeIDs[j2];
- if (nodes.from.indexOf(n2) !== -1) {
+ for (j3 = 0; j3 < nodeIDs.length; j3++) {
+ var n3 = nodeIDs[j3];
+ if (nodes.from.indexOf(n3) !== -1) {
connectFrom = true;
}
- if (nodes.via.indexOf(n2) !== -1) {
+ if (nodes.via.indexOf(n3) !== -1) {
connectVia = true;
}
- if (nodes.to.indexOf(n2) !== -1) {
+ if (nodes.to.indexOf(n3) !== -1) {
connectTo = true;
}
- if (nodes.keyfrom.indexOf(n2) !== -1) {
+ if (nodes.keyfrom.indexOf(n3) !== -1) {
connectKeyFrom = true;
}
- if (nodes.keyto.indexOf(n2) !== -1) {
+ if (nodes.keyto.indexOf(n3) !== -1) {
connectKeyTo = true;
}
}
}
var n0 = null;
var n1 = null;
- for (j2 = 0; j2 < memberWays.length; j2++) {
- way = memberWays[j2];
+ for (j3 = 0; j3 < memberWays.length; j3++) {
+ way = memberWays[j3];
if (way.contains(nodeIDs[0])) {
n0 = nodeIDs[0];
}
}
if (n0 && n1) {
var ok = false;
- for (j2 = 0; j2 < memberWays.length; j2++) {
- way = memberWays[j2];
+ for (j3 = 0; j3 < memberWays.length; j3++) {
+ way = memberWays[j3];
if (way.areAdjacent(n0, n1)) {
ok = true;
break;
}
}
}
- for (j2 = 0; j2 < memberWays.length; j2++) {
- way = memberWays[j2].update({});
- for (k = 0; k < nodeIDs.length; k++) {
- if (nodeIDs[k] === survivor.id)
+ for (j3 = 0; j3 < memberWays.length; j3++) {
+ way = memberWays[j3].update({});
+ for (k2 = 0; k2 < nodeIDs.length; k2++) {
+ if (nodeIDs[k2] === survivor.id)
continue;
- if (way.areAdjacent(nodeIDs[k], survivor.id)) {
- way = way.removeNode(nodeIDs[k]);
+ if (way.areAdjacent(nodeIDs[k2], survivor.id)) {
+ way = way.removeNode(nodeIDs[k2]);
} else {
- way = way.replaceNode(nodeIDs[k], survivor.id);
+ way = way.replaceNode(nodeIDs[k2], survivor.id);
}
}
if (way.isDegenerate()) {
}
}
return false;
- function hasDuplicates(n3, i3, arr) {
- return arr.indexOf(n3) !== arr.lastIndexOf(n3);
+ function hasDuplicates(n4, i4, arr) {
+ return arr.indexOf(n4) !== arr.lastIndexOf(n4);
}
function keyNodeFilter(froms, tos) {
- return function(n3) {
- return froms.indexOf(n3) === -1 && tos.indexOf(n3) === -1;
+ return function(n4) {
+ return froms.indexOf(n4) === -1 && tos.indexOf(n4) === -1;
};
}
function collectNodes(member, collection) {
difference.created().forEach(checkTags);
return graph;
function checkTags(entity) {
- const keys = Object.keys(entity.tags);
+ const keys2 = Object.keys(entity.tags);
let didDiscard = false;
let tags = {};
- for (let i2 = 0; i2 < keys.length; i2++) {
- const k = keys[i2];
- if (discardTags[k] || !entity.tags[k]) {
+ for (let i3 = 0; i3 < keys2.length; i3++) {
+ const k2 = keys2[i3];
+ if (discardTags[k2] || !entity.tags[k2]) {
didDiscard = true;
} else {
- tags[k] = entity.tags[k];
+ tags[k2] = entity.tags[k2];
}
}
if (didDiscard) {
var keeping = false;
var parentWays = graph.parentWays(graph.entity(nodeId));
var way, waynode;
- for (var i2 = 0; i2 < parentWays.length; i2++) {
- way = parentWays[i2];
+ for (var i3 = 0; i3 < parentWays.length; i3++) {
+ way = parentWays[i3];
if (wayIds && wayIds.indexOf(way.id) === -1) {
keeping = true;
continue;
if (way.isArea() && way.nodes[0] === nodeId) {
candidates.push({ wayID: way.id, index: 0 });
} else {
- for (var j2 = 0; j2 < way.nodes.length; j2++) {
- waynode = way.nodes[j2];
+ for (var j3 = 0; j3 < way.nodes.length; j3++) {
+ waynode = way.nodes[j3];
if (waynode === nodeId) {
- if (way.isClosed() && parentWays.length > 1 && wayIds && wayIds.indexOf(way.id) !== -1 && j2 === way.nodes.length - 1) {
+ if (way.isClosed() && parentWays.length > 1 && wayIds && wayIds.indexOf(way.id) !== -1 && j3 === way.nodes.length - 1) {
continue;
}
- candidates.push({ wayID: way.id, index: j2 });
+ candidates.push({ wayID: way.id, index: j3 });
}
}
}
var action = function(graph) {
var ways = ids.map(graph.entity, graph);
var survivorID = utilOldestID(ways.map((way) => way.id));
- ways.sort(function(a, b) {
- var aSided = a.isSided();
- var bSided = b.isSided();
+ ways.sort(function(a2, b2) {
+ var aSided = a2.isSided();
+ var bSided = b2.isSided();
return aSided && !bSided ? -1 : bSided && !aSided ? 1 : 0;
});
var sequences = osmJoinWays(ways, graph);
var joined = sequences[0];
- graph = sequences.actions.reduce(function(g, action2) {
- return action2(g);
+ graph = sequences.actions.reduce(function(g3, action2) {
+ return action2(g3);
}, graph);
var survivor = graph.entity(survivorID);
- survivor = survivor.update({ nodes: joined.nodes.map(function(n2) {
- return n2.id;
+ survivor = survivor.update({ nodes: joined.nodes.map(function(n3) {
+ return n3.id;
}) });
graph = graph.replace(survivor);
joined.forEach(function(way) {
if (joined.length > 1) {
return "not_adjacent";
}
- var i2;
+ var i3;
var sortedParentRelations = function(id2) {
- return graph.parentRelations(graph.entity(id2)).filter((rel) => !rel.isRestriction() && !rel.isConnectivity()).sort((a, b) => a.id - b.id);
+ return graph.parentRelations(graph.entity(id2)).filter((rel) => !rel.isRestriction() && !rel.isConnectivity()).sort((a2, b2) => a2.id - b2.id);
};
var relsA = sortedParentRelations(ids[0]);
- for (i2 = 1; i2 < ids.length; i2++) {
- var relsB = sortedParentRelations(ids[i2]);
+ for (i3 = 1; i3 < ids.length; i3++) {
+ var relsB = sortedParentRelations(ids[i3]);
if (!utilArrayIdentical(relsA, relsB)) {
return "conflicting_relations";
}
}
- for (i2 = 0; i2 < ids.length - 1; i2++) {
- for (var j2 = i2 + 1; j2 < ids.length; j2++) {
- var path1 = graph.childNodes(graph.entity(ids[i2])).map(function(e) {
- return e.loc;
+ for (i3 = 0; i3 < ids.length - 1; i3++) {
+ for (var j3 = i3 + 1; j3 < ids.length; j3++) {
+ var path1 = graph.childNodes(graph.entity(ids[i3])).map(function(e3) {
+ return e3.loc;
});
- var path2 = graph.childNodes(graph.entity(ids[j2])).map(function(e) {
- return e.loc;
+ var path2 = graph.childNodes(graph.entity(ids[j3])).map(function(e3) {
+ return e3.loc;
});
var intersections = geoPathIntersections(path1, path2);
var common = utilArrayIntersection(
- joined[0].nodes.map(function(n2) {
- return n2.loc.toString();
+ joined[0].nodes.map(function(n3) {
+ return n3.loc.toString();
}),
- intersections.map(function(n2) {
- return n2.toString();
+ intersections.map(function(n3) {
+ return n3.toString();
})
);
if (common.length !== intersections.length) {
}
}
}
- var nodeIds = joined[0].nodes.map(function(n2) {
- return n2.id;
+ var nodeIds = joined[0].nodes.map(function(n3) {
+ return n3.id;
}).slice(1, -1);
var relation;
var tags = {};
joined[0].forEach(function(way) {
var parents = graph.parentRelations(way);
parents.forEach(function(parent) {
- if ((parent.isRestriction() || parent.isConnectivity()) && parent.members.some(function(m) {
- return nodeIds.indexOf(m.id) >= 0;
+ if ((parent.isRestriction() || parent.isConnectivity()) && parent.members.some(function(m2) {
+ return nodeIds.indexOf(m2.id) >= 0;
})) {
relation = parent;
}
});
- for (var k in way.tags) {
- if (!(k in tags)) {
- tags[k] = way.tags[k];
- } else if (tags[k] && osmIsInterestingTag(k) && tags[k] !== way.tags[k]) {
+ for (var k2 in way.tags) {
+ if (!(k2 in tags)) {
+ tags[k2] = way.tags[k2];
+ } else if (tags[k2] && osmIsInterestingTag(k2) && tags[k2] !== way.tags[k2]) {
conflicting = true;
}
}
removeNode = node2;
inserted = true;
};
- var i2;
+ var i3;
var node;
- for (i2 = 0; i2 < nodes.length; i2++) {
- node = nodes[i2];
+ for (i3 = 0; i3 < nodes.length; i3++) {
+ node = nodes[i3];
if (canBeReplaced(node) && node.isNew()) {
replaceNode(node);
break;
}
}
if (!inserted && point2.hasInterestingTags()) {
- for (i2 = 0; i2 < nodes.length; i2++) {
- node = nodes[i2];
+ for (i3 = 0; i3 < nodes.length; i3++) {
+ node = nodes[i3];
if (canBeReplaced(node) && !node.hasInterestingTags()) {
replaceNode(node);
break;
}
}
if (!inserted) {
- for (i2 = 0; i2 < nodes.length; i2++) {
- node = nodes[i2];
+ for (i3 = 0; i3 < nodes.length; i3++) {
+ node = nodes[i3];
if (canBeReplaced(node) && utilCompareIDs(point2.id, node.id) < 0) {
replaceNode(node);
break;
var sum = [0, 0];
var interestingCount = 0;
var interestingLoc;
- for (var i2 = 0; i2 < nodeIDs.length; i2++) {
- var node = graph.entity(nodeIDs[i2]);
+ for (var i3 = 0; i3 < nodeIDs.length; i3++) {
+ var node = graph.entity(nodeIDs[i3]);
if (node.hasInterestingTags()) {
interestingLoc = ++interestingCount === 1 ? node.loc : null;
}
if (!toLoc) {
toLoc = chooseLoc(graph);
}
- for (var i2 = 0; i2 < nodeIDs.length; i2++) {
- var node = graph.entity(nodeIDs[i2]);
+ for (var i3 = 0; i3 < nodeIDs.length; i3++) {
+ var node = graph.entity(nodeIDs[i3]);
if (node.loc !== toLoc) {
graph = graph.replace(node.move(toLoc));
}
action.disabled = function(graph) {
if (nodeIDs.length < 2)
return "not_eligible";
- for (var i2 = 0; i2 < nodeIDs.length; i2++) {
- var entity = graph.entity(nodeIDs[i2]);
+ for (var i3 = 0; i3 < nodeIDs.length; i3++) {
+ var entity = graph.entity(nodeIDs[i3]);
if (entity.type !== "node")
return "not_eligible";
}
return {
osm: {
changeset: {
- tag: Object.keys(this.tags).map(function(k) {
- return { "@k": k, "@v": this.tags[k] };
+ tag: Object.keys(this.tags).map(function(k2) {
+ return { "@k": k2, "@v": this.tags[k2] };
}, this),
"@version": 0.6,
"@generator": "iD"
// XML. Returns a string.
osmChangeJXON: function(changes) {
var changeset_id = this.id;
- function nest(x, order) {
+ function nest(x2, order) {
var groups = {};
- for (var i2 = 0; i2 < x.length; i2++) {
- var tagName = Object.keys(x[i2])[0];
+ for (var i3 = 0; i3 < x2.length; i3++) {
+ var tagName = Object.keys(x2[i3])[0];
if (!groups[tagName])
groups[tagName] = [];
- groups[tagName].push(x[i2][tagName]);
+ groups[tagName].push(x2[i3][tagName]);
}
var ordered = {};
- order.forEach(function(o) {
- if (groups[o])
- ordered[o] = groups[o];
+ order.forEach(function(o2) {
+ if (groups[o2])
+ ordered[o2] = groups[o2];
});
return ordered;
}
var relations = changes2.relation;
if (!relations)
return changes2;
- for (var i2 = 0; i2 < relations.length; i2++) {
- var relation = relations[i2];
+ for (var i3 = 0; i3 < relations.length; i3++) {
+ var relation = relations[i3];
if (!sorted[relation["@id"]]) {
processing.push(relation);
}
Object.assign(osmNote.prototype, {
type: "note",
initialize: function(sources) {
- for (var i2 = 0; i2 < sources.length; ++i2) {
- var source = sources[i2];
+ for (var i3 = 0; i3 < sources.length; ++i3) {
+ var source = sources[i3];
for (var prop in source) {
if (Object.prototype.hasOwnProperty.call(source, prop)) {
if (source[prop] === void 0) {
}
osmEntity.relation = osmRelation;
osmRelation.prototype = Object.create(osmEntity.prototype);
- osmRelation.creationOrder = function(a, b) {
- var aId = parseInt(osmEntity.id.toOSM(a.id), 10);
- var bId = parseInt(osmEntity.id.toOSM(b.id), 10);
+ osmRelation.creationOrder = function(a2, b2) {
+ var aId = parseInt(osmEntity.id.toOSM(a2.id), 10);
+ var bId = parseInt(osmEntity.id.toOSM(b2.id), 10);
if (aId < 0 || bId < 0)
return aId - bId;
return bId - aId;
memo = memo || {};
memo[this.id] = true;
var extent = geoExtent();
- for (var i2 = 0; i2 < this.members.length; i2++) {
- var member = resolver.hasEntity(this.members[i2].id);
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ var member = resolver.hasEntity(this.members[i3].id);
if (member) {
extent._extend(member.extent(resolver, memo));
}
// is the member index.
indexedMembers: function() {
var result = new Array(this.members.length);
- for (var i2 = 0; i2 < this.members.length; i2++) {
- result[i2] = Object.assign({}, this.members[i2], { index: i2 });
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ result[i3] = Object.assign({}, this.members[i3], { index: i3 });
}
return result;
},
// Return the first member with the given role. A copy of the member object
// is returned, extended with an 'index' property whose value is the member index.
memberByRole: function(role) {
- for (var i2 = 0; i2 < this.members.length; i2++) {
- if (this.members[i2].role === role) {
- return Object.assign({}, this.members[i2], { index: i2 });
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ if (this.members[i3].role === role) {
+ return Object.assign({}, this.members[i3], { index: i3 });
}
}
},
// Same as memberByRole, but returns all members with the given role
membersByRole: function(role) {
var result = [];
- for (var i2 = 0; i2 < this.members.length; i2++) {
- if (this.members[i2].role === role) {
- result.push(Object.assign({}, this.members[i2], { index: i2 }));
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ if (this.members[i3].role === role) {
+ result.push(Object.assign({}, this.members[i3], { index: i3 }));
}
}
return result;
// Return the first member with the given id. A copy of the member object
// is returned, extended with an 'index' property whose value is the member index.
memberById: function(id2) {
- for (var i2 = 0; i2 < this.members.length; i2++) {
- if (this.members[i2].id === id2) {
- return Object.assign({}, this.members[i2], { index: i2 });
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ if (this.members[i3].id === id2) {
+ return Object.assign({}, this.members[i3], { index: i3 });
}
}
},
// Return the first member with the given id and role. A copy of the member object
// is returned, extended with an 'index' property whose value is the member index.
memberByIdAndRole: function(id2, role) {
- for (var i2 = 0; i2 < this.members.length; i2++) {
- if (this.members[i2].id === id2 && this.members[i2].role === role) {
- return Object.assign({}, this.members[i2], { index: i2 });
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ if (this.members[i3].id === id2 && this.members[i3].role === role) {
+ return Object.assign({}, this.members[i3], { index: i3 });
}
}
},
return this.update({ members });
},
removeMembersWithID: function(id2) {
- var members = this.members.filter(function(m) {
- return m.id !== id2;
+ var members = this.members.filter(function(m2) {
+ return m2.id !== id2;
});
return this.update({ members });
},
if (!this.memberById(needle.id))
return this;
var members = [];
- for (var i2 = 0; i2 < this.members.length; i2++) {
- var member = this.members[i2];
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ var member = this.members[i3];
if (member.id !== needle.id) {
members.push(member);
} else if (keepDuplicates || !this.memberByIdAndRole(replacement.id, member.role)) {
return this.update({ members });
},
asJXON: function(changeset_id) {
- var r = {
+ var r2 = {
relation: {
"@id": this.osmId(),
"@version": this.version || 0,
}
};
}, this),
- tag: Object.keys(this.tags).map(function(k) {
- return { keyAttributes: { k, v: this.tags[k] } };
+ tag: Object.keys(this.tags).map(function(k2) {
+ return { keyAttributes: { k: k2, v: this.tags[k2] } };
}, this)
}
};
if (changeset_id) {
- r.relation["@changeset"] = changeset_id;
+ r2.relation["@changeset"] = changeset_id;
}
- return r;
+ return r2;
},
asGeoJSON: function(resolver) {
return resolver.transient(this, "GeoJSON", function() {
return this.tags.type === "multipolygon";
},
isComplete: function(resolver) {
- for (var i2 = 0; i2 < this.members.length; i2++) {
- if (!resolver.hasEntity(this.members[i2].id)) {
+ for (var i3 = 0; i3 < this.members.length; i3++) {
+ if (!resolver.hasEntity(this.members[i3].id)) {
return false;
}
}
return true;
},
hasFromViaTo: function() {
- return this.members.some(function(m) {
- return m.role === "from";
- }) && this.members.some(function(m) {
- return m.role === "via";
- }) && this.members.some(function(m) {
- return m.role === "to";
+ return this.members.some(function(m2) {
+ return m2.role === "from";
+ }) && this.members.some(function(m2) {
+ return m2.role === "via";
+ }) && this.members.some(function(m2) {
+ return m2.role === "to";
});
},
isRestriction: function() {
isValidRestriction: function() {
if (!this.isRestriction())
return false;
- var froms = this.members.filter(function(m) {
- return m.role === "from";
+ var froms = this.members.filter(function(m2) {
+ return m2.role === "from";
});
- var vias = this.members.filter(function(m) {
- return m.role === "via";
+ var vias = this.members.filter(function(m2) {
+ return m2.role === "via";
});
- var tos = this.members.filter(function(m) {
- return m.role === "to";
+ var tos = this.members.filter(function(m2) {
+ return m2.role === "to";
});
if (froms.length !== 1 && this.tags.restriction !== "no_entry")
return false;
- if (froms.some(function(m) {
- return m.type !== "way";
+ if (froms.some(function(m2) {
+ return m2.type !== "way";
}))
return false;
if (tos.length !== 1 && this.tags.restriction !== "no_exit")
return false;
- if (tos.some(function(m) {
- return m.type !== "way";
+ if (tos.some(function(m2) {
+ return m2.type !== "way";
}))
return false;
if (vias.length === 0)
return false;
- if (vias.length > 1 && vias.some(function(m) {
- return m.type !== "way";
+ if (vias.length > 1 && vias.some(function(m2) {
+ return m2.type !== "way";
}))
return false;
return true;
// rings not matched with the intended outer ring.
//
multipolygon: function(resolver) {
- var outers = this.members.filter(function(m) {
- return "outer" === (m.role || "outer");
+ var outers = this.members.filter(function(m2) {
+ return "outer" === (m2.role || "outer");
});
- var inners = this.members.filter(function(m) {
- return "inner" === m.role;
+ var inners = this.members.filter(function(m2) {
+ return "inner" === m2.role;
});
outers = osmJoinWays(outers, resolver);
inners = osmJoinWays(inners, resolver);
};
outers = outers.map(sequenceToLineString);
inners = inners.map(sequenceToLineString);
- var result = outers.map(function(o2) {
- return [area_default({ type: "Polygon", coordinates: [o2] }) > 2 * Math.PI ? o2.reverse() : o2];
+ var result = outers.map(function(o3) {
+ return [area_default({ type: "Polygon", coordinates: [o3] }) > 2 * Math.PI ? o3.reverse() : o3];
});
function findOuter(inner2) {
- var o2, outer;
- for (o2 = 0; o2 < outers.length; o2++) {
- outer = outers[o2];
+ var o3, outer;
+ for (o3 = 0; o3 < outers.length; o3++) {
+ outer = outers[o3];
if (geoPolygonContainsPolygon(outer, inner2)) {
- return o2;
+ return o3;
}
}
- for (o2 = 0; o2 < outers.length; o2++) {
- outer = outers[o2];
+ for (o3 = 0; o3 < outers.length; o3++) {
+ outer = outers[o3];
if (geoPolygonIntersectsPolygon(outer, inner2, false)) {
- return o2;
+ return o3;
}
}
}
- for (var i2 = 0; i2 < inners.length; i2++) {
- var inner = inners[i2];
+ for (var i3 = 0; i3 < inners.length; i3++) {
+ var inner = inners[i3];
if (area_default({ type: "Polygon", coordinates: [inner] }) < 2 * Math.PI) {
inner = inner.reverse();
}
- var o = findOuter(inners[i2]);
- if (o !== void 0) {
- result[o].push(inners[i2]);
+ var o2 = findOuter(inners[i3]);
+ if (o2 !== void 0) {
+ result[o2].push(inners[i3]);
} else {
- result.push([inners[i2]]);
+ result.push([inners[i3]]);
}
}
return result;
});
// modules/osm/qa_item.js
- var QAItem = class {
+ var QAItem = class _QAItem {
constructor(loc, service, itemType, id2, props) {
this.loc = loc;
this.service = service.title;
this.itemType = itemType;
- this.id = id2 ? id2 : `${QAItem.id()}`;
+ this.id = id2 ? id2 : `${_QAItem.id()}`;
this.update(props);
if (service && typeof service.getIcon === "function") {
this.icon = service.getIcon(itemType);
function splitArea(nodes, idxA, graph) {
var lengths = new Array(nodes.length);
var length;
- var i2;
+ var i3;
var best = 0;
var idxB;
function wrap2(index) {
return utilWrap(index, nodes.length);
}
length = 0;
- for (i2 = wrap2(idxA + 1); i2 !== idxA; i2 = wrap2(i2 + 1)) {
- length += dist(graph, nodes[i2], nodes[wrap2(i2 - 1)]);
- lengths[i2] = length;
+ for (i3 = wrap2(idxA + 1); i3 !== idxA; i3 = wrap2(i3 + 1)) {
+ length += dist(graph, nodes[i3], nodes[wrap2(i3 - 1)]);
+ lengths[i3] = length;
}
length = 0;
- for (i2 = wrap2(idxA - 1); i2 !== idxA; i2 = wrap2(i2 - 1)) {
- length += dist(graph, nodes[i2], nodes[wrap2(i2 + 1)]);
- if (length < lengths[i2]) {
- lengths[i2] = length;
+ for (i3 = wrap2(idxA - 1); i3 !== idxA; i3 = wrap2(i3 - 1)) {
+ length += dist(graph, nodes[i3], nodes[wrap2(i3 + 1)]);
+ if (length < lengths[i3]) {
+ lengths[i3] = length;
}
}
- for (i2 = 0; i2 < nodes.length; i2++) {
- var cost = lengths[i2] / dist(graph, nodes[idxA], nodes[i2]);
+ for (i3 = 0; i3 < nodes.length; i3++) {
+ var cost = lengths[i3] / dist(graph, nodes[idxA], nodes[i3]);
if (cost > best) {
- idxB = i2;
+ idxB = i3;
best = cost;
}
}
}
function totalLengthBetweenNodes(graph, nodes) {
var totalLength = 0;
- for (var i2 = 0; i2 < nodes.length - 1; i2++) {
- totalLength += dist(graph, nodes[i2], nodes[i2 + 1]);
+ for (var i3 = 0; i3 < nodes.length - 1; i3++) {
+ totalLength += dist(graph, nodes[i3], nodes[i3 + 1]);
}
return totalLength;
}
graph.parentRelations(wayA).forEach(function(relation) {
var member;
if (relation.hasFromViaTo()) {
- var f2 = relation.memberByRole("from");
- var v = relation.membersByRole("via");
- var t = relation.memberByRole("to");
- var i2;
- if (f2.id === wayA.id || t.id === wayA.id) {
+ var f3 = relation.memberByRole("from");
+ var v2 = relation.membersByRole("via");
+ var t2 = relation.memberByRole("to");
+ var i3;
+ if (f3.id === wayA.id || t2.id === wayA.id) {
var keepB = false;
- if (v.length === 1 && v[0].type === "node") {
- keepB = wayB.contains(v[0].id);
+ if (v2.length === 1 && v2[0].type === "node") {
+ keepB = wayB.contains(v2[0].id);
} else {
- for (i2 = 0; i2 < v.length; i2++) {
- if (v[i2].type === "way") {
- var wayVia = graph.hasEntity(v[i2].id);
+ for (i3 = 0; i3 < v2.length; i3++) {
+ if (v2[i3].type === "way") {
+ var wayVia = graph.hasEntity(v2[i3].id);
if (wayVia && utilArrayIntersection(wayB.nodes, wayVia.nodes).length) {
keepB = true;
break;
graph = graph.replace(relation);
}
} else {
- for (i2 = 0; i2 < v.length; i2++) {
- if (v[i2].type === "way" && v[i2].id === wayA.id) {
+ for (i3 = 0; i3 < v2.length; i3++) {
+ if (v2[i3].type === "way" && v2[i3].id === wayA.id) {
member = {
id: wayB.id,
type: "way",
role: "via"
};
- graph = actionAddMember(relation.id, member, v[i2].index + 1)(graph);
+ graph = actionAddMember(relation.id, member, v2[i3].index + 1)(graph);
break;
}
}
var action = function(graph) {
_createdWayIDs = [];
var newWayIndex = 0;
- for (var i2 = 0; i2 < nodeIds.length; i2++) {
- var nodeId = nodeIds[i2];
+ for (var i3 = 0; i3 < nodeIds.length; i3++) {
+ var nodeId = nodeIds[i3];
var candidates = action.waysForNode(nodeId, graph);
- for (var j2 = 0; j2 < candidates.length; j2++) {
- graph = split(graph, nodeId, candidates[j2], newWayIds && newWayIds[newWayIndex]);
+ for (var j3 = 0; j3 < candidates.length; j3++) {
+ graph = split(graph, nodeId, candidates[j3], newWayIds && newWayIds[newWayIndex]);
newWayIndex += 1;
}
}
return false;
if (parent.isClosed())
return true;
- for (var i2 = 1; i2 < parent.nodes.length - 1; i2++) {
- if (parent.nodes[i2] === nodeId)
+ for (var i3 = 1; i3 < parent.nodes.length - 1; i3++) {
+ if (parent.nodes[i3] === nodeId)
return true;
}
return false;
})));
};
action.disabled = function(graph) {
- for (var i2 = 0; i2 < nodeIds.length; i2++) {
- var nodeId = nodeIds[i2];
+ for (var i3 = 0; i3 < nodeIds.length; i3++) {
+ var nodeId = nodeIds[i3];
var candidates = action.waysForNode(nodeId, graph);
if (candidates.length === 0 || _wayIDs && _wayIDs.length !== candidates.length) {
return "not_eligible";
if (!entity.nodes)
return [];
var nodes = [];
- for (var i2 = 0; i2 < entity.nodes.length; i2++) {
- nodes[i2] = this.entity(entity.nodes[i2]);
+ for (var i3 = 0; i3 < entity.nodes.length; i3++) {
+ nodes[i3] = this.entity(entity.nodes[i3]);
}
if (debug)
Object.freeze(nodes);
// graph always contained the newly downloaded data.
rebase: function(entities, stack, force) {
var base = this.base();
- var i2, j2, k, id2;
- for (i2 = 0; i2 < entities.length; i2++) {
- var entity = entities[i2];
+ var i3, j3, k2, id2;
+ for (i3 = 0; i3 < entities.length; i3++) {
+ var entity = entities[i3];
if (!entity.visible || !force && base.entities[entity.id])
continue;
base.entities[entity.id] = entity;
this._updateCalculated(void 0, entity, base.parentWays, base.parentRels);
if (entity.type === "way") {
- for (j2 = 0; j2 < entity.nodes.length; j2++) {
- id2 = entity.nodes[j2];
- for (k = 1; k < stack.length; k++) {
- var ents = stack[k].entities;
+ for (j3 = 0; j3 < entity.nodes.length; j3++) {
+ id2 = entity.nodes[j3];
+ for (k2 = 1; k2 < stack.length; k2++) {
+ var ents = stack[k2].entities;
if (ents.hasOwnProperty(id2) && ents[id2] === void 0) {
delete ents[id2];
}
}
}
}
- for (i2 = 0; i2 < stack.length; i2++) {
- stack[i2]._updateRebased();
+ for (i3 = 0; i3 < stack.length; i3++) {
+ stack[i3]._updateRebased();
}
},
_updateRebased: function() {
parentWays = parentWays || this._parentWays;
parentRels = parentRels || this._parentRels;
var type2 = entity && entity.type || oldentity && oldentity.type;
- var removed, added, i2;
+ var removed, added, i3;
if (type2 === "way") {
if (oldentity && entity) {
removed = utilArrayDifference(oldentity.nodes, entity.nodes);
removed = [];
added = entity.nodes;
}
- for (i2 = 0; i2 < removed.length; i2++) {
- parentWays[removed[i2]] = new Set(parentWays[removed[i2]]);
- parentWays[removed[i2]].delete(oldentity.id);
+ for (i3 = 0; i3 < removed.length; i3++) {
+ parentWays[removed[i3]] = new Set(parentWays[removed[i3]]);
+ parentWays[removed[i3]].delete(oldentity.id);
}
- for (i2 = 0; i2 < added.length; i2++) {
- parentWays[added[i2]] = new Set(parentWays[added[i2]]);
- parentWays[added[i2]].add(entity.id);
+ for (i3 = 0; i3 < added.length; i3++) {
+ parentWays[added[i3]] = new Set(parentWays[added[i3]]);
+ parentWays[added[i3]].add(entity.id);
}
} else if (type2 === "relation") {
- var oldentityMemberIDs = oldentity ? oldentity.members.map(function(m) {
- return m.id;
+ var oldentityMemberIDs = oldentity ? oldentity.members.map(function(m2) {
+ return m2.id;
}) : [];
- var entityMemberIDs = entity ? entity.members.map(function(m) {
- return m.id;
+ var entityMemberIDs = entity ? entity.members.map(function(m2) {
+ return m2.id;
}) : [];
if (oldentity && entity) {
removed = utilArrayDifference(oldentityMemberIDs, entityMemberIDs);
removed = [];
added = entityMemberIDs;
}
- for (i2 = 0; i2 < removed.length; i2++) {
- parentRels[removed[i2]] = new Set(parentRels[removed[i2]]);
- parentRels[removed[i2]].delete(oldentity.id);
+ for (i3 = 0; i3 < removed.length; i3++) {
+ parentRels[removed[i3]] = new Set(parentRels[removed[i3]]);
+ parentRels[removed[i3]].delete(oldentity.id);
}
- for (i2 = 0; i2 < added.length; i2++) {
- parentRels[added[i2]] = new Set(parentRels[added[i2]]);
- parentRels[added[i2]].add(entity.id);
+ for (i3 = 0; i3 < added.length; i3++) {
+ parentRels[added[i3]] = new Set(parentRels[added[i3]]);
+ parentRels[added[i3]].add(entity.id);
}
}
},
},
update: function() {
var graph = this.frozen ? coreGraph(this, true) : this;
- for (var i2 = 0; i2 < arguments.length; i2++) {
- arguments[i2].call(graph, graph);
+ for (var i3 = 0; i3 < arguments.length; i3++) {
+ arguments[i3].call(graph, graph);
}
if (this.frozen)
graph.frozen = true;
load: function(entities) {
var base = this.base();
this.entities = Object.create(base.entities);
- for (var i2 in entities) {
- this.entities[i2] = entities[i2];
- this._updateCalculated(base.entities[i2], this.entities[i2]);
+ for (var i3 in entities) {
+ this.entities[i3] = entities[i3];
+ this._updateCalculated(base.entities[i3], this.entities[i3]);
}
return this;
}
function osmIntersection(graph, startVertexId, maxDistance) {
maxDistance = maxDistance || 30;
var vgraph = coreGraph();
- var i2, j2, k;
+ var i3, j3, k2;
function memberOfRestriction(entity) {
- return graph.parentRelations(entity).some(function(r) {
- return r.isRestriction();
+ return graph.parentRelations(entity).some(function(r2) {
+ return r2.isRestriction();
});
}
function isRoad(way2) {
vertex = checkVertices.pop();
checkWays = graph.parentWays(vertex);
var hasWays = false;
- for (i2 = 0; i2 < checkWays.length; i2++) {
- way = checkWays[i2];
+ for (i3 = 0; i3 < checkWays.length; i3++) {
+ way = checkWays[i3];
if (!isRoad(way) && !memberOfRestriction(way))
continue;
ways.push(way);
hasWays = true;
nodes = utilArrayUniq(graph.childNodes(way));
- for (j2 = 0; j2 < nodes.length; j2++) {
- node = nodes[j2];
+ for (j3 = 0; j3 < nodes.length; j3++) {
+ node = nodes[j3];
if (node === vertex)
continue;
if (vertices.indexOf(node) !== -1)
continue;
var hasParents = false;
parents = graph.parentWays(node);
- for (k = 0; k < parents.length; k++) {
- parent = parents[k];
+ for (k2 = 0; k2 < parents.length; k2++) {
+ parent = parents[k2];
if (parent === way)
continue;
if (ways.indexOf(parent) !== -1)
}
});
});
- ways.forEach(function(w) {
- var way2 = vgraph.entity(w.id);
+ ways.forEach(function(w2) {
+ var way2 = vgraph.entity(w2.id);
if (way2.tags.oneway === "-1") {
var action = actionReverse(way2.id, { reverseOneway: true });
actions.push(action);
}
});
var origCount = osmEntity.id.next.way;
- vertices.forEach(function(v) {
- var splitAll = actionSplit([v.id]).keepHistoryOn("first");
+ vertices.forEach(function(v2) {
+ var splitAll = actionSplit([v2.id]).keepHistoryOn("first");
if (!splitAll.disabled(vgraph)) {
splitAll.ways(vgraph).forEach(function(way2) {
- var splitOne = actionSplit([v.id]).limitWays([way2.id]).keepHistoryOn("first");
+ var splitOne = actionSplit([v2.id]).limitWays([way2.id]).keepHistoryOn("first");
actions.push(splitOne);
vgraph = splitOne(vgraph);
});
}
});
osmEntity.id.next.way = origCount;
- vertexIds = vertices.map(function(v) {
- return v.id;
+ vertexIds = vertices.map(function(v2) {
+ return v2.id;
});
vertices = [];
ways = [];
});
vertices = utilArrayUniq(vertices);
ways = utilArrayUniq(ways);
- vertexIds = vertices.map(function(v) {
- return v.id;
+ vertexIds = vertices.map(function(v2) {
+ return v2.id;
});
- wayIds = ways.map(function(w) {
- return w.id;
+ wayIds = ways.map(function(w2) {
+ return w2.id;
});
function withMetadata(way2, vertexIds2) {
var __oneWay = way2.isOneWay();
do {
keepGoing = false;
checkVertices = vertexIds.slice();
- for (i2 = 0; i2 < checkVertices.length; i2++) {
- var vertexId = checkVertices[i2];
+ for (i3 = 0; i3 < checkVertices.length; i3++) {
+ var vertexId = checkVertices[i3];
vertex = vgraph.hasEntity(vertexId);
if (!vertex) {
if (vertexIds.indexOf(vertexId) !== -1) {
}
}
if (parents.length === 2) {
- var a = parents[0];
- var b = parents[1];
- var aIsLeaf = a && !a.__via;
- var bIsLeaf = b && !b.__via;
+ var a2 = parents[0];
+ var b2 = parents[1];
+ var aIsLeaf = a2 && !a2.__via;
+ var bIsLeaf = b2 && !b2.__via;
var leaf, survivor;
if (aIsLeaf && !bIsLeaf) {
- leaf = a;
- survivor = b;
+ leaf = a2;
+ survivor = b2;
} else if (!aIsLeaf && bIsLeaf) {
- leaf = b;
- survivor = a;
+ leaf = b2;
+ survivor = a2;
}
if (leaf && survivor) {
survivor = withMetadata(survivor, vertexIds);
if (!maxViaWay)
maxViaWay = 0;
var vgraph2 = intersection.graph;
- var keyVertexIds = intersection.vertices.map(function(v) {
- return v.id;
+ var keyVertexIds = intersection.vertices.map(function(v2) {
+ return v2.id;
});
var start2 = vgraph2.entity(fromWayId);
if (!start2 || !(start2.__from || start2.__via))
}
}
function stepNode(entity, currPath, currRestrictions) {
- var i3, j3;
+ var i4, j4;
var parents2 = vgraph2.parentWays(entity);
var nextWays = [];
- for (i3 = 0; i3 < parents2.length; i3++) {
- var way2 = parents2[i3];
+ for (i4 = 0; i4 < parents2.length; i4++) {
+ var way2 = parents2[i4];
if (way2.__oneWay && way2.nodes[0] !== entity.id)
continue;
if (currPath.indexOf(way2.id) !== -1 && currPath.length >= 3)
continue;
var restrict = null;
- for (j3 = 0; j3 < currRestrictions.length; j3++) {
- var restriction = currRestrictions[j3];
- var f2 = restriction.memberByRole("from");
- var v = restriction.membersByRole("via");
- var t = restriction.memberByRole("to");
+ for (j4 = 0; j4 < currRestrictions.length; j4++) {
+ var restriction = currRestrictions[j4];
+ var f3 = restriction.memberByRole("from");
+ var v2 = restriction.membersByRole("via");
+ var t2 = restriction.memberByRole("to");
var isNo = /^no_/.test(restriction.tags.restriction);
var isOnly = /^only_/.test(restriction.tags.restriction);
if (!(isNo || isOnly)) {
continue;
}
- var matchesFrom = f2.id === fromWayId;
+ var matchesFrom = f3.id === fromWayId;
var matchesViaTo = false;
var isAlongOnlyPath = false;
- if (t.id === way2.id) {
- if (v.length === 1 && v[0].type === "node") {
- matchesViaTo = v[0].id === entity.id && (matchesFrom && currPath.length === 2 || !matchesFrom && currPath.length > 2);
+ if (t2.id === way2.id) {
+ if (v2.length === 1 && v2[0].type === "node") {
+ matchesViaTo = v2[0].id === entity.id && (matchesFrom && currPath.length === 2 || !matchesFrom && currPath.length > 2);
} else {
var pathVias = [];
- for (k = 2; k < currPath.length; k += 2) {
- pathVias.push(currPath[k]);
+ for (k2 = 2; k2 < currPath.length; k2 += 2) {
+ pathVias.push(currPath[k2]);
}
var restrictionVias = [];
- for (k = 0; k < v.length; k++) {
- if (v[k].type === "way") {
- restrictionVias.push(v[k].id);
+ for (k2 = 0; k2 < v2.length; k2++) {
+ if (v2[k2].type === "way") {
+ restrictionVias.push(v2[k2].id);
}
}
var diff = utilArrayDifference(pathVias, restrictionVias);
matchesViaTo = !diff.length;
}
} else if (isOnly) {
- for (k = 0; k < v.length; k++) {
- if (v[k].type === "way" && v[k].id === way2.id) {
+ for (k2 = 0; k2 < v2.length; k2++) {
+ if (v2[k2].type === "way" && v2[k2].id === way2.id) {
isAlongOnlyPath = true;
break;
}
}
if (matchesViaTo) {
if (isOnly) {
- restrict = { id: restriction.id, direct: matchesFrom, from: f2.id, only: true, end: true };
+ restrict = { id: restriction.id, direct: matchesFrom, from: f3.id, only: true, end: true };
} else {
- restrict = { id: restriction.id, direct: matchesFrom, from: f2.id, no: true, end: true };
+ restrict = { id: restriction.id, direct: matchesFrom, from: f3.id, no: true, end: true };
}
} else {
if (isAlongOnlyPath) {
- restrict = { id: restriction.id, direct: false, from: f2.id, only: true, end: false };
+ restrict = { id: restriction.id, direct: false, from: f3.id, only: true, end: false };
} else if (isOnly) {
- restrict = { id: restriction.id, direct: false, from: f2.id, no: true, end: true };
+ restrict = { id: restriction.id, direct: false, from: f3.id, no: true, end: true };
}
}
if (restrict && restrict.direct)
});
}
function stepWay(entity, currPath, currRestrictions, matchedRestriction) {
- var i3;
+ var i4;
if (currPath.length >= 3) {
var turnPath = currPath.slice();
if (matchedRestriction && matchedRestriction.direct === false) {
- for (i3 = 0; i3 < turnPath.length; i3++) {
- if (turnPath[i3] === matchedRestriction.from) {
- turnPath = turnPath.slice(i3);
+ for (i4 = 0; i4 < turnPath.length; i4++) {
+ if (turnPath[i4] === matchedRestriction.from) {
+ turnPath = turnPath.slice(i4);
break;
}
}
if (matchedRestriction && matchedRestriction.end)
return;
var n1 = vgraph2.entity(entity.first());
- var n2 = vgraph2.entity(entity.last());
- var dist = geoSphericalDistance(n1.loc, n2.loc);
+ var n22 = vgraph2.entity(entity.last());
+ var dist = geoSphericalDistance(n1.loc, n22.loc);
var nextNodes = [];
if (currPath.length > 1) {
if (dist > maxDistance)
currPath.indexOf(n1.id) === -1) {
nextNodes.push(n1);
}
- if (keyVertexIds.indexOf(n2.id) !== -1 && // key vertex..
- currPath.indexOf(n2.id) === -1) {
- nextNodes.push(n2);
+ if (keyVertexIds.indexOf(n22.id) !== -1 && // key vertex..
+ currPath.indexOf(n22.id) === -1) {
+ nextNodes.push(n22);
}
nextNodes.forEach(function(nextNode) {
- var fromRestrictions = vgraph2.parentRelations(entity).filter(function(r) {
- if (!r.isRestriction())
+ var fromRestrictions = vgraph2.parentRelations(entity).filter(function(r2) {
+ if (!r2.isRestriction())
return false;
- var f2 = r.memberByRole("from");
- if (!f2 || f2.id !== entity.id)
+ var f3 = r2.memberByRole("from");
+ if (!f3 || f3.id !== entity.id)
return false;
- var isOnly = /^only_/.test(r.tags.restriction);
+ var isOnly = /^only_/.test(r2.tags.restriction);
if (!isOnly)
return true;
var isOnlyVia = false;
- var v = r.membersByRole("via");
- if (v.length === 1 && v[0].type === "node") {
- isOnlyVia = v[0].id === nextNode.id;
+ var v2 = r2.membersByRole("via");
+ if (v2.length === 1 && v2[0].type === "node") {
+ isOnlyVia = v2[0].id === nextNode.id;
} else {
- for (var i4 = 0; i4 < v.length; i4++) {
- if (v[i4].type !== "way")
+ for (var i5 = 0; i5 < v2.length; i5++) {
+ if (v2[i5].type !== "way")
continue;
- var viaWay = vgraph2.entity(v[i4].id);
+ var viaWay = vgraph2.entity(v2[i5].id);
if (viaWay.first() === nextNode.id || viaWay.last() === nextNode.id) {
isOnlyVia = true;
break;
}
var action = function(graph) {
var entities = groupEntities(graph);
- var polygons = entities.multipolygon.reduce(function(polygons2, m) {
- return polygons2.concat(osmJoinWays(m.members, graph));
- }, []).concat(entities.closedWay.map(function(d) {
- var member = [{ id: d.id }];
- member.nodes = graph.childNodes(d);
+ var polygons = entities.multipolygon.reduce(function(polygons2, m2) {
+ return polygons2.concat(osmJoinWays(m2.members, graph));
+ }, []).concat(entities.closedWay.map(function(d2) {
+ var member = [{ id: d2.id }];
+ member.nodes = graph.childNodes(d2);
return member;
}));
- var contained = polygons.map(function(w, i2) {
- return polygons.map(function(d, n2) {
- if (i2 === n2)
+ var contained = polygons.map(function(w2, i3) {
+ return polygons.map(function(d2, n3) {
+ if (i3 === n3)
return null;
return geoPolygonContainsPolygon(
- d.nodes.map(function(n3) {
- return n3.loc;
+ d2.nodes.map(function(n4) {
+ return n4.loc;
}),
- w.nodes.map(function(n3) {
- return n3.loc;
+ w2.nodes.map(function(n4) {
+ return n4.loc;
})
);
});
polygons = polygons.filter(isContained);
contained = contained.filter(isContained).map(filterContained);
}
- function isContained(d, i2) {
- return contained[i2].some(function(val) {
+ function isContained(d2, i3) {
+ return contained[i3].some(function(val) {
return val;
});
}
- function filterContained(d) {
- return d.filter(isContained);
+ function filterContained(d2) {
+ return d2.filter(isContained);
}
function extractUncontained(polygons2) {
- polygons2.forEach(function(d, i2) {
- if (!isContained(d, i2)) {
- d.forEach(function(member) {
+ polygons2.forEach(function(d2, i3) {
+ if (!isContained(d2, i3)) {
+ d2.forEach(function(member) {
members.push({
type: "way",
id: member.id,
} else {
relation = osmRelation({ id: newRelationId, tags: { type: "multipolygon" } });
}
- entities.multipolygon.forEach(function(m) {
- if (m.id !== relation.id) {
- relation = relation.mergeTags(m.tags);
- graph = graph.remove(m);
+ entities.multipolygon.forEach(function(m2) {
+ if (m2.id !== relation.id) {
+ relation = relation.mergeTags(m2.tags);
+ graph = graph.remove(m2);
}
});
entities.closedWay.forEach(function(way) {
- function isThisOuter(m) {
- return m.id === way.id && m.role !== "inner";
+ function isThisOuter(m2) {
+ return m2.id === way.id && m2.role !== "inner";
}
if (members.some(isThisOuter)) {
relation = relation.mergeTags(way.tags);
if (entities.other.length > 0 || entities.closedWay.length + entities.multipolygon.length < 2) {
return "not_eligible";
}
- if (!entities.multipolygon.every(function(r) {
- return r.isComplete(graph);
+ if (!entities.multipolygon.every(function(r2) {
+ return r2.isComplete(graph);
})) {
return "incomplete_relation";
}
if (!entities.multipolygon.length) {
var sharedMultipolygons = [];
- entities.closedWay.forEach(function(way, i2) {
- if (i2 === 0) {
+ entities.closedWay.forEach(function(way, i3) {
+ if (i3 === 0) {
sharedMultipolygons = graph.parentMultipolygons(way);
} else {
sharedMultipolygons = utilArrayIntersection(sharedMultipolygons, graph.parentMultipolygons(way));
// node_modules/node-diff3/index.mjs
function LCS(buffer1, buffer2) {
let equivalenceClasses = {};
- for (let j2 = 0; j2 < buffer2.length; j2++) {
- const item = buffer2[j2];
+ for (let j3 = 0; j3 < buffer2.length; j3++) {
+ const item = buffer2[j3];
if (equivalenceClasses[item]) {
- equivalenceClasses[item].push(j2);
+ equivalenceClasses[item].push(j3);
} else {
- equivalenceClasses[item] = [j2];
+ equivalenceClasses[item] = [j3];
}
}
const NULLRESULT = { buffer1index: -1, buffer2index: -1, chain: null };
let candidates = [NULLRESULT];
- for (let i2 = 0; i2 < buffer1.length; i2++) {
- const item = buffer1[i2];
+ for (let i3 = 0; i3 < buffer1.length; i3++) {
+ const item = buffer1[i3];
const buffer2indices = equivalenceClasses[item] || [];
- let r = 0;
- let c = candidates[0];
+ let r2 = 0;
+ let c2 = candidates[0];
for (let jx = 0; jx < buffer2indices.length; jx++) {
- const j2 = buffer2indices[jx];
- let s;
- for (s = r; s < candidates.length; s++) {
- if (candidates[s].buffer2index < j2 && (s === candidates.length - 1 || candidates[s + 1].buffer2index > j2)) {
+ const j3 = buffer2indices[jx];
+ let s2;
+ for (s2 = r2; s2 < candidates.length; s2++) {
+ if (candidates[s2].buffer2index < j3 && (s2 === candidates.length - 1 || candidates[s2 + 1].buffer2index > j3)) {
break;
}
}
- if (s < candidates.length) {
- const newCandidate = { buffer1index: i2, buffer2index: j2, chain: candidates[s] };
- if (r === candidates.length) {
- candidates.push(c);
+ if (s2 < candidates.length) {
+ const newCandidate = { buffer1index: i3, buffer2index: j3, chain: candidates[s2] };
+ if (r2 === candidates.length) {
+ candidates.push(c2);
} else {
- candidates[r] = c;
+ candidates[r2] = c2;
}
- r = s + 1;
- c = newCandidate;
- if (r === candidates.length) {
+ r2 = s2 + 1;
+ c2 = newCandidate;
+ if (r2 === candidates.length) {
break;
}
}
}
- candidates[r] = c;
+ candidates[r2] = c2;
}
return candidates[candidates.length - 1];
}
result.reverse();
return result;
}
- function diff3MergeRegions(a, o, b) {
+ function diff3MergeRegions(a2, o2, b2) {
let hunks = [];
- function addHunk(h, ab) {
+ function addHunk(h2, ab) {
hunks.push({
ab,
- oStart: h.buffer1[0],
- oLength: h.buffer1[1],
+ oStart: h2.buffer1[0],
+ oLength: h2.buffer1[1],
// length of o to remove
- abStart: h.buffer2[0],
- abLength: h.buffer2[1]
+ abStart: h2.buffer2[0],
+ abLength: h2.buffer2[1]
// length of a/b to insert
// abContent: (ab === 'a' ? a : b).slice(h.buffer2[0], h.buffer2[0] + h.buffer2[1])
});
}
- diffIndices(o, a).forEach((item) => addHunk(item, "a"));
- diffIndices(o, b).forEach((item) => addHunk(item, "b"));
- hunks.sort((x, y) => x.oStart - y.oStart);
+ diffIndices(o2, a2).forEach((item) => addHunk(item, "a"));
+ diffIndices(o2, b2).forEach((item) => addHunk(item, "b"));
+ hunks.sort((x2, y2) => x2.oStart - y2.oStart);
let results = [];
let currOffset = 0;
function advanceTo(endOffset) {
buffer: "o",
bufferStart: currOffset,
bufferLength: endOffset - currOffset,
- bufferContent: o.slice(currOffset, endOffset)
+ bufferContent: o2.slice(currOffset, endOffset)
});
currOffset = endOffset;
}
}
if (regionHunks.length === 1) {
if (hunk.abLength > 0) {
- const buffer = hunk.ab === "a" ? a : b;
+ const buffer = hunk.ab === "a" ? a2 : b2;
results.push({
stable: true,
buffer: hunk.ab,
}
} else {
let bounds = {
- a: [a.length, -1, o.length, -1],
- b: [b.length, -1, o.length, -1]
+ a: [a2.length, -1, o2.length, -1],
+ b: [b2.length, -1, o2.length, -1]
};
while (regionHunks.length) {
hunk = regionHunks.shift();
const oEnd = oStart + hunk.oLength;
const abStart = hunk.abStart;
const abEnd = abStart + hunk.abLength;
- let b2 = bounds[hunk.ab];
- b2[0] = Math.min(abStart, b2[0]);
- b2[1] = Math.max(abEnd, b2[1]);
- b2[2] = Math.min(oStart, b2[2]);
- b2[3] = Math.max(oEnd, b2[3]);
+ let b3 = bounds[hunk.ab];
+ b3[0] = Math.min(abStart, b3[0]);
+ b3[1] = Math.max(abEnd, b3[1]);
+ b3[2] = Math.min(oStart, b3[2]);
+ b3[3] = Math.max(oEnd, b3[3]);
}
const aStart = bounds.a[0] + (regionStart - bounds.a[2]);
const aEnd = bounds.a[1] + (regionEnd - bounds.a[3]);
stable: false,
aStart,
aLength: aEnd - aStart,
- aContent: a.slice(aStart, aEnd),
+ aContent: a2.slice(aStart, aEnd),
oStart: regionStart,
oLength: regionEnd - regionStart,
- oContent: o.slice(regionStart, regionEnd),
+ oContent: o2.slice(regionStart, regionEnd),
bStart,
bLength: bEnd - bStart,
- bContent: b.slice(bStart, bEnd)
+ bContent: b2.slice(bStart, bEnd)
};
results.push(result);
}
currOffset = regionEnd;
}
- advanceTo(o.length);
+ advanceTo(o2.length);
return results;
}
- function diff3Merge(a, o, b, options2) {
- let defaults2 = {
+ function diff3Merge(a2, o2, b2, options2) {
+ let defaults = {
excludeFalseConflicts: true,
stringSeparator: /\s+/
};
- options2 = Object.assign(defaults2, options2);
- if (typeof a === "string")
- a = a.split(options2.stringSeparator);
- if (typeof o === "string")
- o = o.split(options2.stringSeparator);
- if (typeof b === "string")
- b = b.split(options2.stringSeparator);
+ options2 = Object.assign(defaults, options2);
+ if (typeof a2 === "string")
+ a2 = a2.split(options2.stringSeparator);
+ if (typeof o2 === "string")
+ o2 = o2.split(options2.stringSeparator);
+ if (typeof b2 === "string")
+ b2 = b2.split(options2.stringSeparator);
let results = [];
- const regions = diff3MergeRegions(a, o, b);
+ const regions = diff3MergeRegions(a2, o2, b2);
let okBuffer = [];
function flushOk() {
if (okBuffer.length) {
}
okBuffer = [];
}
- function isFalseConflict(a2, b2) {
- if (a2.length !== b2.length)
+ function isFalseConflict(a3, b3) {
+ if (a3.length !== b3.length)
return false;
- for (let i2 = 0; i2 < a2.length; i2++) {
- if (a2[i2] !== b2[i2])
+ for (let i3 = 0; i3 < a3.length; i3++) {
+ if (a3[i3] !== b3[i3])
return false;
}
return true;
}
// modules/actions/merge_remote_changes.js
- var import_lodash = __toESM(require_lodash());
+ var import_lodash2 = __toESM(require_lodash());
function actionMergeRemoteChanges(id2, localGraph, remoteGraph, discardTags, formatUser) {
discardTags = discardTags || {};
var _option = "safe";
var _conflicts = [];
- function user(d) {
- return typeof formatUser === "function" ? formatUser(d) : (0, import_lodash.escape)(d);
+ function user(d2) {
+ return typeof formatUser === "function" ? formatUser(d2) : (0, import_lodash2.escape)(d2);
}
function mergeLocation(remote, target) {
- function pointEqual(a, b) {
+ function pointEqual(a2, b2) {
var epsilon3 = 1e-6;
- return Math.abs(a[0] - b[0]) < epsilon3 && Math.abs(a[1] - b[1]) < epsilon3;
+ return Math.abs(a2[0] - b2[0]) < epsilon3 && Math.abs(a2[1] - b2[1]) < epsilon3;
}
if (_option === "force_local" || pointEqual(target.loc, remote.loc)) {
return target;
return target.update({ nodes: remote.nodes });
}
var ccount = _conflicts.length;
- var o = base.nodes || [];
- var a = target.nodes || [];
- var b = remote.nodes || [];
+ var o2 = base.nodes || [];
+ var a2 = target.nodes || [];
+ var b2 = remote.nodes || [];
var nodes = [];
- var hunks = diff3Merge(a, o, b, { excludeFalseConflicts: true });
- for (var i2 = 0; i2 < hunks.length; i2++) {
- var hunk = hunks[i2];
+ var hunks = diff3Merge(a2, o2, b2, { excludeFalseConflicts: true });
+ for (var i3 = 0; i3 < hunks.length; i3++) {
+ var hunk = hunks[i3];
if (hunk.ok) {
nodes.push.apply(nodes, hunk.ok);
} else {
- var c = hunk.conflict;
- if ((0, import_fast_deep_equal.default)(c.o, c.a)) {
- nodes.push.apply(nodes, c.b);
- } else if ((0, import_fast_deep_equal.default)(c.o, c.b)) {
- nodes.push.apply(nodes, c.a);
+ var c2 = hunk.conflict;
+ if ((0, import_fast_deep_equal.default)(c2.o, c2.a)) {
+ nodes.push.apply(nodes, c2.b);
+ } else if ((0, import_fast_deep_equal.default)(c2.o, c2.b)) {
+ nodes.push.apply(nodes, c2.a);
} else {
_conflicts.push(_t.html("merge_remote_changes.conflict.nodelist", { user: { html: user(remote.user) } }));
break;
return node2.hasInterestingTags() || hasInterestingParent || graph.parentRelations(node2).length > 0;
}
var ccount = _conflicts.length;
- for (var i2 = 0; i2 < children2.length; i2++) {
- var id3 = children2[i2];
+ for (var i3 = 0; i3 < children2.length; i3++) {
+ var id3 = children2[i3];
var node = graph.hasEntity(id3);
if (targetWay.nodes.indexOf(id3) === -1) {
if (node && !isUsed(node, targetWay)) {
return targetWay;
}
function updateChildren(updates, graph) {
- for (var i2 = 0; i2 < updates.replacements.length; i2++) {
- graph = graph.replace(updates.replacements[i2]);
+ for (var i3 = 0; i3 < updates.replacements.length; i3++) {
+ graph = graph.replace(updates.replacements[i3]);
}
if (updates.removeIds.length) {
graph = actionDeleteMultiple(updates.removeIds)(graph);
return target.update({ tags: remote.tags });
}
var ccount = _conflicts.length;
- var o = base.tags || {};
- var a = target.tags || {};
- var b = remote.tags || {};
- var keys = utilArrayUnion(utilArrayUnion(Object.keys(o), Object.keys(a)), Object.keys(b)).filter(function(k2) {
- return !discardTags[k2];
+ var o2 = base.tags || {};
+ var a2 = target.tags || {};
+ var b2 = remote.tags || {};
+ var keys2 = utilArrayUnion(utilArrayUnion(Object.keys(o2), Object.keys(a2)), Object.keys(b2)).filter(function(k3) {
+ return !discardTags[k3];
});
- var tags = Object.assign({}, a);
+ var tags = Object.assign({}, a2);
var changed = false;
- for (var i2 = 0; i2 < keys.length; i2++) {
- var k = keys[i2];
- if (o[k] !== b[k] && a[k] !== b[k]) {
- if (o[k] !== a[k]) {
+ for (var i3 = 0; i3 < keys2.length; i3++) {
+ var k2 = keys2[i3];
+ if (o2[k2] !== b2[k2] && a2[k2] !== b2[k2]) {
+ if (o2[k2] !== a2[k2]) {
_conflicts.push(_t.html(
"merge_remote_changes.conflict.tags",
- { tag: k, local: a[k], remote: b[k], user: { html: user(remote.user) } }
+ { tag: k2, local: a2[k2], remote: b2[k2], user: { html: user(remote.user) } }
));
} else {
- if (b.hasOwnProperty(k)) {
- tags[k] = b[k];
+ if (b2.hasOwnProperty(k2)) {
+ tags[k2] = b2[k2];
} else {
- delete tags[k];
+ delete tags[k2];
}
changed = true;
}
return parentsMoving;
}
function cacheEntities(ids) {
- for (var i2 = 0; i2 < ids.length; i2++) {
- var id2 = ids[i2];
+ for (var i3 = 0; i3 < ids.length; i3++) {
+ var id2 = ids[i3];
if (cache.moving[id2])
continue;
cache.moving[id2] = true;
function isEndpoint(way2, id3) {
return !way2.isClosed() && !!way2.affix(id3);
}
- for (var i2 = 0; i2 < ids.length; i2++) {
- var id2 = ids[i2];
+ for (var i3 = 0; i3 < ids.length; i3++) {
+ var id2 = ids[i3];
var childNodes = graph.childNodes(graph.entity(id2));
- for (var j2 = 0; j2 < childNodes.length; j2++) {
- var node = childNodes[j2];
+ for (var j3 = 0; j3 < childNodes.length; j3++) {
+ var node = childNodes[j3];
var parents = graph.parentWays(node);
if (parents.length !== 2)
continue;
var moved = graph.entity(id2);
var unmoved = null;
- for (var k = 0; k < parents.length; k++) {
- var way = parents[k];
+ for (var k2 = 0; k2 < parents.length; k2++) {
+ var way = parents[k2];
if (!cache.moving[way.id]) {
unmoved = way;
break;
function isInteresting(node, graph2) {
return graph2.parentWays(node).length > 1 || graph2.parentRelations(node).length || node.hasInterestingTags();
}
- for (var i2 = 0; i2 < way.nodes.length; i2++) {
- curr = graph.entity(way.nodes[i2]);
+ for (var i3 = 0; i3 < way.nodes.length; i3++) {
+ curr = graph.entity(way.nodes[i3]);
if (prev && curr && geoVecEqual(prev.loc, curr.loc, epsilon3)) {
if (!isInteresting(prev, graph)) {
way = way.removeNode(prev.id);
var isEP2 = intersection.unmovedIsEP;
if (isEP1 && isEP2)
return graph;
- var nodes1 = graph.childNodes(way1).filter(function(n2) {
- return n2 !== vertex;
+ var nodes1 = graph.childNodes(way1).filter(function(n3) {
+ return n3 !== vertex;
});
- var nodes2 = graph.childNodes(way2).filter(function(n2) {
- return n2 !== vertex;
+ var nodes2 = graph.childNodes(way2).filter(function(n3) {
+ return n3 !== vertex;
});
if (way1.isClosed() && way1.first() === vertex.id)
nodes1.push(nodes1[0]);
var loc;
if (!isEP1 && !isEP2) {
var epsilon3 = 1e-6, maxIter = 10;
- for (var i2 = 0; i2 < maxIter; i2++) {
+ for (var i3 = 0; i3 < maxIter; i3++) {
loc = geoVecInterp(edge1.loc, edge2.loc, 0.5);
edge1 = geoChooseEdge(nodes1, projection2(loc), projection2);
edge2 = geoChooseEdge(nodes2, projection2(loc), projection2);
return graph;
}
function cleanupIntersections(graph) {
- for (var i2 = 0; i2 < cache.intersections.length; i2++) {
- var obj = cache.intersections[i2];
+ for (var i3 = 0; i3 < cache.intersections.length; i3++) {
+ var obj = cache.intersections[i3];
graph = replaceMovedVertex(obj.nodeId, obj.movedId, graph, _delta);
graph = replaceMovedVertex(obj.nodeId, obj.unmovedId, graph, null);
graph = unZorroIntersection(obj, graph);
function moveNode(loc) {
return geoVecAdd(projection2(loc), _delta);
}
- for (var i2 = 0; i2 < cache.intersections.length; i2++) {
- var obj = cache.intersections[i2];
+ for (var i3 = 0; i3 < cache.intersections.length; i3++) {
+ var obj = cache.intersections[i3];
if (obj.movedIsEP && obj.unmovedIsEP)
continue;
if (!obj.movedIsEP)
var start2 = projection2(node.loc);
var end = geoVecAdd(start2, _delta);
var movedNodes = graph.childNodes(graph.entity(obj.movedId));
- var movedPath = movedNodes.map(function(n2) {
- return moveNode(n2.loc);
+ var movedPath = movedNodes.map(function(n3) {
+ return moveNode(n3.loc);
});
var unmovedNodes = graph.childNodes(graph.entity(obj.unmovedId));
- var unmovedPath = unmovedNodes.map(function(n2) {
- return projection2(n2.loc);
+ var unmovedPath = unmovedNodes.map(function(n3) {
+ return projection2(n3.loc);
});
var hits = geoPathIntersections(movedPath, unmovedPath);
- for (var j2 = 0; i2 < hits.length; i2++) {
- if (geoVecEqual(hits[j2], end))
+ for (var j3 = 0; i3 < hits.length; i3++) {
+ if (geoVecEqual(hits[j3], end))
continue;
var edge = geoChooseEdge(unmovedNodes, end, projection2);
_delta = geoVecSubtract(projection2(edge.loc), start2);
if (cache.intersections.length) {
limitDelta(graph);
}
- for (var i2 = 0; i2 < cache.nodes.length; i2++) {
- var node = graph.entity(cache.nodes[i2]);
+ for (var i3 = 0; i3 < cache.nodes.length; i3++) {
+ var node = graph.entity(cache.nodes[i3]);
var start2 = projection2(node.loc);
var end = geoVecAdd(start2, _delta);
graph = graph.replace(node.move(projection2.invert(end)));
// modules/actions/move_node.js
function actionMoveNode(nodeID, toLoc) {
- var action = function(graph, t) {
- if (t === null || !isFinite(t))
- t = 1;
- t = Math.min(Math.max(+t, 0), 1);
+ var action = function(graph, t2) {
+ if (t2 === null || !isFinite(t2))
+ t2 = 1;
+ t2 = Math.min(Math.max(+t2, 0), 1);
var node = graph.entity(nodeID);
return graph.replace(
- node.move(geoVecInterp(node.loc, toLoc, t))
+ node.move(geoVecInterp(node.loc, toLoc, t2))
);
};
action.transitionable = true;
var threshold = degThresh || 13;
var lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180);
var upperThreshold = Math.cos(threshold * Math.PI / 180);
- var action = function(graph, t) {
- if (t === null || !isFinite(t))
- t = 1;
- t = Math.min(Math.max(+t, 0), 1);
+ var action = function(graph, t2) {
+ if (t2 === null || !isFinite(t2))
+ t2 = 1;
+ t2 = Math.min(Math.max(+t2, 0), 1);
var way = graph.entity(wayID);
way = way.removeNode("");
if (way.tags.nonsquare) {
var nodeCount = {};
var points = [];
var corner = { i: 0, dotp: 1 };
- var node, point2, loc, score, motions, i2, j2;
- for (i2 = 0; i2 < nodes.length; i2++) {
- node = nodes[i2];
+ var node, point2, loc, score, motions, i3, j3;
+ for (i3 = 0; i3 < nodes.length; i3++) {
+ node = nodes[i3];
nodeCount[node.id] = (nodeCount[node.id] || 0) + 1;
points.push({ id: node.id, coord: projection2(node.loc) });
}
if (points.length === 3) {
- for (i2 = 0; i2 < 1e3; i2++) {
+ for (i3 = 0; i3 < 1e3; i3++) {
motions = points.map(calcMotion);
points[corner.i].coord = geoVecAdd(points[corner.i].coord, motions[corner.i]);
score = corner.dotp;
}
node = graph.entity(nodes[corner.i].id);
loc = projection2.invert(points[corner.i].coord);
- graph = graph.replace(node.move(geoVecInterp(node.loc, loc, t)));
+ graph = graph.replace(node.move(geoVecInterp(node.loc, loc, t2)));
} else {
var straights = [];
var simplified = [];
- for (i2 = 0; i2 < points.length; i2++) {
- point2 = points[i2];
+ for (i3 = 0; i3 < points.length; i3++) {
+ point2 = points[i3];
var dotp = 0;
- if (isClosed || i2 > 0 && i2 < points.length - 1) {
- var a = points[(i2 - 1 + points.length) % points.length];
- var b = points[(i2 + 1) % points.length];
- dotp = Math.abs(geoOrthoNormalizedDotProduct(a.coord, b.coord, point2.coord));
+ if (isClosed || i3 > 0 && i3 < points.length - 1) {
+ var a2 = points[(i3 - 1 + points.length) % points.length];
+ var b2 = points[(i3 + 1) % points.length];
+ dotp = Math.abs(geoOrthoNormalizedDotProduct(a2.coord, b2.coord, point2.coord));
}
if (dotp > upperThreshold) {
straights.push(point2);
var bestPoints = clonePoints(simplified);
var originalPoints = clonePoints(simplified);
score = Infinity;
- for (i2 = 0; i2 < 1e3; i2++) {
+ for (i3 = 0; i3 < 1e3; i3++) {
motions = simplified.map(calcMotion);
- for (j2 = 0; j2 < motions.length; j2++) {
- simplified[j2].coord = geoVecAdd(simplified[j2].coord, motions[j2]);
+ for (j3 = 0; j3 < motions.length; j3++) {
+ simplified[j3].coord = geoVecAdd(simplified[j3].coord, motions[j3]);
}
var newScore = geoOrthoCalcScore(simplified, isClosed, epsilon3, threshold);
if (newScore < score) {
break;
}
}
- var bestCoords = bestPoints.map(function(p) {
- return p.coord;
+ var bestCoords = bestPoints.map(function(p2) {
+ return p2.coord;
});
if (isClosed)
bestCoords.push(bestCoords[0]);
- for (i2 = 0; i2 < bestPoints.length; i2++) {
- point2 = bestPoints[i2];
- if (!geoVecEqual(originalPoints[i2].coord, point2.coord)) {
+ for (i3 = 0; i3 < bestPoints.length; i3++) {
+ point2 = bestPoints[i3];
+ if (!geoVecEqual(originalPoints[i3].coord, point2.coord)) {
node = graph.entity(point2.id);
loc = projection2.invert(point2.coord);
- graph = graph.replace(node.move(geoVecInterp(node.loc, loc, t)));
+ graph = graph.replace(node.move(geoVecInterp(node.loc, loc, t2)));
}
}
- for (i2 = 0; i2 < straights.length; i2++) {
- point2 = straights[i2];
+ for (i3 = 0; i3 < straights.length; i3++) {
+ point2 = straights[i3];
if (nodeCount[point2.id] > 1)
continue;
node = graph.entity(point2.id);
- if (t === 1 && graph.parentWays(node).length === 1 && graph.parentRelations(node).length === 0 && !node.hasInterestingTags()) {
+ if (t2 === 1 && graph.parentWays(node).length === 1 && graph.parentRelations(node).length === 0 && !node.hasInterestingTags()) {
graph = actionDeleteNode(node.id)(graph);
} else {
var choice = geoVecProject(point2.coord, bestCoords);
if (choice) {
loc = projection2.invert(choice.target);
- graph = graph.replace(node.move(geoVecInterp(node.loc, loc, t)));
+ graph = graph.replace(node.move(geoVecInterp(node.loc, loc, t2)));
}
}
}
}
return graph;
function clonePoints(array2) {
- return array2.map(function(p) {
- return { id: p.id, coord: [p.coord[0], p.coord[1]] };
+ return array2.map(function(p2) {
+ return { id: p2.id, coord: [p2.coord[0], p2.coord[1]] };
});
}
- function calcMotion(point3, i3, array2) {
- if (!isClosed && (i3 === 0 || i3 === array2.length - 1))
+ function calcMotion(point3, i4, array2) {
+ if (!isClosed && (i4 === 0 || i4 === array2.length - 1))
return [0, 0];
- if (nodeCount[array2[i3].id] > 1)
+ if (nodeCount[array2[i4].id] > 1)
return [0, 0];
- var a2 = array2[(i3 - 1 + array2.length) % array2.length].coord;
+ var a3 = array2[(i4 - 1 + array2.length) % array2.length].coord;
var origin = point3.coord;
- var b2 = array2[(i3 + 1) % array2.length].coord;
- var p = geoVecSubtract(a2, origin);
- var q = geoVecSubtract(b2, origin);
- var scale = 2 * Math.min(geoVecLength(p), geoVecLength(q));
- p = geoVecNormalize(p);
- q = geoVecNormalize(q);
- var dotp2 = p[0] * q[0] + p[1] * q[1];
+ var b3 = array2[(i4 + 1) % array2.length].coord;
+ var p2 = geoVecSubtract(a3, origin);
+ var q2 = geoVecSubtract(b3, origin);
+ var scale = 2 * Math.min(geoVecLength(p2), geoVecLength(q2));
+ p2 = geoVecNormalize(p2);
+ q2 = geoVecNormalize(q2);
+ var dotp2 = p2[0] * q2[0] + p2[1] * q2[1];
var val = Math.abs(dotp2);
if (val < lowerThreshold) {
- corner.i = i3;
+ corner.i = i4;
corner.dotp = val;
- var vec = geoVecNormalize(geoVecAdd(p, q));
+ var vec = geoVecNormalize(geoVecAdd(p2, q2));
return geoVecScale(vec, 0.1 * dotp2 * scale);
}
return [0, 0];
function nodeSubset(nodes, vertexID2, isClosed) {
var first = isClosed ? 0 : 1;
var last = isClosed ? nodes.length : nodes.length - 1;
- for (var i2 = first; i2 < last; i2++) {
- if (nodes[i2].id === vertexID2) {
+ for (var i3 = first; i3 < last; i3++) {
+ if (nodes[i3].id === vertexID2) {
return [
- nodes[(i2 - 1 + nodes.length) % nodes.length],
- nodes[i2],
- nodes[(i2 + 1) % nodes.length]
+ nodes[(i3 - 1 + nodes.length) % nodes.length],
+ nodes[i3],
+ nodes[(i3 + 1) % nodes.length]
];
}
}
if (nodes.length !== 3)
return "end_vertex";
}
- var coords = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var coords = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var score = geoOrthoCanOrthogonalize(coords, isClosed, epsilon3, threshold, allowStraightAngles);
if (score === null) {
// modules/actions/straighten_nodes.js
function actionStraightenNodes(nodeIDs, projection2) {
- function positionAlongWay(a, o, b) {
- return geoVecDot(a, b, o) / geoVecDot(b, b, o);
+ function positionAlongWay(a2, o2, b2) {
+ return geoVecDot(a2, b2, o2) / geoVecDot(b2, b2, o2);
}
function getEndpoints(points) {
var ssr = geoGetSmallestSurroundingRectangle(points);
}
return [p2, q2];
}
- var action = function(graph, t) {
- if (t === null || !isFinite(t))
- t = 1;
- t = Math.min(Math.max(+t, 0), 1);
+ var action = function(graph, t2) {
+ if (t2 === null || !isFinite(t2))
+ t2 = 1;
+ t2 = Math.min(Math.max(+t2, 0), 1);
var nodes = nodeIDs.map(function(id2) {
return graph.entity(id2);
});
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var endpoints = getEndpoints(points);
var startPoint = endpoints[0];
var endPoint = endpoints[1];
- for (var i2 = 0; i2 < points.length; i2++) {
- var node = nodes[i2];
- var point2 = points[i2];
- var u = positionAlongWay(point2, startPoint, endPoint);
- var point22 = geoVecInterp(startPoint, endPoint, u);
+ for (var i3 = 0; i3 < points.length; i3++) {
+ var node = nodes[i3];
+ var point2 = points[i3];
+ var u2 = positionAlongWay(point2, startPoint, endPoint);
+ var point22 = geoVecInterp(startPoint, endPoint, u2);
var loc2 = projection2.invert(point22);
- graph = graph.replace(node.move(geoVecInterp(node.loc, loc2, t)));
+ graph = graph.replace(node.move(geoVecInterp(node.loc, loc2, t2)));
}
return graph;
};
var nodes = nodeIDs.map(function(id2) {
return graph.entity(id2);
});
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var endpoints = getEndpoints(points);
var startPoint = endpoints[0];
var endPoint = endpoints[1];
var maxDistance = 0;
- for (var i2 = 0; i2 < points.length; i2++) {
- var point2 = points[i2];
- var u = positionAlongWay(point2, startPoint, endPoint);
- var p = geoVecInterp(startPoint, endPoint, u);
- var dist = geoVecLength(p, point2);
+ for (var i3 = 0; i3 < points.length; i3++) {
+ var point2 = points[i3];
+ var u2 = positionAlongWay(point2, startPoint, endPoint);
+ var p2 = geoVecInterp(startPoint, endPoint, u2);
+ var dist = geoVecLength(p2, point2);
if (!isNaN(dist) && dist > maxDistance) {
maxDistance = dist;
}
// modules/actions/straighten_way.js
function actionStraightenWay(selectedIDs, projection2) {
- function positionAlongWay(a, o, b) {
- return geoVecDot(a, b, o) / geoVecDot(b, b, o);
+ function positionAlongWay(a2, o2, b2) {
+ return geoVecDot(a2, b2, o2) / geoVecDot(b2, b2, o2);
}
function allNodes(graph) {
var nodes = [];
var startNodes = [];
var endNodes = [];
var remainingWays = [];
- var selectedWays = selectedIDs.filter(function(w) {
- return graph.entity(w).type === "way";
+ var selectedWays = selectedIDs.filter(function(w2) {
+ return graph.entity(w2).type === "way";
});
- var selectedNodes = selectedIDs.filter(function(n2) {
- return graph.entity(n2).type === "node";
+ var selectedNodes = selectedIDs.filter(function(n3) {
+ return graph.entity(n3).type === "node";
});
- for (var i2 = 0; i2 < selectedWays.length; i2++) {
- var way = graph.entity(selectedWays[i2]);
+ for (var i3 = 0; i3 < selectedWays.length; i3++) {
+ var way = graph.entity(selectedWays[i3]);
nodes = way.nodes.slice(0);
remainingWays.push(nodes);
startNodes.push(nodes[0]);
endNodes.push(nodes[nodes.length - 1]);
}
- startNodes = startNodes.filter(function(n2) {
- return startNodes.indexOf(n2) === startNodes.lastIndexOf(n2);
+ startNodes = startNodes.filter(function(n3) {
+ return startNodes.indexOf(n3) === startNodes.lastIndexOf(n3);
});
- endNodes = endNodes.filter(function(n2) {
- return endNodes.indexOf(n2) === endNodes.lastIndexOf(n2);
+ endNodes = endNodes.filter(function(n3) {
+ return endNodes.indexOf(n3) === endNodes.lastIndexOf(n3);
});
var currNode = utilArrayDifference(startNodes, endNodes).concat(utilArrayDifference(endNodes, startNodes))[0];
var nextWay = [];
var startNodeIdx = nodes.indexOf(selectedNodes[0]);
var endNodeIdx = nodes.indexOf(selectedNodes[1]);
var sortedStartEnd = [startNodeIdx, endNodeIdx];
- sortedStartEnd.sort(function(a, b) {
- return a - b;
+ sortedStartEnd.sort(function(a2, b2) {
+ return a2 - b2;
});
nodes = nodes.slice(sortedStartEnd[0], sortedStartEnd[1] + 1);
}
- return nodes.map(function(n2) {
- return graph.entity(n2);
+ return nodes.map(function(n3) {
+ return graph.entity(n3);
});
}
function shouldKeepNode(node, graph) {
return graph.parentWays(node).length > 1 || graph.parentRelations(node).length || node.hasInterestingTags();
}
- var action = function(graph, t) {
- if (t === null || !isFinite(t))
- t = 1;
- t = Math.min(Math.max(+t, 0), 1);
+ var action = function(graph, t2) {
+ if (t2 === null || !isFinite(t2))
+ t2 = 1;
+ t2 = Math.min(Math.max(+t2, 0), 1);
var nodes = allNodes(graph);
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var startPoint = points[0];
var endPoint = points[points.length - 1];
var toDelete = [];
- var i2;
- for (i2 = 1; i2 < points.length - 1; i2++) {
- var node = nodes[i2];
- var point2 = points[i2];
- if (t < 1 || shouldKeepNode(node, graph)) {
- var u = positionAlongWay(point2, startPoint, endPoint);
- var p = geoVecInterp(startPoint, endPoint, u);
- var loc2 = projection2.invert(p);
- graph = graph.replace(node.move(geoVecInterp(node.loc, loc2, t)));
+ var i3;
+ for (i3 = 1; i3 < points.length - 1; i3++) {
+ var node = nodes[i3];
+ var point2 = points[i3];
+ if (t2 < 1 || shouldKeepNode(node, graph)) {
+ var u2 = positionAlongWay(point2, startPoint, endPoint);
+ var p2 = geoVecInterp(startPoint, endPoint, u2);
+ var loc2 = projection2.invert(p2);
+ graph = graph.replace(node.move(geoVecInterp(node.loc, loc2, t2)));
} else {
if (toDelete.indexOf(node) === -1) {
toDelete.push(node);
}
}
}
- for (i2 = 0; i2 < toDelete.length; i2++) {
- graph = actionDeleteNode(toDelete[i2].id)(graph);
+ for (i3 = 0; i3 < toDelete.length; i3++) {
+ graph = actionDeleteNode(toDelete[i3].id)(graph);
}
return graph;
};
action.disabled = function(graph) {
var nodes = allNodes(graph);
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var startPoint = points[0];
var endPoint = points[points.length - 1];
var threshold = 0.2 * geoVecLength(startPoint, endPoint);
- var i2;
+ var i3;
if (threshold === 0) {
return "too_bendy";
}
var maxDistance = 0;
- for (i2 = 1; i2 < points.length - 1; i2++) {
- var point2 = points[i2];
- var u = positionAlongWay(point2, startPoint, endPoint);
- var p = geoVecInterp(startPoint, endPoint, u);
- var dist = geoVecLength(p, point2);
+ for (i3 = 1; i3 < points.length - 1; i3++) {
+ var point2 = points[i3];
+ var u2 = positionAlongWay(point2, startPoint, endPoint);
+ var p2 = geoVecInterp(startPoint, endPoint, u2);
+ var dist = geoVecLength(p2, point2);
if (isNaN(dist) || dist > threshold) {
return "too_bendy";
} else if (dist > maxDistance) {
maxDistance = dist;
}
}
- var keepingAllNodes = nodes.every(function(node, i3) {
- return i3 === 0 || i3 === nodes.length - 1 || shouldKeepNode(node, graph);
+ var keepingAllNodes = nodes.every(function(node, i4) {
+ return i4 === 0 || i4 === nodes.length - 1 || shouldKeepNode(node, graph);
});
if (maxDistance < 1e-4 && // Allow straightening even if already straight in order to remove extraneous nodes
keepingAllNodes) {
// modules/actions/reflect.js
function actionReflect(reflectIds, projection2) {
var _useLongAxis = true;
- var action = function(graph, t) {
- if (t === null || !isFinite(t))
- t = 1;
- t = Math.min(Math.max(+t, 0), 1);
+ var action = function(graph, t2) {
+ if (t2 === null || !isFinite(t2))
+ t2 = 1;
+ t2 = Math.min(Math.max(+t2, 0), 1);
var nodes = utilGetAllNodes(reflectIds, graph);
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
var ssr = geoGetSmallestSurroundingRectangle(points);
var p1 = [(ssr.poly[0][0] + ssr.poly[1][0]) / 2, (ssr.poly[0][1] + ssr.poly[1][1]) / 2];
var q1 = [(ssr.poly[2][0] + ssr.poly[3][0]) / 2, (ssr.poly[2][1] + ssr.poly[3][1]) / 2];
var p2 = [(ssr.poly[3][0] + ssr.poly[4][0]) / 2, (ssr.poly[3][1] + ssr.poly[4][1]) / 2];
var q2 = [(ssr.poly[1][0] + ssr.poly[2][0]) / 2, (ssr.poly[1][1] + ssr.poly[2][1]) / 2];
- var p, q;
+ var p3, q3;
var isLong = geoVecLength(p1, q1) > geoVecLength(p2, q2);
if (_useLongAxis && isLong || !_useLongAxis && !isLong) {
- p = p1;
- q = q1;
+ p3 = p1;
+ q3 = q1;
} else {
- p = p2;
- q = q2;
- }
- var dx = q[0] - p[0];
- var dy = q[1] - p[1];
- var a = (dx * dx - dy * dy) / (dx * dx + dy * dy);
- var b = 2 * dx * dy / (dx * dx + dy * dy);
- for (var i2 = 0; i2 < nodes.length; i2++) {
- var node = nodes[i2];
- var c = projection2(node.loc);
- var c2 = [
- a * (c[0] - p[0]) + b * (c[1] - p[1]) + p[0],
- b * (c[0] - p[0]) - a * (c[1] - p[1]) + p[1]
+ p3 = p2;
+ q3 = q2;
+ }
+ var dx = q3[0] - p3[0];
+ var dy = q3[1] - p3[1];
+ var a2 = (dx * dx - dy * dy) / (dx * dx + dy * dy);
+ var b2 = 2 * dx * dy / (dx * dx + dy * dy);
+ for (var i3 = 0; i3 < nodes.length; i3++) {
+ var node = nodes[i3];
+ var c2 = projection2(node.loc);
+ var c22 = [
+ a2 * (c2[0] - p3[0]) + b2 * (c2[1] - p3[1]) + p3[0],
+ b2 * (c2[0] - p3[0]) - a2 * (c2[1] - p3[1]) + p3[1]
];
- var loc2 = projection2.invert(c2);
- node = node.move(geoVecInterp(node.loc, loc2, t));
+ var loc2 = projection2.invert(c22);
+ node = node.move(geoVecInterp(node.loc, loc2, t2));
graph = graph.replace(node);
}
return graph;
// modules/behavior/hover.js
function behaviorHover(context) {
- var dispatch10 = dispatch_default("hover");
+ var dispatch14 = dispatch_default("hover");
var _selection = select_default2(null);
var _newNodeId = null;
var _initialNodeID = null;
if (_altDisables && d3_event.keyCode === utilKeybinding.modifierCodes.alt) {
_selection.selectAll(".hover").classed("hover-suppressed", true).classed("hover", false);
_selection.classed("hover-disabled", true);
- dispatch10.call("hover", this, null);
+ dispatch14.call("hover", this, null);
}
}
function keyup(d3_event) {
if (_altDisables && d3_event.keyCode === utilKeybinding.modifierCodes.alt) {
_selection.selectAll(".hover-suppressed").classed("hover-suppressed", false).classed("hover", true);
_selection.classed("hover-disabled", false);
- dispatch10.call("hover", this, _targets);
+ dispatch14.call("hover", this, _targets);
}
}
function behavior(selection2) {
updateHover(d3_event, _targets);
}
}
- function allowsVertex(d) {
- return d.geometry(context.graph()) === "vertex" || _mainPresetIndex.allowsVertex(d, context.graph());
+ function allowsVertex(d2) {
+ return d2.geometry(context.graph()) === "vertex" || _mainPresetIndex.allowsVertex(d2, context.graph());
}
function modeAllowsHover(target) {
var mode = context.mode();
return true;
});
var selector = "";
- for (var i2 in targets) {
- var datum2 = targets[i2];
+ for (var i3 in targets) {
+ var datum2 = targets[i3];
if (datum2.__featurehash__) {
selector += ", .data" + datum2.__featurehash__;
} else if (datum2 instanceof QAItem) {
} else if (datum2 instanceof osmEntity) {
selector += ", ." + datum2.id;
if (datum2.type === "relation") {
- for (var j2 in datum2.members) {
- selector += ", ." + datum2.members[j2].id;
+ for (var j3 in datum2.members) {
+ selector += ", ." + datum2.members[j3].id;
}
}
}
selector = selector.slice(1);
_selection.selectAll(selector).classed(suppressed ? "hover-suppressed" : "hover", true);
}
- dispatch10.call("hover", this, !suppressed && targets);
+ dispatch14.call("hover", this, !suppressed && targets);
}
}
behavior.off = function(selection2) {
_initialNodeID = nodeId;
return behavior;
};
- return utilRebind(behavior, dispatch10, "on");
+ return utilRebind(behavior, dispatch14, "on");
}
// modules/behavior/draw.js
var _disableSpace = false;
var _lastSpace = null;
function behaviorDraw(context) {
- var dispatch10 = dispatch_default(
+ var dispatch14 = dispatch_default(
"move",
"down",
"downcancel",
} else {
element = d3_event.target;
}
- var d = element.__data__;
- return d && d.properties && d.properties.target ? d : {};
+ var d2 = element.__data__;
+ return d2 && d2.properties && d2.properties.target ? d2 : {};
}
function pointerdown(d3_event) {
if (_downPointer)
downTime: +/* @__PURE__ */ new Date(),
downLoc: pointerLocGetter(d3_event)
};
- dispatch10.call("down", this, d3_event, datum2(d3_event));
+ dispatch14.call("down", this, d3_event, datum2(d3_event));
}
function pointerup(d3_event) {
if (!_downPointer || _downPointer.id !== (d3_event.pointerId || "mouse"))
var dist = geoVecLength(_downPointer.downLoc, p2);
if (dist >= _closeTolerance) {
_downPointer.isCancelled = true;
- dispatch10.call("downcancel", this);
+ dispatch14.call("downcancel", this);
}
}
if (d3_event.pointerType && d3_event.pointerType !== "mouse" || d3_event.buttons || _downPointer)
if (_lastPointerUpEvent && _lastPointerUpEvent.pointerType !== "mouse" && d3_event.timeStamp - _lastPointerUpEvent.timeStamp < 100)
return;
_lastMouse = d3_event;
- dispatch10.call("move", this, d3_event, datum2(d3_event));
+ dispatch14.call("move", this, d3_event, datum2(d3_event));
}
function pointercancel(d3_event) {
if (_downPointer && _downPointer.id === (d3_event.pointerId || "mouse")) {
if (!_downPointer.isCancelled) {
- dispatch10.call("downcancel", this);
+ dispatch14.call("downcancel", this);
}
_downPointer = null;
}
function mouseleave() {
_mouseLeave = true;
}
- function allowsVertex(d) {
- return d.geometry(context.graph()) === "vertex" || _mainPresetIndex.allowsVertex(d, context.graph());
+ function allowsVertex(d2) {
+ return d2.geometry(context.graph()) === "vertex" || _mainPresetIndex.allowsVertex(d2, context.graph());
}
function click(d3_event, loc) {
- var d = datum2(d3_event);
- var target = d && d.properties && d.properties.entity;
+ var d2 = datum2(d3_event);
+ var target = d2 && d2.properties && d2.properties.entity;
var mode = context.mode();
if (target && target.type === "node" && allowsVertex(target)) {
- dispatch10.call("clickNode", this, target, d);
+ dispatch14.call("clickNode", this, target, d2);
return;
} else if (target && target.type === "way" && (mode.id !== "add-point" || mode.preset.matchGeometry("vertex"))) {
var choice = geoChooseEdge(
);
if (choice) {
var edge = [target.nodes[choice.index - 1], target.nodes[choice.index]];
- dispatch10.call("clickWay", this, choice.loc, edge, d);
+ dispatch14.call("clickWay", this, choice.loc, edge, d2);
return;
}
} else if (mode.id !== "add-point" || mode.preset.matchGeometry("point")) {
var locLatLng = context.projection.invert(loc);
- dispatch10.call("click", this, locLatLng, d);
+ dispatch14.call("click", this, locLatLng, d2);
}
}
function space(d3_event) {
}
function backspace(d3_event) {
d3_event.preventDefault();
- dispatch10.call("undo");
+ dispatch14.call("undo");
}
function del(d3_event) {
d3_event.preventDefault();
- dispatch10.call("cancel");
+ dispatch14.call("cancel");
}
function ret(d3_event) {
d3_event.preventDefault();
- dispatch10.call("finish");
+ dispatch14.call("finish");
}
function behavior(selection2) {
context.install(_hover);
behavior.hover = function() {
return _hover;
};
- return utilRebind(behavior, dispatch10, "on");
+ return utilRebind(behavior, dispatch14, "on");
}
// modules/behavior/breathe.js
}
// node_modules/d3-scale/src/constant.js
- function constants(x) {
+ function constants(x2) {
return function() {
- return x;
+ return x2;
};
}
// node_modules/d3-scale/src/number.js
- function number2(x) {
- return +x;
+ function number2(x2) {
+ return +x2;
}
// node_modules/d3-scale/src/continuous.js
var unit = [0, 1];
- function identity3(x) {
- return x;
+ function identity3(x2) {
+ return x2;
}
- function normalize(a, b) {
- return (b -= a = +a) ? function(x) {
- return (x - a) / b;
- } : constants(isNaN(b) ? NaN : 0.5);
+ function normalize(a2, b2) {
+ return (b2 -= a2 = +a2) ? function(x2) {
+ return (x2 - a2) / b2;
+ } : constants(isNaN(b2) ? NaN : 0.5);
}
- function clamper(a, b) {
- var t;
- if (a > b)
- t = a, a = b, b = t;
- return function(x) {
- return Math.max(a, Math.min(b, x));
+ function clamper(a2, b2) {
+ var t2;
+ if (a2 > b2)
+ t2 = a2, a2 = b2, b2 = t2;
+ return function(x2) {
+ return Math.max(a2, Math.min(b2, x2));
};
}
function bimap(domain2, range3, interpolate) {
d0 = normalize(d1, d0), r0 = interpolate(r1, r0);
else
d0 = normalize(d0, d1), r0 = interpolate(r0, r1);
- return function(x) {
- return r0(d0(x));
+ return function(x2) {
+ return r0(d0(x2));
};
}
function polymap(domain2, range3, interpolate) {
- var j2 = Math.min(domain2.length, range3.length) - 1, d = new Array(j2), r = new Array(j2), i2 = -1;
- if (domain2[j2] < domain2[0]) {
+ var j3 = Math.min(domain2.length, range3.length) - 1, d2 = new Array(j3), r2 = new Array(j3), i3 = -1;
+ if (domain2[j3] < domain2[0]) {
domain2 = domain2.slice().reverse();
range3 = range3.slice().reverse();
}
- while (++i2 < j2) {
- d[i2] = normalize(domain2[i2], domain2[i2 + 1]);
- r[i2] = interpolate(range3[i2], range3[i2 + 1]);
+ while (++i3 < j3) {
+ d2[i3] = normalize(domain2[i3], domain2[i3 + 1]);
+ r2[i3] = interpolate(range3[i3], range3[i3 + 1]);
}
- return function(x) {
- var i3 = bisect_default(domain2, x, 1, j2) - 1;
- return r[i3](d[i3](x));
+ return function(x2) {
+ var i4 = bisect_default(domain2, x2, 1, j3) - 1;
+ return r2[i4](d2[i4](x2));
};
}
function copy(source, target) {
function transformer2() {
var domain2 = unit, range3 = unit, interpolate = value_default, transform2, untransform, unknown, clamp3 = identity3, piecewise, output, input;
function rescale() {
- var n2 = Math.min(domain2.length, range3.length);
+ var n3 = Math.min(domain2.length, range3.length);
if (clamp3 !== identity3)
- clamp3 = clamper(domain2[0], domain2[n2 - 1]);
- piecewise = n2 > 2 ? polymap : bimap;
+ clamp3 = clamper(domain2[0], domain2[n3 - 1]);
+ piecewise = n3 > 2 ? polymap : bimap;
output = input = null;
return scale;
}
- function scale(x) {
- return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain2.map(transform2), range3, interpolate)))(transform2(clamp3(x)));
+ function scale(x2) {
+ return x2 == null || isNaN(x2 = +x2) ? unknown : (output || (output = piecewise(domain2.map(transform2), range3, interpolate)))(transform2(clamp3(x2)));
}
- scale.invert = function(y) {
- return clamp3(untransform((input || (input = piecewise(range3, domain2.map(transform2), number_default)))(y)));
+ scale.invert = function(y2) {
+ return clamp3(untransform((input || (input = piecewise(range3, domain2.map(transform2), number_default)))(y2)));
};
- scale.domain = function(_) {
- return arguments.length ? (domain2 = Array.from(_, number2), rescale()) : domain2.slice();
+ scale.domain = function(_2) {
+ return arguments.length ? (domain2 = Array.from(_2, number2), rescale()) : domain2.slice();
};
- scale.range = function(_) {
- return arguments.length ? (range3 = Array.from(_), rescale()) : range3.slice();
+ scale.range = function(_2) {
+ return arguments.length ? (range3 = Array.from(_2), rescale()) : range3.slice();
};
- scale.rangeRound = function(_) {
- return range3 = Array.from(_), interpolate = round_default, rescale();
+ scale.rangeRound = function(_2) {
+ return range3 = Array.from(_2), interpolate = round_default, rescale();
};
- scale.clamp = function(_) {
- return arguments.length ? (clamp3 = _ ? true : identity3, rescale()) : clamp3 !== identity3;
+ scale.clamp = function(_2) {
+ return arguments.length ? (clamp3 = _2 ? true : identity3, rescale()) : clamp3 !== identity3;
};
- scale.interpolate = function(_) {
- return arguments.length ? (interpolate = _, rescale()) : interpolate;
+ scale.interpolate = function(_2) {
+ return arguments.length ? (interpolate = _2, rescale()) : interpolate;
};
- scale.unknown = function(_) {
- return arguments.length ? (unknown = _, scale) : unknown;
+ scale.unknown = function(_2) {
+ return arguments.length ? (unknown = _2, scale) : unknown;
};
- return function(t, u) {
- transform2 = t, untransform = u;
+ return function(t2, u2) {
+ transform2 = t2, untransform = u2;
return rescale();
};
}
}
// node_modules/d3-format/src/formatDecimal.js
- function formatDecimal_default(x) {
- return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString("en").replace(/,/g, "") : x.toString(10);
+ function formatDecimal_default(x2) {
+ return Math.abs(x2 = Math.round(x2)) >= 1e21 ? x2.toLocaleString("en").replace(/,/g, "") : x2.toString(10);
}
- function formatDecimalParts(x, p) {
- if ((i2 = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0)
+ function formatDecimalParts(x2, p2) {
+ if ((i3 = (x2 = p2 ? x2.toExponential(p2 - 1) : x2.toExponential()).indexOf("e")) < 0)
return null;
- var i2, coefficient = x.slice(0, i2);
+ var i3, coefficient = x2.slice(0, i3);
return [
coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
- +x.slice(i2 + 1)
+ +x2.slice(i3 + 1)
];
}
// node_modules/d3-format/src/exponent.js
- function exponent_default(x) {
- return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;
+ function exponent_default(x2) {
+ return x2 = formatDecimalParts(Math.abs(x2)), x2 ? x2[1] : NaN;
}
// node_modules/d3-format/src/formatGroup.js
function formatGroup_default(grouping, thousands) {
return function(value, width) {
- var i2 = value.length, t = [], j2 = 0, g = grouping[0], length = 0;
- while (i2 > 0 && g > 0) {
- if (length + g + 1 > width)
- g = Math.max(1, width - length);
- t.push(value.substring(i2 -= g, i2 + g));
- if ((length += g + 1) > width)
+ var i3 = value.length, t2 = [], j3 = 0, g3 = grouping[0], length = 0;
+ while (i3 > 0 && g3 > 0) {
+ if (length + g3 + 1 > width)
+ g3 = Math.max(1, width - length);
+ t2.push(value.substring(i3 -= g3, i3 + g3));
+ if ((length += g3 + 1) > width)
break;
- g = grouping[j2 = (j2 + 1) % grouping.length];
+ g3 = grouping[j3 = (j3 + 1) % grouping.length];
}
- return t.reverse().join(thousands);
+ return t2.reverse().join(thousands);
};
}
// node_modules/d3-format/src/formatNumerals.js
function formatNumerals_default(numerals) {
return function(value) {
- return value.replace(/[0-9]/g, function(i2) {
- return numerals[+i2];
+ return value.replace(/[0-9]/g, function(i3) {
+ return numerals[+i3];
});
};
}
};
// node_modules/d3-format/src/formatTrim.js
- function formatTrim_default(s) {
+ function formatTrim_default(s2) {
out:
- for (var n2 = s.length, i2 = 1, i0 = -1, i1; i2 < n2; ++i2) {
- switch (s[i2]) {
+ for (var n3 = s2.length, i3 = 1, i0 = -1, i1; i3 < n3; ++i3) {
+ switch (s2[i3]) {
case ".":
- i0 = i1 = i2;
+ i0 = i1 = i3;
break;
case "0":
if (i0 === 0)
- i0 = i2;
- i1 = i2;
+ i0 = i3;
+ i1 = i3;
break;
default:
- if (!+s[i2])
+ if (!+s2[i3])
break out;
if (i0 > 0)
i0 = 0;
break;
}
}
- return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;
+ return i0 > 0 ? s2.slice(0, i0) + s2.slice(i1 + 1) : s2;
}
// node_modules/d3-format/src/formatPrefixAuto.js
var prefixExponent;
- function formatPrefixAuto_default(x, p) {
- var d = formatDecimalParts(x, p);
- if (!d)
- return x + "";
- var coefficient = d[0], exponent = d[1], i2 = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, n2 = coefficient.length;
- return i2 === n2 ? coefficient : i2 > n2 ? coefficient + new Array(i2 - n2 + 1).join("0") : i2 > 0 ? coefficient.slice(0, i2) + "." + coefficient.slice(i2) : "0." + new Array(1 - i2).join("0") + formatDecimalParts(x, Math.max(0, p + i2 - 1))[0];
+ function formatPrefixAuto_default(x2, p2) {
+ var d2 = formatDecimalParts(x2, p2);
+ if (!d2)
+ return x2 + "";
+ var coefficient = d2[0], exponent = d2[1], i3 = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, n3 = coefficient.length;
+ return i3 === n3 ? coefficient : i3 > n3 ? coefficient + new Array(i3 - n3 + 1).join("0") : i3 > 0 ? coefficient.slice(0, i3) + "." + coefficient.slice(i3) : "0." + new Array(1 - i3).join("0") + formatDecimalParts(x2, Math.max(0, p2 + i3 - 1))[0];
}
// node_modules/d3-format/src/formatRounded.js
- function formatRounded_default(x, p) {
- var d = formatDecimalParts(x, p);
- if (!d)
- return x + "";
- var coefficient = d[0], exponent = d[1];
+ function formatRounded_default(x2, p2) {
+ var d2 = formatDecimalParts(x2, p2);
+ if (!d2)
+ return x2 + "";
+ var coefficient = d2[0], exponent = d2[1];
return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join("0");
}
// node_modules/d3-format/src/formatTypes.js
var formatTypes_default = {
- "%": (x, p) => (x * 100).toFixed(p),
- "b": (x) => Math.round(x).toString(2),
- "c": (x) => x + "",
+ "%": (x2, p2) => (x2 * 100).toFixed(p2),
+ "b": (x2) => Math.round(x2).toString(2),
+ "c": (x2) => x2 + "",
"d": formatDecimal_default,
- "e": (x, p) => x.toExponential(p),
- "f": (x, p) => x.toFixed(p),
- "g": (x, p) => x.toPrecision(p),
- "o": (x) => Math.round(x).toString(8),
- "p": (x, p) => formatRounded_default(x * 100, p),
+ "e": (x2, p2) => x2.toExponential(p2),
+ "f": (x2, p2) => x2.toFixed(p2),
+ "g": (x2, p2) => x2.toPrecision(p2),
+ "o": (x2) => Math.round(x2).toString(8),
+ "p": (x2, p2) => formatRounded_default(x2 * 100, p2),
"r": formatRounded_default,
"s": formatPrefixAuto_default,
- "X": (x) => Math.round(x).toString(16).toUpperCase(),
- "x": (x) => Math.round(x).toString(16)
+ "X": (x2) => Math.round(x2).toString(16).toUpperCase(),
+ "x": (x2) => Math.round(x2).toString(16)
};
// node_modules/d3-format/src/identity.js
- function identity_default3(x) {
- return x;
+ function identity_default3(x2) {
+ return x2;
}
// node_modules/d3-format/src/locale.js
var formatType = formatTypes_default[type2], maybeSuffix = /[defgprs%]/.test(type2);
precision2 = precision2 === void 0 ? 6 : /[gprs]/.test(type2) ? Math.max(1, Math.min(21, precision2)) : Math.max(0, Math.min(20, precision2));
function format2(value) {
- var valuePrefix = prefix, valueSuffix = suffix, i2, n2, c;
+ var valuePrefix = prefix, valueSuffix = suffix, i3, n3, c2;
if (type2 === "c") {
valueSuffix = formatType(value) + valueSuffix;
value = "";
valuePrefix = (valueNegative ? sign2 === "(" ? sign2 : minus : sign2 === "-" || sign2 === "(" ? "" : sign2) + valuePrefix;
valueSuffix = (type2 === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign2 === "(" ? ")" : "");
if (maybeSuffix) {
- i2 = -1, n2 = value.length;
- while (++i2 < n2) {
- if (c = value.charCodeAt(i2), 48 > c || c > 57) {
- valueSuffix = (c === 46 ? decimal + value.slice(i2 + 1) : value.slice(i2)) + valueSuffix;
- value = value.slice(0, i2);
+ i3 = -1, n3 = value.length;
+ while (++i3 < n3) {
+ if (c2 = value.charCodeAt(i3), 48 > c2 || c2 > 57) {
+ valueSuffix = (c2 === 46 ? decimal + value.slice(i3 + 1) : value.slice(i3)) + valueSuffix;
+ value = value.slice(0, i3);
break;
}
}
return format2;
}
function formatPrefix2(specifier, value) {
- var f2 = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), e = Math.max(-8, Math.min(8, Math.floor(exponent_default(value) / 3))) * 3, k = Math.pow(10, -e), prefix = prefixes[8 + e / 3];
+ var f3 = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), e3 = Math.max(-8, Math.min(8, Math.floor(exponent_default(value) / 3))) * 3, k2 = Math.pow(10, -e3), prefix = prefixes[8 + e3 / 3];
return function(value2) {
- return f2(k * value2) + prefix;
+ return f3(k2 * value2) + prefix;
};
}
return {
function linearish(scale) {
var domain2 = scale.domain;
scale.ticks = function(count) {
- var d = domain2();
- return ticks(d[0], d[d.length - 1], count == null ? 10 : count);
+ var d2 = domain2();
+ return ticks(d2[0], d2[d2.length - 1], count == null ? 10 : count);
};
scale.tickFormat = function(count, specifier) {
- var d = domain2();
- return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);
+ var d2 = domain2();
+ return tickFormat(d2[0], d2[d2.length - 1], count == null ? 10 : count, specifier);
};
scale.nice = function(count) {
if (count == null)
count = 10;
- var d = domain2();
+ var d2 = domain2();
var i0 = 0;
- var i1 = d.length - 1;
- var start2 = d[i0];
- var stop = d[i1];
+ var i1 = d2.length - 1;
+ var start2 = d2[i0];
+ var stop = d2[i1];
var prestep;
var step;
var maxIter = 10;
while (maxIter-- > 0) {
step = tickIncrement(start2, stop, count);
if (step === prestep) {
- d[i0] = start2;
- d[i1] = stop;
- return domain2(d);
+ d2[i0] = start2;
+ d2[i1] = stop;
+ return domain2(d2);
} else if (step > 0) {
start2 = Math.floor(start2 / step) * step;
stop = Math.ceil(stop / step) * step;
// node_modules/d3-scale/src/quantize.js
function quantize() {
- var x05 = 0, x12 = 1, n2 = 1, domain2 = [0.5], range3 = [0, 1], unknown;
- function scale(x) {
- return x != null && x <= x ? range3[bisect_default(domain2, x, 0, n2)] : unknown;
+ var x05 = 0, x12 = 1, n3 = 1, domain2 = [0.5], range3 = [0, 1], unknown;
+ function scale(x2) {
+ return x2 != null && x2 <= x2 ? range3[bisect_default(domain2, x2, 0, n3)] : unknown;
}
function rescale() {
- var i2 = -1;
- domain2 = new Array(n2);
- while (++i2 < n2)
- domain2[i2] = ((i2 + 1) * x12 - (i2 - n2) * x05) / (n2 + 1);
+ var i3 = -1;
+ domain2 = new Array(n3);
+ while (++i3 < n3)
+ domain2[i3] = ((i3 + 1) * x12 - (i3 - n3) * x05) / (n3 + 1);
return scale;
}
- scale.domain = function(_) {
- return arguments.length ? ([x05, x12] = _, x05 = +x05, x12 = +x12, rescale()) : [x05, x12];
+ scale.domain = function(_2) {
+ return arguments.length ? ([x05, x12] = _2, x05 = +x05, x12 = +x12, rescale()) : [x05, x12];
};
- scale.range = function(_) {
- return arguments.length ? (n2 = (range3 = Array.from(_)).length - 1, rescale()) : range3.slice();
+ scale.range = function(_2) {
+ return arguments.length ? (n3 = (range3 = Array.from(_2)).length - 1, rescale()) : range3.slice();
};
- scale.invertExtent = function(y) {
- var i2 = range3.indexOf(y);
- return i2 < 0 ? [NaN, NaN] : i2 < 1 ? [x05, domain2[0]] : i2 >= n2 ? [domain2[n2 - 1], x12] : [domain2[i2 - 1], domain2[i2]];
+ scale.invertExtent = function(y2) {
+ var i3 = range3.indexOf(y2);
+ return i3 < 0 ? [NaN, NaN] : i3 < 1 ? [x05, domain2[0]] : i3 >= n3 ? [domain2[n3 - 1], x12] : [domain2[i3 - 1], domain2[i3]];
};
- scale.unknown = function(_) {
- return arguments.length ? (unknown = _, scale) : scale;
+ scale.unknown = function(_2) {
+ return arguments.length ? (unknown = _2, scale) : scale;
};
scale.thresholds = function() {
return domain2.slice();
var _params = {};
var _done = false;
var _timer;
- function ratchetyInterpolator(a, b, steps2, units) {
- a = Number(a);
- b = Number(b);
- var sample = quantize().domain([0, 1]).range(quantize_default(number_default(a, b), steps2));
- return function(t) {
- return String(sample(t)) + (units || "");
+ function ratchetyInterpolator(a2, b2, steps2, units) {
+ a2 = Number(a2);
+ b2 = Number(b2);
+ var sample = quantize().domain([0, 1]).range(quantize_default(number_default(a2, b2), steps2));
+ return function(t2) {
+ return String(sample(t2)) + (units || "");
};
}
function reset(selection2) {
}
function setAnimationParams(transition2, fromTo) {
var toFrom = fromTo === "from" ? "to" : "from";
- transition2.styleTween("stroke-opacity", function(d) {
+ transition2.styleTween("stroke-opacity", function(d2) {
return ratchetyInterpolator(
- _params[d.id][toFrom].opacity,
- _params[d.id][fromTo].opacity,
+ _params[d2.id][toFrom].opacity,
+ _params[d2.id][fromTo].opacity,
steps
);
- }).styleTween("stroke-width", function(d) {
+ }).styleTween("stroke-width", function(d2) {
return ratchetyInterpolator(
- _params[d.id][toFrom].width,
- _params[d.id][fromTo].width,
+ _params[d2.id][toFrom].width,
+ _params[d2.id][fromTo].width,
steps,
"px"
);
- }).styleTween("fill-opacity", function(d) {
+ }).styleTween("fill-opacity", function(d2) {
return ratchetyInterpolator(
- _params[d.id][toFrom].opacity,
- _params[d.id][fromTo].opacity,
+ _params[d2.id][toFrom].opacity,
+ _params[d2.id][fromTo].opacity,
steps
);
- }).styleTween("r", function(d) {
+ }).styleTween("r", function(d2) {
return ratchetyInterpolator(
- _params[d.id][toFrom].width,
- _params[d.id][fromTo].width,
+ _params[d2.id][toFrom].width,
+ _params[d2.id][fromTo].width,
steps,
"px"
);
});
}
function calcAnimationParams(selection2) {
- selection2.call(reset).each(function(d) {
- var s = select_default2(this);
- var tag = s.node().tagName;
- var p = { "from": {}, "to": {} };
+ selection2.call(reset).each(function(d2) {
+ var s2 = select_default2(this);
+ var tag = s2.node().tagName;
+ var p2 = { "from": {}, "to": {} };
var opacity;
var width;
if (tag === "circle") {
- opacity = Number(s.style("fill-opacity") || 0.5);
- width = Number(s.style("r") || 15.5);
+ opacity = Number(s2.style("fill-opacity") || 0.5);
+ width = Number(s2.style("r") || 15.5);
} else {
- opacity = Number(s.style("stroke-opacity") || 0.7);
- width = Number(s.style("stroke-width") || 10);
+ opacity = Number(s2.style("stroke-opacity") || 0.7);
+ width = Number(s2.style("stroke-width") || 10);
}
- p.tag = tag;
- p.from.opacity = opacity * 0.6;
- p.to.opacity = opacity * 1.25;
- p.from.width = width * 0.7;
- p.to.width = width * (tag === "circle" ? 1.5 : 1);
- _params[d.id] = p;
+ p2.tag = tag;
+ p2.from.opacity = opacity * 0.6;
+ p2.to.opacity = opacity * 1.25;
+ p2.from.width = width * 0.7;
+ p2.to.width = width * (tag === "circle" ? 1.5 : 1);
+ _params[d2.id] = p2;
});
}
function run(surface, fromTo) {
behavior.off = function() {
context.keybinding().off(_operation.keys);
};
- behavior.which = function(_) {
+ behavior.which = function(_2) {
if (!arguments.length)
return _operation;
- _operation = _;
+ _operation = _2;
return behavior;
};
return behavior;
var _extent;
var _actions = selectedIDs.map(getAction).filter(Boolean);
var _amount = _actions.length === 1 ? "single" : "multiple";
- var _coords = utilGetAllNodes(selectedIDs, context.graph()).map(function(n2) {
- return n2.loc;
+ var _coords = utilGetAllNodes(selectedIDs, context.graph()).map(function(n3) {
+ return n3.loc;
});
function getAction(entityID) {
var entity = context.entity(entityID);
var operation = function() {
if (!_actions.length)
return;
- var combinedAction = function(graph, t) {
+ var combinedAction = function(graph, t2) {
_actions.forEach(function(action) {
if (!action.disabled(graph)) {
- graph = action(graph, t);
+ graph = action(graph, t2);
}
});
return graph;
"\u232B": "Backspace",
"\u2326": "Delete"
};
- for (var i2 = 0; i2 < code.length; i2++) {
- if (code[i2] in replacements) {
- result += replacements[code[i2]] + (i2 < code.length - 1 ? "+" : "");
+ for (var i3 = 0; i3 < code.length; i3++) {
+ if (code[i3] in replacements) {
+ result += replacements[code[i3]] + (i3 < code.length - 1 ? "+" : "");
} else {
- result += code[i2];
+ result += code[i3];
}
}
return result;
var multi = selectedIDs.length === 1 ? "single" : "multiple";
var action = actionDeleteMultiple(selectedIDs);
var nodes = utilGetAllNodes(selectedIDs, context.graph());
- var coords = nodes.map(function(n2) {
- return n2.loc;
+ var coords = nodes.map(function(n3) {
+ return n3.loc;
});
var extent = utilTotalExtent(selectedIDs, context.graph());
var operation = function() {
var parent = parents[0];
if (geometry === "vertex") {
var nodes2 = parent.nodes;
- var i2 = nodes2.indexOf(id2);
- if (i2 === 0) {
- i2++;
- } else if (i2 === nodes2.length - 1) {
- i2--;
+ var i3 = nodes2.indexOf(id2);
+ if (i3 === 0) {
+ i3++;
+ } else if (i3 === nodes2.length - 1) {
+ i3--;
} else {
- var a = geoSphericalDistance(entity.loc, context.entity(nodes2[i2 - 1]).loc);
- var b = geoSphericalDistance(entity.loc, context.entity(nodes2[i2 + 1]).loc);
- i2 = a < b ? i2 - 1 : i2 + 1;
+ var a2 = geoSphericalDistance(entity.loc, context.entity(nodes2[i3 - 1]).loc);
+ var b2 = geoSphericalDistance(entity.loc, context.entity(nodes2[i3 + 1]).loc);
+ i3 = a2 < b2 ? i3 - 1 : i3 + 1;
}
- nextSelectedID = nodes2[i2];
+ nextSelectedID = nodes2[i3];
nextSelectedLoc = context.entity(nextSelectedID).loc;
}
}
if (entity.type !== "way")
return false;
var parents = context.graph().parentRelations(entity);
- for (var i2 = 0; i2 < parents.length; i2++) {
- var parent = parents[i2];
+ for (var i3 = 0; i3 < parents.length; i3++) {
+ var parent = parents[i3];
var type2 = parent.tags.type;
var role = parent.memberById(id2).role || "outer";
if (type2 === "route" || type2 === "boundary" || type2 === "multipolygon" && role === "outer") {
var _type;
var _actions = selectedIDs.map(chooseAction).filter(Boolean);
var _amount = _actions.length === 1 ? "single" : "multiple";
- var _coords = utilGetAllNodes(selectedIDs, context.graph()).map(function(n2) {
- return n2.loc;
+ var _coords = utilGetAllNodes(selectedIDs, context.graph()).map(function(n3) {
+ return n3.loc;
});
function chooseAction(entityID) {
var entity = context.entity(entityID);
var operation = function() {
if (!_actions.length)
return;
- var combinedAction = function(graph, t) {
+ var combinedAction = function(graph, t2) {
_actions.forEach(function(action) {
if (!action.disabled(graph)) {
- graph = action(graph, t);
+ graph = action(graph, t2);
}
});
return graph;
axis = axis || "long";
var multi = selectedIDs.length === 1 ? "single" : "multiple";
var nodes = utilGetAllNodes(selectedIDs, context.graph());
- var coords = nodes.map(function(n2) {
- return n2.loc;
+ var coords = nodes.map(function(n3) {
+ return n3.loc;
});
var extent = utilTotalExtent(selectedIDs, context.graph());
var operation = function() {
function operationMove(context, selectedIDs) {
var multi = selectedIDs.length === 1 ? "single" : "multiple";
var nodes = utilGetAllNodes(selectedIDs, context.graph());
- var coords = nodes.map(function(n2) {
- return n2.loc;
+ var coords = nodes.map(function(n3) {
+ return n3.loc;
});
var extent = utilTotalExtent(selectedIDs, context.graph());
var operation = function() {
var currTransform = projection2.transform();
if (!_prevTransform || currTransform.k !== _prevTransform.k || currTransform.x !== _prevTransform.x || currTransform.y !== _prevTransform.y) {
var nodes = utilGetAllNodes(entityIDs, context.graph());
- var points = nodes.map(function(n2) {
- return projection2(n2.loc);
+ var points = nodes.map(function(n3) {
+ return projection2(n3.loc);
});
_pivot = getPivot(points);
_prevAngle = void 0;
function operationRotate(context, selectedIDs) {
var multi = selectedIDs.length === 1 ? "single" : "multiple";
var nodes = utilGetAllNodes(selectedIDs, context.graph());
- var coords = nodes.map(function(n2) {
- return n2.loc;
+ var coords = nodes.map(function(n3) {
+ return n3.loc;
});
var extent = utilTotalExtent(selectedIDs, context.graph());
var operation = function() {
// modules/behavior/drag.js
function behaviorDrag() {
- var dispatch10 = dispatch_default("start", "move", "end");
+ var dispatch14 = dispatch_default("start", "move", "end");
var _tolerancePx = 1;
var _penTolerancePx = 4;
var _origin = null;
function pointermove(d3_event2) {
if (_pointerId !== (d3_event2.pointerId || "mouse"))
return;
- var p = pointerLocGetter(d3_event2);
+ var p2 = pointerLocGetter(d3_event2);
if (!started) {
- var dist = geoVecLength(startOrigin, p);
+ var dist = geoVecLength(startOrigin, p2);
var tolerance = d3_event2.pointerType === "pen" ? _penTolerancePx : _tolerancePx;
if (dist < tolerance)
return;
started = true;
- dispatch10.call("start", this, d3_event2, _targetEntity);
+ dispatch14.call("start", this, d3_event2, _targetEntity);
} else {
- startOrigin = p;
+ startOrigin = p2;
d3_event2.stopPropagation();
d3_event2.preventDefault();
- var dx = p[0] - startOrigin[0];
- var dy = p[1] - startOrigin[1];
- dispatch10.call("move", this, d3_event2, _targetEntity, [p[0] + offset[0], p[1] + offset[1]], [dx, dy]);
+ var dx = p2[0] - startOrigin[0];
+ var dy = p2[1] - startOrigin[1];
+ dispatch14.call("move", this, d3_event2, _targetEntity, [p2[0] + offset[0], p2[1] + offset[1]], [dx, dy]);
}
}
function pointerup(d3_event2) {
return;
_pointerId = null;
if (started) {
- dispatch10.call("end", this, d3_event2, _targetEntity);
+ dispatch14.call("end", this, d3_event2, _targetEntity);
d3_event2.preventDefault();
}
select_default2(window).on(_pointerPrefix + "move.drag", null).on(_pointerPrefix + "up.drag pointercancel.drag", null);
behavior.off = function(selection2) {
selection2.on(_pointerPrefix + "down.drag" + _selector, null);
};
- behavior.selector = function(_) {
+ behavior.selector = function(_2) {
if (!arguments.length)
return _selector;
- _selector = _;
+ _selector = _2;
return behavior;
};
- behavior.origin = function(_) {
+ behavior.origin = function(_2) {
if (!arguments.length)
return _origin;
- _origin = _;
+ _origin = _2;
return behavior;
};
behavior.cancel = function() {
select_default2(window).on(_pointerPrefix + "move.drag", null).on(_pointerPrefix + "up.drag pointercancel.drag", null);
return behavior;
};
- behavior.targetNode = function(_) {
+ behavior.targetNode = function(_2) {
if (!arguments.length)
return _targetNode;
- _targetNode = _;
+ _targetNode = _2;
return behavior;
};
- behavior.targetEntity = function(_) {
+ behavior.targetEntity = function(_2) {
if (!arguments.length)
return _targetEntity;
- _targetEntity = _;
+ _targetEntity = _2;
return behavior;
};
- behavior.surface = function(_) {
+ behavior.surface = function(_2) {
if (!arguments.length)
return _surface;
- _surface = _;
+ _surface = _2;
return behavior;
};
- return utilRebind(behavior, dispatch10, "on");
+ return utilRebind(behavior, dispatch14, "on");
}
// modules/modes/drag_node.js
if (!d3_event || d3_event.altKey) {
return {};
} else {
- var d = d3_event.target.__data__;
- return d && d.properties && d.properties.target ? d : {};
+ var d2 = d3_event.target.__data__;
+ return d2 && d2.properties && d2.properties.target ? d2 : {};
}
}
function doMove(d3_event, entity, nudge) {
var loc = context.projection.invert(currMouse);
var target, edge;
if (!_nudgeInterval) {
- var d = datum2(d3_event);
- target = d && d.properties && d.properties.entity;
+ var d2 = datum2(d3_event);
+ target = d2 && d2.properties && d2.properties.entity;
var targetLoc = target && target.loc;
- var targetNodes = d && d.properties && d.properties.nodes;
+ var targetNodes = d2 && d2.properties && d2.properties.nodes;
if (targetLoc) {
if (shouldSnapToNode(target)) {
loc = targetLoc;
}
function hasInvalidGeometry(entity, graph) {
var parents = graph.parentWays(entity);
- var i2, j2, k;
- for (i2 = 0; i2 < parents.length; i2++) {
- var parent = parents[i2];
+ var i3, j3, k2;
+ for (i3 = 0; i3 < parents.length; i3++) {
+ var parent = parents[i3];
var nodes = [];
var activeIndex = null;
var relations = graph.parentRelations(parent);
- for (j2 = 0; j2 < relations.length; j2++) {
- if (!relations[j2].isMultipolygon())
+ for (j3 = 0; j3 < relations.length; j3++) {
+ if (!relations[j3].isMultipolygon())
continue;
- var rings = osmJoinWays(relations[j2].members, graph);
- for (k = 0; k < rings.length; k++) {
- nodes = rings[k].nodes;
- if (nodes.find(function(n2) {
- return n2.id === entity.id;
+ var rings = osmJoinWays(relations[j3].members, graph);
+ for (k2 = 0; k2 < rings.length; k2++) {
+ nodes = rings[k2].nodes;
+ if (nodes.find(function(n3) {
+ return n3.id === entity.id;
})) {
- activeIndex = k;
+ activeIndex = k2;
if (geoHasSelfIntersections(nodes, entity.id)) {
return "multipolygonMember";
}
}
- rings[k].coords = nodes.map(function(n2) {
- return n2.loc;
+ rings[k2].coords = nodes.map(function(n3) {
+ return n3.loc;
});
}
- for (k = 0; k < rings.length; k++) {
- if (k === activeIndex)
+ for (k2 = 0; k2 < rings.length; k2++) {
+ if (k2 === activeIndex)
continue;
- if (geoHasLineIntersections(rings[activeIndex].nodes, rings[k].nodes, entity.id)) {
+ if (geoHasLineIntersections(rings[activeIndex].nodes, rings[k2].nodes, entity.id)) {
return "multipolygonRing";
}
}
if (_isCancelled)
return;
var wasPoint = entity.geometry(context.graph()) === "point";
- var d = datum2(d3_event);
- var nope = d && d.properties && d.properties.nope || context.surface().classed("nope");
- var target = d && d.properties && d.properties.entity;
+ var d2 = datum2(d3_event);
+ var nope = d2 && d2.properties && d2.properties.nope || context.surface().classed("nope");
+ var target = d2 && d2.properties && d2.properties.entity;
if (nope) {
context.perform(
_actionBounceBack(entity.id, _startLoc)
}
function _actionBounceBack(nodeID, toLoc) {
var moveNode = actionMoveNode(nodeID, toLoc);
- var action = function(graph, t) {
- if (t === 1)
+ var action = function(graph, t2) {
+ if (t2 === 1)
context.pop();
- return moveNode(graph, t);
+ return moveNode(graph, t2);
};
action.transitionable = true;
return action;
return _activeEntity && _activeEntity.id;
return mode;
};
- mode.restoreSelectedIDs = function(_) {
+ mode.restoreSelectedIDs = function(_2) {
if (!arguments.length)
return _restoreSelectedIDs;
- _restoreSelectedIDs = _;
+ _restoreSelectedIDs = _2;
return mode;
};
mode.behavior = drag;
}
}
function abortUnwantedRequests(cache, tiles) {
- Object.keys(cache.inflightTile).forEach((k) => {
- const wanted = tiles.find((tile) => k === tile.id);
+ Object.keys(cache.inflightTile).forEach((k2) => {
+ const wanted = tiles.find((tile) => k2 === tile.id);
if (!wanted) {
- abortRequest(cache.inflightTile[k]);
- delete cache.inflightTile[k];
+ abortRequest(cache.inflightTile[k2]);
+ delete cache.inflightTile[k2];
}
});
}
- function encodeIssueRtree(d) {
- return { minX: d.loc[0], minY: d.loc[1], maxX: d.loc[0], maxY: d.loc[1], data: d };
+ function encodeIssueRtree(d2) {
+ return { minX: d2.loc[0], minY: d2.loc[1], maxX: d2.loc[0], maxY: d2.loc[1], data: d2 };
}
function updateRtree(item, replace) {
- _cache.rtree.remove(item, (a, b) => a.data.id === b.data.id);
+ _cache.rtree.remove(item, (a2, b2) => a2.data.id === b2.data.id);
if (replace) {
_cache.rtree.insert(item);
}
}
- function tokenReplacements(d) {
- if (!(d instanceof QAItem))
+ function tokenReplacements(d2) {
+ if (!(d2 instanceof QAItem))
return;
const replacements = {};
- const issueTemplate = _krData.errorTypes[d.whichType];
+ const issueTemplate = _krData.errorTypes[d2.whichType];
if (!issueTemplate) {
- console.log("No Template: ", d.whichType);
- console.log(" ", d.description);
+ console.log("No Template: ", d2.whichType);
+ console.log(" ", d2.description);
return;
}
if (!issueTemplate.regex)
return;
const errorRegex = new RegExp(issueTemplate.regex, "i");
- const errorMatch = errorRegex.exec(d.description);
+ const errorMatch = errorRegex.exec(d2.description);
if (!errorMatch) {
- console.log("Unmatched: ", d.whichType);
- console.log(" ", d.description);
+ console.log("Unmatched: ", d2.whichType);
+ console.log(" ", d2.description);
console.log(" ", errorRegex);
return;
}
- for (let i2 = 1; i2 < errorMatch.length; i2++) {
- let capture = errorMatch[i2];
+ for (let i3 = 1; i3 < errorMatch.length; i3++) {
+ let capture = errorMatch[i3];
let idType;
- idType = "IDs" in issueTemplate ? issueTemplate.IDs[i2 - 1] : "";
+ idType = "IDs" in issueTemplate ? issueTemplate.IDs[i3 - 1] : "";
if (idType && capture) {
capture = parseError(capture, idType);
} else {
capture = unescape_default(capture);
}
}
- replacements["var" + i2] = capture;
+ replacements["var" + i3] = capture;
}
return replacements;
}
break;
}
return capture;
- function linkErrorObject2(d) {
- return { html: `<a class="error_object_link">${d}</a>` };
+ function linkErrorObject2(d2) {
+ return { html: `<a class="error_object_link">${d2}</a>` };
}
- function linkEntity2(d) {
- return { html: `<a class="error_entity_link">${d}</a>` };
+ function linkEntity2(d2) {
+ return { html: `<a class="error_entity_link">${d2}</a>` };
}
- function linkURL(d) {
- return { html: `<a class="kr_external_link" target="_blank" href="${d}">${d}</a>` };
+ function linkURL(d2) {
+ return { html: `<a class="kr_external_link" target="_blank" href="${d2}">${d2}</a>` };
}
function parse211(capture2) {
let newList = [];
var keepRight_default = {
title: "keepRight",
init() {
- _mainFileFetcher.get("keepRight").then((d) => _krData = d);
+ _mainFileFetcher.get("keepRight").then((d2) => _krData = d2);
if (!_cache) {
this.reset();
}
let bbox2 = geoExtent(loc).bbox();
coincident = _cache.rtree.search(bbox2).length;
} while (coincident);
- let d = new QAItem(loc, this, itemType, id2, {
+ let d2 = new QAItem(loc, this, itemType, id2, {
comment,
description,
whichType,
schema,
title
});
- d.replacements = tokenReplacements(d);
- _cache.data[id2] = d;
- _cache.rtree.insert(encodeIssueRtree(d));
+ d2.replacements = tokenReplacements(d2);
+ _cache.data[id2] = d2;
+ _cache.rtree.insert(encodeIssueRtree(d2));
});
dispatch2.call("loaded");
}).catch(() => {
});
});
},
- postUpdate(d, callback) {
- if (_cache.inflightPost[d.id]) {
- return callback({ message: "Error update already inflight", status: -2 }, d);
+ postUpdate(d2, callback) {
+ if (_cache.inflightPost[d2.id]) {
+ return callback({ message: "Error update already inflight", status: -2 }, d2);
}
- const params = { schema: d.schema, id: d.id };
- if (d.newStatus) {
- params.st = d.newStatus;
+ const params = { schema: d2.schema, id: d2.id };
+ if (d2.newStatus) {
+ params.st = d2.newStatus;
}
- if (d.newComment !== void 0) {
- params.co = d.newComment;
+ if (d2.newComment !== void 0) {
+ params.co = d2.newComment;
}
const url = `${_krUrlRoot}/comment.php?` + utilQsString(params);
const controller = new AbortController();
- _cache.inflightPost[d.id] = controller;
+ _cache.inflightPost[d2.id] = controller;
json_default(url, { signal: controller.signal }).finally(() => {
- delete _cache.inflightPost[d.id];
- if (d.newStatus === "ignore") {
- this.removeItem(d);
- } else if (d.newStatus === "ignore_t") {
- this.removeItem(d);
- _cache.closed[`${d.schema}:${d.id}`] = true;
+ delete _cache.inflightPost[d2.id];
+ if (d2.newStatus === "ignore") {
+ this.removeItem(d2);
+ } else if (d2.newStatus === "ignore_t") {
+ this.removeItem(d2);
+ _cache.closed[`${d2.schema}:${d2.id}`] = true;
} else {
- d = this.replaceItem(d.update({
- comment: d.newComment,
+ d2 = this.replaceItem(d2.update({
+ comment: d2.newComment,
newComment: void 0,
newState: void 0
}));
}
if (callback)
- callback(null, d);
+ callback(null, d2);
});
},
// Get all cached QAItems covering the viewport
const min3 = [viewport[0][0], viewport[1][1]];
const max3 = [viewport[1][0], viewport[0][1]];
const bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
- return _cache.rtree.search(bbox2).map((d) => d.data);
+ return _cache.rtree.search(bbox2).map((d2) => d2.data);
},
// Get a QAItem from cache
// NOTE: Don't change method name until UI v3 is merged
};
var _impOsmData = { icons: {} };
var _cache2;
- function abortRequest2(i2) {
- Object.values(i2).forEach((controller) => {
+ function abortRequest2(i3) {
+ Object.values(i3).forEach((controller) => {
if (controller) {
controller.abort();
}
});
}
function abortUnwantedRequests2(cache, tiles) {
- Object.keys(cache.inflightTile).forEach((k) => {
- const wanted = tiles.find((tile) => k === tile.id);
+ Object.keys(cache.inflightTile).forEach((k2) => {
+ const wanted = tiles.find((tile) => k2 === tile.id);
if (!wanted) {
- abortRequest2(cache.inflightTile[k]);
- delete cache.inflightTile[k];
+ abortRequest2(cache.inflightTile[k2]);
+ delete cache.inflightTile[k2];
}
});
}
- function encodeIssueRtree2(d) {
- return { minX: d.loc[0], minY: d.loc[1], maxX: d.loc[0], maxY: d.loc[1], data: d };
+ function encodeIssueRtree2(d2) {
+ return { minX: d2.loc[0], minY: d2.loc[1], maxX: d2.loc[0], maxY: d2.loc[1], data: d2 };
}
function updateRtree2(item, replace) {
- _cache2.rtree.remove(item, (a, b) => a.data.id === b.data.id);
+ _cache2.rtree.remove(item, (a2, b2) => a2.data.id === b2.data.id);
if (replace) {
_cache2.rtree.insert(item);
}
}
- function linkErrorObject(d) {
- return { html: `<a class="error_object_link">${d}</a>` };
+ function linkErrorObject(d2) {
+ return { html: `<a class="error_object_link">${d2}</a>` };
}
- function linkEntity(d) {
- return { html: `<a class="error_entity_link">${d}</a>` };
+ function linkEntity(d2) {
+ return { html: `<a class="error_entity_link">${d2}</a>` };
}
function pointAverage(points) {
if (points.length) {
var improveOSM_default = {
title: "improveOSM",
init() {
- _mainFileFetcher.get("qa_data").then((d) => _impOsmData = d.improveOSM);
+ _mainFileFetcher.get("qa_data").then((d2) => _impOsmData = d2.improveOSM);
if (!_cache2) {
this.reset();
}
const [east, north, west, south] = tile.extent.rectangle();
const params = Object.assign({}, options2, { east, south, west, north });
const requests = {};
- Object.keys(_impOsmUrls).forEach((k) => {
+ Object.keys(_impOsmUrls).forEach((k2) => {
const kParams = Object.assign(
{},
params,
- k === "mr" ? { type: "PARKING,ROAD,BOTH,PATH" } : { confidenceLevel: "C1" }
+ k2 === "mr" ? { type: "PARKING,ROAD,BOTH,PATH" } : { confidenceLevel: "C1" }
);
- const url = `${_impOsmUrls[k]}/search?` + utilQsString(kParams);
+ const url = `${_impOsmUrls[k2]}/search?` + utilQsString(kParams);
const controller = new AbortController();
- requests[k] = controller;
+ requests[k2] = controller;
json_default(url, { signal: controller.signal }).then((data) => {
- delete _cache2.inflightTile[tile.id][k];
+ delete _cache2.inflightTile[tile.id][k2];
if (!Object.keys(_cache2.inflightTile[tile.id]).length) {
delete _cache2.inflightTile[tile.id];
_cache2.loadedTile[tile.id] = true;
loc = [mid.lon, mid.lat];
}
loc = preventCoincident(loc, false);
- let d = new QAItem(loc, this, k, itemId, {
- issueKey: k,
+ let d2 = new QAItem(loc, this, k2, itemId, {
+ issueKey: k2,
// used as a category
identifier: {
// used to post changes
objectId: wayId,
objectType: "way"
});
- d.replacements = {
+ d2.replacements = {
percentage: feature3.percentOfTrips,
num_trips: feature3.numberOfTrips,
highway: linkErrorObject(_t("QA.keepRight.error_parts.highway")),
from_node: linkEntity("n" + feature3.fromNodeId),
to_node: linkEntity("n" + feature3.toNodeId)
};
- _cache2.data[d.id] = d;
- _cache2.rtree.insert(encodeIssueRtree2(d));
+ _cache2.data[d2.id] = d2;
+ _cache2.rtree.insert(encodeIssueRtree2(d2));
});
}
if (data.tiles) {
data.tiles.forEach((feature3) => {
- const { type: type2, x, y, numberOfTrips } = feature3;
+ const { type: type2, x: x2, y: y2, numberOfTrips } = feature3;
const geoType = type2.toLowerCase();
- const itemId = `${geoType}${x}${y}${numberOfTrips}`;
+ const itemId = `${geoType}${x2}${y2}${numberOfTrips}`;
let loc = pointAverage(feature3.points);
loc = preventCoincident(loc, false);
- let d = new QAItem(loc, this, `${k}-${geoType}`, itemId, {
- issueKey: k,
- identifier: { x, y }
+ let d2 = new QAItem(loc, this, `${k2}-${geoType}`, itemId, {
+ issueKey: k2,
+ identifier: { x: x2, y: y2 }
});
- d.replacements = {
+ d2.replacements = {
num_trips: numberOfTrips,
geometry_type: _t(`QA.improveOSM.geometry_types.${geoType}`)
};
if (numberOfTrips === -1) {
- d.desc = _t("QA.improveOSM.error_types.mr.description_alt", d.replacements);
+ d2.desc = _t("QA.improveOSM.error_types.mr.description_alt", d2.replacements);
}
- _cache2.data[d.id] = d;
- _cache2.rtree.insert(encodeIssueRtree2(d));
+ _cache2.data[d2.id] = d2;
+ _cache2.rtree.insert(encodeIssueRtree2(d2));
});
}
if (data.entities) {
const from_way = ids[0];
const via_node = ids[3];
const to_way = ids[2].split(":")[1];
- let d = new QAItem(loc, this, k, itemId, {
- issueKey: k,
+ let d2 = new QAItem(loc, this, k2, itemId, {
+ issueKey: k2,
identifier: id2,
objectId: via_node,
objectType: "node"
});
const [p1, p2] = segments[0].points;
const dir_of_travel = cardinalDirection(relativeBearing(p1, p2));
- d.replacements = {
+ d2.replacements = {
num_passed: numberOfPasses,
num_trips: segments[0].numberOfTrips,
turn_restriction: turnType.toLowerCase(),
travel_direction: dir_of_travel,
junction: linkErrorObject(_t("QA.keepRight.error_parts.this_node"))
};
- _cache2.data[d.id] = d;
- _cache2.rtree.insert(encodeIssueRtree2(d));
+ _cache2.data[d2.id] = d2;
+ _cache2.rtree.insert(encodeIssueRtree2(d2));
dispatch3.call("loaded");
});
}
}).catch(() => {
- delete _cache2.inflightTile[tile.id][k];
+ delete _cache2.inflightTile[tile.id][k2];
if (!Object.keys(_cache2.inflightTile[tile.id]).length) {
delete _cache2.inflightTile[tile.id];
_cache2.loadedTile[tile.id] = true;
};
return json_default(url).then(cacheComments).then(() => item);
},
- postUpdate(d, callback) {
+ postUpdate(d2, callback) {
if (!osm_default.authenticated()) {
- return callback({ message: "Not Authenticated", status: -3 }, d);
+ return callback({ message: "Not Authenticated", status: -3 }, d2);
}
- if (_cache2.inflightPost[d.id]) {
- return callback({ message: "Error update already inflight", status: -2 }, d);
+ if (_cache2.inflightPost[d2.id]) {
+ return callback({ message: "Error update already inflight", status: -2 }, d2);
}
osm_default.userDetails(sendPayload.bind(this));
function sendPayload(err, user) {
if (err) {
- return callback(err, d);
+ return callback(err, d2);
}
- const key = d.issueKey;
+ const key = d2.issueKey;
const url = `${_impOsmUrls[key]}/comment`;
const payload = {
username: user.display_name,
- targetIds: [d.identifier]
+ targetIds: [d2.identifier]
};
- if (d.newStatus) {
- payload.status = d.newStatus;
+ if (d2.newStatus) {
+ payload.status = d2.newStatus;
payload.text = "status changed";
}
- if (d.newComment) {
- payload.text = d.newComment;
+ if (d2.newComment) {
+ payload.text = d2.newComment;
}
const controller = new AbortController();
- _cache2.inflightPost[d.id] = controller;
+ _cache2.inflightPost[d2.id] = controller;
const options2 = {
method: "POST",
signal: controller.signal,
body: JSON.stringify(payload)
};
json_default(url, options2).then(() => {
- delete _cache2.inflightPost[d.id];
- if (!d.newStatus) {
+ delete _cache2.inflightPost[d2.id];
+ if (!d2.newStatus) {
const now3 = /* @__PURE__ */ new Date();
- let comments = d.comments ? d.comments : [];
+ let comments = d2.comments ? d2.comments : [];
comments.push({
username: payload.username,
text: payload.text,
timestamp: now3.getTime() / 1e3
});
- this.replaceItem(d.update({
+ this.replaceItem(d2.update({
comments,
newComment: void 0
}));
} else {
- this.removeItem(d);
- if (d.newStatus === "SOLVED") {
- if (!(d.issueKey in _cache2.closed)) {
- _cache2.closed[d.issueKey] = 0;
+ this.removeItem(d2);
+ if (d2.newStatus === "SOLVED") {
+ if (!(d2.issueKey in _cache2.closed)) {
+ _cache2.closed[d2.issueKey] = 0;
}
- _cache2.closed[d.issueKey] += 1;
+ _cache2.closed[d2.issueKey] += 1;
}
}
if (callback)
- callback(null, d);
+ callback(null, d2);
}).catch((err2) => {
- delete _cache2.inflightPost[d.id];
+ delete _cache2.inflightPost[d2.id];
if (callback)
callback(err2.message);
});
const min3 = [viewport[0][0], viewport[1][1]];
const max3 = [viewport[1][0], viewport[0][1]];
const bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
- return _cache2.rtree.search(bbox2).map((d) => d.data);
+ return _cache2.rtree.search(bbox2).map((d2) => d2.data);
},
// Get a QAItem from cache
// NOTE: Don't change method name until UI v3 is merged
var import_rbush3 = __toESM(require_rbush_min());
// node_modules/marked/lib/marked.esm.js
- function getDefaults() {
+ function _getDefaults() {
return {
async: false,
baseUrl: null,
breaks: false,
extensions: null,
gfm: true,
- headerIds: true,
+ headerIds: false,
headerPrefix: "",
highlight: null,
+ hooks: null,
langPrefix: "language-",
- mangle: true,
+ mangle: false,
pedantic: false,
renderer: null,
sanitize: false,
xhtml: false
};
}
- var defaults = getDefaults();
+ var _defaults = _getDefaults();
function changeDefaults(newDefaults) {
- defaults = newDefaults;
+ _defaults = newDefaults;
}
var escapeTest = /[&<>"']/;
- var escapeReplace = /[&<>"']/g;
- var escapeTestNoEncode = /[<>"']|&(?!#?\w+;)/;
- var escapeReplaceNoEncode = /[<>"']|&(?!#?\w+;)/g;
+ var escapeReplace = new RegExp(escapeTest.source, "g");
+ var escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/;
+ var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, "g");
var escapeReplacements = {
"&": "&",
"<": "<",
}
var unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
function unescape3(html2) {
- return html2.replace(unescapeTest, (_, n2) => {
- n2 = n2.toLowerCase();
- if (n2 === "colon")
+ return html2.replace(unescapeTest, (_2, n3) => {
+ n3 = n3.toLowerCase();
+ if (n3 === "colon")
return ":";
- if (n2.charAt(0) === "#") {
- return n2.charAt(1) === "x" ? String.fromCharCode(parseInt(n2.substring(2), 16)) : String.fromCharCode(+n2.substring(1));
+ if (n3.charAt(0) === "#") {
+ return n3.charAt(1) === "x" ? String.fromCharCode(parseInt(n3.substring(2), 16)) : String.fromCharCode(+n3.substring(1));
}
return "";
});
opt = opt || "";
const obj = {
replace: (name, val) => {
- val = val.source || val;
+ val = typeof val === "object" && "source" in val ? val.source : val;
val = val.replace(caret, "$1");
regex = regex.replace(name, val);
return obj;
let prot;
try {
prot = decodeURIComponent(unescape3(href)).replace(nonWordAndColonTest, "").toLowerCase();
- } catch (e) {
+ } catch (e3) {
return null;
}
if (prot.indexOf("javascript:") === 0 || prot.indexOf("vbscript:") === 0 || prot.indexOf("data:") === 0) {
}
try {
href = encodeURI(href).replace(/%25/g, "%");
- } catch (e) {
+ } catch (e3) {
return null;
}
return href;
return base + href;
}
}
- var noopTest = { exec: function noopTest2() {
- } };
- function merge2(obj) {
- let i2 = 1, target, key;
- for (; i2 < arguments.length; i2++) {
- target = arguments[i2];
- for (key in target) {
- if (Object.prototype.hasOwnProperty.call(target, key)) {
- obj[key] = target[key];
- }
- }
- }
- return obj;
- }
+ var noopTest = { exec: () => null };
function splitCells(tableRow, count) {
const row = tableRow.replace(/\|/g, (match, offset, str2) => {
let escaped = false, curr = offset;
return " |";
}
}), cells = row.split(/ \|/);
- let i2 = 0;
+ let i3 = 0;
if (!cells[0].trim()) {
cells.shift();
}
if (cells.length > 0 && !cells[cells.length - 1].trim()) {
cells.pop();
}
- if (cells.length > count) {
- cells.splice(count);
- } else {
- while (cells.length < count)
- cells.push("");
+ if (count) {
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count)
+ cells.push("");
+ }
}
- for (; i2 < cells.length; i2++) {
- cells[i2] = cells[i2].trim().replace(/\\\|/g, "|");
+ for (; i3 < cells.length; i3++) {
+ cells[i3] = cells[i3].trim().replace(/\\\|/g, "|");
}
return cells;
}
- function rtrim(str2, c, invert) {
- const l = str2.length;
- if (l === 0) {
+ function rtrim(str2, c2, invert) {
+ const l2 = str2.length;
+ if (l2 === 0) {
return "";
}
let suffLen = 0;
- while (suffLen < l) {
- const currChar = str2.charAt(l - suffLen - 1);
- if (currChar === c && !invert) {
+ while (suffLen < l2) {
+ const currChar = str2.charAt(l2 - suffLen - 1);
+ if (currChar === c2 && !invert) {
suffLen++;
- } else if (currChar !== c && invert) {
+ } else if (currChar !== c2 && invert) {
suffLen++;
} else {
break;
}
}
- return str2.slice(0, l - suffLen);
+ return str2.slice(0, l2 - suffLen);
}
- function findClosingBracket(str2, b) {
- if (str2.indexOf(b[1]) === -1) {
+ function findClosingBracket(str2, b2) {
+ if (str2.indexOf(b2[1]) === -1) {
return -1;
}
- const l = str2.length;
- let level = 0, i2 = 0;
- for (; i2 < l; i2++) {
- if (str2[i2] === "\\") {
- i2++;
- } else if (str2[i2] === b[0]) {
+ const l2 = str2.length;
+ let level = 0, i3 = 0;
+ for (; i3 < l2; i3++) {
+ if (str2[i3] === "\\") {
+ i3++;
+ } else if (str2[i3] === b2[0]) {
level++;
- } else if (str2[i2] === b[1]) {
+ } else if (str2[i3] === b2[1]) {
level--;
if (level < 0) {
- return i2;
+ return i3;
}
}
}
return -1;
}
- function checkSanitizeDeprecation(opt) {
- if (opt && opt.sanitize && !opt.silent) {
+ function checkDeprecations(opt, callback) {
+ if (!opt || opt.silent) {
+ return;
+ }
+ if (callback) {
+ console.warn("marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async");
+ }
+ if (opt.sanitize || opt.sanitizer) {
console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options");
}
- }
- function repeatString(pattern, count) {
- if (count < 1) {
- return "";
+ if (opt.highlight || opt.langPrefix !== "language-") {
+ console.warn("marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.");
}
- let result = "";
- while (count > 1) {
- if (count & 1) {
- result += pattern;
- }
- count >>= 1;
- pattern += pattern;
+ if (opt.mangle) {
+ console.warn("marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.");
+ }
+ if (opt.baseUrl) {
+ console.warn("marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.");
+ }
+ if (opt.smartypants) {
+ console.warn("marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.");
+ }
+ if (opt.xhtml) {
+ console.warn("marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.");
+ }
+ if (opt.headerIds || opt.headerPrefix) {
+ console.warn("marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.");
}
- return result + pattern;
}
function outputLink(cap, link2, raw, lexer2) {
const href = link2.href;
return node;
}).join("\n");
}
- var Tokenizer = class {
+ var _Tokenizer = class {
+ options;
+ rules;
+ lexer;
constructor(options2) {
- this.options = options2 || defaults;
+ this.options = options2 || _defaults;
}
space(src) {
const cap = this.rules.block.newline.exec(src);
const cap = this.rules.block.blockquote.exec(src);
if (cap) {
const text2 = cap[0].replace(/^ *>[ \t]?/gm, "");
+ const top = this.lexer.state.top;
+ this.lexer.state.top = true;
+ const tokens = this.lexer.blockTokens(text2);
+ this.lexer.state.top = top;
return {
type: "blockquote",
raw: cap[0],
- tokens: this.lexer.blockTokens(text2, []),
+ tokens,
text: text2
};
}
list(src) {
let cap = this.rules.block.list.exec(src);
if (cap) {
- let raw, istask, ischecked, indent2, i2, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;
+ let raw, istask, ischecked, indent2, i3, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;
let bull = cap[1].trim();
const isordered = bull.length > 1;
const list = {
}
raw = cap[0];
src = src.substring(raw.length);
- line = cap[2].split("\n", 1)[0];
+ line = cap[2].split("\n", 1)[0].replace(/^\t+/, (t2) => " ".repeat(3 * t2.length));
nextLine = src.split("\n", 1)[0];
if (this.options.pedantic) {
indent2 = 2;
endEarly = true;
}
if (!endEarly) {
- const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent2 - 1)}}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))`);
+ const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent2 - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`);
const hrRegex = new RegExp(`^ {0,${Math.min(3, indent2 - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`);
const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent2 - 1)}}(?:\`\`\`|~~~)`);
const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent2 - 1)}}#`);
while (src) {
rawLine = src.split("\n", 1)[0];
- line = rawLine;
+ nextLine = rawLine;
if (this.options.pedantic) {
- line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, " ");
+ nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, " ");
}
- if (fencesBeginRegex.test(line)) {
+ if (fencesBeginRegex.test(nextLine)) {
break;
}
- if (headingBeginRegex.test(line)) {
+ if (headingBeginRegex.test(nextLine)) {
break;
}
- if (nextBulletRegex.test(line)) {
+ if (nextBulletRegex.test(nextLine)) {
break;
}
if (hrRegex.test(src)) {
break;
}
- if (line.search(/[^ ]/) >= indent2 || !line.trim()) {
- itemContents += "\n" + line.slice(indent2);
- } else if (!blankLine) {
- itemContents += "\n" + line;
+ if (nextLine.search(/[^ ]/) >= indent2 || !nextLine.trim()) {
+ itemContents += "\n" + nextLine.slice(indent2);
} else {
- break;
+ if (blankLine) {
+ break;
+ }
+ if (line.search(/[^ ]/) >= 4) {
+ break;
+ }
+ if (fencesBeginRegex.test(line)) {
+ break;
+ }
+ if (headingBeginRegex.test(line)) {
+ break;
+ }
+ if (hrRegex.test(line)) {
+ break;
+ }
+ itemContents += "\n" + nextLine;
}
- if (!blankLine && !line.trim()) {
+ if (!blankLine && !nextLine.trim()) {
blankLine = true;
}
raw += rawLine + "\n";
src = src.substring(rawLine.length + 1);
+ line = nextLine.slice(indent2);
}
}
if (!list.loose) {
list.items[list.items.length - 1].raw = raw.trimRight();
list.items[list.items.length - 1].text = itemContents.trimRight();
list.raw = list.raw.trimRight();
- const l = list.items.length;
- for (i2 = 0; i2 < l; i2++) {
+ const l2 = list.items.length;
+ for (i3 = 0; i3 < l2; i3++) {
this.lexer.state.top = false;
- list.items[i2].tokens = this.lexer.blockTokens(list.items[i2].text, []);
- const spacers = list.items[i2].tokens.filter((t) => t.type === "space");
- const hasMultipleLineBreaks = spacers.every((t) => {
- const chars = t.raw.split("");
- let lineBreaks = 0;
- for (const char of chars) {
- if (char === "\n") {
- lineBreaks += 1;
- }
- if (lineBreaks > 1) {
- return true;
- }
- }
- return false;
- });
- if (!list.loose && spacers.length && hasMultipleLineBreaks) {
- list.loose = true;
- list.items[i2].loose = true;
+ list.items[i3].tokens = this.lexer.blockTokens(list.items[i3].text, []);
+ if (!list.loose) {
+ const spacers = list.items[i3].tokens.filter((t2) => t2.type === "space");
+ const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t2) => /\n.*\n/.test(t2.raw));
+ list.loose = hasMultipleLineBreaks;
+ }
+ }
+ if (list.loose) {
+ for (i3 = 0; i3 < l2; i3++) {
+ list.items[i3].loose = true;
}
}
return list;
if (cap) {
const token = {
type: "html",
+ block: true,
raw: cap[0],
pre: !this.options.sanitizer && (cap[1] === "pre" || cap[1] === "script" || cap[1] === "style"),
text: cap[0]
};
if (this.options.sanitize) {
const text2 = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape4(cap[0]);
- token.type = "paragraph";
- token.text = text2;
- token.tokens = this.lexer.inline(text2);
+ const paragraph = token;
+ paragraph.type = "paragraph";
+ paragraph.text = text2;
+ paragraph.tokens = this.lexer.inline(text2);
}
return token;
}
def(src) {
const cap = this.rules.block.def.exec(src);
if (cap) {
- if (cap[3])
- cap[3] = cap[3].substring(1, cap[3].length - 1);
const tag = cap[1].toLowerCase().replace(/\s+/g, " ");
+ const href = cap[2] ? cap[2].replace(/^<(.*)>$/, "$1").replace(this.rules.inline._escapes, "$1") : "";
+ const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, "$1") : cap[3];
return {
type: "def",
tag,
raw: cap[0],
- href: cap[2] ? cap[2].replace(this.rules.inline._escapes, "$1") : cap[2],
- title: cap[3] ? cap[3].replace(this.rules.inline._escapes, "$1") : cap[3]
+ href,
+ title
};
}
}
if (cap) {
const item = {
type: "table",
- header: splitCells(cap[1]).map((c) => {
- return { text: c };
+ raw: cap[0],
+ header: splitCells(cap[1]).map((c2) => {
+ return { text: c2 };
}),
align: cap[2].replace(/^ *|\| *$/g, "").split(/ *\| */),
rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, "").split("\n") : []
};
if (item.header.length === item.align.length) {
- item.raw = cap[0];
- let l = item.align.length;
- let i2, j2, k, row;
- for (i2 = 0; i2 < l; i2++) {
- if (/^ *-+: *$/.test(item.align[i2])) {
- item.align[i2] = "right";
- } else if (/^ *:-+: *$/.test(item.align[i2])) {
- item.align[i2] = "center";
- } else if (/^ *:-+ *$/.test(item.align[i2])) {
- item.align[i2] = "left";
+ let l2 = item.align.length;
+ let i3, j3, k2, row;
+ for (i3 = 0; i3 < l2; i3++) {
+ if (/^ *-+: *$/.test(item.align[i3])) {
+ item.align[i3] = "right";
+ } else if (/^ *:-+: *$/.test(item.align[i3])) {
+ item.align[i3] = "center";
+ } else if (/^ *:-+ *$/.test(item.align[i3])) {
+ item.align[i3] = "left";
} else {
- item.align[i2] = null;
+ item.align[i3] = null;
}
}
- l = item.rows.length;
- for (i2 = 0; i2 < l; i2++) {
- item.rows[i2] = splitCells(item.rows[i2], item.header.length).map((c) => {
- return { text: c };
+ l2 = item.rows.length;
+ for (i3 = 0; i3 < l2; i3++) {
+ item.rows[i3] = splitCells(item.rows[i3], item.header.length).map((c2) => {
+ return { text: c2 };
});
}
- l = item.header.length;
- for (j2 = 0; j2 < l; j2++) {
- item.header[j2].tokens = this.lexer.inline(item.header[j2].text);
+ l2 = item.header.length;
+ for (j3 = 0; j3 < l2; j3++) {
+ item.header[j3].tokens = this.lexer.inline(item.header[j3].text);
}
- l = item.rows.length;
- for (j2 = 0; j2 < l; j2++) {
- row = item.rows[j2];
- for (k = 0; k < row.length; k++) {
- row[k].tokens = this.lexer.inline(row[k].text);
+ l2 = item.rows.length;
+ for (j3 = 0; j3 < l2; j3++) {
+ row = item.rows[j3];
+ for (k2 = 0; k2 < row.length; k2++) {
+ row[k2].tokens = this.lexer.inline(row[k2].text);
}
}
return item;
raw: cap[0],
inLink: this.lexer.state.inLink,
inRawBlock: this.lexer.state.inRawBlock,
+ block: false,
text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape4(cap[0]) : cap[0]
};
}
if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
let link2 = (cap[2] || cap[1]).replace(/\s+/g, " ");
link2 = links[link2.toLowerCase()];
- if (!link2 || !link2.href) {
+ if (!link2) {
const text2 = cap[0].charAt(0);
return {
type: "text",
if (match[3] && prevChar.match(/[\p{L}\p{N}]/u))
return;
const nextChar = match[1] || match[2] || "";
- if (!nextChar || nextChar && (prevChar === "" || this.rules.inline.punctuation.exec(prevChar))) {
- const lLength = match[0].length - 1;
+ if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {
+ const lLength = [...match[0]].length - 1;
let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;
const endReg = match[0][0] === "*" ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
endReg.lastIndex = 0;
rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
if (!rDelim)
continue;
- rLength = rDelim.length;
+ rLength = [...rDelim].length;
if (match[3] || match[4]) {
delimTotal += rLength;
continue;
if (delimTotal > 0)
continue;
rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
- const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);
+ const raw = [...src].slice(0, lLength + match.index + rLength + 1).join("");
if (Math.min(lLength, rLength) % 2) {
const text3 = raw.slice(1, -1);
return {
} while (prevCapZero !== cap[0]);
text2 = escape4(cap[0]);
if (cap[1] === "www.") {
- href = "http://" + text2;
+ href = "http://" + cap[0];
} else {
- href = text2;
+ href = cap[0];
}
}
return {
var block = {
newline: /^(?: *(?:\n|$))+/,
code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
- fences: /^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
+ fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
list: /^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,
html: "^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",
- def: /^ {0,3}\[(label)\]: *(?:\n *)?<?([^\s>]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
+ def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
table: noopTest,
- lheading: /^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ lheading: /^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
// regex template, placeholders will be replaced according to different paragraph
// interruption rules of commonmark and the original markdown spec:
_paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,
block._tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
block._comment = /<!--(?!-?>)[\s\S]*?(?:-->|$)/;
block.html = edit(block.html, "i").replace("comment", block._comment).replace("tag", block._tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
+ block.lheading = edit(block.lheading).replace(/bull/g, block.bullet).getRegex();
block.paragraph = edit(block._paragraph).replace("hr", block.hr).replace("heading", " {0,3}#{1,6} ").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", block._tag).getRegex();
block.blockquote = edit(block.blockquote).replace("paragraph", block.paragraph).getRegex();
- block.normal = merge2({}, block);
- block.gfm = merge2({}, block.normal, {
+ block.normal = { ...block };
+ block.gfm = {
+ ...block.normal,
table: "^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"
// Cells
- });
+ };
block.gfm.table = edit(block.gfm.table).replace("hr", block.hr).replace("heading", " {0,3}#{1,6} ").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", block._tag).getRegex();
block.gfm.paragraph = edit(block._paragraph).replace("hr", block.hr).replace("heading", " {0,3}#{1,6} ").replace("|lheading", "").replace("table", block.gfm.table).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", block._tag).getRegex();
- block.pedantic = merge2({}, block.normal, {
- html: edit(
- `^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`
- ).replace("comment", block._comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),
+ block.pedantic = {
+ ...block.normal,
+ html: edit(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", block._comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),
def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
heading: /^(#{1,6})(.*)(?:\n+|$)/,
fences: noopTest,
- // fences not supported
+ lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
paragraph: edit(block.normal._paragraph).replace("hr", block.hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", block.lheading).replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").getRegex()
- });
+ };
var inline = {
escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
url: noopTest,
tag: "^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",
- // CDATA section
link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,
reflink: /^!?\[(label)\]\[(ref)\]/,
nolink: /^!?\[(ref)\](?:\[\])?/,
reflinkSearch: "reflink|nolink(?!\\()",
emStrong: {
- lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
- // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
- // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
- rDelimAst: /^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,
- rDelimUnd: /^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/
+ lDelim: /^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,
+ // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
+ // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a
+ rDelimAst: /^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,
+ rDelimUnd: /^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/
// ^- Not allowed for _
},
code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
br: /^( {2,}|\\)\n(?!\s*$)/,
del: noopTest,
text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
- punctuation: /^([\spunctuation])/
+ punctuation: /^((?![*_])[\spunctuation])/
};
- inline._punctuation = "!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~";
- inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
- inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
- inline.escapedEmSt = /(?:^|[^\\])(?:\\\\)*\\[*_]/g;
+ inline._punctuation = "\\p{P}$+<=>`^|~";
+ inline.punctuation = edit(inline.punctuation, "u").replace(/punctuation/g, inline._punctuation).getRegex();
+ inline.blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g;
+ inline.anyPunctuation = /\\[punct]/g;
+ inline._escapes = /\\([punct])/g;
inline._comment = edit(block._comment).replace("(?:-->|$)", "-->").getRegex();
- inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
- inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, "g").replace(/punct/g, inline._punctuation).getRegex();
- inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, "g").replace(/punct/g, inline._punctuation).getRegex();
- inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+ inline.emStrong.lDelim = edit(inline.emStrong.lDelim, "u").replace(/punct/g, inline._punctuation).getRegex();
+ inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, "gu").replace(/punct/g, inline._punctuation).getRegex();
+ inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, "gu").replace(/punct/g, inline._punctuation).getRegex();
+ inline.anyPunctuation = edit(inline.anyPunctuation, "gu").replace(/punct/g, inline._punctuation).getRegex();
+ inline._escapes = edit(inline._escapes, "gu").replace(/punct/g, inline._punctuation).getRegex();
inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
inline.autolink = edit(inline.autolink).replace("scheme", inline._scheme).replace("email", inline._email).getRegex();
inline.reflink = edit(inline.reflink).replace("label", inline._label).replace("ref", block._label).getRegex();
inline.nolink = edit(inline.nolink).replace("ref", block._label).getRegex();
inline.reflinkSearch = edit(inline.reflinkSearch, "g").replace("reflink", inline.reflink).replace("nolink", inline.nolink).getRegex();
- inline.normal = merge2({}, inline);
- inline.pedantic = merge2({}, inline.normal, {
+ inline.normal = { ...inline };
+ inline.pedantic = {
+ ...inline.normal,
strong: {
start: /^__|\*\*/,
middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
},
link: edit(/^!?\[(label)\]\((.*?)\)/).replace("label", inline._label).getRegex(),
reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", inline._label).getRegex()
- });
- inline.gfm = merge2({}, inline.normal, {
+ };
+ inline.gfm = {
+ ...inline.normal,
escape: edit(inline.escape).replace("])", "~|])").getRegex(),
_extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
- _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
+ _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
- });
+ };
inline.gfm.url = edit(inline.gfm.url, "i").replace("email", inline.gfm._extended_email).getRegex();
- inline.breaks = merge2({}, inline.gfm, {
+ inline.breaks = {
+ ...inline.gfm,
br: edit(inline.br).replace("{2,}", "*").getRegex(),
text: edit(inline.gfm.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex()
- });
+ };
function smartypants(text2) {
return text2.replace(/---/g, "\u2014").replace(/--/g, "\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018").replace(/'/g, "\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201C").replace(/"/g, "\u201D").replace(/\.{3}/g, "\u2026");
}
function mangle(text2) {
- let out = "", i2, ch;
- const l = text2.length;
- for (i2 = 0; i2 < l; i2++) {
- ch = text2.charCodeAt(i2);
+ let out = "", i3, ch;
+ const l2 = text2.length;
+ for (i3 = 0; i3 < l2; i3++) {
+ ch = text2.charCodeAt(i3);
if (Math.random() > 0.5) {
ch = "x" + ch.toString(16);
}
}
return out;
}
- var Lexer = class {
+ var _Lexer = class __Lexer {
+ tokens;
+ options;
+ state;
+ tokenizer;
+ inlineQueue;
constructor(options2) {
this.tokens = [];
this.tokens.links = /* @__PURE__ */ Object.create(null);
- this.options = options2 || defaults;
- this.options.tokenizer = this.options.tokenizer || new Tokenizer();
+ this.options = options2 || _defaults;
+ this.options.tokenizer = this.options.tokenizer || new _Tokenizer();
this.tokenizer = this.options.tokenizer;
this.tokenizer.options = this.options;
this.tokenizer.lexer = this;
* Static Lex Method
*/
static lex(src, options2) {
- const lexer2 = new Lexer(options2);
+ const lexer2 = new __Lexer(options2);
return lexer2.lex(src);
}
/**
* Static Lex Inline Method
*/
static lexInline(src, options2) {
- const lexer2 = new Lexer(options2);
+ const lexer2 = new __Lexer(options2);
return lexer2.inlineTokens(src);
}
/**
}
return this.tokens;
}
- /**
- * Lexing
- */
blockTokens(src, tokens = []) {
if (this.options.pedantic) {
src = src.replace(/\t/g, " ").replace(/^ +$/gm, "");
} else {
- src = src.replace(/^( *)(\t+)/gm, (_, leading, tabs) => {
+ src = src.replace(/^( *)(\t+)/gm, (_2, leading, tabs) => {
return leading + " ".repeat(tabs.length);
});
}
- let token, lastToken, cutSrc, lastParagraphClipped;
+ let token;
+ let lastToken;
+ let cutSrc;
+ let lastParagraphClipped;
while (src) {
if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => {
if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
let startIndex = Infinity;
const tempSrc = src.slice(1);
let tempStart;
- this.options.extensions.startBlock.forEach(function(getStartIndex) {
+ this.options.extensions.startBlock.forEach((getStartIndex) => {
tempStart = getStartIndex.call({ lexer: this }, tempSrc);
if (typeof tempStart === "number" && tempStart >= 0) {
startIndex = Math.min(startIndex, tempStart);
if (links.length > 0) {
while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
if (links.includes(match[0].slice(match[0].lastIndexOf("[") + 1, -1))) {
- maskedSrc = maskedSrc.slice(0, match.index) + "[" + repeatString("a", match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
+ maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
}
}
}
}
while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
- maskedSrc = maskedSrc.slice(0, match.index) + "[" + repeatString("a", match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
+ maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
}
- while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
- maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
- this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
+ while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
}
while (src) {
if (!keepPrevChar) {
let startIndex = Infinity;
const tempSrc = src.slice(1);
let tempStart;
- this.options.extensions.startInline.forEach(function(getStartIndex) {
+ this.options.extensions.startInline.forEach((getStartIndex) => {
tempStart = getStartIndex.call({ lexer: this }, tempSrc);
if (typeof tempStart === "number" && tempStart >= 0) {
startIndex = Math.min(startIndex, tempStart);
return tokens;
}
};
- var Renderer = class {
+ var _Renderer = class {
+ options;
constructor(options2) {
- this.options = options2 || defaults;
+ this.options = options2 || _defaults;
}
code(code, infostring, escaped) {
const lang = (infostring || "").match(/\S*/)[0];
if (!lang) {
return "<pre><code>" + (escaped ? code : escape4(code, true)) + "</code></pre>\n";
}
- return '<pre><code class="' + this.options.langPrefix + escape4(lang, true) + '">' + (escaped ? code : escape4(code, true)) + "</code></pre>\n";
+ return '<pre><code class="' + this.options.langPrefix + escape4(lang) + '">' + (escaped ? code : escape4(code, true)) + "</code></pre>\n";
}
- /**
- * @param {string} quote
- */
blockquote(quote2) {
return `<blockquote>
${quote2}</blockquote>
`;
}
- html(html2) {
+ html(html2, block2) {
return html2;
}
- /**
- * @param {string} text
- * @param {string} level
- * @param {string} raw
- * @param {any} slugger
- */
heading(text2, level, raw, slugger) {
if (this.options.headerIds) {
const id2 = this.options.headerPrefix + slugger.slug(raw);
const type2 = ordered ? "ol" : "ul", startatt = ordered && start2 !== 1 ? ' start="' + start2 + '"' : "";
return "<" + type2 + startatt + ">\n" + body + "</" + type2 + ">\n";
}
- /**
- * @param {string} text
- */
- listitem(text2) {
+ listitem(text2, task, checked) {
return `<li>${text2}</li>
`;
}
checkbox(checked) {
return "<input " + (checked ? 'checked="" ' : "") + 'disabled="" type="checkbox"' + (this.options.xhtml ? " /" : "") + "> ";
}
- /**
- * @param {string} text
- */
paragraph(text2) {
return `<p>${text2}</p>
`;
}
- /**
- * @param {string} header
- * @param {string} body
- */
table(header, body) {
if (body)
body = `<tbody>${body}</tbody>`;
return "<table>\n<thead>\n" + header + "</thead>\n" + body + "</table>\n";
}
- /**
- * @param {string} content
- */
tablerow(content) {
return `<tr>
${content}</tr>
}
/**
* span level renderer
- * @param {string} text
*/
strong(text2) {
return `<strong>${text2}</strong>`;
}
- /**
- * @param {string} text
- */
em(text2) {
return `<em>${text2}</em>`;
}
- /**
- * @param {string} text
- */
codespan(text2) {
return `<code>${text2}</code>`;
}
br() {
return this.options.xhtml ? "<br/>" : "<br>";
}
- /**
- * @param {string} text
- */
del(text2) {
return `<del>${text2}</del>`;
}
- /**
- * @param {string} href
- * @param {string} title
- * @param {string} text
- */
link(href, title, text2) {
href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
if (href === null) {
return text2;
}
- let out = '<a href="' + escape4(href) + '"';
+ let out = '<a href="' + href + '"';
if (title) {
out += ' title="' + title + '"';
}
out += ">" + text2 + "</a>";
return out;
}
- /**
- * @param {string} href
- * @param {string} title
- * @param {string} text
- */
image(href, title, text2) {
href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
if (href === null) {
return text2;
}
};
- var TextRenderer = class {
+ var _TextRenderer = class {
// no need for block level renderers
strong(text2) {
return text2;
return "";
}
};
- var Slugger = class {
+ var _Slugger = class {
+ seen;
constructor() {
this.seen = {};
}
- /**
- * @param {string} value
- */
serialize(value) {
return value.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig, "").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, "").replace(/\s/g, "-");
}
/**
* Finds the next safe (unique) slug to use
- * @param {string} originalSlug
- * @param {boolean} isDryRun
*/
getNextSafeSlug(originalSlug, isDryRun) {
let slug = originalSlug;
}
/**
* Convert string to unique id
- * @param {object} [options]
- * @param {boolean} [options.dryrun] Generates the next unique slug without
- * updating the internal accumulator.
*/
slug(value, options2 = {}) {
const slug = this.serialize(value);
return this.getNextSafeSlug(slug, options2.dryrun);
}
};
- var Parser = class {
+ var _Parser = class __Parser {
+ options;
+ renderer;
+ textRenderer;
+ slugger;
constructor(options2) {
- this.options = options2 || defaults;
- this.options.renderer = this.options.renderer || new Renderer();
+ this.options = options2 || _defaults;
+ this.options.renderer = this.options.renderer || new _Renderer();
this.renderer = this.options.renderer;
this.renderer.options = this.options;
- this.textRenderer = new TextRenderer();
- this.slugger = new Slugger();
+ this.textRenderer = new _TextRenderer();
+ this.slugger = new _Slugger();
}
/**
* Static Parse Method
*/
static parse(tokens, options2) {
- const parser3 = new Parser(options2);
+ const parser3 = new __Parser(options2);
return parser3.parse(tokens);
}
/**
* Static Parse Inline Method
*/
static parseInline(tokens, options2) {
- const parser3 = new Parser(options2);
+ const parser3 = new __Parser(options2);
return parser3.parseInline(tokens);
}
/**
* Parse Loop
*/
parse(tokens, top = true) {
- let out = "", i2, j2, k, l2, l3, row, cell, header, body, token, ordered, start2, loose, itemBody, item, checked, task, checkbox, ret;
- const l = tokens.length;
- for (i2 = 0; i2 < l; i2++) {
- token = tokens[i2];
+ let out = "", i3, j3, k2, l2, l3, row, cell, header, body, token, ordered, start2, loose, itemBody, item, checked, task, checkbox, ret;
+ const l4 = tokens.length;
+ for (i3 = 0; i3 < l4; i3++) {
+ token = tokens[i3];
if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
if (ret !== false || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text"].includes(token.type)) {
continue;
}
case "heading": {
- out += this.renderer.heading(
- this.parseInline(token.tokens),
- token.depth,
- unescape3(this.parseInline(token.tokens, this.textRenderer)),
- this.slugger
- );
+ out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape3(this.parseInline(token.tokens, this.textRenderer)), this.slugger);
continue;
}
case "code": {
- out += this.renderer.code(
- token.text,
- token.lang,
- token.escaped
- );
+ out += this.renderer.code(token.text, token.lang, !!token.escaped);
continue;
}
case "table": {
header = "";
cell = "";
l2 = token.header.length;
- for (j2 = 0; j2 < l2; j2++) {
- cell += this.renderer.tablecell(
- this.parseInline(token.header[j2].tokens),
- { header: true, align: token.align[j2] }
- );
+ for (j3 = 0; j3 < l2; j3++) {
+ cell += this.renderer.tablecell(this.parseInline(token.header[j3].tokens), { header: true, align: token.align[j3] });
}
header += this.renderer.tablerow(cell);
body = "";
l2 = token.rows.length;
- for (j2 = 0; j2 < l2; j2++) {
- row = token.rows[j2];
+ for (j3 = 0; j3 < l2; j3++) {
+ row = token.rows[j3];
cell = "";
l3 = row.length;
- for (k = 0; k < l3; k++) {
- cell += this.renderer.tablecell(
- this.parseInline(row[k].tokens),
- { header: false, align: token.align[k] }
- );
+ for (k2 = 0; k2 < l3; k2++) {
+ cell += this.renderer.tablecell(this.parseInline(row[k2].tokens), { header: false, align: token.align[k2] });
}
body += this.renderer.tablerow(cell);
}
loose = token.loose;
l2 = token.items.length;
body = "";
- for (j2 = 0; j2 < l2; j2++) {
- item = token.items[j2];
+ for (j3 = 0; j3 < l2; j3++) {
+ item = token.items[j3];
checked = item.checked;
task = item.task;
itemBody = "";
if (item.task) {
- checkbox = this.renderer.checkbox(checked);
+ checkbox = this.renderer.checkbox(!!checked);
if (loose) {
if (item.tokens.length > 0 && item.tokens[0].type === "paragraph") {
item.tokens[0].text = checkbox + " " + item.tokens[0].text;
}
}
itemBody += this.parse(item.tokens, loose);
- body += this.renderer.listitem(itemBody, task, checked);
+ body += this.renderer.listitem(itemBody, task, !!checked);
}
out += this.renderer.list(body, ordered, start2);
continue;
}
case "html": {
- out += this.renderer.html(token.text);
+ out += this.renderer.html(token.text, token.block);
continue;
}
case "paragraph": {
}
case "text": {
body = token.tokens ? this.parseInline(token.tokens) : token.text;
- while (i2 + 1 < l && tokens[i2 + 1].type === "text") {
- token = tokens[++i2];
+ while (i3 + 1 < l4 && tokens[i3 + 1].type === "text") {
+ token = tokens[++i3];
body += "\n" + (token.tokens ? this.parseInline(token.tokens) : token.text);
}
out += top ? this.renderer.paragraph(body) : body;
const errMsg = 'Token with "' + token.type + '" type was not found.';
if (this.options.silent) {
console.error(errMsg);
- return;
+ return "";
} else {
throw new Error(errMsg);
}
*/
parseInline(tokens, renderer) {
renderer = renderer || this.renderer;
- let out = "", i2, token, ret;
- const l = tokens.length;
- for (i2 = 0; i2 < l; i2++) {
- token = tokens[i2];
+ let out = "", i3, token, ret;
+ const l2 = tokens.length;
+ for (i3 = 0; i3 < l2; i3++) {
+ token = tokens[i3];
if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
if (ret !== false || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(token.type)) {
const errMsg = 'Token with "' + token.type + '" type was not found.';
if (this.options.silent) {
console.error(errMsg);
- return;
+ return "";
} else {
throw new Error(errMsg);
}
return out;
}
};
- function marked(src, opt, callback) {
- if (typeof src === "undefined" || src === null) {
- throw new Error("marked(): input parameter is undefined or null");
+ var _Hooks = class {
+ options;
+ constructor(options2) {
+ this.options = options2 || _defaults;
+ }
+ static passThroughHooks = /* @__PURE__ */ new Set([
+ "preprocess",
+ "postprocess"
+ ]);
+ /**
+ * Process markdown before marked
+ */
+ preprocess(markdown) {
+ return markdown;
}
- if (typeof src !== "string") {
- throw new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected");
+ /**
+ * Process HTML after marked is finished
+ */
+ postprocess(html2) {
+ return html2;
}
- if (typeof opt === "function") {
- callback = opt;
- opt = null;
+ };
+ var Marked = class {
+ defaults = _getDefaults();
+ options = this.setOptions;
+ parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);
+ parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);
+ Parser = _Parser;
+ parser = _Parser.parse;
+ Renderer = _Renderer;
+ TextRenderer = _TextRenderer;
+ Lexer = _Lexer;
+ lexer = _Lexer.lex;
+ Tokenizer = _Tokenizer;
+ Slugger = _Slugger;
+ Hooks = _Hooks;
+ constructor(...args) {
+ this.use(...args);
}
- opt = merge2({}, marked.defaults, opt || {});
- checkSanitizeDeprecation(opt);
- if (callback) {
- const highlight = opt.highlight;
- let tokens;
- try {
- tokens = Lexer.lex(src, opt);
- } catch (e) {
- return callback(e);
- }
- const done = function(err) {
- let out;
- if (!err) {
- try {
- if (opt.walkTokens) {
- marked.walkTokens(tokens, opt.walkTokens);
+ /**
+ * Run callback for every token
+ */
+ walkTokens(tokens, callback) {
+ let values = [];
+ for (const token of tokens) {
+ values = values.concat(callback.call(this, token));
+ switch (token.type) {
+ case "table": {
+ for (const cell of token.header) {
+ values = values.concat(this.walkTokens(cell.tokens, callback));
+ }
+ for (const row of token.rows) {
+ for (const cell of row) {
+ values = values.concat(this.walkTokens(cell.tokens, callback));
+ }
+ }
+ break;
+ }
+ case "list": {
+ values = values.concat(this.walkTokens(token.items, callback));
+ break;
+ }
+ default: {
+ if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) {
+ this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {
+ values = values.concat(this.walkTokens(token[childTokens], callback));
+ });
+ } else if (token.tokens) {
+ values = values.concat(this.walkTokens(token.tokens, callback));
}
- out = Parser.parse(tokens, opt);
- } catch (e) {
- err = e;
}
}
- opt.highlight = highlight;
- return err ? callback(err) : callback(null, out);
- };
- if (!highlight || highlight.length < 3) {
- return done();
- }
- delete opt.highlight;
- if (!tokens.length)
- return done();
- let pending = 0;
- marked.walkTokens(tokens, function(token) {
- if (token.type === "code") {
- pending++;
- setTimeout(() => {
- highlight(token.text, token.lang, function(err, code) {
- if (err) {
- return done(err);
+ }
+ return values;
+ }
+ use(...args) {
+ const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };
+ args.forEach((pack) => {
+ const opts = { ...pack };
+ opts.async = this.defaults.async || opts.async || false;
+ if (pack.extensions) {
+ pack.extensions.forEach((ext) => {
+ if (!ext.name) {
+ throw new Error("extension name required");
+ }
+ if ("renderer" in ext) {
+ const prevRenderer = extensions.renderers[ext.name];
+ if (prevRenderer) {
+ extensions.renderers[ext.name] = function(...args2) {
+ let ret = ext.renderer.apply(this, args2);
+ if (ret === false) {
+ ret = prevRenderer.apply(this, args2);
+ }
+ return ret;
+ };
+ } else {
+ extensions.renderers[ext.name] = ext.renderer;
}
- if (code != null && code !== token.text) {
- token.text = code;
- token.escaped = true;
+ }
+ if ("tokenizer" in ext) {
+ if (!ext.level || ext.level !== "block" && ext.level !== "inline") {
+ throw new Error("extension level must be 'block' or 'inline'");
}
- pending--;
- if (pending === 0) {
- done();
+ if (extensions[ext.level]) {
+ extensions[ext.level].unshift(ext.tokenizer);
+ } else {
+ extensions[ext.level] = [ext.tokenizer];
}
- });
- }, 0);
- }
- });
- if (pending === 0) {
- done();
- }
- return;
- }
- function onError(e) {
- e.message += "\nPlease report this to https://github.com/markedjs/marked.";
- if (opt.silent) {
- return "<p>An error occurred:</p><pre>" + escape4(e.message + "", true) + "</pre>";
- }
- throw e;
- }
- try {
- const tokens = Lexer.lex(src, opt);
- if (opt.walkTokens) {
- if (opt.async) {
- return Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => {
- return Parser.parse(tokens, opt);
- }).catch(onError);
- }
- marked.walkTokens(tokens, opt.walkTokens);
- }
- return Parser.parse(tokens, opt);
- } catch (e) {
- onError(e);
- }
- }
- marked.options = marked.setOptions = function(opt) {
- merge2(marked.defaults, opt);
- changeDefaults(marked.defaults);
- return marked;
- };
- marked.getDefaults = getDefaults;
- marked.defaults = defaults;
- marked.use = function(...args) {
- const opts = merge2({}, ...args);
- const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };
- let hasExtensions;
- args.forEach((pack) => {
- if (pack.extensions) {
- hasExtensions = true;
- pack.extensions.forEach((ext) => {
- if (!ext.name) {
- throw new Error("extension name required");
- }
- if (ext.renderer) {
- const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;
- if (prevRenderer) {
- extensions.renderers[ext.name] = function(...args2) {
- let ret = ext.renderer.apply(this, args2);
+ if (ext.start) {
+ if (ext.level === "block") {
+ if (extensions.startBlock) {
+ extensions.startBlock.push(ext.start);
+ } else {
+ extensions.startBlock = [ext.start];
+ }
+ } else if (ext.level === "inline") {
+ if (extensions.startInline) {
+ extensions.startInline.push(ext.start);
+ } else {
+ extensions.startInline = [ext.start];
+ }
+ }
+ }
+ }
+ if ("childTokens" in ext && ext.childTokens) {
+ extensions.childTokens[ext.name] = ext.childTokens;
+ }
+ });
+ opts.extensions = extensions;
+ }
+ if (pack.renderer) {
+ const renderer = this.defaults.renderer || new _Renderer(this.defaults);
+ for (const prop in pack.renderer) {
+ const rendererFunc = pack.renderer[prop];
+ const rendererKey = prop;
+ const prevRenderer = renderer[rendererKey];
+ renderer[rendererKey] = (...args2) => {
+ let ret = rendererFunc.apply(renderer, args2);
+ if (ret === false) {
+ ret = prevRenderer.apply(renderer, args2);
+ }
+ return ret || "";
+ };
+ }
+ opts.renderer = renderer;
+ }
+ if (pack.tokenizer) {
+ const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);
+ for (const prop in pack.tokenizer) {
+ const tokenizerFunc = pack.tokenizer[prop];
+ const tokenizerKey = prop;
+ const prevTokenizer = tokenizer[tokenizerKey];
+ tokenizer[tokenizerKey] = (...args2) => {
+ let ret = tokenizerFunc.apply(tokenizer, args2);
+ if (ret === false) {
+ ret = prevTokenizer.apply(tokenizer, args2);
+ }
+ return ret;
+ };
+ }
+ opts.tokenizer = tokenizer;
+ }
+ if (pack.hooks) {
+ const hooks = this.defaults.hooks || new _Hooks();
+ for (const prop in pack.hooks) {
+ const hooksFunc = pack.hooks[prop];
+ const hooksKey = prop;
+ const prevHook = hooks[hooksKey];
+ if (_Hooks.passThroughHooks.has(prop)) {
+ hooks[hooksKey] = (arg) => {
+ if (this.defaults.async) {
+ return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => {
+ return prevHook.call(hooks, ret2);
+ });
+ }
+ const ret = hooksFunc.call(hooks, arg);
+ return prevHook.call(hooks, ret);
+ };
+ } else {
+ hooks[hooksKey] = (...args2) => {
+ let ret = hooksFunc.apply(hooks, args2);
if (ret === false) {
- ret = prevRenderer.apply(this, args2);
+ ret = prevHook.apply(hooks, args2);
}
return ret;
};
- } else {
- extensions.renderers[ext.name] = ext.renderer;
}
}
- if (ext.tokenizer) {
- if (!ext.level || ext.level !== "block" && ext.level !== "inline") {
- throw new Error("extension level must be 'block' or 'inline'");
+ opts.hooks = hooks;
+ }
+ if (pack.walkTokens) {
+ const walkTokens2 = this.defaults.walkTokens;
+ opts.walkTokens = function(token) {
+ let values = [];
+ values.push(pack.walkTokens.call(this, token));
+ if (walkTokens2) {
+ values = values.concat(walkTokens2.call(this, token));
}
- if (extensions[ext.level]) {
- extensions[ext.level].unshift(ext.tokenizer);
- } else {
- extensions[ext.level] = [ext.tokenizer];
+ return values;
+ };
+ }
+ this.defaults = { ...this.defaults, ...opts };
+ });
+ return this;
+ }
+ setOptions(opt) {
+ this.defaults = { ...this.defaults, ...opt };
+ return this;
+ }
+ #parseMarkdown(lexer2, parser3) {
+ return (src, optOrCallback, callback) => {
+ if (typeof optOrCallback === "function") {
+ callback = optOrCallback;
+ optOrCallback = null;
+ }
+ const origOpt = { ...optOrCallback };
+ const opt = { ...this.defaults, ...origOpt };
+ const throwError = this.#onError(!!opt.silent, !!opt.async, callback);
+ if (typeof src === "undefined" || src === null) {
+ return throwError(new Error("marked(): input parameter is undefined or null"));
+ }
+ if (typeof src !== "string") {
+ return throwError(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected"));
+ }
+ checkDeprecations(opt, callback);
+ if (opt.hooks) {
+ opt.hooks.options = opt;
+ }
+ if (callback) {
+ const highlight = opt.highlight;
+ let tokens;
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
}
- if (ext.start) {
- if (ext.level === "block") {
- if (extensions.startBlock) {
- extensions.startBlock.push(ext.start);
- } else {
- extensions.startBlock = [ext.start];
+ tokens = lexer2(src, opt);
+ } catch (e3) {
+ return throwError(e3);
+ }
+ const done = (err) => {
+ let out;
+ if (!err) {
+ try {
+ if (opt.walkTokens) {
+ this.walkTokens(tokens, opt.walkTokens);
}
- } else if (ext.level === "inline") {
- if (extensions.startInline) {
- extensions.startInline.push(ext.start);
- } else {
- extensions.startInline = [ext.start];
+ out = parser3(tokens, opt);
+ if (opt.hooks) {
+ out = opt.hooks.postprocess(out);
}
+ } catch (e3) {
+ err = e3;
}
}
- }
- if (ext.childTokens) {
- extensions.childTokens[ext.name] = ext.childTokens;
- }
- });
- }
- if (pack.renderer) {
- const renderer = marked.defaults.renderer || new Renderer();
- for (const prop in pack.renderer) {
- const prevRenderer = renderer[prop];
- renderer[prop] = (...args2) => {
- let ret = pack.renderer[prop].apply(renderer, args2);
- if (ret === false) {
- ret = prevRenderer.apply(renderer, args2);
- }
- return ret;
+ opt.highlight = highlight;
+ return err ? throwError(err) : callback(null, out);
};
- }
- opts.renderer = renderer;
- }
- if (pack.tokenizer) {
- const tokenizer = marked.defaults.tokenizer || new Tokenizer();
- for (const prop in pack.tokenizer) {
- const prevTokenizer = tokenizer[prop];
- tokenizer[prop] = (...args2) => {
- let ret = pack.tokenizer[prop].apply(tokenizer, args2);
- if (ret === false) {
- ret = prevTokenizer.apply(tokenizer, args2);
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+ delete opt.highlight;
+ if (!tokens.length)
+ return done();
+ let pending = 0;
+ this.walkTokens(tokens, (token) => {
+ if (token.type === "code") {
+ pending++;
+ setTimeout(() => {
+ highlight(token.text, token.lang, (err, code) => {
+ if (err) {
+ return done(err);
+ }
+ if (code != null && code !== token.text) {
+ token.text = code;
+ token.escaped = true;
+ }
+ pending--;
+ if (pending === 0) {
+ done();
+ }
+ });
+ }, 0);
}
- return ret;
- };
+ });
+ if (pending === 0) {
+ done();
+ }
+ return;
}
- opts.tokenizer = tokenizer;
- }
- if (pack.walkTokens) {
- const walkTokens2 = marked.defaults.walkTokens;
- opts.walkTokens = function(token) {
- let values = [];
- values.push(pack.walkTokens.call(this, token));
- if (walkTokens2) {
- values = values.concat(walkTokens2.call(this, token));
+ if (opt.async) {
+ return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser3(tokens, opt)).then((html2) => opt.hooks ? opt.hooks.postprocess(html2) : html2).catch(throwError);
+ }
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
}
- return values;
- };
- }
- if (hasExtensions) {
- opts.extensions = extensions;
- }
- marked.setOptions(opts);
- });
- };
- marked.walkTokens = function(tokens, callback) {
- let values = [];
- for (const token of tokens) {
- values = values.concat(callback.call(marked, token));
- switch (token.type) {
- case "table": {
- for (const cell of token.header) {
- values = values.concat(marked.walkTokens(cell.tokens, callback));
+ const tokens = lexer2(src, opt);
+ if (opt.walkTokens) {
+ this.walkTokens(tokens, opt.walkTokens);
}
- for (const row of token.rows) {
- for (const cell of row) {
- values = values.concat(marked.walkTokens(cell.tokens, callback));
- }
+ let html2 = parser3(tokens, opt);
+ if (opt.hooks) {
+ html2 = opt.hooks.postprocess(html2);
}
- break;
+ return html2;
+ } catch (e3) {
+ return throwError(e3);
}
- case "list": {
- values = values.concat(marked.walkTokens(token.items, callback));
- break;
- }
- default: {
- if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
- marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {
- values = values.concat(marked.walkTokens(token[childTokens], callback));
- });
- } else if (token.tokens) {
- values = values.concat(marked.walkTokens(token.tokens, callback));
+ };
+ }
+ #onError(silent, async, callback) {
+ return (e3) => {
+ e3.message += "\nPlease report this to https://github.com/markedjs/marked.";
+ if (silent) {
+ const msg = "<p>An error occurred:</p><pre>" + escape4(e3.message + "", true) + "</pre>";
+ if (async) {
+ return Promise.resolve(msg);
}
+ if (callback) {
+ callback(null, msg);
+ return;
+ }
+ return msg;
}
- }
+ if (async) {
+ return Promise.reject(e3);
+ }
+ if (callback) {
+ callback(e3);
+ return;
+ }
+ throw e3;
+ };
}
- return values;
};
- marked.parseInline = function(src, opt) {
- if (typeof src === "undefined" || src === null) {
- throw new Error("marked.parseInline(): input parameter is undefined or null");
- }
- if (typeof src !== "string") {
- throw new Error("marked.parseInline(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected");
- }
- opt = merge2({}, marked.defaults, opt || {});
- checkSanitizeDeprecation(opt);
- try {
- const tokens = Lexer.lexInline(src, opt);
- if (opt.walkTokens) {
- marked.walkTokens(tokens, opt.walkTokens);
- }
- return Parser.parseInline(tokens, opt);
- } catch (e) {
- e.message += "\nPlease report this to https://github.com/markedjs/marked.";
- if (opt.silent) {
- return "<p>An error occurred:</p><pre>" + escape4(e.message + "", true) + "</pre>";
- }
- throw e;
- }
+ var markedInstance = new Marked();
+ function marked(src, opt, callback) {
+ return markedInstance.parse(src, opt, callback);
+ }
+ marked.options = marked.setOptions = function(options2) {
+ markedInstance.setOptions(options2);
+ marked.defaults = markedInstance.defaults;
+ changeDefaults(marked.defaults);
+ return marked;
+ };
+ marked.getDefaults = _getDefaults;
+ marked.defaults = _defaults;
+ marked.use = function(...args) {
+ markedInstance.use(...args);
+ marked.defaults = markedInstance.defaults;
+ changeDefaults(marked.defaults);
+ return marked;
+ };
+ marked.walkTokens = function(tokens, callback) {
+ return markedInstance.walkTokens(tokens, callback);
};
- marked.Parser = Parser;
- marked.parser = Parser.parse;
- marked.Renderer = Renderer;
- marked.TextRenderer = TextRenderer;
- marked.Lexer = Lexer;
- marked.lexer = Lexer.lex;
- marked.Tokenizer = Tokenizer;
- marked.Slugger = Slugger;
+ marked.parseInline = markedInstance.parseInline;
+ marked.Parser = _Parser;
+ marked.parser = _Parser.parse;
+ marked.Renderer = _Renderer;
+ marked.TextRenderer = _TextRenderer;
+ marked.Lexer = _Lexer;
+ marked.lexer = _Lexer.lex;
+ marked.Tokenizer = _Tokenizer;
+ marked.Slugger = _Slugger;
+ marked.Hooks = _Hooks;
marked.parse = marked;
var options = marked.options;
var setOptions = marked.setOptions;
var use = marked.use;
var walkTokens = marked.walkTokens;
var parseInline = marked.parseInline;
- var parser2 = Parser.parse;
- var lexer = Lexer.lex;
+ var parser2 = _Parser.parse;
+ var lexer = _Lexer.lex;
// modules/services/osmose.js
var tiler3 = utilTiler();
}
}
function abortUnwantedRequests3(cache, tiles) {
- Object.keys(cache.inflightTile).forEach((k) => {
- let wanted = tiles.find((tile) => k === tile.id);
+ Object.keys(cache.inflightTile).forEach((k2) => {
+ let wanted = tiles.find((tile) => k2 === tile.id);
if (!wanted) {
- abortRequest3(cache.inflightTile[k]);
- delete cache.inflightTile[k];
+ abortRequest3(cache.inflightTile[k2]);
+ delete cache.inflightTile[k2];
}
});
}
- function encodeIssueRtree3(d) {
- return { minX: d.loc[0], minY: d.loc[1], maxX: d.loc[0], maxY: d.loc[1], data: d };
+ function encodeIssueRtree3(d2) {
+ return { minX: d2.loc[0], minY: d2.loc[1], maxX: d2.loc[0], maxY: d2.loc[1], data: d2 };
}
function updateRtree3(item, replace) {
- _cache3.rtree.remove(item, (a, b) => a.data.id === b.data.id);
+ _cache3.rtree.remove(item, (a2, b2) => a2.data.id === b2.data.id);
if (replace) {
_cache3.rtree.insert(item);
}
var osmose_default = {
title: "osmose",
init() {
- _mainFileFetcher.get("qa_data").then((d) => {
- _osmoseData = d.osmose;
- _osmoseData.items = Object.keys(d.osmose.icons).map((s) => s.split("-")[0]).reduce((unique, item) => unique.indexOf(item) !== -1 ? unique : [...unique, item], []);
+ _mainFileFetcher.get("qa_data").then((d2) => {
+ _osmoseData = d2.osmose;
+ _osmoseData.items = Object.keys(d2.osmose.icons).map((s2) => s2.split("-")[0]).reduce((unique, item) => unique.indexOf(item) !== -1 ? unique : [...unique, item], []);
});
if (!_cache3) {
this.reset();
tiles.forEach((tile) => {
if (_cache3.loadedTile[tile.id] || _cache3.inflightTile[tile.id])
return;
- let [x, y, z] = tile.xyz;
- let url = `${_osmoseUrlRoot}/issues/${z}/${x}/${y}.geojson?` + utilQsString(params);
+ let [x2, y2, z2] = tile.xyz;
+ let url = `${_osmoseUrlRoot}/issues/${z2}/${x2}/${y2}.geojson?` + utilQsString(params);
let controller = new AbortController();
_cache3.inflightTile[tile.id] = controller;
json_default(url, { signal: controller.signal }).then((data) => {
if (itemType in _osmoseData.icons) {
let loc = issue.geometry.coordinates;
loc = preventCoincident2(loc);
- let d = new QAItem(loc, this, itemType, id2, { item });
+ let d2 = new QAItem(loc, this, itemType, id2, { item });
if (item === 8300 || item === 8360) {
- d.elems = [];
+ d2.elems = [];
}
- _cache3.data[d.id] = d;
- _cache3.rtree.insert(encodeIssueRtree3(d));
+ _cache3.data[d2.id] = d2;
+ _cache3.rtree.insert(encodeIssueRtree3(d2));
}
});
}
}
const url = `${_osmoseUrlRoot}/issue/${issue.id}?langs=${_mainLocalizer.localeCode()}`;
const cacheDetails = (data) => {
- issue.elems = data.elems.map((e) => e.type.substring(0, 1) + e.id);
+ issue.elems = data.elems.map((e3) => e3.type.substring(0, 1) + e3.id);
issue.detail = data.subtitle ? marked(data.subtitle.auto) : "";
this.replaceItem(issue);
};
const min3 = [viewport[0][0], viewport[1][1]];
const max3 = [viewport[1][0], viewport[0][1]];
const bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
- return _cache3.rtree.search(bbox2).map((d) => d.data);
+ return _cache3.rtree.search(bbox2).map((d2) => d2.data);
},
// Get a QAItem from cache
// NOTE: Don't change method name until UI v3 is merged
var _mlyViewer;
var _mlyViewerFilter = ["all"];
function loadTiles(which, url, maxZoom2, projection2) {
- const tiler8 = utilTiler().zoomExtent([minZoom, maxZoom2]).skipNullIsland(true);
- const tiles = tiler8.getTiles(projection2);
+ const tiler9 = utilTiler().zoomExtent([minZoom, maxZoom2]).skipNullIsland(true);
+ const tiles = tiler9.getTiles(projection2);
tiles.forEach(function(tile) {
loadTile(which, url, tile);
});
}
function loadTileDataToCache(data, tile, which) {
const vectorTile = new import_vector_tile.VectorTile(new import_pbf.default(data));
- let features, cache, layer, i2, feature3, loc, d;
+ let features, cache, layer, i3, feature3, loc, d2;
if (vectorTile.layers.hasOwnProperty("image")) {
features = [];
cache = _mlyCache.images;
layer = vectorTile.layers.image;
- for (i2 = 0; i2 < layer.length; i2++) {
- feature3 = layer.feature(i2).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
+ for (i3 = 0; i3 < layer.length; i3++) {
+ feature3 = layer.feature(i3).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
loc = feature3.geometry.coordinates;
- d = {
+ d2 = {
loc,
captured_at: feature3.properties.captured_at,
ca: feature3.properties.compass_angle,
is_pano: feature3.properties.is_pano,
sequence_id: feature3.properties.sequence_id
};
- cache.forImageId[d.id] = d;
+ cache.forImageId[d2.id] = d2;
features.push({
minX: loc[0],
minY: loc[1],
maxX: loc[0],
maxY: loc[1],
- data: d
+ data: d2
});
}
if (cache.rtree) {
features = [];
cache = _mlyCache.sequences;
layer = vectorTile.layers.sequence;
- for (i2 = 0; i2 < layer.length; i2++) {
- feature3 = layer.feature(i2).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
+ for (i3 = 0; i3 < layer.length; i3++) {
+ feature3 = layer.feature(i3).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
if (cache.lineString[feature3.properties.id]) {
cache.lineString[feature3.properties.id].push(feature3);
} else {
features = [];
cache = _mlyCache[which];
layer = vectorTile.layers.point;
- for (i2 = 0; i2 < layer.length; i2++) {
- feature3 = layer.feature(i2).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
+ for (i3 = 0; i3 < layer.length; i3++) {
+ feature3 = layer.feature(i3).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
loc = feature3.geometry.coordinates;
- d = {
+ d2 = {
loc,
id: feature3.properties.id,
first_seen_at: feature3.properties.first_seen_at,
minY: loc[1],
maxX: loc[0],
maxY: loc[1],
- data: d
+ data: d2
});
}
if (cache.rtree) {
features = [];
cache = _mlyCache[which];
layer = vectorTile.layers.traffic_sign;
- for (i2 = 0; i2 < layer.length; i2++) {
- feature3 = layer.feature(i2).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
+ for (i3 = 0; i3 < layer.length; i3++) {
+ feature3 = layer.feature(i3).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
loc = feature3.geometry.coordinates;
- d = {
+ d2 = {
loc,
id: feature3.properties.id,
first_seen_at: feature3.properties.first_seen_at,
minY: loc[1],
maxX: loc[0],
maxY: loc[1],
- data: d
+ data: d2
});
}
if (cache.rtree) {
});
}
function partitionViewport(projection2) {
- const z = geoScaleToZoom(projection2.scale());
- const z2 = Math.ceil(z * 2) / 2 + 2.5;
- const tiler8 = utilTiler().zoomExtent([z2, z2]);
- return tiler8.getTiles(projection2).map(function(tile) {
+ const z2 = geoScaleToZoom(projection2.scale());
+ const z22 = Math.ceil(z2 * 2) / 2 + 2.5;
+ const tiler9 = utilTiler().zoomExtent([z22, z22]);
+ return tiler9.getTiles(projection2).map(function(tile) {
return tile.extent;
});
}
function searchLimited(limit, projection2, rtree) {
limit = limit || 5;
return partitionViewport(projection2).reduce(function(result, extent) {
- const found = rtree.search(extent.bbox()).slice(0, limit).map(function(d) {
- return d.data;
+ const found = rtree.search(extent.bbox()).slice(0, limit).map(function(d2) {
+ return d2.data;
});
return found.length ? result.concat(found) : result;
}, []);
const bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
const sequenceIds = {};
let lineStrings = [];
- _mlyCache.images.rtree.search(bbox2).forEach(function(d) {
- if (d.data.sequence_id) {
- sequenceIds[d.data.sequence_id] = true;
+ _mlyCache.images.rtree.search(bbox2).forEach(function(d2) {
+ if (d2.data.sequence_id) {
+ sequenceIds[d2.data.sequence_id] = true;
}
});
Object.keys(sequenceIds).forEach(function(sequenceId) {
}
dispatch5.call("imageChanged");
}
- function bearingChanged(e) {
- dispatch5.call("bearingChanged", void 0, e);
+ function bearingChanged(e3) {
+ dispatch5.call("bearingChanged", void 0, e3);
}
},
// Move to an image
selectImage: function(context, imageId) {
if (_mlyViewer && imageId) {
- _mlyViewer.moveTo(imageId).catch(function(e) {
- console.error("mly3", e);
+ _mlyViewer.moveTo(imageId).catch(function(e3) {
+ console.error("mly3", e3);
});
}
return this;
const hoveredImageId = hovered && hovered.id;
const hoveredSequenceId = hovered && hovered.sequence_id;
const selectedSequenceId = _mlyActiveImage && _mlyActiveImage.sequence_id;
- context.container().selectAll(".layer-mapillary .viewfield-group").classed("highlighted", function(d) {
- return d.sequence_id === selectedSequenceId || d.id === hoveredImageId;
- }).classed("hovered", function(d) {
- return d.id === hoveredImageId;
+ context.container().selectAll(".layer-mapillary .viewfield-group").classed("highlighted", function(d2) {
+ return d2.sequence_id === selectedSequenceId || d2.id === hoveredImageId;
+ }).classed("hovered", function(d2) {
+ return d2.id === hoveredImageId;
});
- context.container().selectAll(".layer-mapillary .sequence").classed("highlighted", function(d) {
- return d.properties.id === hoveredSequenceId;
- }).classed("currentView", function(d) {
- return d.properties.id === selectedSequenceId;
+ context.container().selectAll(".layer-mapillary .sequence").classed("highlighted", function(d2) {
+ return d2.properties.id === hoveredSequenceId;
+ }).classed("currentView", function(d2) {
+ return d2.properties.id === selectedSequenceId;
});
return this;
},
}
var decodedGeometry = window.atob(data.geometry);
var uintArray = new Uint8Array(decodedGeometry.length);
- for (var i2 = 0; i2 < decodedGeometry.length; i2++) {
- uintArray[i2] = decodedGeometry.charCodeAt(i2);
+ for (var i3 = 0; i3 < decodedGeometry.length; i3++) {
+ uintArray[i3] = decodedGeometry.charCodeAt(i3);
}
const tile = new import_vector_tile.VectorTile(new import_pbf.default(uintArray.buffer));
const layer = tile.layers["mpy-or"];
return {
equals: function(equals) {
return function(tags) {
- return Object.keys(equals).every(function(k) {
- return equals[k] === tags[k];
+ return Object.keys(equals).every(function(k2) {
+ return equals[k2] === tags[k2];
});
};
},
notEquals: function(notEquals) {
return function(tags) {
- return Object.keys(notEquals).some(function(k) {
- return notEquals[k] !== tags[k];
+ return Object.keys(notEquals).some(function(k2) {
+ return notEquals[k2] !== tags[k2];
});
};
},
var tagMap = Object.keys(selector).reduce(function(expectedTags, key) {
var values;
var isRegex = /regex/gi.test(key);
- var isEqual = /equals/gi.test(key);
- if (isRegex || isEqual) {
+ var isEqual4 = /equals/gi.test(key);
+ if (isRegex || isEqual4) {
Object.keys(selector[key]).forEach(function(selectorKey) {
- values = isEqual ? [selector[key][selectorKey]] : getRegexValues(selector[key][selectorKey]);
+ values = isEqual4 ? [selector[key][selectorKey]] : getRegexValues(selector[key][selectorKey]);
if (expectedTags.hasOwnProperty(selectorKey)) {
values = values.concat(expectedTags[selectorKey]);
}
};
// modules/services/nominatim.js
- var import_rbush5 = __toESM(require_rbush_min());
- var apibase = nominatimApiUrl;
- var _inflight = {};
- var _nominatimCache;
- var nominatim_default = {
- init: function() {
- _inflight = {};
- _nominatimCache = new import_rbush5.default();
- },
- reset: function() {
- Object.values(_inflight).forEach(function(controller) {
- controller.abort();
+ var import_rbush7 = __toESM(require_rbush_min());
+
+ // modules/core/difference.js
+ var import_fast_deep_equal3 = __toESM(require_fast_deep_equal());
+ function coreDifference(base, head) {
+ var _changes = {};
+ var _didChange = {};
+ var _diff = {};
+ function checkEntityID(id2) {
+ var h2 = head.entities[id2];
+ var b2 = base.entities[id2];
+ if (h2 === b2)
+ return;
+ if (_changes[id2])
+ return;
+ if (!h2 && b2) {
+ _changes[id2] = { base: b2, head: h2 };
+ _didChange.deletion = true;
+ return;
+ }
+ if (h2 && !b2) {
+ _changes[id2] = { base: b2, head: h2 };
+ _didChange.addition = true;
+ return;
+ }
+ if (h2 && b2) {
+ if (h2.members && b2.members && !(0, import_fast_deep_equal3.default)(h2.members, b2.members)) {
+ _changes[id2] = { base: b2, head: h2 };
+ _didChange.geometry = true;
+ _didChange.properties = true;
+ return;
+ }
+ if (h2.loc && b2.loc && !geoVecEqual(h2.loc, b2.loc)) {
+ _changes[id2] = { base: b2, head: h2 };
+ _didChange.geometry = true;
+ }
+ if (h2.nodes && b2.nodes && !(0, import_fast_deep_equal3.default)(h2.nodes, b2.nodes)) {
+ _changes[id2] = { base: b2, head: h2 };
+ _didChange.geometry = true;
+ }
+ if (h2.tags && b2.tags && !(0, import_fast_deep_equal3.default)(h2.tags, b2.tags)) {
+ _changes[id2] = { base: b2, head: h2 };
+ _didChange.properties = true;
+ }
+ }
+ }
+ function load() {
+ var ids = utilArrayUniq(Object.keys(head.entities).concat(Object.keys(base.entities)));
+ for (var i3 = 0; i3 < ids.length; i3++) {
+ checkEntityID(ids[i3]);
+ }
+ }
+ load();
+ _diff.length = function length() {
+ return Object.keys(_changes).length;
+ };
+ _diff.changes = function changes() {
+ return _changes;
+ };
+ _diff.didChange = _didChange;
+ _diff.extantIDs = function extantIDs(includeRelMembers) {
+ var result = /* @__PURE__ */ new Set();
+ Object.keys(_changes).forEach(function(id2) {
+ if (_changes[id2].head) {
+ result.add(id2);
+ }
+ var h2 = _changes[id2].head;
+ var b2 = _changes[id2].base;
+ var entity = h2 || b2;
+ if (includeRelMembers && entity.type === "relation") {
+ var mh = h2 ? h2.members.map(function(m2) {
+ return m2.id;
+ }) : [];
+ var mb = b2 ? b2.members.map(function(m2) {
+ return m2.id;
+ }) : [];
+ utilArrayUnion(mh, mb).forEach(function(memberID) {
+ if (head.hasEntity(memberID)) {
+ result.add(memberID);
+ }
+ });
+ }
});
- _inflight = {};
- _nominatimCache = new import_rbush5.default();
- },
- countryCode: function(location, callback) {
- this.reverse(location, function(err, result) {
- if (err) {
- return callback(err);
- } else if (result.address) {
- return callback(null, result.address.country_code);
- } else {
- return callback("Unable to geocode", null);
+ return Array.from(result);
+ };
+ _diff.modified = function modified() {
+ var result = [];
+ Object.values(_changes).forEach(function(change) {
+ if (change.base && change.head) {
+ result.push(change.head);
}
});
- },
- reverse: function(loc, callback) {
- var cached = _nominatimCache.search(
- { minX: loc[0], minY: loc[1], maxX: loc[0], maxY: loc[1] }
- );
- if (cached.length > 0) {
- if (callback)
- callback(null, cached[0].data);
- return;
+ return result;
+ };
+ _diff.created = function created() {
+ var result = [];
+ Object.values(_changes).forEach(function(change) {
+ if (!change.base && change.head) {
+ result.push(change.head);
+ }
+ });
+ return result;
+ };
+ _diff.deleted = function deleted() {
+ var result = [];
+ Object.values(_changes).forEach(function(change) {
+ if (change.base && !change.head) {
+ result.push(change.base);
+ }
+ });
+ return result;
+ };
+ _diff.summary = function summary() {
+ var relevant = {};
+ var keys2 = Object.keys(_changes);
+ for (var i3 = 0; i3 < keys2.length; i3++) {
+ var change = _changes[keys2[i3]];
+ if (change.head && change.head.geometry(head) !== "vertex") {
+ addEntity(change.head, head, change.base ? "modified" : "created");
+ } else if (change.base && change.base.geometry(base) !== "vertex") {
+ addEntity(change.base, base, "deleted");
+ } else if (change.base && change.head) {
+ var moved = !(0, import_fast_deep_equal3.default)(change.base.loc, change.head.loc);
+ var retagged = !(0, import_fast_deep_equal3.default)(change.base.tags, change.head.tags);
+ if (moved) {
+ addParents(change.head);
+ }
+ if (retagged || moved && change.head.hasInterestingTags()) {
+ addEntity(change.head, head, "modified");
+ }
+ } else if (change.head && change.head.hasInterestingTags()) {
+ addEntity(change.head, head, "created");
+ } else if (change.base && change.base.hasInterestingTags()) {
+ addEntity(change.base, base, "deleted");
+ }
}
- var params = { zoom: 13, format: "json", addressdetails: 1, lat: loc[1], lon: loc[0] };
- var url = apibase + "reverse?" + utilQsString(params);
- if (_inflight[url])
- return;
- var controller = new AbortController();
- _inflight[url] = controller;
- json_default(url, { signal: controller.signal }).then(function(result) {
- delete _inflight[url];
- if (result && result.error) {
- throw new Error(result.error);
+ return Object.values(relevant);
+ function addEntity(entity, graph, changeType) {
+ relevant[entity.id] = {
+ entity,
+ graph,
+ changeType
+ };
+ }
+ function addParents(entity) {
+ var parents = head.parentWays(entity);
+ for (var j3 = parents.length - 1; j3 >= 0; j3--) {
+ var parent = parents[j3];
+ if (!(parent.id in relevant)) {
+ addEntity(parent, head, "modified");
+ }
+ }
+ }
+ };
+ _diff.complete = function complete(extent) {
+ var result = {};
+ var id2, change;
+ for (id2 in _changes) {
+ change = _changes[id2];
+ var h2 = change.head;
+ var b2 = change.base;
+ var entity = h2 || b2;
+ var i3;
+ if (extent && (!h2 || !h2.intersects(extent, head)) && (!b2 || !b2.intersects(extent, base))) {
+ continue;
+ }
+ result[id2] = h2;
+ if (entity.type === "way") {
+ var nh = h2 ? h2.nodes : [];
+ var nb = b2 ? b2.nodes : [];
+ var diff;
+ diff = utilArrayDifference(nh, nb);
+ for (i3 = 0; i3 < diff.length; i3++) {
+ result[diff[i3]] = head.hasEntity(diff[i3]);
+ }
+ diff = utilArrayDifference(nb, nh);
+ for (i3 = 0; i3 < diff.length; i3++) {
+ result[diff[i3]] = head.hasEntity(diff[i3]);
+ }
+ }
+ if (entity.type === "relation" && entity.isMultipolygon()) {
+ var mh = h2 ? h2.members.map(function(m2) {
+ return m2.id;
+ }) : [];
+ var mb = b2 ? b2.members.map(function(m2) {
+ return m2.id;
+ }) : [];
+ var ids = utilArrayUnion(mh, mb);
+ for (i3 = 0; i3 < ids.length; i3++) {
+ var member = head.hasEntity(ids[i3]);
+ if (!member)
+ continue;
+ if (extent && !member.intersects(extent, head))
+ continue;
+ result[ids[i3]] = member;
+ }
+ }
+ addParents(head.parentWays(entity), result);
+ addParents(head.parentRelations(entity), result);
+ }
+ return result;
+ function addParents(parents, result2) {
+ for (var i4 = 0; i4 < parents.length; i4++) {
+ var parent = parents[i4];
+ if (parent.id in result2)
+ continue;
+ result2[parent.id] = parent;
+ addParents(head.parentRelations(parent), result2);
+ }
+ }
+ };
+ return _diff;
+ }
+
+ // modules/core/tree.js
+ var import_rbush5 = __toESM(require_rbush_min());
+ function coreTree(head) {
+ var _rtree = new import_rbush5.default();
+ var _bboxes = {};
+ var _segmentsRTree = new import_rbush5.default();
+ var _segmentsBBoxes = {};
+ var _segmentsByWayId = {};
+ var tree = {};
+ function entityBBox(entity) {
+ var bbox2 = entity.extent(head).bbox();
+ bbox2.id = entity.id;
+ _bboxes[entity.id] = bbox2;
+ return bbox2;
+ }
+ function segmentBBox(segment) {
+ var extent = segment.extent(head);
+ if (!extent)
+ return null;
+ var bbox2 = extent.bbox();
+ bbox2.segment = segment;
+ _segmentsBBoxes[segment.id] = bbox2;
+ return bbox2;
+ }
+ function removeEntity(entity) {
+ _rtree.remove(_bboxes[entity.id]);
+ delete _bboxes[entity.id];
+ if (_segmentsByWayId[entity.id]) {
+ _segmentsByWayId[entity.id].forEach(function(segment) {
+ _segmentsRTree.remove(_segmentsBBoxes[segment.id]);
+ delete _segmentsBBoxes[segment.id];
+ });
+ delete _segmentsByWayId[entity.id];
+ }
+ }
+ function loadEntities(entities) {
+ _rtree.load(entities.map(entityBBox));
+ var segments = [];
+ entities.forEach(function(entity) {
+ if (entity.segments) {
+ var entitySegments = entity.segments(head);
+ _segmentsByWayId[entity.id] = entitySegments;
+ segments = segments.concat(entitySegments);
}
- var extent = geoExtent(loc).padByMeters(200);
- _nominatimCache.insert(Object.assign(extent.bbox(), { data: result }));
- if (callback)
- callback(null, result);
- }).catch(function(err) {
- delete _inflight[url];
- if (err.name === "AbortError")
- return;
- if (callback)
- callback(err.message);
});
- },
- search: function(val, callback) {
- var searchVal = encodeURIComponent(val);
- var url = apibase + "search/" + searchVal + "?limit=10&format=json";
- if (_inflight[url])
- return;
- var controller = new AbortController();
- _inflight[url] = controller;
- json_default(url, { signal: controller.signal }).then(function(result) {
- delete _inflight[url];
- if (result && result.error) {
- throw new Error(result.error);
+ if (segments.length)
+ _segmentsRTree.load(segments.map(segmentBBox).filter(Boolean));
+ }
+ function updateParents(entity, insertions, memo) {
+ head.parentWays(entity).forEach(function(way) {
+ if (_bboxes[way.id]) {
+ removeEntity(way);
+ insertions[way.id] = way;
}
- if (callback)
- callback(null, result);
- }).catch(function(err) {
- delete _inflight[url];
- if (err.name === "AbortError")
+ updateParents(way, insertions, memo);
+ });
+ head.parentRelations(entity).forEach(function(relation) {
+ if (memo[entity.id])
return;
- if (callback)
- callback(err.message);
+ memo[entity.id] = true;
+ if (_bboxes[relation.id]) {
+ removeEntity(relation);
+ insertions[relation.id] = relation;
+ }
+ updateParents(relation, insertions, memo);
});
}
- };
+ tree.rebase = function(entities, force) {
+ var insertions = {};
+ for (var i3 = 0; i3 < entities.length; i3++) {
+ var entity = entities[i3];
+ if (!entity.visible)
+ continue;
+ if (head.entities.hasOwnProperty(entity.id) || _bboxes[entity.id]) {
+ if (!force) {
+ continue;
+ } else if (_bboxes[entity.id]) {
+ removeEntity(entity);
+ }
+ }
+ insertions[entity.id] = entity;
+ updateParents(entity, insertions, {});
+ }
+ loadEntities(Object.values(insertions));
+ return tree;
+ };
+ function updateToGraph(graph) {
+ if (graph === head)
+ return;
+ var diff = coreDifference(head, graph);
+ head = graph;
+ var changed = diff.didChange;
+ if (!changed.addition && !changed.deletion && !changed.geometry)
+ return;
+ var insertions = {};
+ if (changed.deletion) {
+ diff.deleted().forEach(function(entity) {
+ removeEntity(entity);
+ });
+ }
+ if (changed.geometry) {
+ diff.modified().forEach(function(entity) {
+ removeEntity(entity);
+ insertions[entity.id] = entity;
+ updateParents(entity, insertions, {});
+ });
+ }
+ if (changed.addition) {
+ diff.created().forEach(function(entity) {
+ insertions[entity.id] = entity;
+ });
+ }
+ loadEntities(Object.values(insertions));
+ }
+ tree.intersects = function(extent, graph) {
+ updateToGraph(graph);
+ return _rtree.search(extent.bbox()).map(function(bbox2) {
+ return graph.entity(bbox2.id);
+ });
+ };
+ tree.waySegments = function(extent, graph) {
+ updateToGraph(graph);
+ return _segmentsRTree.search(extent.bbox()).map(function(bbox2) {
+ return bbox2.segment;
+ });
+ };
+ return tree;
+ }
- // node_modules/name-suggestion-index/lib/matcher.js
- var import_which_polygon3 = __toESM(require_which_polygon(), 1);
+ // modules/svg/icon.js
+ function svgIcon(name, svgklass, useklass) {
+ return function drawIcon(selection2) {
+ selection2.selectAll("svg.icon" + (svgklass ? "." + svgklass.split(" ")[0] : "")).data([0]).enter().append("svg").attr("class", "icon " + (svgklass || "")).append("use").attr("xlink:href", name).attr("class", useklass);
+ };
+ }
- // node_modules/name-suggestion-index/lib/simplify.js
- var import_diacritics2 = __toESM(require_diacritics(), 1);
- function simplify(str2) {
- if (typeof str2 !== "string")
- return "";
- return import_diacritics2.default.remove(
- str2.replace(/&/g, "and").replace(/İ/ig, "i").replace(/[\s\-=_!"#%'*{},.\/:;?\(\)\[\]@\\$\^*+<>«»~`’\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2000-\u206f\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e7f\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\ufeff\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g, "").toLowerCase()
- );
- }
-
- // node_modules/name-suggestion-index/config/matchGroups.json
- var matchGroups_default = {
- matchGroups: {
- adult_gaming_centre: [
- "amenity/casino",
- "amenity/gambling",
- "leisure/adult_gaming_centre"
- ],
- beauty: [
- "shop/beauty",
- "shop/hairdresser_supply"
- ],
- bed: [
- "shop/bed",
- "shop/furniture"
- ],
- beverages: [
- "shop/alcohol",
- "shop/beer",
- "shop/beverages",
- "shop/kiosk",
- "shop/wine"
- ],
- camping: [
- "tourism/camp_site",
- "tourism/caravan_site"
- ],
- car_parts: [
- "shop/car_parts",
- "shop/car_repair",
- "shop/tires",
- "shop/tyres"
- ],
- clinic: [
- "amenity/clinic",
- "amenity/doctors",
- "healthcare/clinic",
- "healthcare/laboratory",
- "healthcare/physiotherapist",
- "healthcare/sample_collection",
- "healthcare/dialysis"
- ],
- convenience: [
- "shop/beauty",
- "shop/chemist",
- "shop/convenience",
- "shop/cosmetics",
- "shop/grocery",
- "shop/kiosk",
- "shop/newsagent",
- "shop/perfumery"
- ],
- coworking: [
- "amenity/coworking_space",
- "office/coworking",
- "office/coworking_space"
- ],
- dentist: [
- "amenity/dentist",
- "amenity/doctors",
- "healthcare/dentist"
- ],
- electronics: [
- "office/telecommunication",
- "shop/computer",
- "shop/electronics",
- "shop/hifi",
- "shop/kiosk",
- "shop/mobile",
- "shop/mobile_phone",
- "shop/telecommunication"
- ],
- fabric: [
- "shop/fabric",
- "shop/haberdashery",
- "shop/sewing"
- ],
- fashion: [
- "shop/accessories",
- "shop/bag",
- "shop/boutique",
- "shop/clothes",
- "shop/department_store",
- "shop/fashion",
- "shop/fashion_accessories",
- "shop/sports",
- "shop/shoes"
- ],
- financial: [
- "amenity/bank",
- "office/accountant",
- "office/financial",
- "office/financial_advisor",
- "office/tax_advisor",
- "shop/tax"
- ],
- fitness: [
- "leisure/fitness_centre",
- "leisure/fitness_center",
- "leisure/sports_centre",
- "leisure/sports_center"
- ],
- food: [
- "amenity/bar",
- "amenity/cafe",
- "amenity/fast_food",
- "amenity/ice_cream",
- "amenity/pub",
- "amenity/restaurant",
- "shop/bakery",
- "shop/candy",
- "shop/chocolate",
- "shop/coffee",
- "shop/confectionary",
- "shop/confectionery",
- "shop/food",
- "shop/kiosk",
- "shop/ice_cream",
- "shop/pastry",
- "shop/tea"
- ],
- fuel: [
- "amenity/fuel",
- "shop/gas",
- "shop/convenience;gas",
- "shop/gas;convenience"
- ],
- gift: [
- "shop/gift",
- "shop/card",
- "shop/cards",
- "shop/kiosk",
- "shop/stationery"
- ],
- hardware: [
- "shop/bathroom_furnishing",
- "shop/carpet",
- "shop/diy",
- "shop/doityourself",
- "shop/doors",
- "shop/electrical",
- "shop/flooring",
- "shop/hardware",
- "shop/hardware_store",
- "shop/power_tools",
- "shop/tool_hire",
- "shop/tools",
- "shop/trade"
- ],
- health_food: [
- "shop/health",
- "shop/health_food",
- "shop/herbalist",
- "shop/nutrition_supplements"
- ],
- hobby: [
- "shop/electronics",
- "shop/hobby",
- "shop/books",
- "shop/games",
- "shop/collector",
- "shop/toys",
- "shop/model",
- "shop/video_games",
- "shop/anime"
- ],
- hospital: [
- "amenity/doctors",
- "amenity/hospital",
- "healthcare/hospital"
- ],
- houseware: [
- "shop/houseware",
- "shop/interior_decoration"
- ],
- lifeboat_station: [
- "amenity/lifeboat_station",
- "emergency/lifeboat_station",
- "emergency/marine_rescue"
- ],
- lodging: [
- "tourism/hotel",
- "tourism/motel"
- ],
- money_transfer: [
- "amenity/money_transfer",
- "shop/money_transfer"
- ],
- office_supplies: [
- "shop/office_supplies",
- "shop/stationary",
- "shop/stationery"
- ],
- outdoor: [
- "shop/clothes",
- "shop/outdoor",
- "shop/sports"
- ],
- parcel_locker: [
- "amenity/parcel_locker",
- "amenity/vending_machine"
- ],
- pharmacy: [
- "amenity/doctors",
- "amenity/pharmacy",
- "healthcare/pharmacy"
- ],
- playground: [
- "amenity/theme_park",
- "leisure/amusement_arcade",
- "leisure/playground"
- ],
- rental: [
- "amenity/bicycle_rental",
- "amenity/boat_rental",
- "amenity/car_rental",
- "amenity/truck_rental",
- "amenity/vehicle_rental",
- "shop/kiosk",
- "shop/rental"
- ],
- school: [
- "amenity/childcare",
- "amenity/college",
- "amenity/kindergarten",
- "amenity/language_school",
- "amenity/prep_school",
- "amenity/school",
- "amenity/university"
- ],
- storage: [
- "shop/storage_units",
- "shop/storage_rental"
- ],
- substation: [
- "power/station",
- "power/substation",
- "power/sub_station"
- ],
- supermarket: [
- "shop/food",
- "shop/frozen_food",
- "shop/greengrocer",
- "shop/grocery",
- "shop/supermarket",
- "shop/wholesale"
- ],
- variety_store: [
- "shop/variety_store",
- "shop/discount",
- "shop/convenience"
- ],
- vending: [
- "amenity/vending_machine",
- "shop/kiosk",
- "shop/vending_machine"
- ],
- weight_loss: [
- "amenity/clinic",
- "amenity/doctors",
- "amenity/weight_clinic",
- "healthcare/counselling",
- "leisure/fitness_centre",
- "office/therapist",
- "shop/beauty",
- "shop/diet",
- "shop/food",
- "shop/health_food",
- "shop/herbalist",
- "shop/nutrition",
- "shop/nutrition_supplements",
- "shop/weight_loss"
- ],
- wholesale: [
- "shop/wholesale",
- "shop/supermarket",
- "shop/department_store"
- ]
- }
- };
-
- // node_modules/name-suggestion-index/config/genericWords.json
- var genericWords_default = {
- genericWords: [
- "^(barn|bazaa?r|bench|bou?tique|building|casa|church)$",
- "^(baseball|basketball|football|soccer|softball|tennis(halle)?)\\s?(field|court)?$",
- "^(club|green|out|ware)\\s?house$",
- "^(driveway|el \xE1rbol|fountain|generic|golf|government|graveyard)$",
- "^(fixme|n\\s?\\/?\\s?a|name|no\\s?name|none|null|temporary|test|unknown)$",
- "^(hofladen|librairie|magazine?|maison)$",
- "^(mobile home|skate)?\\s?park$",
- "^(obuwie|pond|pool|sale|shops?|sklep|stores?)$",
- "^\\?+$",
- "^private$",
- "^tattoo( studio)?$",
- "^windmill$",
- "^\u0446\u0435\u0440\u043A\u043E\u0432\u043D\u0430\u044F( \u043B\u0430\u0432\u043A\u0430)?$"
- ]
- };
-
- // node_modules/name-suggestion-index/config/trees.json
- var trees_default = {
- trees: {
- brands: {
- emoji: "\u{1F354}",
- mainTag: "brand:wikidata",
- sourceTags: ["brand", "name"],
- nameTags: {
- primary: "^(name|name:\\w+)$",
- alternate: "^(brand|brand:\\w+|operator|operator:\\w+|\\w+_name|\\w+_name:\\w+)$"
- }
- },
- flags: {
- emoji: "\u{1F6A9}",
- mainTag: "flag:wikidata",
- nameTags: {
- primary: "^(flag:name|flag:name:\\w+)$",
- alternate: "^(country|country:\\w+|flag|flag:\\w+|subject|subject:\\w+)$"
- }
- },
- operators: {
- emoji: "\u{1F4BC}",
- mainTag: "operator:wikidata",
- sourceTags: ["operator"],
- nameTags: {
- primary: "^(name|name:\\w+|operator|operator:\\w+)$",
- alternate: "^(brand|brand:\\w+|\\w+_name|\\w+_name:\\w+)$"
- }
- },
- transit: {
- emoji: "\u{1F687}",
- mainTag: "network:wikidata",
- sourceTags: ["network"],
- nameTags: {
- primary: "^network$",
- alternate: "^(operator|operator:\\w+|network:\\w+|\\w+_name|\\w+_name:\\w+)$"
- }
- }
- }
- };
-
- // node_modules/name-suggestion-index/lib/matcher.js
- var matchGroups = matchGroups_default.matchGroups;
- var trees = trees_default.trees;
- var Matcher = class {
- //
- // `constructor`
- // initialize the genericWords regexes
- constructor() {
- this.matchIndex = void 0;
- this.genericWords = /* @__PURE__ */ new Map();
- (genericWords_default.genericWords || []).forEach((s) => this.genericWords.set(s, new RegExp(s, "i")));
- this.itemLocation = void 0;
- this.locationSets = void 0;
- this.locationIndex = void 0;
- this.warnings = [];
- }
- //
- // `buildMatchIndex()`
- // Call this to prepare the matcher for use
- //
- // `data` needs to be an Object indexed on a 'tree/key/value' path.
- // (e.g. cache filled by `fileTree.read` or data found in `dist/nsi.json`)
- // {
- // 'brands/amenity/bank': { properties: {}, items: [ {}, {}, … ] },
- // 'brands/amenity/bar': { properties: {}, items: [ {}, {}, … ] },
- // …
- // }
- //
- buildMatchIndex(data) {
- const that = this;
- if (that.matchIndex)
- return;
- that.matchIndex = /* @__PURE__ */ new Map();
- const seenTree = /* @__PURE__ */ new Map();
- Object.keys(data).forEach((tkv) => {
- const category = data[tkv];
- const parts = tkv.split("/", 3);
- const t = parts[0];
- const k = parts[1];
- const v = parts[2];
- const thiskv = `${k}/${v}`;
- const tree = trees[t];
- let branch = that.matchIndex.get(thiskv);
- if (!branch) {
- branch = {
- primary: /* @__PURE__ */ new Map(),
- alternate: /* @__PURE__ */ new Map(),
- excludeGeneric: /* @__PURE__ */ new Map(),
- excludeNamed: /* @__PURE__ */ new Map()
- };
- that.matchIndex.set(thiskv, branch);
- }
- const properties = category.properties || {};
- const exclude = properties.exclude || {};
- (exclude.generic || []).forEach((s) => branch.excludeGeneric.set(s, new RegExp(s, "i")));
- (exclude.named || []).forEach((s) => branch.excludeNamed.set(s, new RegExp(s, "i")));
- const excludeRegexes = [...branch.excludeGeneric.values(), ...branch.excludeNamed.values()];
- let items = category.items;
- if (!Array.isArray(items) || !items.length)
- return;
- const primaryName = new RegExp(tree.nameTags.primary, "i");
- const alternateName = new RegExp(tree.nameTags.alternate, "i");
- const notName = /:(colou?r|type|forward|backward|left|right|etymology|pronunciation|wikipedia)$/i;
- const skipGenericKV = skipGenericKVMatches(t, k, v);
- const genericKV = /* @__PURE__ */ new Set([`${k}/yes`, `building/yes`]);
- const matchGroupKV = /* @__PURE__ */ new Set();
- Object.values(matchGroups).forEach((matchGroup) => {
- const inGroup = matchGroup.some((otherkv) => otherkv === thiskv);
- if (!inGroup)
- return;
- matchGroup.forEach((otherkv) => {
- if (otherkv === thiskv)
- return;
- matchGroupKV.add(otherkv);
- const otherk = otherkv.split("/", 2)[0];
- genericKV.add(`${otherk}/yes`);
- });
- });
- items.forEach((item) => {
- if (!item.id)
- return;
- if (Array.isArray(item.matchTags) && item.matchTags.length) {
- item.matchTags = item.matchTags.filter((matchTag) => !matchGroupKV.has(matchTag) && !genericKV.has(matchTag));
- if (!item.matchTags.length)
- delete item.matchTags;
- }
- let kvTags = [`${thiskv}`].concat(item.matchTags || []);
- if (!skipGenericKV) {
- kvTags = kvTags.concat(Array.from(genericKV));
- }
- Object.keys(item.tags).forEach((osmkey) => {
- if (notName.test(osmkey))
- return;
- const osmvalue = item.tags[osmkey];
- if (!osmvalue || excludeRegexes.some((regex) => regex.test(osmvalue)))
- return;
- if (primaryName.test(osmkey)) {
- kvTags.forEach((kv) => insertName("primary", t, kv, simplify(osmvalue), item.id));
- } else if (alternateName.test(osmkey)) {
- kvTags.forEach((kv) => insertName("alternate", t, kv, simplify(osmvalue), item.id));
- }
- });
- let keepMatchNames = /* @__PURE__ */ new Set();
- (item.matchNames || []).forEach((matchName) => {
- const nsimple = simplify(matchName);
- kvTags.forEach((kv) => {
- const branch2 = that.matchIndex.get(kv);
- const primaryLeaf = branch2 && branch2.primary.get(nsimple);
- const alternateLeaf = branch2 && branch2.alternate.get(nsimple);
- const inPrimary = primaryLeaf && primaryLeaf.has(item.id);
- const inAlternate = alternateLeaf && alternateLeaf.has(item.id);
- if (!inPrimary && !inAlternate) {
- insertName("alternate", t, kv, nsimple, item.id);
- keepMatchNames.add(matchName);
- }
- });
- });
- if (keepMatchNames.size) {
- item.matchNames = Array.from(keepMatchNames);
- } else {
- delete item.matchNames;
- }
- });
- });
- function insertName(which, t, kv, nsimple, itemID) {
- if (!nsimple) {
- that.warnings.push(`Warning: skipping empty ${which} name for item ${t}/${kv}: ${itemID}`);
- return;
- }
- let branch = that.matchIndex.get(kv);
- if (!branch) {
- branch = {
- primary: /* @__PURE__ */ new Map(),
- alternate: /* @__PURE__ */ new Map(),
- excludeGeneric: /* @__PURE__ */ new Map(),
- excludeNamed: /* @__PURE__ */ new Map()
- };
- that.matchIndex.set(kv, branch);
- }
- let leaf = branch[which].get(nsimple);
- if (!leaf) {
- leaf = /* @__PURE__ */ new Set();
- branch[which].set(nsimple, leaf);
- }
- leaf.add(itemID);
- if (!/yes$/.test(kv)) {
- const kvnsimple = `${kv}/${nsimple}`;
- const existing = seenTree.get(kvnsimple);
- if (existing && existing !== t) {
- const items = Array.from(leaf);
- that.warnings.push(`Duplicate cache key "${kvnsimple}" in trees "${t}" and "${existing}", check items: ${items}`);
- return;
- }
- seenTree.set(kvnsimple, t);
- }
- }
- function skipGenericKVMatches(t, k, v) {
- return t === "flags" || t === "transit" || k === "landuse" || v === "atm" || v === "bicycle_parking" || v === "car_sharing" || v === "caravan_site" || v === "charging_station" || v === "dog_park" || v === "parking" || v === "phone" || v === "playground" || v === "post_box" || v === "public_bookcase" || v === "recycling" || v === "vending_machine";
- }
- }
- //
- // `buildLocationIndex()`
- // Call this to prepare a which-polygon location index.
- // This *resolves* all the locationSets into GeoJSON, which takes some time.
- // You can skip this step if you don't care about matching within a location.
- //
- // `data` needs to be an Object indexed on a 'tree/key/value' path.
- // (e.g. cache filled by `fileTree.read` or data found in `dist/nsi.json`)
- // {
- // 'brands/amenity/bank': { properties: {}, items: [ {}, {}, … ] },
- // 'brands/amenity/bar': { properties: {}, items: [ {}, {}, … ] },
- // …
- // }
- //
- buildLocationIndex(data, loco) {
- const that = this;
- if (that.locationIndex)
- return;
- that.itemLocation = /* @__PURE__ */ new Map();
- that.locationSets = /* @__PURE__ */ new Map();
- Object.keys(data).forEach((tkv) => {
- const items = data[tkv].items;
- if (!Array.isArray(items) || !items.length)
- return;
- items.forEach((item) => {
- if (that.itemLocation.has(item.id))
- return;
- let resolved;
- try {
- resolved = loco.resolveLocationSet(item.locationSet);
- } catch (err) {
- console.warn(`buildLocationIndex: ${err.message}`);
- }
- if (!resolved || !resolved.id)
- return;
- that.itemLocation.set(item.id, resolved.id);
- if (that.locationSets.has(resolved.id))
- return;
- let feature3 = _cloneDeep2(resolved.feature);
- feature3.id = resolved.id;
- feature3.properties.id = resolved.id;
- if (!feature3.geometry.coordinates.length || !feature3.properties.area) {
- console.warn(`buildLocationIndex: locationSet ${resolved.id} for ${item.id} resolves to an empty feature:`);
- console.warn(JSON.stringify(feature3));
- return;
- }
- that.locationSets.set(resolved.id, feature3);
- });
- });
- that.locationIndex = (0, import_which_polygon3.default)({ type: "FeatureCollection", features: [...that.locationSets.values()] });
- function _cloneDeep2(obj) {
- return JSON.parse(JSON.stringify(obj));
- }
- }
- //
- // `match()`
- // Pass parts and return an Array of matches.
- // `k` - key
- // `v` - value
- // `n` - namelike
- // `loc` - optional - [lon,lat] location to search
- //
- // 1. If the [k,v,n] tuple matches a canonical item…
- // Return an Array of match results.
- // Each result will include the area in km² that the item is valid.
- //
- // Order of results:
- // Primary ordering will be on the "match" column:
- // "primary" - where the query matches the `name` tag, followed by
- // "alternate" - where the query matches an alternate name tag (e.g. short_name, brand, operator, etc)
- // Secondary ordering will be on the "area" column:
- // "area descending" if no location was provided, (worldwide before local)
- // "area ascending" if location was provided (local before worldwide)
- //
- // [
- // { match: 'primary', itemID: String, area: Number, kv: String, nsimple: String },
- // { match: 'primary', itemID: String, area: Number, kv: String, nsimple: String },
- // { match: 'alternate', itemID: String, area: Number, kv: String, nsimple: String },
- // { match: 'alternate', itemID: String, area: Number, kv: String, nsimple: String },
- // …
- // ]
- //
- // -or-
- //
- // 2. If the [k,v,n] tuple matches an exclude pattern…
- // Return an Array with a single exclude result, either
- //
- // [ { match: 'excludeGeneric', pattern: String, kv: String } ] // "generic" e.g. "Food Court"
- // or
- // [ { match: 'excludeNamed', pattern: String, kv: String } ] // "named", e.g. "Kebabai"
- //
- // About results
- // "generic" - a generic word that is probably not really a name.
- // For these, iD should warn the user "Hey don't put 'food court' in the name tag".
- // "named" - a real name like "Kebabai" that is just common, but not a brand.
- // For these, iD should just let it be. We don't include these in NSI, but we don't want to nag users about it either.
- //
- // -or-
- //
- // 3. If the [k,v,n] tuple matches nothing of any kind, return `null`
- //
- //
- match(k, v, n2, loc) {
- const that = this;
- if (!that.matchIndex) {
- throw new Error("match: matchIndex not built.");
- }
- let matchLocations;
- if (Array.isArray(loc) && that.locationIndex) {
- matchLocations = that.locationIndex([loc[0], loc[1], loc[0], loc[1]], true);
- }
- const nsimple = simplify(n2);
- let seen = /* @__PURE__ */ new Set();
- let results = [];
- gatherResults("primary");
- gatherResults("alternate");
- if (results.length)
- return results;
- gatherResults("exclude");
- return results.length ? results : null;
- function gatherResults(which) {
- const kv = `${k}/${v}`;
- let didMatch = tryMatch(which, kv);
- if (didMatch)
- return;
- for (let mg in matchGroups) {
- const matchGroup = matchGroups[mg];
- const inGroup = matchGroup.some((otherkv) => otherkv === kv);
- if (!inGroup)
- continue;
- for (let i2 = 0; i2 < matchGroup.length; i2++) {
- const otherkv = matchGroup[i2];
- if (otherkv === kv)
- continue;
- didMatch = tryMatch(which, otherkv);
- if (didMatch)
- return;
- }
- }
- if (which === "exclude") {
- const regex = [...that.genericWords.values()].find((regex2) => regex2.test(n2));
- if (regex) {
- results.push({ match: "excludeGeneric", pattern: String(regex) });
- return;
- }
- }
- }
- function tryMatch(which, kv) {
- const branch = that.matchIndex.get(kv);
- if (!branch)
- return;
- if (which === "exclude") {
- let regex = [...branch.excludeNamed.values()].find((regex2) => regex2.test(n2));
- if (regex) {
- results.push({ match: "excludeNamed", pattern: String(regex), kv });
- return;
- }
- regex = [...branch.excludeGeneric.values()].find((regex2) => regex2.test(n2));
- if (regex) {
- results.push({ match: "excludeGeneric", pattern: String(regex), kv });
- return;
- }
- return;
- }
- const leaf = branch[which].get(nsimple);
- if (!leaf || !leaf.size)
- return;
- let hits = Array.from(leaf).map((itemID) => {
- let area = Infinity;
- if (that.itemLocation && that.locationSets) {
- const location = that.locationSets.get(that.itemLocation.get(itemID));
- area = location && location.properties.area || Infinity;
- }
- return { match: which, itemID, area, kv, nsimple };
- });
- let sortFn = byAreaDescending;
- if (matchLocations) {
- hits = hits.filter(isValidLocation);
- sortFn = byAreaAscending;
- }
- if (!hits.length)
- return;
- hits.sort(sortFn).forEach((hit) => {
- if (seen.has(hit.itemID))
- return;
- seen.add(hit.itemID);
- results.push(hit);
- });
- return true;
- function isValidLocation(hit) {
- if (!that.itemLocation)
- return true;
- return matchLocations.find((props) => props.id === that.itemLocation.get(hit.itemID));
- }
- function byAreaAscending(hitA, hitB) {
- return hitA.area - hitB.area;
- }
- function byAreaDescending(hitA, hitB) {
- return hitB.area - hitA.area;
- }
- }
- }
- //
- // `getWarnings()`
- // Return any warnings discovered when buiding the index.
- // (currently this does nothing)
- //
- getWarnings() {
- return this.warnings;
- }
- };
-
- // modules/services/nsi.js
- var import_vparse2 = __toESM(require_vparse());
-
- // modules/core/difference.js
- var import_fast_deep_equal3 = __toESM(require_fast_deep_equal());
- function coreDifference(base, head) {
- var _changes = {};
- var _didChange = {};
- var _diff = {};
- function checkEntityID(id2) {
- var h = head.entities[id2];
- var b = base.entities[id2];
- if (h === b)
- return;
- if (_changes[id2])
- return;
- if (!h && b) {
- _changes[id2] = { base: b, head: h };
- _didChange.deletion = true;
- return;
- }
- if (h && !b) {
- _changes[id2] = { base: b, head: h };
- _didChange.addition = true;
- return;
- }
- if (h && b) {
- if (h.members && b.members && !(0, import_fast_deep_equal3.default)(h.members, b.members)) {
- _changes[id2] = { base: b, head: h };
- _didChange.geometry = true;
- _didChange.properties = true;
- return;
- }
- if (h.loc && b.loc && !geoVecEqual(h.loc, b.loc)) {
- _changes[id2] = { base: b, head: h };
- _didChange.geometry = true;
- }
- if (h.nodes && b.nodes && !(0, import_fast_deep_equal3.default)(h.nodes, b.nodes)) {
- _changes[id2] = { base: b, head: h };
- _didChange.geometry = true;
- }
- if (h.tags && b.tags && !(0, import_fast_deep_equal3.default)(h.tags, b.tags)) {
- _changes[id2] = { base: b, head: h };
- _didChange.properties = true;
- }
- }
- }
- function load() {
- var ids = utilArrayUniq(Object.keys(head.entities).concat(Object.keys(base.entities)));
- for (var i2 = 0; i2 < ids.length; i2++) {
- checkEntityID(ids[i2]);
- }
- }
- load();
- _diff.length = function length() {
- return Object.keys(_changes).length;
- };
- _diff.changes = function changes() {
- return _changes;
- };
- _diff.didChange = _didChange;
- _diff.extantIDs = function extantIDs(includeRelMembers) {
- var result = /* @__PURE__ */ new Set();
- Object.keys(_changes).forEach(function(id2) {
- if (_changes[id2].head) {
- result.add(id2);
- }
- var h = _changes[id2].head;
- var b = _changes[id2].base;
- var entity = h || b;
- if (includeRelMembers && entity.type === "relation") {
- var mh = h ? h.members.map(function(m) {
- return m.id;
- }) : [];
- var mb = b ? b.members.map(function(m) {
- return m.id;
- }) : [];
- utilArrayUnion(mh, mb).forEach(function(memberID) {
- if (head.hasEntity(memberID)) {
- result.add(memberID);
- }
- });
- }
- });
- return Array.from(result);
- };
- _diff.modified = function modified() {
- var result = [];
- Object.values(_changes).forEach(function(change) {
- if (change.base && change.head) {
- result.push(change.head);
- }
- });
- return result;
- };
- _diff.created = function created() {
- var result = [];
- Object.values(_changes).forEach(function(change) {
- if (!change.base && change.head) {
- result.push(change.head);
- }
- });
- return result;
- };
- _diff.deleted = function deleted() {
- var result = [];
- Object.values(_changes).forEach(function(change) {
- if (change.base && !change.head) {
- result.push(change.base);
- }
- });
- return result;
- };
- _diff.summary = function summary() {
- var relevant = {};
- var keys = Object.keys(_changes);
- for (var i2 = 0; i2 < keys.length; i2++) {
- var change = _changes[keys[i2]];
- if (change.head && change.head.geometry(head) !== "vertex") {
- addEntity(change.head, head, change.base ? "modified" : "created");
- } else if (change.base && change.base.geometry(base) !== "vertex") {
- addEntity(change.base, base, "deleted");
- } else if (change.base && change.head) {
- var moved = !(0, import_fast_deep_equal3.default)(change.base.loc, change.head.loc);
- var retagged = !(0, import_fast_deep_equal3.default)(change.base.tags, change.head.tags);
- if (moved) {
- addParents(change.head);
- }
- if (retagged || moved && change.head.hasInterestingTags()) {
- addEntity(change.head, head, "modified");
- }
- } else if (change.head && change.head.hasInterestingTags()) {
- addEntity(change.head, head, "created");
- } else if (change.base && change.base.hasInterestingTags()) {
- addEntity(change.base, base, "deleted");
- }
- }
- return Object.values(relevant);
- function addEntity(entity, graph, changeType) {
- relevant[entity.id] = {
- entity,
- graph,
- changeType
- };
- }
- function addParents(entity) {
- var parents = head.parentWays(entity);
- for (var j2 = parents.length - 1; j2 >= 0; j2--) {
- var parent = parents[j2];
- if (!(parent.id in relevant)) {
- addEntity(parent, head, "modified");
- }
- }
- }
- };
- _diff.complete = function complete(extent) {
- var result = {};
- var id2, change;
- for (id2 in _changes) {
- change = _changes[id2];
- var h = change.head;
- var b = change.base;
- var entity = h || b;
- var i2;
- if (extent && (!h || !h.intersects(extent, head)) && (!b || !b.intersects(extent, base))) {
- continue;
- }
- result[id2] = h;
- if (entity.type === "way") {
- var nh = h ? h.nodes : [];
- var nb = b ? b.nodes : [];
- var diff;
- diff = utilArrayDifference(nh, nb);
- for (i2 = 0; i2 < diff.length; i2++) {
- result[diff[i2]] = head.hasEntity(diff[i2]);
- }
- diff = utilArrayDifference(nb, nh);
- for (i2 = 0; i2 < diff.length; i2++) {
- result[diff[i2]] = head.hasEntity(diff[i2]);
- }
- }
- if (entity.type === "relation" && entity.isMultipolygon()) {
- var mh = h ? h.members.map(function(m) {
- return m.id;
- }) : [];
- var mb = b ? b.members.map(function(m) {
- return m.id;
- }) : [];
- var ids = utilArrayUnion(mh, mb);
- for (i2 = 0; i2 < ids.length; i2++) {
- var member = head.hasEntity(ids[i2]);
- if (!member)
- continue;
- if (extent && !member.intersects(extent, head))
- continue;
- result[ids[i2]] = member;
- }
- }
- addParents(head.parentWays(entity), result);
- addParents(head.parentRelations(entity), result);
- }
- return result;
- function addParents(parents, result2) {
- for (var i3 = 0; i3 < parents.length; i3++) {
- var parent = parents[i3];
- if (parent.id in result2)
- continue;
- result2[parent.id] = parent;
- addParents(head.parentRelations(parent), result2);
- }
- }
- };
- return _diff;
- }
-
- // modules/core/tree.js
- var import_rbush6 = __toESM(require_rbush_min());
- function coreTree(head) {
- var _rtree = new import_rbush6.default();
- var _bboxes = {};
- var _segmentsRTree = new import_rbush6.default();
- var _segmentsBBoxes = {};
- var _segmentsByWayId = {};
- var tree = {};
- function entityBBox(entity) {
- var bbox2 = entity.extent(head).bbox();
- bbox2.id = entity.id;
- _bboxes[entity.id] = bbox2;
- return bbox2;
- }
- function segmentBBox(segment) {
- var extent = segment.extent(head);
- if (!extent)
- return null;
- var bbox2 = extent.bbox();
- bbox2.segment = segment;
- _segmentsBBoxes[segment.id] = bbox2;
- return bbox2;
- }
- function removeEntity(entity) {
- _rtree.remove(_bboxes[entity.id]);
- delete _bboxes[entity.id];
- if (_segmentsByWayId[entity.id]) {
- _segmentsByWayId[entity.id].forEach(function(segment) {
- _segmentsRTree.remove(_segmentsBBoxes[segment.id]);
- delete _segmentsBBoxes[segment.id];
- });
- delete _segmentsByWayId[entity.id];
- }
- }
- function loadEntities(entities) {
- _rtree.load(entities.map(entityBBox));
- var segments = [];
- entities.forEach(function(entity) {
- if (entity.segments) {
- var entitySegments = entity.segments(head);
- _segmentsByWayId[entity.id] = entitySegments;
- segments = segments.concat(entitySegments);
- }
- });
- if (segments.length)
- _segmentsRTree.load(segments.map(segmentBBox).filter(Boolean));
- }
- function updateParents(entity, insertions, memo) {
- head.parentWays(entity).forEach(function(way) {
- if (_bboxes[way.id]) {
- removeEntity(way);
- insertions[way.id] = way;
- }
- updateParents(way, insertions, memo);
- });
- head.parentRelations(entity).forEach(function(relation) {
- if (memo[entity.id])
- return;
- memo[entity.id] = true;
- if (_bboxes[relation.id]) {
- removeEntity(relation);
- insertions[relation.id] = relation;
- }
- updateParents(relation, insertions, memo);
- });
- }
- tree.rebase = function(entities, force) {
- var insertions = {};
- for (var i2 = 0; i2 < entities.length; i2++) {
- var entity = entities[i2];
- if (!entity.visible)
- continue;
- if (head.entities.hasOwnProperty(entity.id) || _bboxes[entity.id]) {
- if (!force) {
- continue;
- } else if (_bboxes[entity.id]) {
- removeEntity(entity);
- }
- }
- insertions[entity.id] = entity;
- updateParents(entity, insertions, {});
- }
- loadEntities(Object.values(insertions));
- return tree;
- };
- function updateToGraph(graph) {
- if (graph === head)
- return;
- var diff = coreDifference(head, graph);
- head = graph;
- var changed = diff.didChange;
- if (!changed.addition && !changed.deletion && !changed.geometry)
- return;
- var insertions = {};
- if (changed.deletion) {
- diff.deleted().forEach(function(entity) {
- removeEntity(entity);
- });
- }
- if (changed.geometry) {
- diff.modified().forEach(function(entity) {
- removeEntity(entity);
- insertions[entity.id] = entity;
- updateParents(entity, insertions, {});
- });
- }
- if (changed.addition) {
- diff.created().forEach(function(entity) {
- insertions[entity.id] = entity;
- });
- }
- loadEntities(Object.values(insertions));
- }
- tree.intersects = function(extent, graph) {
- updateToGraph(graph);
- return _rtree.search(extent.bbox()).map(function(bbox2) {
- return graph.entity(bbox2.id);
- });
- };
- tree.waySegments = function(extent, graph) {
- updateToGraph(graph);
- return _segmentsRTree.search(extent.bbox()).map(function(bbox2) {
- return bbox2.segment;
- });
- };
- return tree;
- }
-
- // modules/svg/icon.js
- function svgIcon(name, svgklass, useklass) {
- return function drawIcon(selection2) {
- selection2.selectAll("svg.icon" + (svgklass ? "." + svgklass.split(" ")[0] : "")).data([0]).enter().append("svg").attr("class", "icon " + (svgklass || "")).append("use").attr("xlink:href", name).attr("class", useklass);
- };
- }
-
- // modules/ui/modal.js
- function uiModal(selection2, blocking) {
- let keybinding = utilKeybinding("modal");
- let previous = selection2.select("div.modal");
- let animate = previous.empty();
- previous.transition().duration(200).style("opacity", 0).remove();
- let shaded = selection2.append("div").attr("class", "shaded").style("opacity", 0);
- shaded.close = () => {
- shaded.transition().duration(200).style("opacity", 0).remove();
- modal.transition().duration(200).style("top", "0px");
- select_default2(document).call(keybinding.unbind);
- };
- let modal = shaded.append("div").attr("class", "modal fillL");
- modal.append("input").attr("class", "keytrap keytrap-first").on("focus.keytrap", moveFocusToLast);
- if (!blocking) {
- shaded.on("click.remove-modal", (d3_event) => {
- if (d3_event.target === this) {
- shaded.close();
- }
- });
- modal.append("button").attr("class", "close").attr("title", _t("icons.close")).on("click", shaded.close).call(svgIcon("#iD-icon-close"));
- keybinding.on("\u232B", shaded.close).on("\u238B", shaded.close);
- select_default2(document).call(keybinding);
- }
- modal.append("div").attr("class", "content");
- modal.append("input").attr("class", "keytrap keytrap-last").on("focus.keytrap", moveFocusToFirst);
- if (animate) {
- shaded.transition().style("opacity", 1);
- } else {
- shaded.style("opacity", 1);
- }
- return shaded;
- function moveFocusToFirst() {
- let node = modal.select("a, button, input:not(.keytrap), select, textarea").node();
- if (node) {
- node.focus();
- } else {
- select_default2(this).node().blur();
- }
- }
- function moveFocusToLast() {
- let nodes = modal.selectAll("a, button, input:not(.keytrap), select, textarea").nodes();
- if (nodes.length) {
- nodes[nodes.length - 1].focus();
- } else {
- select_default2(this).node().blur();
- }
- }
+ // modules/ui/modal.js
+ function uiModal(selection2, blocking) {
+ let keybinding = utilKeybinding("modal");
+ let previous = selection2.select("div.modal");
+ let animate = previous.empty();
+ previous.transition().duration(200).style("opacity", 0).remove();
+ let shaded = selection2.append("div").attr("class", "shaded").style("opacity", 0);
+ shaded.close = () => {
+ shaded.transition().duration(200).style("opacity", 0).remove();
+ modal.transition().duration(200).style("top", "0px");
+ select_default2(document).call(keybinding.unbind);
+ };
+ let modal = shaded.append("div").attr("class", "modal fillL");
+ modal.append("input").attr("class", "keytrap keytrap-first").on("focus.keytrap", moveFocusToLast);
+ if (!blocking) {
+ shaded.on("click.remove-modal", (d3_event) => {
+ if (d3_event.target === this) {
+ shaded.close();
+ }
+ });
+ modal.append("button").attr("class", "close").attr("title", _t("icons.close")).on("click", shaded.close).call(svgIcon("#iD-icon-close"));
+ keybinding.on("\u232B", shaded.close).on("\u238B", shaded.close);
+ select_default2(document).call(keybinding);
+ }
+ modal.append("div").attr("class", "content");
+ modal.append("input").attr("class", "keytrap keytrap-last").on("focus.keytrap", moveFocusToFirst);
+ if (animate) {
+ shaded.transition().style("opacity", 1);
+ } else {
+ shaded.style("opacity", 1);
+ }
+ return shaded;
+ function moveFocusToFirst() {
+ let node = modal.select("a, button, input:not(.keytrap), select, textarea").node();
+ if (node) {
+ node.focus();
+ } else {
+ select_default2(this).node().blur();
+ }
+ }
+ function moveFocusToLast() {
+ let nodes = modal.selectAll("a, button, input:not(.keytrap), select, textarea").nodes();
+ if (nodes.length) {
+ nodes[nodes.length - 1].focus();
+ } else {
+ select_default2(this).node().blur();
+ }
+ }
}
// modules/ui/loading.js
// modules/core/history.js
function coreHistory(context) {
- var dispatch10 = dispatch_default("reset", "change", "merge", "restore", "undone", "redone", "storage_error");
+ var dispatch14 = dispatch_default("reset", "change", "merge", "restore", "undone", "redone", "storage_error");
var lock = utilSessionMutex("lock");
var _hasUnresolvedRestorableChanges = lock.lock() && !!corePreferences(getKey("saved_history"));
var duration = 150;
var _stack;
var _index;
var _tree;
- function _act(actions, t) {
+ function _act(actions, t2) {
actions = Array.prototype.slice.call(actions);
var annotation;
if (typeof actions[actions.length - 1] !== "function") {
annotation = actions.pop();
}
var graph = _stack[_index].graph;
- for (var i2 = 0; i2 < actions.length; i2++) {
- graph = actions[i2](graph, t);
+ for (var i3 = 0; i3 < actions.length; i3++) {
+ graph = actions[i3](graph, t2);
}
return {
graph,
selectedIDs: context.selectedIDs()
};
}
- function _perform(args, t) {
+ function _perform(args, t2) {
var previous = _stack[_index].graph;
_stack = _stack.slice(0, _index + 1);
- var actionResult = _act(args, t);
+ var actionResult = _act(args, t2);
_stack.push(actionResult);
_index++;
return change(previous);
}
- function _replace(args, t) {
+ function _replace(args, t2) {
var previous = _stack[_index].graph;
- var actionResult = _act(args, t);
+ var actionResult = _act(args, t2);
_stack[_index] = actionResult;
return change(previous);
}
- function _overwrite(args, t) {
+ function _overwrite(args, t2) {
var previous = _stack[_index].graph;
if (_index > 0) {
_index--;
_stack.pop();
}
_stack = _stack.slice(0, _index + 1);
- var actionResult = _act(args, t);
+ var actionResult = _act(args, t2);
_stack.push(actionResult);
_index++;
return change(previous);
function change(previous) {
var difference = coreDifference(previous, history.graph());
if (!_pausedGraph) {
- dispatch10.call("change", this, difference);
+ dispatch14.call("change", this, difference);
}
return difference;
}
- function getKey(n2) {
- return "iD_" + window.location.origin + "_" + n2;
+ function getKey(n3) {
+ return "iD_" + window.location.origin + "_" + n3;
}
var history = {
graph: function() {
});
_stack[0].graph.rebase(entities, stack, false);
_tree.rebase(entities, false);
- dispatch10.call("merge", this, entities);
+ dispatch14.call("merge", this, entities);
},
perform: function() {
select_default2(document).interrupt("history.perform");
if (transitionable) {
var origArguments = arguments;
select_default2(document).transition("history.perform").duration(duration).ease(linear2).tween("history.tween", function() {
- return function(t) {
- if (t < 1)
- _overwrite([action0], t);
+ return function(t2) {
+ if (t2 < 1)
+ _overwrite([action0], t2);
};
}).on("start", function() {
_perform([action0], 0);
select_default2(document).interrupt("history.perform");
return _overwrite(arguments, 1);
},
- pop: function(n2) {
+ pop: function(n3) {
select_default2(document).interrupt("history.perform");
var previous = _stack[_index].graph;
- if (isNaN(+n2) || +n2 < 0) {
- n2 = 1;
+ if (isNaN(+n3) || +n3 < 0) {
+ n3 = 1;
}
- while (n2-- > 0 && _index > 0) {
+ while (n3-- > 0 && _index > 0) {
_index--;
_stack.pop();
}
if (_stack[_index].annotation)
break;
}
- dispatch10.call("undone", this, _stack[_index], previousStack);
+ dispatch14.call("undone", this, _stack[_index], previousStack);
return change(previous);
},
// Forward to the next annotated state.
tryIndex++;
if (_stack[tryIndex].annotation) {
_index = tryIndex;
- dispatch10.call("redone", this, _stack[_index], previousStack);
+ dispatch14.call("redone", this, _stack[_index], previousStack);
break;
}
}
}
},
undoAnnotation: function() {
- var i2 = _index;
- while (i2 >= 0) {
- if (_stack[i2].annotation)
- return _stack[i2].annotation;
- i2--;
+ var i3 = _index;
+ while (i3 >= 0) {
+ if (_stack[i3].annotation)
+ return _stack[i3].annotation;
+ i3--;
}
},
redoAnnotation: function() {
- var i2 = _index + 1;
- while (i2 <= _stack.length - 1) {
- if (_stack[i2].annotation)
- return _stack[i2].annotation;
- i2++;
+ var i3 = _index + 1;
+ while (i3 <= _stack.length - 1) {
+ if (_stack[i3].annotation)
+ return _stack[i3].annotation;
+ i3++;
}
},
// Returns the entities from the active graph with bounding boxes
_imageryUsed = sources;
return history;
} else {
- var s = /* @__PURE__ */ new Set();
+ var s2 = /* @__PURE__ */ new Set();
_stack.slice(1, _index + 1).forEach(function(state) {
state.imageryUsed.forEach(function(source) {
if (source !== "Custom") {
- s.add(source);
+ s2.add(source);
}
});
});
- return Array.from(s);
+ return Array.from(s2);
}
},
photoOverlaysUsed: function(sources) {
_photoOverlaysUsed = sources;
return history;
} else {
- var s = /* @__PURE__ */ new Set();
+ var s2 = /* @__PURE__ */ new Set();
_stack.slice(1, _index + 1).forEach(function(state) {
if (state.photoOverlaysUsed && Array.isArray(state.photoOverlaysUsed)) {
state.photoOverlaysUsed.forEach(function(photoOverlay) {
- s.add(photoOverlay);
+ s2.add(photoOverlay);
});
}
});
- return Array.from(s);
+ return Array.from(s2);
}
},
// save the current history state
_tree = coreTree(_stack[0].graph);
_checkpoints = {};
}
- dispatch10.call("reset");
- dispatch10.call("change");
+ dispatch14.call("reset");
+ dispatch14.call("change");
return history;
},
// `toIntroGraph()` is used to export the intro graph used by the walkthrough.
var allEntities = {};
var baseEntities = {};
var base = _stack[0];
- var s = _stack.map(function(i2) {
+ var s2 = _stack.map(function(i3) {
var modified = [];
var deleted = [];
- Object.keys(i2.graph.entities).forEach(function(id2) {
- var entity = i2.graph.entities[id2];
+ Object.keys(i3.graph.entities).forEach(function(id2) {
+ var entity = i3.graph.entities[id2];
if (entity) {
var key = osmEntity.key(entity);
allEntities[key] = entity;
});
}
});
- var x = {};
+ var x2 = {};
if (modified.length)
- x.modified = modified;
+ x2.modified = modified;
if (deleted.length)
- x.deleted = deleted;
- if (i2.imageryUsed)
- x.imageryUsed = i2.imageryUsed;
- if (i2.photoOverlaysUsed)
- x.photoOverlaysUsed = i2.photoOverlaysUsed;
- if (i2.annotation)
- x.annotation = i2.annotation;
- if (i2.transform)
- x.transform = i2.transform;
- if (i2.selectedIDs)
- x.selectedIDs = i2.selectedIDs;
- return x;
+ x2.deleted = deleted;
+ if (i3.imageryUsed)
+ x2.imageryUsed = i3.imageryUsed;
+ if (i3.photoOverlaysUsed)
+ x2.photoOverlaysUsed = i3.photoOverlaysUsed;
+ if (i3.annotation)
+ x2.annotation = i3.annotation;
+ if (i3.transform)
+ x2.transform = i3.transform;
+ if (i3.selectedIDs)
+ x2.selectedIDs = i3.selectedIDs;
+ return x2;
});
return JSON.stringify({
version: 3,
entities: Object.values(allEntities),
baseEntities: Object.values(baseEntities),
- stack: s,
+ stack: s2,
nextIDs: osmEntity.id.next,
index: _index,
// note the time the changes were saved
});
},
fromJSON: function(json, loadChildNodes) {
- var h = JSON.parse(json);
+ var h2 = JSON.parse(json);
var loadComplete = true;
- osmEntity.id.next = h.nextIDs;
- _index = h.index;
- if (h.version === 2 || h.version === 3) {
+ osmEntity.id.next = h2.nextIDs;
+ _index = h2.index;
+ if (h2.version === 2 || h2.version === 3) {
var allEntities = {};
- h.entities.forEach(function(entity) {
+ h2.entities.forEach(function(entity) {
allEntities[osmEntity.key(entity)] = osmEntity(entity);
});
- if (h.version === 3) {
- var baseEntities = h.baseEntities.map(function(d) {
- return osmEntity(d);
+ if (h2.version === 3) {
+ var baseEntities = h2.baseEntities.map(function(d2) {
+ return osmEntity(d2);
});
var stack = _stack.map(function(state) {
return state.graph;
_tree.rebase(baseEntities, true);
if (loadChildNodes) {
var osm = context.connection();
- var baseWays = baseEntities.filter(function(e) {
- return e.type === "way";
+ var baseWays = baseEntities.filter(function(e3) {
+ return e3.type === "way";
});
var nodeIDs = baseWays.reduce(function(acc, way) {
return utilArrayUnion(acc, way.nodes);
}, []);
- var missing = nodeIDs.filter(function(n2) {
- return !_stack[0].graph.hasEntity(n2);
+ var missing = nodeIDs.filter(function(n3) {
+ return !_stack[0].graph.hasEntity(n3);
});
if (missing.length && osm) {
loadComplete = false;
if (err || !missing.length) {
loading.close();
context.map().redrawEnable(true);
- dispatch10.call("change");
- dispatch10.call("restore", this);
+ dispatch14.call("change");
+ dispatch14.call("restore", this);
}
};
osm.loadMultiple(missing, childNodesLoaded);
}
}
}
- _stack = h.stack.map(function(d) {
+ _stack = h2.stack.map(function(d2) {
var entities = {}, entity;
- if (d.modified) {
- d.modified.forEach(function(key) {
+ if (d2.modified) {
+ d2.modified.forEach(function(key) {
entity = allEntities[key];
entities[entity.id] = entity;
});
}
- if (d.deleted) {
- d.deleted.forEach(function(id2) {
+ if (d2.deleted) {
+ d2.deleted.forEach(function(id2) {
entities[id2] = void 0;
});
}
return {
graph: coreGraph(_stack[0].graph).load(entities),
- annotation: d.annotation,
- imageryUsed: d.imageryUsed,
- photoOverlaysUsed: d.photoOverlaysUsed,
- transform: d.transform,
- selectedIDs: d.selectedIDs
+ annotation: d2.annotation,
+ imageryUsed: d2.imageryUsed,
+ photoOverlaysUsed: d2.photoOverlaysUsed,
+ transform: d2.transform,
+ selectedIDs: d2.selectedIDs
};
});
} else {
- _stack = h.stack.map(function(d) {
+ _stack = h2.stack.map(function(d2) {
var entities = {};
- for (var i2 in d.entities) {
- var entity = d.entities[i2];
- entities[i2] = entity === "undefined" ? void 0 : osmEntity(entity);
+ for (var i3 in d2.entities) {
+ var entity = d2.entities[i3];
+ entities[i3] = entity === "undefined" ? void 0 : osmEntity(entity);
}
- d.graph = coreGraph(_stack[0].graph).load(entities);
- return d;
+ d2.graph = coreGraph(_stack[0].graph).load(entities);
+ return d2;
});
}
var transform2 = _stack[_index].transform;
context.map().transformEase(transform2, 0);
}
if (loadComplete) {
- dispatch10.call("change");
- dispatch10.call("restore", this);
+ dispatch14.call("change");
+ dispatch14.call("restore", this);
}
return history;
},
!_hasUnresolvedRestorableChanges) {
const success = corePreferences(getKey("saved_history"), history.toJSON() || null);
if (!success)
- dispatch10.call("storage_error");
+ dispatch14.call("storage_error");
}
return history;
},
_getKey: getKey
};
history.reset();
- return utilRebind(history, dispatch10, "on");
+ return utilRebind(history, dispatch14, "on");
}
// modules/validations/index.js
return [
way.nodes[0],
way.nodes[way.nodes.length - 1]
- ].map((d) => graph.entity(d)).filter((d) => {
- return d.id !== node.id && geoSphericalDistance(node.loc, d.loc) <= CLOSE_NODE_TH;
+ ].map((d2) => graph.entity(d2)).filter((d2) => {
+ return d2.id !== node.id && geoSphericalDistance(node.loc, d2.loc) <= CLOSE_NODE_TH;
});
}
function findSmallJoinAngle(midNode, tipNode, endNodes) {
[lon + lon_range, lat + lat_range]
]);
const edgeLen = geoSphericalDistance(midNode.loc, tipNode.loc);
- const t = EXTEND_TH_METERS / edgeLen + 1;
- const extTipLoc = geoVecInterp(midNode.loc, tipNode.loc, t);
+ const t2 = EXTEND_TH_METERS / edgeLen + 1;
+ const extTipLoc = geoVecInterp(midNode.loc, tipNode.loc, t2);
const segmentInfos = tree.waySegments(queryExtent, graph);
- for (let i2 = 0; i2 < segmentInfos.length; i2++) {
- let segmentInfo = segmentInfos[i2];
+ for (let i3 = 0; i3 < segmentInfos.length; i3++) {
+ let segmentInfo = segmentInfos[i3];
let way2 = graph.entity(segmentInfo.wayId);
if (!isHighway(way2))
continue;
if (osmPathHighwayTagValues[way.tags.highway])
return "path";
var parentRelations = graph.parentRelations(way);
- for (var i2 in parentRelations) {
- var relation = parentRelations[i2];
+ for (var i3 in parentRelations) {
+ var relation = parentRelations[i3];
if (relation.tags.type === "boundary")
return "boundary";
if (relation.isMultipolygon()) {
if (!shouldCheckWay(way))
return [];
var issues = [], nodes = graph.childNodes(way);
- for (var i2 = 0; i2 < nodes.length - 1; i2++) {
- var node1 = nodes[i2];
- var node2 = nodes[i2 + 1];
+ for (var i3 = 0; i3 < nodes.length - 1; i3++) {
+ var node1 = nodes[i3];
+ var node2 = nodes[i3 + 1];
var issue = getWayIssueIfAny(node1, node2, way);
if (issue)
issues.push(issue);
if (issue)
issues.push(issue);
}
- for (var i2 = 0; i2 < parentWays.length; i2++) {
- var parentWay = parentWays[i2];
+ for (var i3 = 0; i3 < parentWays.length; i3++) {
+ var parentWay = parentWays[i3];
if (!shouldCheckWay(parentWay))
continue;
var lastIndex = parentWay.nodes.length - 1;
- for (var j2 = 0; j2 < parentWay.nodes.length; j2++) {
- if (j2 !== 0) {
- if (parentWay.nodes[j2 - 1] === node.id) {
- checkForCloseness(node, graph.entity(parentWay.nodes[j2]), parentWay);
+ for (var j3 = 0; j3 < parentWay.nodes.length; j3++) {
+ if (j3 !== 0) {
+ if (parentWay.nodes[j3 - 1] === node.id) {
+ checkForCloseness(node, graph.entity(parentWay.nodes[j3]), parentWay);
}
}
- if (j2 !== lastIndex) {
- if (parentWay.nodes[j2 + 1] === node.id) {
- checkForCloseness(graph.entity(parentWay.nodes[j2]), node, parentWay);
+ if (j3 !== lastIndex) {
+ if (parentWay.nodes[j3 + 1] === node.id) {
+ checkForCloseness(graph.entity(parentWay.nodes[j3]), node, parentWay);
}
}
}
[lon + lon_range, lat + lat_range]
]);
var intersected = context.history().tree().intersects(queryExtent, graph);
- for (var j2 = 0; j2 < intersected.length; j2++) {
- var nearby = intersected[j2];
+ for (var j3 = 0; j3 < intersected.length; j3++) {
+ var nearby = intersected[j3];
if (nearby.id === node.id)
continue;
if (nearby.type !== "node" || nearby.geometry(graph) !== "point")
}
// modules/validations/crossing_ways.js
+ var import_lodash3 = __toESM(require_lodash());
function validationCrossingWays(context) {
var type2 = "crossing_ways";
function getFeatureWithFeatureTypeTagsForWay(way, graph) {
if (getFeatureType(way, graph) === null) {
var parentRels = graph.parentRelations(way);
- for (var i2 = 0; i2 < parentRels.length; i2++) {
- var rel = parentRels[i2];
+ for (var i3 = 0; i3 < parentRels.length; i3++) {
+ var rel = parentRels[i3];
if (getFeatureType(rel, graph) !== null) {
return rel;
}
secondary: true,
secondary_link: true
};
- var nonCrossingHighways = { track: true };
- function tagsForConnectionNodeIfAllowed(entity1, entity2, graph) {
+ function tagsForConnectionNodeIfAllowed(entity1, entity2, graph, lessLikelyTags) {
var featureType1 = getFeatureType(entity1, graph);
var featureType2 = getFeatureType(entity2, graph);
var geometry1 = entity1.geometry(graph);
var entity2IsPath = osmPathHighwayTagValues[entity2.tags.highway];
if ((entity1IsPath || entity2IsPath) && entity1IsPath !== entity2IsPath) {
var roadFeature = entity1IsPath ? entity2 : entity1;
- if (nonCrossingHighways[roadFeature.tags.highway]) {
+ var pathFeature = entity1IsPath ? entity1 : entity2;
+ if (roadFeature.tags.highway === "track") {
+ return {};
+ }
+ if (!lessLikelyTags && roadFeature.tags.highway === "service" && pathFeature.tags.highway === "footway" && pathFeature.tags.footway === "sidewalk") {
return {};
}
- var pathFeature = entity1IsPath ? entity1 : entity2;
if (["marked", "unmarked", "traffic_signals", "uncontrolled"].indexOf(pathFeature.tags.crossing) !== -1) {
return bothLines ? { highway: "crossing", crossing: pathFeature.tags.crossing } : {};
}
if (way1FeatureType === null)
return edgeCrossInfos;
var checkedSingleCrossingWays = {};
- var i2, j2;
+ var i3, j3;
var extent;
- var n1, n2, nA, nB, nAId, nBId;
+ var n1, n22, nA, nB, nAId, nBId;
var segment1, segment2;
var oneOnly;
var segmentInfos, segment2Info, way2, taggedFeature2, way2FeatureType;
var way1Nodes = graph.childNodes(way1);
var comparedWays = {};
- for (i2 = 0; i2 < way1Nodes.length - 1; i2++) {
- n1 = way1Nodes[i2];
- n2 = way1Nodes[i2 + 1];
+ for (i3 = 0; i3 < way1Nodes.length - 1; i3++) {
+ n1 = way1Nodes[i3];
+ n22 = way1Nodes[i3 + 1];
extent = geoExtent([
[
- Math.min(n1.loc[0], n2.loc[0]),
- Math.min(n1.loc[1], n2.loc[1])
+ Math.min(n1.loc[0], n22.loc[0]),
+ Math.min(n1.loc[1], n22.loc[1])
],
[
- Math.max(n1.loc[0], n2.loc[0]),
- Math.max(n1.loc[1], n2.loc[1])
+ Math.max(n1.loc[0], n22.loc[0]),
+ Math.max(n1.loc[1], n22.loc[1])
]
]);
segmentInfos = tree.waySegments(extent, graph);
- for (j2 = 0; j2 < segmentInfos.length; j2++) {
- segment2Info = segmentInfos[j2];
+ for (j3 = 0; j3 < segmentInfos.length; j3++) {
+ segment2Info = segmentInfos[j3];
if (segment2Info.wayId === way1.id)
continue;
if (checkedSingleCrossingWays[segment2Info.wayId])
oneOnly = way1FeatureType === "building" || way2FeatureType === "building";
nAId = segment2Info.nodes[0];
nBId = segment2Info.nodes[1];
- if (nAId === n1.id || nAId === n2.id || nBId === n1.id || nBId === n2.id) {
+ if (nAId === n1.id || nAId === n22.id || nBId === n1.id || nBId === n22.id) {
continue;
}
nA = graph.hasEntity(nAId);
nB = graph.hasEntity(nBId);
if (!nB)
continue;
- segment1 = [n1.loc, n2.loc];
+ segment1 = [n1.loc, n22.loc];
segment2 = [nA.loc, nB.loc];
var point2 = geoLineIntersection(segment1, segment2);
if (point2) {
{
way: way1,
featureType: way1FeatureType,
- edge: [n1.id, n2.id]
+ edge: [n1.id, n22.id]
},
{
way: way2,
var fixes = [];
if (connectionTags) {
fixes.push(makeConnectWaysFix(this.data.connectionTags));
+ let lessLikelyConnectionTags = tagsForConnectionNodeIfAllowed(entities[0], entities[1], graph, true);
+ if (lessLikelyConnectionTags && !(0, import_lodash3.isEqual)(connectionTags, lessLikelyConnectionTags)) {
+ fixes.push(makeConnectWaysFix(lessLikelyConnectionTags));
+ }
}
if (isCrossingIndoors) {
fixes.push(new validationIssueFix({
}
function makeConnectWaysFix(connectionTags) {
var fixTitleID = "connect_features";
+ var fixIcon = "iD-icon-crossing";
+ if (connectionTags.highway === "crossing") {
+ fixTitleID = "connect_using_crossing";
+ fixIcon = "temaki-pedestrian";
+ }
if (connectionTags.ford) {
fixTitleID = "connect_using_ford";
+ fixIcon = "roentgen-ford";
}
- return new validationIssueFix({
- icon: "iD-icon-crossing",
+ const fix = new validationIssueFix({
+ icon: fixIcon,
title: _t.append("issues.fix." + fixTitleID + ".title"),
onClick: function(context2) {
var loc = this.issue.loc;
- var connectionTags2 = this.issue.data.connectionTags;
var edges = this.issue.data.edges;
context2.perform(
function actionConnectCrossingWays(graph) {
- var node = osmNode({ loc, tags: connectionTags2 });
+ var node = osmNode({ loc, tags: connectionTags });
graph = graph.replace(node);
var nodesToMerge = [node.id];
var mergeThresholdInMeters = 0.75;
);
}
});
+ fix._connectionTags = connectionTags;
+ return fix;
}
function makeChangeLayerFix(higherOrLower) {
return new validationIssueFix({
// modules/behavior/draw_way.js
function behaviorDrawWay(context, wayID, mode, startGraph) {
const keybinding = utilKeybinding("drawWay");
- var dispatch10 = dispatch_default("rejectedSelfIntersection");
+ var dispatch14 = dispatch_default("rejectedSelfIntersection");
var behavior = behaviorDraw(context);
var _nodeIndex;
var _origWay;
context.surface().classed("nope-suppressed", false).classed("nope-disabled", false);
}
}
- function allowsVertex(d) {
- return d.geometry(context.graph()) === "vertex" || _mainPresetIndex.allowsVertex(d, context.graph());
+ function allowsVertex(d2) {
+ return d2.geometry(context.graph()) === "vertex" || _mainPresetIndex.allowsVertex(d2, context.graph());
}
function move(d3_event, datum2) {
var loc = context.map().mouseCoordinates();
select_default2(window).on("keydown.drawWay", null).on("keyup.drawWay", null);
context.history().on("undone.draw", null);
};
- function attemptAdd(d, loc, doAdd) {
+ function attemptAdd(d2, loc, doAdd) {
if (_drawNode) {
context.replace(actionMoveNode(_drawNode.id, loc), _annotation);
_drawNode = context.entity(_drawNode.id);
true
/* includeDrawNode */
);
- if (d && d.properties && d.properties.nope || context.surface().classed("nope")) {
+ if (d2 && d2.properties && d2.properties.nope || context.surface().classed("nope")) {
if (!_pointerHasMoved) {
removeDrawNode();
}
- dispatch10.call("rejectedSelfIntersection", this);
+ dispatch14.call("rejectedSelfIntersection", this);
return;
}
context.pauseChangeDispatch();
context.resumeChangeDispatch();
context.enter(mode);
}
- drawWay.add = function(loc, d) {
- attemptAdd(d, loc, function() {
+ drawWay.add = function(loc, d2) {
+ attemptAdd(d2, loc, function() {
});
};
- drawWay.addWay = function(loc, edge, d) {
- attemptAdd(d, loc, function() {
+ drawWay.addWay = function(loc, edge, d2) {
+ attemptAdd(d2, loc, function() {
context.replace(
actionAddMidpoint({ loc, edge }, _drawNode),
_annotation
);
});
};
- drawWay.addNode = function(node, d) {
+ drawWay.addNode = function(node, d2) {
if (node.id === _headNodeID || // or the first node when drawing an area
_origWay.isClosed() && node.id === _origWay.first()) {
drawWay.finish();
return;
}
- attemptAdd(d, node.loc, function() {
+ attemptAdd(d2, node.loc, function() {
context.replace(
function actionReplaceDrawNode(graph) {
graph = graph.replace(graph.entity(wayID).removeNode(_drawNode.id)).remove(_drawNode);
context.ui().flash.duration(4e3).iconName("#iD-icon-no").label(_t.append("operations.follow.error.needs_more_initial_nodes"))();
return;
}
- const lastNodesParents = historyGraph.parentWays(historyGraph.entity(lastNodeId)).filter((w) => w.id !== wayID);
- const secondLastNodesParents = historyGraph.parentWays(historyGraph.entity(secondLastNodeId)).filter((w) => w.id !== wayID);
+ const lastNodesParents = historyGraph.parentWays(historyGraph.entity(lastNodeId)).filter((w2) => w2.id !== wayID);
+ const secondLastNodesParents = historyGraph.parentWays(historyGraph.entity(secondLastNodeId)).filter((w2) => w2.id !== wayID);
const featureType = getFeatureType(lastNodesParents);
if (lastNodesParents.length !== 1 || secondLastNodesParents.length === 0) {
context.ui().flash.duration(4e3).iconName("#iD-icon-no").label(_t.append(`operations.follow.error.intersection_of_multiple_ways.${featureType}`))();
return;
}
- if (!secondLastNodesParents.some((n2) => n2.id === lastNodesParents[0].id)) {
+ if (!secondLastNodesParents.some((n3) => n3.id === lastNodesParents[0].id)) {
context.ui().flash.duration(4e3).iconName("#iD-icon-no").label(_t.append(`operations.follow.error.intersection_of_different_ways.${featureType}`))();
return;
}
/* includeDrawNode */
);
if (context.surface().classed("nope")) {
- dispatch10.call("rejectedSelfIntersection", this);
+ dispatch14.call("rejectedSelfIntersection", this);
return;
}
context.pauseChangeDispatch();
return _drawNode && _drawNode.id;
return drawWay;
};
- return utilRebind(drawWay, dispatch10, "on");
+ return utilRebind(drawWay, dispatch14, "on");
}
// modules/modes/draw_line.js
while (waysToCheck.length) {
var wayToCheck = waysToCheck.pop();
var childNodes = graph.childNodes(wayToCheck);
- for (var i2 in childNodes) {
- var vertex = childNodes[i2];
+ for (var i3 in childNodes) {
+ var vertex = childNodes[i3];
if (isConnectedVertex(vertex)) {
return null;
}
selection2.selectAll(".issue-reference").data([0]).enter().append("div").attr("class", "issue-reference").call(_t.append("issues.invalid_format.email.reference"));
}
if (entity.tags.email) {
- var emails = entity.tags.email.split(";").map(function(s) {
- return s.trim();
- }).filter(function(x) {
- return !isValidEmail(x);
+ var emails = entity.tags.email.split(";").map(function(s2) {
+ return s2.trim();
+ }).filter(function(x2) {
+ return !isValidEmail(x2);
});
if (emails.length) {
issues.push(new validationIssue({
return [];
var rules = services.maprules.validationRules();
var issues = [];
- for (var i2 = 0; i2 < rules.length; i2++) {
- var rule = rules[i2];
+ for (var i3 = 0; i3 < rules.length; i3++) {
+ var rule = rules[i3];
rule.findIssues(entity, graph, issues);
}
return issues;
}
var asLine = _mainPresetIndex.matchTags(tagSuggestingArea, "line");
var asArea = _mainPresetIndex.matchTags(tagSuggestingArea, "area");
- if (asLine && asArea && asLine === asArea) {
+ if (asLine && asArea && (0, import_fast_deep_equal4.default)(asLine.tags, asArea.tags)) {
return null;
}
return tagSuggestingArea;
return [];
var sequences = osmJoinWays(entity.members, graph);
var issues = [];
- for (var i2 in sequences) {
- var sequence = sequences[i2];
+ for (var i3 in sequences) {
+ var sequence = sequences[i3];
if (!sequence.nodes)
continue;
var firstNode = sequence.nodes[0];
var type2 = "missing_tag";
function hasDescriptiveTags(entity, graph) {
var onlyAttributeKeys = ["description", "name", "note", "start_date"];
- var entityDescriptiveKeys = Object.keys(entity.tags).filter(function(k) {
- if (k === "area" || !osmIsInterestingTag(k))
+ var entityDescriptiveKeys = Object.keys(entity.tags).filter(function(k2) {
+ if (k2 === "area" || !osmIsInterestingTag(k2))
return false;
return !onlyAttributeKeys.some(function(attributeKey) {
- return k === attributeKey || k.indexOf(attributeKey + ":") === 0;
+ return k2 === attributeKey || k2.indexOf(attributeKey + ":") === 0;
});
});
if (entity.type === "relation" && entityDescriptiveKeys.length === 1 && entity.tags.type === "multipolygon") {
const type2 = "outdated_tags";
let _waitingForDeprecated = true;
let _dataDeprecated;
- _mainFileFetcher.get("deprecated").then((d) => _dataDeprecated = d).catch(() => {
+ _mainFileFetcher.get("deprecated").then((d2) => _dataDeprecated = d2).catch(() => {
}).finally(() => _waitingForDeprecated = false);
function oldTagIssues(entity, graph) {
if (!entity.hasInterestingTags())
}
let newTags = Object.assign({}, entity.tags);
if (preset.tags !== preset.addTags) {
- Object.keys(preset.addTags).forEach((k) => {
- if (!newTags[k]) {
- if (preset.addTags[k] === "*") {
- newTags[k] = "yes";
+ Object.keys(preset.addTags).forEach((k2) => {
+ if (!newTags[k2]) {
+ if (preset.addTags[k2] === "*") {
+ newTags[k2] = "yes";
} else {
- newTags[k] = preset.addTags[k];
+ newTags[k2] = preset.addTags[k2];
}
}
});
const tagDiff = utilTagDiff(oldTags, newTags);
if (!tagDiff.length)
return issues;
- const isOnlyAddingTags = tagDiff.every((d) => d.type === "+");
+ const isOnlyAddingTags = tagDiff.every((d2) => d2.type === "+");
let prefix = "";
if (nsiResult) {
prefix = "noncanonical_brand.";
let enter = selection2.selectAll(".issue-reference").data([0]).enter();
enter.append("div").attr("class", "issue-reference").call(_t.append(`issues.outdated_tags.${prefix}reference`));
enter.append("strong").call(_t.append("issues.suggested"));
- enter.append("table").attr("class", "tagDiff-table").selectAll(".tagDiff-row").data(tagDiff).enter().append("tr").attr("class", "tagDiff-row").append("td").attr("class", (d) => {
- let klass = d.type === "+" ? "add" : "remove";
+ enter.append("table").attr("class", "tagDiff-table").selectAll(".tagDiff-row").data(tagDiff).enter().append("tr").attr("class", "tagDiff-row").append("td").attr("class", (d2) => {
+ let klass = d2.type === "+" ? "add" : "remove";
return `tagDiff-cell tagDiff-cell-${klass}`;
- }).html((d) => d.display);
+ }).html((d2) => d2.display);
}
}
function oldMultipolygonIssues(entity, graph) {
if (!tags.building || !privateBuildingValues[tags.building])
return [];
var keepTags = {};
- for (var k in tags) {
- if (publicKeys[k])
+ for (var k2 in tags) {
+ if (publicKeys[k2])
return [];
- if (!personalTags[k]) {
- keepTags[k] = tags[k];
+ if (!personalTags[k2]) {
+ keepTags[k2] = tags[k2];
}
}
var tagDiff = utilTagDiff(tags, keepTags);
var enter = selection2.selectAll(".issue-reference").data([0]).enter();
enter.append("div").attr("class", "issue-reference").call(_t.append("issues.private_data.reference"));
enter.append("strong").call(_t.append("issues.suggested"));
- enter.append("table").attr("class", "tagDiff-table").selectAll(".tagDiff-row").data(tagDiff).enter().append("tr").attr("class", "tagDiff-row").append("td").attr("class", function(d) {
- var klass = d.type === "+" ? "add" : "remove";
+ enter.append("table").attr("class", "tagDiff-table").selectAll(".tagDiff-row").data(tagDiff).enter().append("tr").attr("class", "tagDiff-row").append("td").attr("class", function(d2) {
+ var klass = d2.type === "+" ? "add" : "remove";
return "tagDiff-cell tagDiff-cell-" + klass;
- }).html(function(d) {
- return d.display;
+ }).html(function(d2) {
+ return d2.display;
});
}
};
return false;
}
function nameMatchesRawTag(lowercaseName, tags) {
- for (let i2 = 0; i2 < keysToTestForGenericValues.length; i2++) {
- let key = keysToTestForGenericValues[i2];
+ for (let i3 = 0; i3 < keysToTestForGenericValues.length; i3++) {
+ let key = keysToTestForGenericValues[i3];
let val = tags[key];
if (val) {
val = val.toLowerCase();
let issues = [];
const notNames2 = (tags["not:name"] || "").split(";");
for (let key in tags) {
- const m = key.match(/^name(?:(?::)([a-zA-Z_-]+))?$/);
- if (!m)
+ const m2 = key.match(/^name(?:(?::)([a-zA-Z_-]+))?$/);
+ if (!m2)
continue;
- const langCode = m.length >= 2 ? m[1] : null;
+ const langCode = m2.length >= 2 ? m2[1] : null;
const value = tags[key];
if (notNames2.length) {
- for (let i2 in notNames2) {
- const notName = notNames2[i2];
+ for (let i3 in notNames2) {
+ const notName = notNames2[i3];
if (notName && value === notName) {
issues.push(makeIncorrectNameIssue(entity.id, key, value, langCode));
continue;
// modules/core/validator.js
function coreValidator(context) {
- let dispatch10 = dispatch_default("validated", "focusedIssue");
- let validator = utilRebind({}, dispatch10, "on");
+ let dispatch14 = dispatch_default("validated", "focusedIssue");
+ let validator = utilRebind({}, dispatch14, "on");
let _rules = {};
let _disabledRules = {};
let _ignoredIssueIDs = /* @__PURE__ */ new Set();
});
let disabledRules = corePreferences("validate-disabledRules");
if (disabledRules) {
- disabledRules.split(",").forEach((k) => _disabledRules[k] = true);
+ disabledRules.split(",").forEach((k2) => _disabledRules[k2] = true);
}
};
function reset(resetIgnored) {
};
validator.resetIgnoredIssues = () => {
_ignoredIssueIDs.clear();
- dispatch10.call("validated");
+ dispatch14.call("validated");
};
validator.revalidateUnsquare = () => {
revalidateUnsquare(_headCache);
revalidateUnsquare(_baseCache);
- dispatch10.call("validated");
+ dispatch14.call("validated");
};
function revalidateUnsquare(cache) {
const checkUnsquareWay = _rules.unsquare_way;
if (selectID) {
window.setTimeout(() => {
context.enter(modeSelect(context, [selectID]));
- dispatch10.call("focusedIssue", this, issue);
+ dispatch14.call("focusedIssue", this, issue);
}, 250);
}
};
corePreferences("validate-disabledRules", Object.keys(_disabledRules).join(","));
validator.validate();
};
- validator.disableRules = (keys) => {
+ validator.disableRules = (keys2) => {
_disabledRules = {};
- keys.forEach((k) => _disabledRules[k] = true);
+ keys2.forEach((k2) => _disabledRules[k2] = true);
corePreferences("validate-disabledRules", Object.keys(_disabledRules).join(","));
validator.validate();
};
const currGraph = context.graph();
if (currGraph === prevGraph) {
_headIsCurrent = true;
- dispatch10.call("validated");
+ dispatch14.call("validated");
return Promise.resolve();
}
if (_headPromise) {
let entityIDs = Object.keys(incrementalDiff.complete());
entityIDs = _headCache.withAllRelatedEntities(entityIDs);
if (!entityIDs.size) {
- dispatch10.call("validated");
+ dispatch14.call("validated");
return Promise.resolve();
}
- _headPromise = validateEntitiesAsync(entityIDs, _headCache).then(() => updateResolvedIssues(entityIDs)).then(() => dispatch10.call("validated")).catch(() => {
+ _headPromise = validateEntitiesAsync(entityIDs, _headCache).then(() => updateResolvedIssues(entityIDs)).then(() => dispatch14.call("validated")).catch(() => {
}).then(() => {
_headPromise = null;
if (!_headIsCurrent) {
function applySeverityOverrides(issue) {
const type2 = issue.type;
const subtype = issue.subtype || "";
- let i2;
- for (i2 = 0; i2 < _errorOverrides.length; i2++) {
- if (_errorOverrides[i2].type.test(type2) && _errorOverrides[i2].subtype.test(subtype)) {
+ let i3;
+ for (i3 = 0; i3 < _errorOverrides.length; i3++) {
+ if (_errorOverrides[i3].type.test(type2) && _errorOverrides[i3].subtype.test(subtype)) {
issue.severity = "error";
return true;
}
}
- for (i2 = 0; i2 < _warningOverrides.length; i2++) {
- if (_warningOverrides[i2].type.test(type2) && _warningOverrides[i2].subtype.test(subtype)) {
+ for (i3 = 0; i3 < _warningOverrides.length; i3++) {
+ if (_warningOverrides[i3].type.test(type2) && _warningOverrides[i3].subtype.test(subtype)) {
issue.severity = "warning";
return true;
}
}
- for (i2 = 0; i2 < _disableOverrides.length; i2++) {
- if (_disableOverrides[i2].type.test(type2) && _disableOverrides[i2].subtype.test(subtype)) {
+ for (i3 = 0; i3 < _disableOverrides.length; i3++) {
+ if (_disableOverrides[i3].type.test(type2) && _disableOverrides[i3].subtype.test(subtype)) {
return false;
}
}
_deferredRIC[handle] = rejectPromise;
}).then(() => {
if (cache.queue.length % 25 === 0)
- dispatch10.call("validated");
+ dispatch14.call("validated");
}).then(() => processQueue(cache));
}
return validator;
// modules/core/uploader.js
function coreUploader(context) {
- var dispatch10 = dispatch_default(
+ var dispatch14 = dispatch_default(
// Start and end events are dispatched exactly once each per legitimate outside call to `save`
"saveStarted",
// dispatched as soon as a call to `save` has been deemed legitimate
var _errors = [];
var _origChanges;
var _discardTags = {};
- _mainFileFetcher.get("discarded").then(function(d) {
- _discardTags = d;
+ _mainFileFetcher.get("discarded").then(function(d2) {
+ _discardTags = d2;
}).catch(function() {
});
- var uploader = utilRebind({}, dispatch10, "on");
+ var uploader = utilRebind({}, dispatch14, "on");
uploader.isSaving = function() {
return _isSaving;
};
}
if (!_isSaving) {
_isSaving = true;
- dispatch10.call("saveStarted", this);
+ dispatch14.call("saveStarted", this);
}
var history = context.history();
_conflicts = [];
var remoteGraph = coreGraph(history.base(), true);
var summary = history.difference().summary();
var _toCheck = [];
- for (var i2 = 0; i2 < summary.length; i2++) {
- var item = summary[i2];
+ for (var i3 = 0; i3 < summary.length; i3++) {
+ var item = summary[i3];
if (item.changeType === "modified") {
_toCheck.push(item.entity.id);
}
var _toLoadCount = 0;
var _toLoadTotal = _toLoad.length;
if (_toCheck.length) {
- dispatch10.call("progressChanged", this, _toLoadCount, _toLoadTotal);
+ dispatch14.call("progressChanged", this, _toLoadCount, _toLoadTotal);
_toLoad.forEach(function(id2) {
_loaded[id2] = false;
});
}
return;
function withChildNodes(ids, graph) {
- var s = new Set(ids);
+ var s2 = new Set(ids);
ids.forEach(function(id2) {
var entity = graph.entity(id2);
if (entity.type !== "way")
return;
graph.childNodes(entity).forEach(function(child) {
if (child.version !== void 0) {
- s.add(child.id);
+ s2.add(child.id);
}
});
});
- return Array.from(s);
+ return Array.from(s2);
}
function loaded(err, result) {
if (_errors.length)
});
if (!entity.visible)
return;
- var i3, id2;
+ var i4, id2;
if (entity.type === "way") {
- for (i3 = 0; i3 < entity.nodes.length; i3++) {
- id2 = entity.nodes[i3];
+ for (i4 = 0; i4 < entity.nodes.length; i4++) {
+ id2 = entity.nodes[i4];
if (_loaded[id2] === void 0) {
_loaded[id2] = false;
loadMore.push(id2);
}
}
} else if (entity.type === "relation" && entity.isMultipolygon()) {
- for (i3 = 0; i3 < entity.members.length; i3++) {
- id2 = entity.members[i3].id;
+ for (i4 = 0; i4 < entity.members.length; i4++) {
+ id2 = entity.members[i4].id;
if (_loaded[id2] === void 0) {
_loaded[id2] = false;
loadMore.push(id2);
});
_toLoadCount += result.data.length;
_toLoadTotal += loadMore.length;
- dispatch10.call("progressChanged", this, _toLoadCount, _toLoadTotal);
+ dispatch14.call("progressChanged", this, _toLoadCount, _toLoadTotal);
if (loadMore.length) {
_toLoad.push.apply(_toLoad, loadMore);
osm.loadMultiple(loadMore, loaded);
}
};
}
- function formatUser(d) {
- return '<a href="' + osm.userURL(d) + '" target="_blank">' + escape_default(d) + "</a>";
+ function formatUser(d2) {
+ return '<a href="' + osm.userURL(d2) + '" target="_blank">' + escape_default(d2) + "</a>";
}
function entityName(entity) {
return utilDisplayName(entity) || utilDisplayType(entity.id) + " " + entity.id;
return false;
if (local.type === "way") {
var children2 = utilArrayUnion(local.nodes, remote.nodes);
- for (var i3 = 0; i3 < children2.length; i3++) {
- var a = localGraph.hasEntity(children2[i3]);
- var b = remoteGraph.hasEntity(children2[i3]);
- if (a && b && a.version !== b.version)
+ for (var i4 = 0; i4 < children2.length; i4++) {
+ var a2 = localGraph.hasEntity(children2[i4]);
+ var b2 = remoteGraph.hasEntity(children2[i4]);
+ if (a2 && b2 && a2.version !== b2.version)
return false;
}
}
var remote = remoteGraph.entity(id2);
if (sameVersions(local, remote))
return;
- var merge3 = actionMergeRemoteChanges(id2, localGraph, remoteGraph, _discardTags, formatUser);
- history.replace(merge3);
- var mergeConflicts = merge3.conflicts();
+ var merge2 = actionMergeRemoteChanges(id2, localGraph, remoteGraph, _discardTags, formatUser);
+ history.replace(merge2);
+ var mergeConflicts = merge2.conflicts();
if (!mergeConflicts.length)
return;
var forceLocal = actionMergeRemoteChanges(id2, localGraph, remoteGraph, _discardTags).withOption("force_local");
var history = context.history();
var changes = history.changes(actionDiscardTags(history.difference(), _discardTags));
if (changes.modified.length || changes.created.length || changes.deleted.length) {
- dispatch10.call("willAttemptUpload", this);
+ dispatch14.call("willAttemptUpload", this);
osm.putChangeset(changeset, changes, uploadCallback);
} else {
didResultInNoChanges();
}
}
function didResultInNoChanges() {
- dispatch10.call("resultNoChanges", this);
+ dispatch14.call("resultNoChanges", this);
endSave();
context.flush();
}
function didResultInErrors() {
context.history().pop();
- dispatch10.call("resultErrors", this, _errors);
+ dispatch14.call("resultErrors", this, _errors);
endSave();
}
function didResultInConflicts(changeset) {
- _conflicts.sort(function(a, b) {
- return b.id.localeCompare(a.id);
+ _conflicts.sort(function(a2, b2) {
+ return b2.id.localeCompare(a2.id);
});
- dispatch10.call("resultConflicts", this, changeset, _conflicts, _origChanges);
+ dispatch14.call("resultConflicts", this, changeset, _conflicts, _origChanges);
endSave();
}
function didResultInSuccess(changeset) {
context.history().clearSaved();
- dispatch10.call("resultSuccess", this, changeset);
+ dispatch14.call("resultSuccess", this, changeset);
window.setTimeout(function() {
endSave();
context.flush();
}
function endSave() {
_isSaving = false;
- dispatch10.call("saveEnded", this);
+ dispatch14.call("saveEnded", this);
}
uploader.cancelConflictResolution = function() {
context.history().pop();
};
uploader.processResolvedConflicts = function(changeset) {
var history = context.history();
- for (var i2 = 0; i2 < _conflicts.length; i2++) {
- if (_conflicts[i2].chosen === 1) {
- var entity = context.hasEntity(_conflicts[i2].id);
+ for (var i3 = 0; i3 < _conflicts.length; i3++) {
+ if (_conflicts[i3].chosen === 1) {
+ var entity = context.hasEntity(_conflicts[i3].id);
if (entity && entity.type === "way") {
var children2 = utilArrayUniq(entity.nodes);
- for (var j2 = 0; j2 < children2.length; j2++) {
- history.replace(actionRevert(children2[j2]));
+ for (var j3 = 0; j3 < children2.length; j3++) {
+ history.replace(actionRevert(children2[j3]));
}
}
- history.replace(actionRevert(_conflicts[i2].id));
+ history.replace(actionRevert(_conflicts[i3].id));
}
}
uploader.save(changeset, true, false);
}
// modules/renderer/background_source.js
- var import_lodash2 = __toESM(require_lodash());
+ var import_lodash4 = __toESM(require_lodash());
// modules/util/IntervalTasksQueue.js
var IntervalTasksQueue = class {
`).addListener(function() {
isRetina = window.devicePixelRatio && window.devicePixelRatio >= 2;
});
- function localeDateString(s) {
- if (!s)
+ function localeDateString(s2) {
+ if (!s2)
return null;
var options2 = { day: "numeric", month: "short", year: "numeric" };
- var d = new Date(s);
- if (isNaN(d.getTime()))
+ var d2 = new Date(s2);
+ if (isNaN(d2.getTime()))
return null;
- return d.toLocaleDateString(_mainLocalizer.localeCode(), options2);
+ return d2.toLocaleDateString(_mainLocalizer.localeCode(), options2);
}
function vintageRange(vintage) {
- var s;
+ var s2;
if (vintage.start || vintage.end) {
- s = vintage.start || "?";
+ s2 = vintage.start || "?";
if (vintage.start !== vintage.end) {
- s += " - " + (vintage.end || "?");
+ s2 += " - " + (vintage.end || "?");
}
}
- return s;
+ return s2;
}
function rendererBackgroundSource(data) {
var source = Object.assign({}, data);
};
source.name = function() {
var id_safe = source.id.replace(/\./g, "<TX_DOT>");
- return _t("imagery." + id_safe + ".name", { default: (0, import_lodash2.escape)(_name) });
+ return _t("imagery." + id_safe + ".name", { default: (0, import_lodash4.escape)(_name) });
};
source.label = function() {
var id_safe = source.id.replace(/\./g, "<TX_DOT>");
- return _t.append("imagery." + id_safe + ".name", { default: (0, import_lodash2.escape)(_name) });
+ return _t.append("imagery." + id_safe + ".name", { default: (0, import_lodash4.escape)(_name) });
};
source.hasDescription = function() {
var id_safe = source.id.replace(/\./g, "<TX_DOT>");
- var descriptionText = _mainLocalizer.tInfo("imagery." + id_safe + ".description", { default: (0, import_lodash2.escape)(_description) }).text;
+ var descriptionText = _mainLocalizer.tInfo("imagery." + id_safe + ".description", { default: (0, import_lodash4.escape)(_description) }).text;
return descriptionText !== "";
};
source.description = function() {
var id_safe = source.id.replace(/\./g, "<TX_DOT>");
- return _t.append("imagery." + id_safe + ".description", { default: (0, import_lodash2.escape)(_description) });
+ return _t.append("imagery." + id_safe + ".description", { default: (0, import_lodash4.escape)(_description) });
};
source.best = function() {
return _best;
}
}
if (source.type === "wms") {
- var tileToProjectedCoords = function(x, y, z) {
- var zoomSize = Math.pow(2, z);
- var lon = x / zoomSize * Math.PI * 2 - Math.PI;
- var lat = Math.atan(Math.sinh(Math.PI * (1 - 2 * y / zoomSize)));
+ var tileToProjectedCoords = function(x2, y2, z2) {
+ var zoomSize = Math.pow(2, z2);
+ var lon = x2 / zoomSize * Math.PI * 2 - Math.PI;
+ var lat = Math.atan(Math.sinh(Math.PI * (1 - 2 * y2 / zoomSize)));
switch (source.projection) {
case "EPSG:4326":
return {
result = result.replace("{x}", coord2[0]).replace("{y}", coord2[1]).replace(/\{[t-]y\}/, Math.pow(2, coord2[2]) - coord2[1] - 1).replace(/\{z(oom)?\}/, coord2[2]).replace(/\{@2x\}|\{r\}/, isRetina ? "@2x" : "");
} else if (source.type === "bing") {
result = result.replace("{u}", function() {
- var u = "";
+ var u2 = "";
for (var zoom = coord2[2]; zoom > 0; zoom--) {
- var b = 0;
+ var b2 = 0;
var mask = 1 << zoom - 1;
if ((coord2[0] & mask) !== 0)
- b++;
+ b2++;
if ((coord2[1] & mask) !== 0)
- b += 2;
- u += b.toString();
+ b2 += 2;
+ u2 += b2.toString();
}
- return u;
+ return u2;
});
}
- result = result.replace(/\{switch:([^}]+)\}/, function(s, r) {
- var subdomains = r.split(",");
+ result = result.replace(/\{switch:([^}]+)\}/, function(s2, r2) {
+ var subdomains = r2.split(",");
return subdomains[(coord2[0] + coord2[1]) % subdomains.length];
});
return result;
};
- source.validZoom = function(z) {
- return source.zoomExtent[0] <= z && (source.overzoom || source.zoomExtent[1] > z);
+ source.validZoom = function(z2) {
+ return source.zoomExtent[0] <= z2 && (source.overzoom || source.zoomExtent[1] > z2);
};
source.isLocatorOverlay = function() {
return source.id === "mapbox_locator_overlay";
};
return source;
}
- rendererBackgroundSource.Bing = function(data, dispatch10) {
+ rendererBackgroundSource.Bing = function(data, dispatch14) {
data.template = "https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=1&pr=odbl&n=z";
var bing = rendererBackgroundSource(data);
var key = utilAesDecrypt("5c875730b09c6b422433e807e1ff060b6536c791dbfffcffc4c6b18a1bdba1f14593d151adb50e19e1be1ab19aef813bf135d0f103475e5c724dec94389e45d0");
})
};
});
- dispatch10.call("change");
+ dispatch14.call("change");
}).catch(function() {
});
bing.copyrightNotices = function(zoom, extent) {
if (_prevCenter && geoSphericalDistance(center, _prevCenter) < 5e3)
return;
_prevCenter = center;
- var z = 20;
+ var z2 = 20;
var dummyUrl = esri.url([1, 2, 3]);
- var x = Math.floor((center[0] + 180) / 360 * Math.pow(2, z));
- var y = Math.floor((1 - Math.log(Math.tan(center[1] * Math.PI / 180) + 1 / Math.cos(center[1] * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, z));
- var tilemapUrl = dummyUrl.replace(/tile\/[0-9]+\/[0-9]+\/[0-9]+\?blankTile=false/, "tilemap") + "/" + z + "/" + y + "/" + x + "/8/8";
+ var x2 = Math.floor((center[0] + 180) / 360 * Math.pow(2, z2));
+ var y2 = Math.floor((1 - Math.log(Math.tan(center[1] * Math.PI / 180) + 1 / Math.cos(center[1] * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, z2));
+ var tilemapUrl = dummyUrl.replace(/tile\/[0-9]+\/[0-9]+\/[0-9]+\?blankTile=false/, "tilemap") + "/" + z2 + "/" + y2 + "/" + x2 + "/8/8";
json_default(tilemapUrl).then(function(tilemap) {
if (!tilemap) {
throw new Error("Unknown Error");
}
var hasTiles = true;
- for (var i2 = 0; i2 < tilemap.data.length; i2++) {
- if (!tilemap.data[i2]) {
+ for (var i3 = 0; i3 < tilemap.data.length; i3++) {
+ if (!tilemap.data[i3]) {
hasTiles = false;
break;
}
inflight[tileID] = true;
json_default(url).then(function(result) {
delete inflight[tileID];
- result = result.features.map((f2) => f2.attributes).filter((a) => a.MinMapLevel <= zoom && a.MaxMapLevel >= zoom)[0];
+ result = result.features.map((f3) => f3.attributes).filter((a2) => a2.MinMapLevel <= zoom && a2.MaxMapLevel >= zoom)[0];
if (!result) {
throw new Error("Unknown Error");
} else if (result.features && result.features.length < 1) {
if (ring.length < 4) {
throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
}
- for (var j2 = 0; j2 < ring[ring.length - 1].length; j2++) {
- if (ring[ring.length - 1][j2] !== ring[0][j2]) {
+ for (var j3 = 0; j3 < ring[ring.length - 1].length; j3++) {
+ if (ring[ring.length - 1][j3] !== ring[0][j3]) {
throw new Error("First and last Position are not equivalent.");
}
}
// node_modules/@turf/bbox-clip/dist/es/lib/lineclip.js
function lineclip(points, bbox2, result) {
- var len = points.length, codeA = bitCode(points[0], bbox2), part = [], i2, codeB, lastCode;
- var a;
- var b;
+ var len = points.length, codeA = bitCode(points[0], bbox2), part = [], i3, codeB, lastCode;
+ var a2;
+ var b2;
if (!result)
result = [];
- for (i2 = 1; i2 < len; i2++) {
- a = points[i2 - 1];
- b = points[i2];
- codeB = lastCode = bitCode(b, bbox2);
+ for (i3 = 1; i3 < len; i3++) {
+ a2 = points[i3 - 1];
+ b2 = points[i3];
+ codeB = lastCode = bitCode(b2, bbox2);
while (true) {
if (!(codeA | codeB)) {
- part.push(a);
+ part.push(a2);
if (codeB !== lastCode) {
- part.push(b);
- if (i2 < len - 1) {
+ part.push(b2);
+ if (i3 < len - 1) {
result.push(part);
part = [];
}
- } else if (i2 === len - 1) {
- part.push(b);
+ } else if (i3 === len - 1) {
+ part.push(b2);
}
break;
} else if (codeA & codeB) {
break;
} else if (codeA) {
- a = intersect(a, b, codeA, bbox2);
- codeA = bitCode(a, bbox2);
+ a2 = intersect(a2, b2, codeA, bbox2);
+ codeA = bitCode(a2, bbox2);
} else {
- b = intersect(a, b, codeB, bbox2);
- codeB = bitCode(b, bbox2);
+ b2 = intersect(a2, b2, codeB, bbox2);
+ codeB = bitCode(b2, bbox2);
}
}
codeA = lastCode;
return result;
}
function polygonclip(points, bbox2) {
- var result, edge, prev, prevInside, i2, p, inside;
+ var result, edge, prev, prevInside, i3, p2, inside;
for (edge = 1; edge <= 8; edge *= 2) {
result = [];
prev = points[points.length - 1];
prevInside = !(bitCode(prev, bbox2) & edge);
- for (i2 = 0; i2 < points.length; i2++) {
- p = points[i2];
- inside = !(bitCode(p, bbox2) & edge);
+ for (i3 = 0; i3 < points.length; i3++) {
+ p2 = points[i3];
+ inside = !(bitCode(p2, bbox2) & edge);
if (inside !== prevInside)
- result.push(intersect(prev, p, edge, bbox2));
+ result.push(intersect(prev, p2, edge, bbox2));
if (inside)
- result.push(p);
- prev = p;
+ result.push(p2);
+ prev = p2;
prevInside = inside;
}
points = result;
}
return result;
}
- function intersect(a, b, edge, bbox2) {
- return edge & 8 ? [a[0] + (b[0] - a[0]) * (bbox2[3] - a[1]) / (b[1] - a[1]), bbox2[3]] : edge & 4 ? [a[0] + (b[0] - a[0]) * (bbox2[1] - a[1]) / (b[1] - a[1]), bbox2[1]] : edge & 2 ? [bbox2[2], a[1] + (b[1] - a[1]) * (bbox2[2] - a[0]) / (b[0] - a[0])] : edge & 1 ? [bbox2[0], a[1] + (b[1] - a[1]) * (bbox2[0] - a[0]) / (b[0] - a[0])] : null;
+ function intersect(a2, b2, edge, bbox2) {
+ return edge & 8 ? [a2[0] + (b2[0] - a2[0]) * (bbox2[3] - a2[1]) / (b2[1] - a2[1]), bbox2[3]] : edge & 4 ? [a2[0] + (b2[0] - a2[0]) * (bbox2[1] - a2[1]) / (b2[1] - a2[1]), bbox2[1]] : edge & 2 ? [bbox2[2], a2[1] + (b2[1] - a2[1]) * (bbox2[2] - a2[0]) / (b2[0] - a2[0])] : edge & 1 ? [bbox2[0], a2[1] + (b2[1] - a2[1]) * (bbox2[0] - a2[0]) / (b2[0] - a2[0])] : null;
}
- function bitCode(p, bbox2) {
+ function bitCode(p2, bbox2) {
var code = 0;
- if (p[0] < bbox2[0])
+ if (p2[0] < bbox2[0])
code |= 1;
- else if (p[0] > bbox2[2])
+ else if (p2[0] > bbox2[2])
code |= 2;
- if (p[1] < bbox2[1])
+ if (p2[1] < bbox2[1])
code |= 4;
- else if (p[1] > bbox2[3])
+ else if (p2[1] > bbox2[3])
code |= 8;
return code;
}
function coordEach(geojson, callback, excludeWrapCoord) {
if (geojson === null)
return;
- var j2, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type2 = geojson.type, isFeatureCollection = type2 === "FeatureCollection", isFeature = type2 === "Feature", stop = isFeatureCollection ? geojson.features.length : 1;
+ var j3, k2, l2, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type2 = geojson.type, isFeatureCollection = type2 === "FeatureCollection", isFeature = type2 === "Feature", stop = isFeatureCollection ? geojson.features.length : 1;
for (var featureIndex = 0; featureIndex < stop; featureIndex++) {
geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;
isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === "GeometryCollection" : false;
break;
case "LineString":
case "MultiPoint":
- for (j2 = 0; j2 < coords.length; j2++) {
+ for (j3 = 0; j3 < coords.length; j3++) {
if (callback(
- coords[j2],
+ coords[j3],
coordIndex,
featureIndex,
multiFeatureIndex,
break;
case "Polygon":
case "MultiLineString":
- for (j2 = 0; j2 < coords.length; j2++) {
- for (k = 0; k < coords[j2].length - wrapShrink; k++) {
+ for (j3 = 0; j3 < coords.length; j3++) {
+ for (k2 = 0; k2 < coords[j3].length - wrapShrink; k2++) {
if (callback(
- coords[j2][k],
+ coords[j3][k2],
coordIndex,
featureIndex,
multiFeatureIndex,
multiFeatureIndex++;
break;
case "MultiPolygon":
- for (j2 = 0; j2 < coords.length; j2++) {
+ for (j3 = 0; j3 < coords.length; j3++) {
geometryIndex = 0;
- for (k = 0; k < coords[j2].length; k++) {
- for (l = 0; l < coords[j2][k].length - wrapShrink; l++) {
+ for (k2 = 0; k2 < coords[j3].length; k2++) {
+ for (l2 = 0; l2 < coords[j3][k2].length - wrapShrink; l2++) {
if (callback(
- coords[j2][k][l],
+ coords[j3][k2][l2],
coordIndex,
featureIndex,
multiFeatureIndex,
}
break;
case "GeometryCollection":
- for (j2 = 0; j2 < geometry.geometries.length; j2++)
- if (coordEach(geometry.geometries[j2], callback, excludeWrapCoord) === false)
+ for (j3 = 0; j3 < geometry.geometries.length; j3++)
+ if (coordEach(geometry.geometries[j3], callback, excludeWrapCoord) === false)
return false;
break;
default:
var es_default = bbox;
// modules/renderer/background.js
- var import_which_polygon4 = __toESM(require_which_polygon());
+ var import_which_polygon3 = __toESM(require_which_polygon());
// modules/renderer/tile_layer.js
function rendererTileLayer(context) {
var transformProp = utilPrefixCSSProperty("Transform");
- var tiler8 = utilTiler();
+ var tiler9 = utilTiler();
var _tileSize = 256;
var _projection;
var _cache4 = {};
var _tileOrigin;
var _zoom;
var _source;
- function tileSizeAtZoom(d, z) {
+ function tileSizeAtZoom(d2, z2) {
var EPSILON = 2e-3;
- return _tileSize * Math.pow(2, z - d[2]) / _tileSize + EPSILON;
+ return _tileSize * Math.pow(2, z2 - d2[2]) / _tileSize + EPSILON;
}
- function atZoom(t, distance) {
+ function atZoom(t2, distance) {
var power = Math.pow(2, distance);
return [
- Math.floor(t[0] * power),
- Math.floor(t[1] * power),
- t[2] + distance
+ Math.floor(t2[0] * power),
+ Math.floor(t2[1] * power),
+ t2[2] + distance
];
}
- function lookUp(d) {
- for (var up = -1; up > -d[2]; up--) {
- var tile = atZoom(d, up);
+ function lookUp(d2) {
+ for (var up = -1; up > -d2[2]; up--) {
+ var tile = atZoom(d2, up);
if (_cache4[_source.url(tile)] !== false) {
return tile;
}
}
}
- function uniqueBy(a, n2) {
- var o = [];
+ function uniqueBy(a2, n3) {
+ var o2 = [];
var seen = {};
- for (var i2 = 0; i2 < a.length; i2++) {
- if (seen[a[i2][n2]] === void 0) {
- o.push(a[i2]);
- seen[a[i2][n2]] = true;
+ for (var i3 = 0; i3 < a2.length; i3++) {
+ if (seen[a2[i3][n3]] === void 0) {
+ o2.push(a2[i3]);
+ seen[a2[i3][n3]] = true;
}
}
- return o;
+ return o2;
}
- function addSource(d) {
- d.push(_source.url(d));
- return d;
+ function addSource(d2) {
+ d2.push(_source.url(d2));
+ return d2;
}
function background(selection2) {
_zoom = geoScaleToZoom(_projection.scale(), _tileSize);
_projection.translate()[0] + pixelOffset[0],
_projection.translate()[1] + pixelOffset[1]
];
- tiler8.scale(_projection.scale() * 2 * Math.PI).translate(translate);
+ tiler9.scale(_projection.scale() * 2 * Math.PI).translate(translate);
_tileOrigin = [
_projection.scale() * Math.PI - translate[0],
_projection.scale() * Math.PI - translate[1]
var requests = [];
var showDebug = context.getDebug("tile") && !_source.overlay;
if (_source.validZoom(_zoom)) {
- tiler8.skipNullIsland(!!_source.overlay);
- tiler8().forEach(function(d) {
- addSource(d);
- if (d[3] === "")
+ tiler9.skipNullIsland(!!_source.overlay);
+ tiler9().forEach(function(d2) {
+ addSource(d2);
+ if (d2[3] === "")
return;
- if (typeof d[3] !== "string")
+ if (typeof d2[3] !== "string")
return;
- requests.push(d);
- if (_cache4[d[3]] === false && lookUp(d)) {
- requests.push(addSource(lookUp(d)));
+ requests.push(d2);
+ if (_cache4[d2[3]] === false && lookUp(d2)) {
+ requests.push(addSource(lookUp(d2)));
}
});
- requests = uniqueBy(requests, 3).filter(function(r) {
- return _cache4[r[3]] !== false;
+ requests = uniqueBy(requests, 3).filter(function(r2) {
+ return _cache4[r2[3]] !== false;
});
}
- function load(d3_event, d) {
- _cache4[d[3]] = true;
+ function load(d3_event, d2) {
+ _cache4[d2[3]] = true;
select_default2(this).on("error", null).on("load", null).classed("tile-loaded", true);
render(selection2);
}
- function error(d3_event, d) {
- _cache4[d[3]] = false;
+ function error(d3_event, d2) {
+ _cache4[d2[3]] = false;
select_default2(this).on("error", null).on("load", null).remove();
render(selection2);
}
- function imageTransform(d) {
- var ts = _tileSize * Math.pow(2, _zoom - d[2]);
- var scale = tileSizeAtZoom(d, _zoom);
- return "translate(" + (d[0] * ts - _tileOrigin[0]) + "px," + (d[1] * ts - _tileOrigin[1]) + "px) scale(" + scale + "," + scale + ")";
+ function imageTransform(d2) {
+ var ts = _tileSize * Math.pow(2, _zoom - d2[2]);
+ var scale = tileSizeAtZoom(d2, _zoom);
+ return "translate(" + (d2[0] * ts - _tileOrigin[0]) + "px," + (d2[1] * ts - _tileOrigin[1]) + "px) scale(" + scale + "," + scale + ")";
}
- function tileCenter(d) {
- var ts = _tileSize * Math.pow(2, _zoom - d[2]);
+ function tileCenter(d2) {
+ var ts = _tileSize * Math.pow(2, _zoom - d2[2]);
return [
- d[0] * ts - _tileOrigin[0] + ts / 2,
- d[1] * ts - _tileOrigin[1] + ts / 2
+ d2[0] * ts - _tileOrigin[0] + ts / 2,
+ d2[1] * ts - _tileOrigin[1] + ts / 2
];
}
- function debugTransform(d) {
- var coord2 = tileCenter(d);
+ function debugTransform(d2) {
+ var coord2 = tileCenter(d2);
return "translate(" + coord2[0] + "px," + coord2[1] + "px)";
}
- var dims = tiler8.size();
+ var dims = tiler9.size();
var mapCenter = [dims[0] / 2, dims[1] / 2];
var minDist = Math.max(dims[0], dims[1]);
var nearCenter;
- requests.forEach(function(d) {
- var c = tileCenter(d);
- var dist = geoVecLength(c, mapCenter);
+ requests.forEach(function(d2) {
+ var c2 = tileCenter(d2);
+ var dist = geoVecLength(c2, mapCenter);
if (dist < minDist) {
minDist = dist;
- nearCenter = d;
+ nearCenter = d2;
}
});
- var image = selection2.selectAll("img").data(requests, function(d) {
- return d[3];
+ var image = selection2.selectAll("img").data(requests, function(d2) {
+ return d2[3];
});
image.exit().style(transformProp, imageTransform).classed("tile-removing", true).classed("tile-center", false).each(function() {
var tile = select_default2(this);
}
}, 300);
});
- image.enter().append("img").attr("class", "tile").attr("alt", "").attr("draggable", "false").style("width", _tileSize + "px").style("height", _tileSize + "px").attr("src", function(d) {
- return d[3];
- }).on("error", error).on("load", load).merge(image).style(transformProp, imageTransform).classed("tile-debug", showDebug).classed("tile-removing", false).classed("tile-center", function(d) {
- return d === nearCenter;
+ image.enter().append("img").attr("class", "tile").attr("alt", "").attr("draggable", "false").style("width", _tileSize + "px").style("height", _tileSize + "px").attr("src", function(d2) {
+ return d2[3];
+ }).on("error", error).on("load", load).merge(image).style(transformProp, imageTransform).classed("tile-debug", showDebug).classed("tile-removing", false).classed("tile-center", function(d2) {
+ return d2 === nearCenter;
});
- var debug2 = selection2.selectAll(".tile-label-debug").data(showDebug ? requests : [], function(d) {
- return d[3];
+ var debug2 = selection2.selectAll(".tile-label-debug").data(showDebug ? requests : [], function(d2) {
+ return d2[3];
});
debug2.exit().remove();
if (showDebug) {
debugEnter.append("div").attr("class", "tile-label-debug-vintage");
debug2 = debug2.merge(debugEnter);
debug2.style(transformProp, debugTransform);
- debug2.selectAll(".tile-label-debug-coord").text(function(d) {
- return d[2] + " / " + d[0] + " / " + d[1];
+ debug2.selectAll(".tile-label-debug-coord").text(function(d2) {
+ return d2[2] + " / " + d2[0] + " / " + d2[1];
});
- debug2.selectAll(".tile-label-debug-vintage").each(function(d) {
+ debug2.selectAll(".tile-label-debug-vintage").each(function(d2) {
var span = select_default2(this);
- var center = context.projection.invert(tileCenter(d));
- _source.getMetadata(center, d, function(err, result) {
+ var center = context.projection.invert(tileCenter(d2));
+ _source.getMetadata(center, d2, function(err, result) {
if (result && result.vintage && result.vintage.range) {
span.text(result.vintage.range);
} else {
};
background.dimensions = function(val) {
if (!arguments.length)
- return tiler8.size();
- tiler8.size(val);
+ return tiler9.size();
+ tiler9.size(val);
return background;
};
background.source = function(val) {
_source = val;
_tileSize = _source.tileSize;
_cache4 = {};
- tiler8.tileSize(_source.tileSize).zoomExtent(_source.zoomExtent);
+ tiler9.tileSize(_source.tileSize).zoomExtent(_source.zoomExtent);
return background;
};
return background;
// modules/renderer/background.js
var _imageryIndex = null;
function rendererBackground(context) {
- const dispatch10 = dispatch_default("change");
+ const dispatch14 = dispatch_default("change");
const baseLayer = rendererTileLayer(context).projection(context.projection);
let _checkedBlocklists = [];
let _isValid = true;
_imageryIndex.features[source.id] = feature3;
return feature3;
}).filter(Boolean);
- _imageryIndex.query = (0, import_which_polygon4.default)({ type: "FeatureCollection", features });
+ _imageryIndex.query = (0, import_which_polygon3.default)({ type: "FeatureCollection", features });
_imageryIndex.backgrounds = sources.map((source) => {
if (source.type === "bing") {
- return rendererBackgroundSource.Bing(source, dispatch10);
+ return rendererBackgroundSource.Bing(source, dispatch14);
} else if (/^EsriWorldImagery/.test(source.id)) {
return rendererBackgroundSource.Esri(source);
} else {
}
const sources = background.sources(context.map().extent());
const wasValid = _isValid;
- _isValid = !!sources.filter((d) => d === currSource).length;
+ _isValid = !!sources.filter((d2) => d2 === currSource).length;
if (wasValid !== _isValid) {
background.updateImagery();
}
let mask = base.selectAll(".layer-unsharp-mask").data(_sharpness > 1 ? [0] : []);
mask.exit().remove();
mask.enter().append("div").attr("class", "layer layer-mask layer-unsharp-mask").merge(mask).call(baseLayer).style("filter", maskFilter || null).style("mix-blend-mode", mixBlendMode || null);
- let overlays = selection2.selectAll(".layer-overlay").data(_overlayLayers, (d) => d.source().name());
+ let overlays = selection2.selectAll(".layer-overlay").data(_overlayLayers, (d2) => d2.source().name());
overlays.exit().remove();
- overlays.enter().insert("div", ".layer-data").attr("class", "layer layer-overlay").merge(overlays).each((layer, i2, nodes) => select_default2(nodes[i2]).call(layer));
+ overlays.enter().insert("div", ".layer-data").attr("class", "layer layer-overlay").merge(overlays).each((layer, i3, nodes) => select_default2(nodes[i3]).call(layer));
}
background.updateImagery = function() {
let currSource = baseLayer.source();
if (context.inIntro() || !currSource)
return;
- let o = _overlayLayers.filter((d) => !d.source().isLocatorOverlay() && !d.source().isHidden()).map((d) => d.source().id).join(",");
+ let o2 = _overlayLayers.filter((d2) => !d2.source().isLocatorOverlay() && !d2.source().isHidden()).map((d2) => d2.source().id).join(",");
const meters = geoOffsetToMeters(currSource.offset());
const EPSILON = 0.01;
- const x = +meters[0].toFixed(2);
- const y = +meters[1].toFixed(2);
+ const x2 = +meters[0].toFixed(2);
+ const y2 = +meters[1].toFixed(2);
let hash = utilStringQs(window.location.hash);
let id2 = currSource.id;
if (id2 === "custom") {
} else {
delete hash.background;
}
- if (o) {
- hash.overlays = o;
+ if (o2) {
+ hash.overlays = o2;
} else {
delete hash.overlays;
}
- if (Math.abs(x) > EPSILON || Math.abs(y) > EPSILON) {
- hash.offset = `${x},${y}`;
+ if (Math.abs(x2) > EPSILON || Math.abs(y2) > EPSILON) {
+ hash.offset = `${x2},${y2}`;
} else {
delete hash.offset;
}
if (currUsed && _isValid) {
imageryUsed.push(currUsed);
}
- _overlayLayers.filter((d) => !d.source().isLocatorOverlay() && !d.source().isHidden()).forEach((d) => imageryUsed.push(d.source().imageryUsed()));
+ _overlayLayers.filter((d2) => !d2.source().isLocatorOverlay() && !d2.source().isHidden()).forEach((d2) => imageryUsed.push(d2.source().imageryUsed()));
const dataLayer = context.layers().layer("data");
if (dataLayer && dataLayer.enabled() && dataLayer.hasData()) {
imageryUsed.push(dataLayer.getSrc());
mapillary: "Mapillary Images",
"mapillary-map-features": "Mapillary Map Features",
"mapillary-signs": "Mapillary Signs",
- kartaview: "KartaView Images"
+ kartaview: "KartaView Images",
+ vegbilder: "Norwegian Road Administration Images",
+ mapilio: "Mapilio Images"
};
for (let layerID in photoOverlayLayers) {
const layer = context.layers().layer(layerID);
if (!_imageryIndex)
return [];
let visible = {};
- (_imageryIndex.query.bbox(extent.rectangle(), true) || []).forEach((d) => visible[d.id] = true);
+ (_imageryIndex.query.bbox(extent.rectangle(), true) || []).forEach((d2) => visible[d2.id] = true);
const currSource = baseLayer.source();
const osm = context.connection();
const blocklists = osm && osm.imageryBlocklists() || [];
baseLayer.dimensions(val);
_overlayLayers.forEach((layer) => layer.dimensions(val));
};
- background.baseLayerSource = function(d) {
+ background.baseLayerSource = function(d2) {
if (!arguments.length)
return baseLayer.source();
const osm = context.connection();
if (!osm)
return background;
const blocklists = osm.imageryBlocklists();
- const template = d.template();
+ const template = d2.template();
let fail = false;
let tested = 0;
let regex;
- for (let i2 = 0; i2 < blocklists.length; i2++) {
- regex = blocklists[i2];
+ for (let i3 = 0; i3 < blocklists.length; i3++) {
+ regex = blocklists[i3];
fail = regex.test(template);
tested++;
if (fail)
regex = /.*\.google(apis)?\..*\/(vt|kh)[\?\/].*([xyz]=.*){3}.*/;
fail = regex.test(template);
}
- baseLayer.source(!fail ? d : background.findSource("none"));
- dispatch10.call("change");
+ baseLayer.source(!fail ? d2 : background.findSource("none"));
+ dispatch14.call("change");
background.updateImagery();
return background;
};
background.findSource = (id2) => {
if (!id2 || !_imageryIndex)
return null;
- return _imageryIndex.backgrounds.find((d) => d.id && d.id === id2);
+ return _imageryIndex.backgrounds.find((d2) => d2.id && d2.id === id2);
};
background.bing = () => {
background.baseLayerSource(background.findSource("Bing"));
};
- background.showsLayer = (d) => {
+ background.showsLayer = (d2) => {
const currSource = baseLayer.source();
- if (!d || !currSource)
+ if (!d2 || !currSource)
return false;
- return d.id === currSource.id || _overlayLayers.some((layer) => d.id === layer.source().id);
+ return d2.id === currSource.id || _overlayLayers.some((layer) => d2.id === layer.source().id);
};
background.overlayLayerSources = () => {
return _overlayLayers.map((layer) => layer.source());
};
- background.toggleOverlayLayer = (d) => {
+ background.toggleOverlayLayer = (d2) => {
let layer;
- for (let i2 = 0; i2 < _overlayLayers.length; i2++) {
- layer = _overlayLayers[i2];
- if (layer.source() === d) {
- _overlayLayers.splice(i2, 1);
- dispatch10.call("change");
+ for (let i3 = 0; i3 < _overlayLayers.length; i3++) {
+ layer = _overlayLayers[i3];
+ if (layer.source() === d2) {
+ _overlayLayers.splice(i3, 1);
+ dispatch14.call("change");
background.updateImagery();
return;
}
}
- layer = rendererTileLayer(context).source(d).projection(context.projection).dimensions(
+ layer = rendererTileLayer(context).source(d2).projection(context.projection).dimensions(
baseLayer.dimensions()
);
_overlayLayers.push(layer);
- dispatch10.call("change");
+ dispatch14.call("change");
background.updateImagery();
};
- background.nudge = (d, zoom) => {
+ background.nudge = (d2, zoom) => {
const currSource = baseLayer.source();
if (currSource) {
- currSource.nudge(d, zoom);
- dispatch10.call("change");
+ currSource.nudge(d2, zoom);
+ dispatch14.call("change");
background.updateImagery();
}
return background;
};
- background.offset = function(d) {
+ background.offset = function(d2) {
const currSource = baseLayer.source();
if (!arguments.length) {
return currSource && currSource.offset() || [0, 0];
}
if (currSource) {
- currSource.offset(d);
- dispatch10.call("change");
+ currSource.offset(d2);
+ dispatch14.call("change");
background.updateImagery();
}
return background;
};
- background.brightness = function(d) {
+ background.brightness = function(d2) {
if (!arguments.length)
return _brightness;
- _brightness = d;
+ _brightness = d2;
if (context.mode())
- dispatch10.call("change");
+ dispatch14.call("change");
return background;
};
- background.contrast = function(d) {
+ background.contrast = function(d2) {
if (!arguments.length)
return _contrast;
- _contrast = d;
+ _contrast = d2;
if (context.mode())
- dispatch10.call("change");
+ dispatch14.call("change");
return background;
};
- background.saturation = function(d) {
+ background.saturation = function(d2) {
if (!arguments.length)
return _saturation;
- _saturation = d;
+ _saturation = d2;
if (context.mode())
- dispatch10.call("change");
+ dispatch14.call("change");
return background;
};
- background.sharpness = function(d) {
+ background.sharpness = function(d2) {
if (!arguments.length)
return _sharpness;
- _sharpness = d;
+ _sharpness = d2;
if (context.mode())
- dispatch10.call("change");
+ dispatch14.call("change");
return background;
};
let _loadPromise;
const lastUsedBackground = corePreferences("background-last-used");
return loadPromise.then((imageryIndex) => {
const extent = context.map().extent();
- const validBackgrounds = background.sources(extent).filter((d) => d.id !== "none" && d.id !== "custom");
+ const validBackgrounds = background.sources(extent).filter((d2) => d2.id !== "none" && d2.id !== "custom");
const first = validBackgrounds.length && validBackgrounds[0];
- const isLastUsedValid = !!validBackgrounds.find((d) => d.id && d.id === lastUsedBackground);
+ const isLastUsedValid = !!validBackgrounds.find((d2) => d2.id && d2.id === lastUsedBackground);
let best;
if (!requestedBackground && extent) {
const viewArea = extent.area();
- best = validBackgrounds.find((s) => {
- if (!s.best() || s.overlay)
+ best = validBackgrounds.find((s2) => {
+ if (!s2.best() || s2.overlay)
return false;
let bbox2 = es_default(bboxClip(
- { type: "MultiPolygon", coordinates: [s.polygon || [extent.polygon()]] },
+ { type: "MultiPolygon", coordinates: [s2.polygon || [extent.polygon()]] },
extent.rectangle()
));
let area = geoExtent(bbox2.slice(0, 2), bbox2.slice(2, 4)).area();
background.findSource(requestedBackground) || best || isLastUsedValid && background.findSource(lastUsedBackground) || background.findSource("Bing") || first || background.findSource("none")
);
}
- const locator = imageryIndex.backgrounds.find((d) => d.overlay && d.default);
+ const locator = imageryIndex.backgrounds.find((d2) => d2.overlay && d2.default);
if (locator) {
background.toggleOverlayLayer(locator);
}
}
}
if (hash.offset) {
- const offset = hash.offset.replace(/;/g, ",").split(",").map((n2) => !isNaN(n2) && n2);
+ const offset = hash.offset.replace(/;/g, ",").split(",").map((n3) => !isNaN(n3) && n3);
if (offset.length === 2) {
background.offset(geoMetersToOffset(offset));
}
console.error(err);
});
};
- return utilRebind(background, dispatch10, "on");
+ return utilRebind(background, dispatch14, "on");
}
// modules/renderer/features.js
function rendererFeatures(context) {
- var dispatch10 = dispatch_default("change", "redraw");
- var features = utilRebind({}, dispatch10, "on");
+ var dispatch14 = dispatch_default("change", "redraw");
+ var features = utilRebind({}, dispatch14, "on");
var _deferred2 = /* @__PURE__ */ new Set();
var traffic_roads = {
"motorway": true,
corePreferences("disabled-features", disabled.join(","));
}
_hidden = features.hidden();
- dispatch10.call("change");
- dispatch10.call("redraw");
+ dispatch14.call("change");
+ dispatch14.call("redraw");
}
- function defineRule(k, filter2, max3) {
+ function defineRule(k2, filter2, max3) {
var isEnabled = true;
- _keys.push(k);
- _rules[k] = {
+ _keys.push(k2);
+ _rules[k2] = {
filter: filter2,
enabled: isEnabled,
// whether the user wants it enabled..
return false;
}
var strings = Object.keys(tags);
- for (var i2 = 0; i2 < strings.length; i2++) {
- var s = strings[i2];
- if (osmLifecyclePrefixes[s] || osmLifecyclePrefixes[tags[s]])
+ for (var i3 = 0; i3 < strings.length; i3++) {
+ var s2 = strings[i3];
+ if (osmLifecyclePrefixes[s2] || osmLifecyclePrefixes[tags[s2]])
return true;
}
return false;
features.keys = function() {
return _keys;
};
- features.enabled = function(k) {
+ features.enabled = function(k2) {
if (!arguments.length) {
- return _keys.filter(function(k2) {
- return _rules[k2].enabled;
+ return _keys.filter(function(k3) {
+ return _rules[k3].enabled;
});
}
- return _rules[k] && _rules[k].enabled;
+ return _rules[k2] && _rules[k2].enabled;
};
- features.disabled = function(k) {
+ features.disabled = function(k2) {
if (!arguments.length) {
- return _keys.filter(function(k2) {
- return !_rules[k2].enabled;
+ return _keys.filter(function(k3) {
+ return !_rules[k3].enabled;
});
}
- return _rules[k] && !_rules[k].enabled;
+ return _rules[k2] && !_rules[k2].enabled;
};
- features.hidden = function(k) {
+ features.hidden = function(k2) {
if (!arguments.length) {
- return _keys.filter(function(k2) {
- return _rules[k2].hidden();
+ return _keys.filter(function(k3) {
+ return _rules[k3].hidden();
});
}
- return _rules[k] && _rules[k].hidden();
+ return _rules[k2] && _rules[k2].hidden();
};
- features.autoHidden = function(k) {
+ features.autoHidden = function(k2) {
if (!arguments.length) {
- return _keys.filter(function(k2) {
- return _rules[k2].autoHidden();
+ return _keys.filter(function(k3) {
+ return _rules[k3].autoHidden();
});
}
- return _rules[k] && _rules[k].autoHidden();
+ return _rules[k2] && _rules[k2].autoHidden();
};
- features.enable = function(k) {
- if (_rules[k] && !_rules[k].enabled) {
- _rules[k].enable();
+ features.enable = function(k2) {
+ if (_rules[k2] && !_rules[k2].enabled) {
+ _rules[k2].enable();
update();
}
};
features.enableAll = function() {
var didEnable = false;
- for (var k in _rules) {
- if (!_rules[k].enabled) {
+ for (var k2 in _rules) {
+ if (!_rules[k2].enabled) {
didEnable = true;
- _rules[k].enable();
+ _rules[k2].enable();
}
}
if (didEnable)
update();
};
- features.disable = function(k) {
- if (_rules[k] && _rules[k].enabled) {
- _rules[k].disable();
+ features.disable = function(k2) {
+ if (_rules[k2] && _rules[k2].enabled) {
+ _rules[k2].disable();
update();
}
};
features.disableAll = function() {
var didDisable = false;
- for (var k in _rules) {
- if (_rules[k].enabled) {
+ for (var k2 in _rules) {
+ if (_rules[k2].enabled) {
didDisable = true;
- _rules[k].disable();
+ _rules[k2].disable();
}
}
if (didDisable)
update();
};
- features.toggle = function(k) {
- if (_rules[k]) {
- (function(f2) {
- return f2.enabled ? f2.disable() : f2.enable();
- })(_rules[k]);
+ features.toggle = function(k2) {
+ if (_rules[k2]) {
+ (function(f3) {
+ return f3.enabled ? f3.disable() : f3.enable();
+ })(_rules[k2]);
update();
}
};
features.resetStats = function() {
- for (var i2 = 0; i2 < _keys.length; i2++) {
- _rules[_keys[i2]].count = 0;
+ for (var i3 = 0; i3 < _keys.length; i3++) {
+ _rules[_keys[i3]].count = 0;
}
- dispatch10.call("change");
+ dispatch14.call("change");
};
- features.gatherStats = function(d, resolver, dimensions) {
+ features.gatherStats = function(d2, resolver, dimensions) {
var needsRedraw = false;
- var types = utilArrayGroupBy(d, "type");
+ var types = utilArrayGroupBy(d2, "type");
var entities = [].concat(types.relation || [], types.way || [], types.node || []);
- var currHidden, geometry, matches, i2, j2;
- for (i2 = 0; i2 < _keys.length; i2++) {
- _rules[_keys[i2]].count = 0;
+ var currHidden, geometry, matches, i3, j3;
+ for (i3 = 0; i3 < _keys.length; i3++) {
+ _rules[_keys[i3]].count = 0;
}
_cullFactor = dimensions[0] * dimensions[1] / 1e6;
- for (i2 = 0; i2 < entities.length; i2++) {
- geometry = entities[i2].geometry(resolver);
- matches = Object.keys(features.getMatches(entities[i2], resolver, geometry));
- for (j2 = 0; j2 < matches.length; j2++) {
- _rules[matches[j2]].count++;
+ for (i3 = 0; i3 < entities.length; i3++) {
+ geometry = entities[i3].geometry(resolver);
+ matches = Object.keys(features.getMatches(entities[i3], resolver, geometry));
+ for (j3 = 0; j3 < matches.length; j3++) {
+ _rules[matches[j3]].count++;
}
}
currHidden = features.hidden();
if (currHidden !== _hidden) {
_hidden = currHidden;
needsRedraw = true;
- dispatch10.call("change");
+ dispatch14.call("change");
}
return needsRedraw;
};
features.stats = function() {
- for (var i2 = 0; i2 < _keys.length; i2++) {
- _stats[_keys[i2]] = _rules[_keys[i2]].count;
+ for (var i3 = 0; i3 < _keys.length; i3++) {
+ _stats[_keys[i3]] = _rules[_keys[i3]].count;
}
return _stats;
};
- features.clear = function(d) {
- for (var i2 = 0; i2 < d.length; i2++) {
- features.clearEntity(d[i2]);
+ features.clear = function(d2) {
+ for (var i3 = 0; i3 < d2.length; i3++) {
+ features.clearEntity(d2[i3]);
}
};
features.clearEntity = function(entity) {
if (!_cache4[ent].matches) {
var matches = {};
var hasMatch = false;
- for (var i2 = 0; i2 < _keys.length; i2++) {
- if (_keys[i2] === "others") {
+ for (var i3 = 0; i3 < _keys.length; i3++) {
+ if (_keys[i3] === "others") {
if (hasMatch)
continue;
if (entity.type === "way") {
}
}
}
- if (_rules[_keys[i2]].filter(entity.tags, geometry)) {
- matches[_keys[i2]] = hasMatch = true;
+ if (_rules[_keys[i3]].filter(entity.tags, geometry)) {
+ matches[_keys[i3]] = hasMatch = true;
}
}
_cache4[ent].matches = matches;
if (_forceVisible[entity.id])
return false;
var matches = Object.keys(features.getMatches(entity, resolver, geometry));
- return matches.length && matches.every(function(k) {
- return features.hidden(k);
+ return matches.length && matches.every(function(k2) {
+ return features.hidden(k2);
});
};
features.isHiddenChild = function(entity, resolver, geometry) {
var parents = features.getParents(entity, resolver, geometry);
if (!parents.length)
return false;
- for (var i2 = 0; i2 < parents.length; i2++) {
- if (!features.isHidden(parents[i2], resolver, parents[i2].geometry(resolver))) {
+ for (var i3 = 0; i3 < parents.length; i3++) {
+ if (!features.isHidden(parents[i3], resolver, parents[i3].geometry(resolver))) {
return false;
}
}
childNodes = entity.nodes ? resolver.childNodes(entity) : [];
connections = features.getParents(entity, resolver, entity.geometry(resolver));
}
- connections = childNodes.reduce(function(result, e) {
- return resolver.isShared(e) ? utilArrayUnion(result, resolver.parentWays(e)) : result;
+ connections = childNodes.reduce(function(result, e3) {
+ return resolver.isShared(e3) ? utilArrayUnion(result, resolver.parentWays(e3)) : result;
}, connections);
- return connections.some(function(e) {
- return features.isHidden(e, resolver, e.geometry(resolver));
+ return connections.some(function(e3) {
+ return features.isHidden(e3, resolver, e3.geometry(resolver));
});
};
features.isHidden = function(entity, resolver, geometry) {
var fn = geometry === "vertex" ? features.isHiddenChild : features.isHiddenFeature;
return fn(entity, resolver, geometry);
};
- features.filter = function(d, resolver) {
+ features.filter = function(d2, resolver) {
if (!_hidden.length)
- return d;
+ return d2;
var result = [];
- for (var i2 = 0; i2 < d.length; i2++) {
- var entity = d[i2];
+ for (var i3 = 0; i3 < d2.length; i3++) {
+ var entity = d2[i3];
if (!features.isHidden(entity, resolver, entity.geometry(resolver))) {
result.push(entity);
}
if (!arguments.length)
return Object.keys(_forceVisible);
_forceVisible = {};
- for (var i2 = 0; i2 < entityIDs.length; i2++) {
- _forceVisible[entityIDs[i2]] = true;
- var entity = context.hasEntity(entityIDs[i2]);
+ for (var i3 = 0; i3 < entityIDs.length; i3++) {
+ _forceVisible[entityIDs[i3]] = true;
+ var entity = context.hasEntity(entityIDs[i3]);
if (entity && entity.type === "relation") {
- for (var j2 in entity.members) {
- _forceVisible[entity.members[j2].id] = true;
+ for (var j3 in entity.members) {
+ _forceVisible[entity.members[j3].id] = true;
}
}
}
var graph = context.graph();
var types = utilArrayGroupBy(newEntities, "type");
var entities = [].concat(types.relation || [], types.way || [], types.node || []);
- for (var i2 = 0; i2 < entities.length; i2++) {
- var geometry = entities[i2].geometry(graph);
- features.getMatches(entities[i2], graph, geometry);
+ for (var i3 = 0; i3 < entities.length; i3++) {
+ var geometry = entities[i3].geometry(graph);
+ features.getMatches(entities[i3], graph, geometry);
}
});
_deferred2.add(handle);
if (activeID === node.id)
return 0;
var parents = graph.parentWays(node);
- var i2, j2, nodes, isClosed, ix1, ix2, ix3, ix4, max3;
- for (i2 = 0; i2 < parents.length; i2++) {
- nodes = parents[i2].nodes;
- isClosed = parents[i2].isClosed();
- for (j2 = 0; j2 < nodes.length; j2++) {
- if (nodes[j2] === node.id) {
- ix1 = j2 - 2;
- ix2 = j2 - 1;
- ix3 = j2 + 1;
- ix4 = j2 + 2;
+ var i3, j3, nodes, isClosed, ix1, ix2, ix3, ix4, max3;
+ for (i3 = 0; i3 < parents.length; i3++) {
+ nodes = parents[i3].nodes;
+ isClosed = parents[i3].isClosed();
+ for (j3 = 0; j3 < nodes.length; j3++) {
+ if (nodes[j3] === node.id) {
+ ix1 = j3 - 2;
+ ix2 = j3 - 1;
+ ix3 = j3 + 1;
+ ix4 = j3 + 2;
if (isClosed) {
max3 = nodes.length - 1;
if (ix1 < 0)
}
return 1;
}
- function svgMarkerSegments(projection2, graph, dt, shouldReverse, bothDirections) {
+ function svgMarkerSegments(projection2, graph, dt2, shouldReverse, bothDirections) {
return function(entity) {
- var i2 = 0;
- var offset = dt;
+ var i3 = 0;
+ var offset = dt2;
var segments = [];
var clip = identity_default2().clipExtent(projection2.clipExtent()).stream;
- var coordinates = graph.childNodes(entity).map(function(n2) {
- return n2.loc;
+ var coordinates = graph.childNodes(entity).map(function(n3) {
+ return n3.loc;
});
- var a, b;
+ var a2, b2;
if (shouldReverse(entity)) {
coordinates.reverse();
}
lineStart: function() {
},
lineEnd: function() {
- a = null;
+ a2 = null;
},
- point: function(x, y) {
- b = [x, y];
- if (a) {
- var span = geoVecLength(a, b) - offset;
+ point: function(x2, y2) {
+ b2 = [x2, y2];
+ if (a2) {
+ var span = geoVecLength(a2, b2) - offset;
if (span >= 0) {
- var heading = geoVecAngle(a, b);
- var dx = dt * Math.cos(heading);
- var dy = dt * Math.sin(heading);
- var p = [
- a[0] + offset * Math.cos(heading),
- a[1] + offset * Math.sin(heading)
+ var heading = geoVecAngle(a2, b2);
+ var dx = dt2 * Math.cos(heading);
+ var dy = dt2 * Math.sin(heading);
+ var p2 = [
+ a2[0] + offset * Math.cos(heading),
+ a2[1] + offset * Math.sin(heading)
];
- var coord2 = [a, p];
- for (span -= dt; span >= 0; span -= dt) {
- p = geoVecAdd(p, [dx, dy]);
- coord2.push(p);
+ var coord2 = [a2, p2];
+ for (span -= dt2; span >= 0; span -= dt2) {
+ p2 = geoVecAdd(p2, [dx, dy]);
+ coord2.push(p2);
}
- coord2.push(b);
+ coord2.push(b2);
var segment = "";
- var j2;
- for (j2 = 0; j2 < coord2.length; j2++) {
- segment += (j2 === 0 ? "M" : "L") + coord2[j2][0] + "," + coord2[j2][1];
+ var j3;
+ for (j3 = 0; j3 < coord2.length; j3++) {
+ segment += (j3 === 0 ? "M" : "L") + coord2[j3][0] + "," + coord2[j3][1];
}
- segments.push({ id: entity.id, index: i2++, d: segment });
+ segments.push({ id: entity.id, index: i3++, d: segment });
if (bothDirections(entity)) {
segment = "";
- for (j2 = coord2.length - 1; j2 >= 0; j2--) {
- segment += (j2 === coord2.length - 1 ? "M" : "L") + coord2[j2][0] + "," + coord2[j2][1];
+ for (j3 = coord2.length - 1; j3 >= 0; j3--) {
+ segment += (j3 === coord2.length - 1 ? "M" : "L") + coord2[j3][0] + "," + coord2[j3][1];
}
- segments.push({ id: entity.id, index: i2++, d: segment });
+ segments.push({ id: entity.id, index: i3++, d: segment });
}
}
offset = -span;
}
- a = b;
+ a2 = b2;
}
})));
return segments;
return cache[entity.id] = path(entity.asGeoJSON(graph));
}
};
- svgpath.geojson = function(d) {
- if (d.__featurehash__ !== void 0) {
- if (d.__featurehash__ in cache) {
- return cache[d.__featurehash__];
+ svgpath.geojson = function(d2) {
+ if (d2.__featurehash__ !== void 0) {
+ if (d2.__featurehash__ in cache) {
+ return cache[d2.__featurehash__];
} else {
- return cache[d.__featurehash__] = path(d);
+ return cache[d2.__featurehash__] = path(d2);
}
} else {
- return path(d);
+ return path(d2);
}
};
return svgpath;
}
function svgPointTransform(projection2) {
var svgpoint = function(entity) {
- var pt = projection2(entity.loc);
- return "translate(" + pt[0] + "," + pt[1] + ")";
+ var pt2 = projection2(entity.loc);
+ return "translate(" + pt2[0] + "," + pt2[1] + ")";
};
- svgpoint.geojson = function(d) {
- return svgpoint(d.properties.entity);
+ svgpoint.geojson = function(d2) {
+ return svgpoint(d2.properties.entity);
};
return svgpoint;
}
var start2 = {};
var end = {};
var node, type2;
- for (var i2 = 0; i2 < way.nodes.length; i2++) {
- node = graph.entity(way.nodes[i2]);
+ for (var i3 = 0; i3 < way.nodes.length; i3++) {
+ node = graph.entity(way.nodes[i3]);
type2 = svgPassiveVertex(node, graph, activeID);
end = { node, type: type2 };
if (start2.type !== void 0) {
if (start2.node.id === activeID || end.node.id === activeID) {
} else if (isActiveWay && (start2.type === 2 || end.type === 2)) {
- pushActive(start2, end, i2);
+ pushActive(start2, end, i3);
} else if (start2.type === 0 && end.type === 0) {
- pushActive(start2, end, i2);
+ pushActive(start2, end, i3);
} else {
- pushPassive(start2, end, i2);
+ pushPassive(start2, end, i3);
}
}
start2 = end;
if (value.baseVal !== void 0) {
value = value.baseVal;
}
- var t = _tags(entity);
- var computed = tagClasses.getClassesString(t, value);
+ var t2 = _tags(entity);
+ var computed = tagClasses.getClassesString(t2, value);
if (computed !== value) {
select_default2(this).attr("class", computed);
}
});
};
- tagClasses.getClassesString = function(t, value) {
+ tagClasses.getClassesString = function(t2, value) {
var primary, status;
- var i2, j2, k, v;
+ var i3, j3, k2, v2;
var overrideGeometry;
if (/\bstroke\b/.test(value)) {
- if (!!t.barrier && t.barrier !== "no") {
+ if (!!t2.barrier && t2.barrier !== "no") {
overrideGeometry = "line";
}
}
}).map(function(klass) {
return klass === "line" || klass === "area" ? overrideGeometry || klass : klass;
});
- for (i2 = 0; i2 < primaries.length; i2++) {
- k = primaries[i2];
- v = t[k];
- if (!v || v === "no")
+ for (i3 = 0; i3 < primaries.length; i3++) {
+ k2 = primaries[i3];
+ v2 = t2[k2];
+ if (!v2 || v2 === "no")
continue;
- if (k === "piste:type") {
- k = "piste";
- } else if (k === "building:part") {
- k = "building_part";
- }
- primary = k;
- if (statuses.indexOf(v) !== -1) {
- status = v;
- classes.push("tag-" + k);
+ if (k2 === "piste:type") {
+ k2 = "piste";
+ } else if (k2 === "building:part") {
+ k2 = "building_part";
+ }
+ primary = k2;
+ if (statuses.indexOf(v2) !== -1) {
+ status = v2;
+ classes.push("tag-" + k2);
} else {
- classes.push("tag-" + k);
- classes.push("tag-" + k + "-" + v);
+ classes.push("tag-" + k2);
+ classes.push("tag-" + k2 + "-" + v2);
}
break;
}
if (!primary) {
- for (i2 = 0; i2 < statuses.length; i2++) {
- for (j2 = 0; j2 < primaries.length; j2++) {
- k = statuses[i2] + ":" + primaries[j2];
- v = t[k];
- if (!v || v === "no")
+ for (i3 = 0; i3 < statuses.length; i3++) {
+ for (j3 = 0; j3 < primaries.length; j3++) {
+ k2 = statuses[i3] + ":" + primaries[j3];
+ v2 = t2[k2];
+ if (!v2 || v2 === "no")
continue;
- status = statuses[i2];
+ status = statuses[i3];
break;
}
}
}
if (!status) {
- for (i2 = 0; i2 < statuses.length; i2++) {
- k = statuses[i2];
- v = t[k];
- if (!v || v === "no")
+ for (i3 = 0; i3 < statuses.length; i3++) {
+ k2 = statuses[i3];
+ v2 = t2[k2];
+ if (!v2 || v2 === "no")
continue;
- if (v === "yes") {
- status = k;
- } else if (primary && primary === v) {
- status = k;
- } else if (!primary && primaries.indexOf(v) !== -1) {
- status = k;
- primary = v;
- classes.push("tag-" + v);
+ if (v2 === "yes") {
+ status = k2;
+ } else if (primary && primary === v2) {
+ status = k2;
+ } else if (!primary && primaries.indexOf(v2) !== -1) {
+ status = k2;
+ primary = v2;
+ classes.push("tag-" + v2);
}
if (status)
break;
classes.push("tag-status");
classes.push("tag-status-" + status);
}
- for (i2 = 0; i2 < secondaries.length; i2++) {
- k = secondaries[i2];
- v = t[k];
- if (!v || v === "no" || k === primary)
+ for (i3 = 0; i3 < secondaries.length; i3++) {
+ k2 = secondaries[i3];
+ v2 = t2[k2];
+ if (!v2 || v2 === "no" || k2 === primary)
continue;
- classes.push("tag-" + k);
- classes.push("tag-" + k + "-" + v);
+ classes.push("tag-" + k2);
+ classes.push("tag-" + k2 + "-" + v2);
}
- if (primary === "highway" && !osmPathHighwayTagValues[t.highway] || primary === "aeroway") {
- var surface = t.highway === "track" ? "unpaved" : "paved";
- for (k in t) {
- v = t[k];
- if (k in osmPavedTags) {
- surface = osmPavedTags[k][v] ? "paved" : "unpaved";
+ if (primary === "highway" && !osmPathHighwayTagValues[t2.highway] || primary === "aeroway") {
+ var surface = t2.highway === "track" ? "unpaved" : "paved";
+ for (k2 in t2) {
+ v2 = t2[k2];
+ if (k2 in osmPavedTags) {
+ surface = osmPavedTags[k2][v2] ? "paved" : "unpaved";
}
- if (k in osmSemipavedTags && !!osmSemipavedTags[k][v]) {
+ if (k2 in osmSemipavedTags && !!osmSemipavedTags[k2][v2]) {
surface = "semipaved";
}
}
classes.push("tag-" + surface);
}
- var qid = t.wikidata || t["flag:wikidata"] || t["brand:wikidata"] || t["network:wikidata"] || t["operator:wikidata"];
+ var qid = t2.wikidata || t2["flag:wikidata"] || t2["brand:wikidata"] || t2["network:wikidata"] || t2["operator:wikidata"];
if (qid) {
classes.push("tag-wikidata");
}
- return classes.join(" ").trim();
+ return classes.filter((klass) => /^[-_a-z0-9]+$/.test(klass)).join(" ").trim();
};
tagClasses.tags = function(val) {
if (!arguments.length)
var pass = true;
for (var criterion in rule) {
if (criterion !== "pattern") {
- var v = tags[criterion];
- if (!v || v !== rule[criterion]) {
+ var v2 = tags[criterion];
+ if (!v2 || v2 !== rule[criterion]) {
pass = false;
break;
}
data.nopes.push.apply(data.nopes, features.active);
});
var targetData = data.targets.filter(getPath);
- var targets = selection2.selectAll(".area.target-allowed").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(targetData, function key(d) {
- return d.id;
+ var targets = selection2.selectAll(".area.target-allowed").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(targetData, function key(d2) {
+ return d2.id;
});
targets.exit().remove();
- var segmentWasEdited = function(d) {
- var wayID = d.properties.entity.id;
+ var segmentWasEdited = function(d2) {
+ var wayID = d2.properties.entity.id;
if (!base.entities[wayID] || !(0, import_fast_deep_equal5.default)(graph.entities[wayID].nodes, base.entities[wayID].nodes)) {
return false;
}
- return d.properties.nodes.some(function(n2) {
- return !base.entities[n2.id] || !(0, import_fast_deep_equal5.default)(graph.entities[n2.id].loc, base.entities[n2.id].loc);
+ return d2.properties.nodes.some(function(n3) {
+ return !base.entities[n3.id] || !(0, import_fast_deep_equal5.default)(graph.entities[n3.id].loc, base.entities[n3.id].loc);
});
};
- targets.enter().append("path").merge(targets).attr("d", getPath).attr("class", function(d) {
- return "way area target target-allowed " + targetClass + d.id;
+ targets.enter().append("path").merge(targets).attr("d", getPath).attr("class", function(d2) {
+ return "way area target target-allowed " + targetClass + d2.id;
}).classed("segment-edited", segmentWasEdited);
var nopeData = data.nopes.filter(getPath);
- var nopes = selection2.selectAll(".area.target-nope").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(nopeData, function key(d) {
- return d.id;
+ var nopes = selection2.selectAll(".area.target-nope").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(nopeData, function key(d2) {
+ return d2.id;
});
nopes.exit().remove();
- nopes.enter().append("path").merge(nopes).attr("d", getPath).attr("class", function(d) {
- return "way area target target-nope " + nopeClass + d.id;
+ nopes.enter().append("path").merge(nopes).attr("d", getPath).attr("class", function(d2) {
+ return "way area target target-nope " + nopeClass + d2.id;
}).classed("segment-edited", segmentWasEdited);
}
function drawAreas(selection2, graph, entities, filter2) {
var areas = {};
var multipolygon;
var base = context.history().base();
- for (var i2 = 0; i2 < entities.length; i2++) {
- var entity = entities[i2];
+ for (var i3 = 0; i3 < entities.length; i3++) {
+ var entity = entities[i3];
if (entity.geometry(graph) !== "area")
continue;
multipolygon = osmIsOldMultipolygonOuterMember(entity, graph);
};
}
}
- var fills = Object.values(areas).filter(function hasPath(a) {
- return path(a.entity);
+ var fills = Object.values(areas).filter(function hasPath(a2) {
+ return path(a2.entity);
});
- fills.sort(function areaSort(a, b) {
- return b.area - a.area;
+ fills.sort(function areaSort(a2, b2) {
+ return b2.area - a2.area;
});
- fills = fills.map(function(a) {
- return a.entity;
+ fills = fills.map(function(a2) {
+ return a2.entity;
});
var strokes = fills.filter(function(area) {
return area.type === "way";
var drawLayer = selection2.selectAll(".layer-osm.areas");
var touchLayer = selection2.selectAll(".layer-touch.areas");
var areagroup = drawLayer.selectAll("g.areagroup").data(["fill", "shadow", "stroke"]);
- areagroup = areagroup.enter().append("g").attr("class", function(d) {
- return "areagroup area-" + d;
+ areagroup = areagroup.enter().append("g").attr("class", function(d2) {
+ return "areagroup area-" + d2;
}).merge(areagroup);
var paths = areagroup.selectAll("path").filter(filter2).data(function(layer) {
return data[layer];
this.setAttribute("clip-path", "url(#ideditor-" + entity2.id + "-clippath)");
this.style.fill = this.style.stroke = getPatternStyle(entity2.tags);
}
- }).classed("added", function(d) {
- return !base.entities[d.id];
- }).classed("geometry-edited", function(d) {
- return graph.entities[d.id] && base.entities[d.id] && !(0, import_fast_deep_equal5.default)(graph.entities[d.id].nodes, base.entities[d.id].nodes);
- }).classed("retagged", function(d) {
- return graph.entities[d.id] && base.entities[d.id] && !(0, import_fast_deep_equal5.default)(graph.entities[d.id].tags, base.entities[d.id].tags);
+ }).classed("added", function(d2) {
+ return !base.entities[d2.id];
+ }).classed("geometry-edited", function(d2) {
+ return graph.entities[d2.id] && base.entities[d2.id] && !(0, import_fast_deep_equal5.default)(graph.entities[d2.id].nodes, base.entities[d2.id].nodes);
+ }).classed("retagged", function(d2) {
+ return graph.entities[d2.id] && base.entities[d2.id] && !(0, import_fast_deep_equal5.default)(graph.entities[d2.id].tags, base.entities[d2.id].tags);
}).call(svgTagClasses()).attr("d", path);
touchLayer.call(drawTargets, graph, data.stroke, filter2);
}
return node && node.textContent || "";
}
function get1(node, tagName, callback) {
- const n2 = node.getElementsByTagName(tagName);
- const result = n2.length ? n2[0] : null;
+ const n3 = node.getElementsByTagName(tagName);
+ const result = n3.length ? n3[0] : null;
if (result && callback)
callback(result);
return result;
const properties = {};
if (!node)
return properties;
- const n2 = node.getElementsByTagName(tagName);
- const result = n2.length ? n2[0] : null;
+ const n3 = node.getElementsByTagName(tagName);
+ const result = n3.length ? n3[0] : null;
if (result && callback) {
return callback(result, properties);
}
const val = parseFloat(nodeVal(get1(node, tagName)));
if (isNaN(val))
return void 0;
- if (val && callback)
+ if (callback)
callback(val);
return val;
}
const line = [];
const times = [];
const extendedValues = {};
- for (let i2 = 0; i2 < pts.length; i2++) {
- const c = coordPair$1(pts[i2]);
- if (!c) {
+ for (let i3 = 0; i3 < pts.length; i3++) {
+ const c2 = coordPair$1(pts[i3]);
+ if (!c2) {
continue;
}
- line.push(c.coordinates);
- if (c.time)
- times.push(c.time);
- for (const [name, val] of c.extendedValues) {
+ line.push(c2.coordinates);
+ if (c2.time)
+ times.push(c2.time);
+ for (const [name, val] of c2.extendedValues) {
const plural = name === "heart" ? name : name.replace("gpxtpx:", "") + "s";
if (!extendedValues[plural]) {
extendedValues[plural] = Array(pts.length).fill(null);
}
- extendedValues[plural][i2] = val;
+ extendedValues[plural][i3] = val;
}
}
if (line.length < 2)
}
const props = properties.coordinateProperties;
const entries = Object.entries(line.extendedValues);
- for (let i2 = 0; i2 < entries.length; i2++) {
- const [name, val] = entries[i2];
+ for (let i3 = 0; i3 < entries.length; i3++) {
+ const [name, val] = entries[i3];
if (multi) {
if (!props[name]) {
props[name] = extractedLines.map((line2) => new Array(line2.line.length).fill(null));
}
- props[name][i2] = val;
+ props[name][i3] = val;
} else {
props[name] = val;
}
}
function getPoint(node) {
const properties = Object.assign(extractProperties(node), getMulti(node, ["sym"]));
- const pair2 = coordPair$1(node);
- if (!pair2)
+ const pair3 = coordPair$1(node);
+ if (!pair3)
return null;
return {
type: "Feature",
properties,
geometry: {
type: "Point",
- coordinates: pair2.coordinates
+ coordinates: pair3.coordinates
}
};
}
features: Array.from(gpxGen(node))
};
}
- function fixColor(v, prefix) {
+ function fixColor(v2, prefix) {
const properties = {};
const colorProp = prefix == "stroke" || prefix === "fill" ? prefix : prefix + "-color";
- if (v[0] === "#") {
- v = v.substring(1);
+ if (v2[0] === "#") {
+ v2 = v2.substring(1);
}
- if (v.length === 6 || v.length === 3) {
- properties[colorProp] = "#" + v;
- } else if (v.length === 8) {
- properties[prefix + "-opacity"] = parseInt(v.substring(0, 2), 16) / 255;
- properties[colorProp] = "#" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);
+ if (v2.length === 6 || v2.length === 3) {
+ properties[colorProp] = "#" + v2;
+ } else if (v2.length === 8) {
+ properties[prefix + "-opacity"] = parseInt(v2.substring(0, 2), 16) / 255;
+ properties[colorProp] = "#" + v2.substring(6, 8) + v2.substring(4, 6) + v2.substring(2, 4);
}
return properties;
}
function getColor(node, output) {
return get3(node, "color", (elem) => fixColor(nodeVal(elem), output));
}
+ function extractIconHref(node) {
+ return get3(node, "Icon", (icon2, properties) => {
+ val1(icon2, "href", (href) => {
+ properties.icon = href;
+ });
+ return properties;
+ });
+ }
function extractIcon(node) {
return get3(node, "IconStyle", (iconStyle) => {
return Object.assign(getColor(iconStyle, "icon"), numericProperty(iconStyle, "scale", "icon-scale"), numericProperty(iconStyle, "heading", "icon-heading"), get3(iconStyle, "hotSpot", (hotspot) => {
"icon-offset-units": [xunits, yunits]
};
return {};
- }), get3(iconStyle, "Icon", (icon2, properties) => {
- val1(icon2, "href", (href) => {
- properties.icon = href;
- });
- return properties;
- }));
+ }), extractIconHref(iconStyle));
});
}
function extractLabel(node) {
function extractStyle(node) {
return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));
}
+ var toNumber2 = (x2) => Number(x2);
+ var typeConverters = {
+ string: (x2) => x2,
+ int: toNumber2,
+ uint: toNumber2,
+ short: toNumber2,
+ ushort: toNumber2,
+ float: toNumber2,
+ double: toNumber2,
+ bool: (x2) => Boolean(x2)
+ };
+ function extractExtendedData(node, schema) {
+ return get3(node, "ExtendedData", (extendedData, properties) => {
+ for (const data of $(extendedData, "Data")) {
+ properties[data.getAttribute("name") || ""] = nodeVal(get1(data, "value"));
+ }
+ for (const simpleData of $(extendedData, "SimpleData")) {
+ const name = simpleData.getAttribute("name") || "";
+ const typeConverter = schema[name] || typeConverters.string;
+ properties[name] = typeConverter(nodeVal(simpleData));
+ }
+ return properties;
+ });
+ }
+ function getMaybeHTMLDescription(node) {
+ const descriptionNode = get1(node, "description");
+ for (const c2 of Array.from(descriptionNode?.childNodes || [])) {
+ if (c2.nodeType === 4) {
+ return {
+ description: {
+ "@type": "html",
+ value: nodeVal(c2)
+ }
+ };
+ }
+ }
+ return {};
+ }
+ function extractTimeSpan(node) {
+ return get3(node, "TimeSpan", (timeSpan) => {
+ return {
+ timespan: {
+ begin: nodeVal(get1(timeSpan, "begin")),
+ end: nodeVal(get1(timeSpan, "end"))
+ }
+ };
+ });
+ }
+ function extractTimeStamp(node) {
+ return get3(node, "TimeStamp", (timeStamp) => {
+ return { timestamp: nodeVal(get1(timeStamp, "when")) };
+ });
+ }
+ function extractCascadedStyle(node, styleMap) {
+ return val1(node, "styleUrl", (styleUrl) => {
+ styleUrl = normalizeId(styleUrl);
+ if (styleMap[styleUrl]) {
+ return Object.assign({ styleUrl }, styleMap[styleUrl]);
+ }
+ return { styleUrl };
+ });
+ }
var removeSpace = /\s*/g;
var trimSpace = /^\s*|\s*$/g;
var splitSpace = /\s+/;
const first = ring[0];
const last = ring[ring.length - 1];
let equal = true;
- for (let i2 = 0; i2 < Math.max(first.length, last.length); i2++) {
- if (first[i2] !== last[i2]) {
+ for (let i3 = 0; i3 < Math.max(first.length, last.length); i3++) {
+ if (first[i3] !== last[i3]) {
equal = false;
break;
}
}
return ring;
}
- var GEO_TYPES = [
- "Polygon",
- "LineString",
- "Point",
- "Track",
- "gx:Track"
- ];
function getCoordinates(node) {
return nodeVal(get1(node, "coordinates"));
}
function getGeometry(node) {
- const geometries = [];
- const coordTimes = [];
- for (const t of ["MultiGeometry", "MultiTrack", "gx:MultiTrack"]) {
- const elem = get1(node, t);
- if (elem) {
- return getGeometry(elem);
- }
- }
- for (const geoType of GEO_TYPES) {
- for (const geomNode of $(node, geoType)) {
- switch (geoType) {
+ let geometries = [];
+ let coordTimes = [];
+ for (let i3 = 0; i3 < node.childNodes.length; i3++) {
+ const child = node.childNodes.item(i3);
+ if (isElement(child)) {
+ switch (child.tagName) {
+ case "MultiGeometry":
+ case "MultiTrack":
+ case "gx:MultiTrack": {
+ const childGeometries = getGeometry(child);
+ geometries = geometries.concat(childGeometries.geometries);
+ coordTimes = coordTimes.concat(childGeometries.coordTimes);
+ break;
+ }
case "Point": {
- const coordinates = coord1(getCoordinates(geomNode));
+ const coordinates = coord1(getCoordinates(child));
if (coordinates.length >= 2) {
geometries.push({
type: "Point",
}
break;
}
+ case "LinearRing":
case "LineString": {
- const coordinates = coord(getCoordinates(geomNode));
+ const coordinates = coord(getCoordinates(child));
if (coordinates.length >= 2) {
geometries.push({
type: "LineString",
}
case "Polygon": {
const coords = [];
- for (const linearRing of $(geomNode, "LinearRing")) {
+ for (const linearRing of $(child, "LinearRing")) {
const ring = fixRing(coord(getCoordinates(linearRing)));
if (ring.length >= 4) {
coords.push(ring);
}
case "Track":
case "gx:Track": {
- const gx = gxCoords(geomNode);
+ const gx = gxCoords(child);
if (!gx)
break;
const { times, geometry } = gx;
coordTimes
};
}
- function extractExtendedData(node) {
- return get3(node, "ExtendedData", (extendedData, properties) => {
- for (const data of $(extendedData, "Data")) {
- properties[data.getAttribute("name") || ""] = nodeVal(get1(data, "value"));
- }
- for (const simpleData of $(extendedData, "SimpleData")) {
- properties[simpleData.getAttribute("name") || ""] = nodeVal(simpleData);
- }
- return properties;
- });
- }
function geometryListToGeometry(geometries) {
return geometries.length === 0 ? null : geometries.length === 1 ? geometries[0] : {
type: "GeometryCollection",
geometries
};
}
- function extractTimeSpan(node) {
- return get3(node, "TimeSpan", (timeSpan) => {
- return {
- timespan: {
- begin: nodeVal(get1(timeSpan, "begin")),
- end: nodeVal(get1(timeSpan, "end"))
- }
- };
- });
- }
- function extractTimeStamp(node) {
- return get3(node, "TimeStamp", (timeStamp) => {
- return { timestamp: nodeVal(get1(timeStamp, "when")) };
- });
- }
- function extractCascadedStyle(node, styleMap) {
- return val1(node, "styleUrl", (styleUrl) => {
- styleUrl = normalizeId(styleUrl);
- if (styleMap[styleUrl]) {
- return Object.assign({ styleUrl }, styleMap[styleUrl]);
- }
- return { styleUrl };
- });
- }
- function getMaybeHTMLDescription(node) {
- const descriptionNode = get1(node, "description");
- for (const c of Array.from(descriptionNode?.childNodes || [])) {
- if (c.nodeType === 4) {
- return {
- description: {
- "@type": "html",
- value: nodeVal(c)
- }
- };
- }
- }
- return {};
- }
- function getPlacemark(node, styleMap) {
+ function getPlacemark(node, styleMap, schema, options2) {
const { coordTimes, geometries } = getGeometry(node);
+ const geometry = geometryListToGeometry(geometries);
+ if (!geometry && options2.skipNullGeometry) {
+ return null;
+ }
const feature3 = {
type: "Feature",
- geometry: geometryListToGeometry(geometries),
+ geometry,
properties: Object.assign(getMulti(node, [
"name",
"address",
"open",
"phoneNumber",
"description"
- ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length ? {
+ ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length ? {
coordinateProperties: {
times: coordTimes.length === 1 ? coordTimes[0] : coordTimes
}
feature3.id = id2;
return feature3;
}
+ function getGroundOverlayBox(node) {
+ const latLonQuad = get1(node, "gx:LatLonQuad");
+ if (latLonQuad) {
+ const ring = fixRing(coord(getCoordinates(node)));
+ return {
+ geometry: {
+ type: "Polygon",
+ coordinates: [ring]
+ }
+ };
+ }
+ return getLatLonBox(node);
+ }
+ var DEGREES_TO_RADIANS = Math.PI / 180;
+ function rotateBox(bbox2, coordinates, rotation) {
+ const center = [(bbox2[0] + bbox2[2]) / 2, (bbox2[1] + bbox2[3]) / 2];
+ return [
+ coordinates[0].map((coordinate) => {
+ const dy = coordinate[1] - center[1];
+ const dx = coordinate[0] - center[0];
+ const distance = Math.sqrt(Math.pow(dy, 2) + Math.pow(dx, 2));
+ const angle2 = Math.atan2(dy, dx) + rotation * DEGREES_TO_RADIANS;
+ return [
+ center[0] + Math.cos(angle2) * distance,
+ center[1] + Math.sin(angle2) * distance
+ ];
+ })
+ ];
+ }
+ function getLatLonBox(node) {
+ const latLonBox = get1(node, "LatLonBox");
+ if (latLonBox) {
+ const north = num1(latLonBox, "north");
+ const west = num1(latLonBox, "west");
+ const east = num1(latLonBox, "east");
+ const south = num1(latLonBox, "south");
+ const rotation = num1(latLonBox, "rotation");
+ if (typeof north === "number" && typeof south === "number" && typeof west === "number" && typeof east === "number") {
+ const bbox2 = [west, south, east, north];
+ let coordinates = [
+ [
+ [west, north],
+ [east, north],
+ [east, south],
+ [west, south],
+ [west, north]
+ // top left (again)
+ ]
+ ];
+ if (typeof rotation === "number") {
+ coordinates = rotateBox(bbox2, coordinates, rotation);
+ }
+ return {
+ bbox: bbox2,
+ geometry: {
+ type: "Polygon",
+ coordinates
+ }
+ };
+ }
+ }
+ return null;
+ }
+ function getGroundOverlay(node, styleMap, schema, options2) {
+ const box = getGroundOverlayBox(node);
+ const geometry = box?.geometry || null;
+ if (!geometry && options2.skipNullGeometry) {
+ return null;
+ }
+ const feature3 = {
+ type: "Feature",
+ geometry,
+ properties: Object.assign(
+ /**
+ * Related to
+ * https://gist.github.com/tmcw/037a1cb6660d74a392e9da7446540f46
+ */
+ { "@geometry-type": "groundoverlay" },
+ getMulti(node, [
+ "name",
+ "address",
+ "visibility",
+ "open",
+ "phoneNumber",
+ "description"
+ ]),
+ getMaybeHTMLDescription(node),
+ extractCascadedStyle(node, styleMap),
+ extractStyle(node),
+ extractIconHref(node),
+ extractExtendedData(node, schema),
+ extractTimeSpan(node),
+ extractTimeStamp(node)
+ )
+ };
+ if (box?.bbox) {
+ feature3.bbox = box.bbox;
+ }
+ if (feature3.properties?.visibility !== void 0) {
+ feature3.properties.visibility = feature3.properties.visibility !== "0";
+ }
+ const id2 = node.getAttribute("id");
+ if (id2 !== null && id2 !== "")
+ feature3.id = id2;
+ return feature3;
+ }
function getStyleId(style) {
let id2 = style.getAttribute("id");
const parentNode = style.parentNode;
}
return styleMap;
}
- function* kmlGen(node) {
+ function buildSchema(node) {
+ const schema = {};
+ for (const field of $(node, "SimpleField")) {
+ schema[field.getAttribute("name") || ""] = typeConverters[field.getAttribute("type") || ""] || typeConverters["string"];
+ }
+ return schema;
+ }
+ function* kmlGen(node, options2 = {
+ skipNullGeometry: false
+ }) {
const styleMap = buildStyleMap(node);
+ const schema = buildSchema(node);
for (const placemark of $(node, "Placemark")) {
- const feature3 = getPlacemark(placemark, styleMap);
+ const feature3 = getPlacemark(placemark, styleMap, schema, options2);
+ if (feature3)
+ yield feature3;
+ }
+ for (const groundOverlay of $(node, "GroundOverlay")) {
+ const feature3 = getGroundOverlay(groundOverlay, styleMap, schema, options2);
if (feature3)
yield feature3;
}
}
- function kml(node) {
+ function kml(node, options2 = {
+ skipNullGeometry: false
+ }) {
return {
type: "FeatureCollection",
- features: Array.from(kmlGen(node))
+ features: Array.from(kmlGen(node, options2))
};
}
var _initialized = false;
var _enabled = false;
var _geojson;
- function svgData(projection2, context, dispatch10) {
+ function svgData(projection2, context, dispatch14) {
var throttledRedraw = throttle_default(function() {
- dispatch10.call("change");
+ dispatch14.call("change");
}, 1e3);
var _showLabels = true;
var detected = utilDetect();
var _fileList;
var _template;
var _src;
+ const supportedFormats = [
+ ".gpx",
+ ".kml",
+ ".geojson",
+ ".json"
+ ];
function init2() {
if (_initialized)
return;
d3_event.preventDefault();
if (!detected.filedrop)
return;
+ var f3 = d3_event.dataTransfer.files[0];
+ var extension = getExtension(f3.name);
+ if (!supportedFormats.includes(extension))
+ return;
drawData.fileList(d3_event.dataTransfer.files);
}).on("dragenter.svgData", over).on("dragexit.svgData", over).on("dragover.svgData", over);
_initialized = true;
function showLayer() {
layerOn();
layer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end", function() {
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function hideLayer() {
if (!gj)
return null;
if (gj.type === "FeatureCollection") {
- for (var i2 = 0; i2 < gj.features.length; i2++) {
- ensureFeatureID(gj.features[i2]);
+ for (var i3 = 0; i3 < gj.features.length; i3++) {
+ ensureFeatureID(gj.features[i3]);
}
} else {
ensureFeatureID(gj);
return [gj];
}
}
- function featureKey(d) {
- return d.__featurehash__;
+ function featureKey(d2) {
+ return d2.__featurehash__;
}
- function isPolygon(d) {
- return d.geometry.type === "Polygon" || d.geometry.type === "MultiPolygon";
+ function isPolygon(d2) {
+ return d2.geometry.type === "Polygon" || d2.geometry.type === "MultiPolygon";
}
- function clipPathID(d) {
- return "ideditor-data-" + d.__featurehash__ + "-clippath";
+ function clipPathID(d2) {
+ return "ideditor-data-" + d2.__featurehash__ + "-clippath";
}
- function featureClasses(d) {
+ function featureClasses(d2) {
return [
- "data" + d.__featurehash__,
- d.geometry.type,
- isPolygon(d) ? "area" : "",
- d.__layerID__ || ""
+ "data" + d2.__featurehash__,
+ d2.geometry.type,
+ isPolygon(d2) ? "area" : "",
+ d2.__layerID__ || ""
].filter(Boolean).join(" ");
}
function drawData(selection2) {
clipPathsEnter.append("path");
clipPaths.merge(clipPathsEnter).selectAll("path").attr("d", getAreaPath);
var datagroups = layer.selectAll("g.datagroup").data(["fill", "shadow", "stroke"]);
- datagroups = datagroups.enter().append("g").attr("class", function(d) {
- return "datagroup datagroup-" + d;
+ datagroups = datagroups.enter().append("g").attr("class", function(d2) {
+ return "datagroup datagroup-" + d2;
}).merge(datagroups);
var pathData = {
fill: polygonData,
return pathData[layer2];
}, featureKey);
paths.exit().remove();
- paths = paths.enter().append("path").attr("class", function(d) {
+ paths = paths.enter().append("path").attr("class", function(d2) {
var datagroup = this.parentNode.__data__;
- return "pathdata " + datagroup + " " + featureClasses(d);
- }).attr("clip-path", function(d) {
+ return "pathdata " + datagroup + " " + featureClasses(d2);
+ }).attr("clip-path", function(d2) {
var datagroup = this.parentNode.__data__;
- return datagroup === "fill" ? "url(#" + clipPathID(d) + ")" : null;
- }).merge(paths).attr("d", function(d) {
+ return datagroup === "fill" ? "url(#" + clipPathID(d2) + ")" : null;
+ }).merge(paths).attr("d", function(d2) {
var datagroup = this.parentNode.__data__;
- return datagroup === "fill" ? getAreaPath(d) : getPath(d);
+ return datagroup === "fill" ? getAreaPath(d2) : getPath(d2);
});
layer.call(drawLabels, "label-halo", geoData).call(drawLabels, "label", geoData);
function drawLabels(selection3, textClass, data) {
var labelPath = path_default(projection2);
- var labelData = data.filter(function(d) {
- return _showLabels && d.properties && (d.properties.desc || d.properties.name);
+ var labelData = data.filter(function(d2) {
+ return _showLabels && d2.properties && (d2.properties.desc || d2.properties.name);
});
var labels = selection3.selectAll("text." + textClass).data(labelData, featureKey);
labels.exit().remove();
- labels = labels.enter().append("text").attr("class", function(d) {
- return textClass + " " + featureClasses(d);
- }).merge(labels).text(function(d) {
- return d.properties.desc || d.properties.name;
- }).attr("x", function(d) {
- var centroid = labelPath.centroid(d);
+ labels = labels.enter().append("text").attr("class", function(d2) {
+ return textClass + " " + featureClasses(d2);
+ }).merge(labels).text(function(d2) {
+ return d2.properties.desc || d2.properties.name;
+ }).attr("x", function(d2) {
+ var centroid = labelPath.centroid(d2);
return centroid[0] + 11;
- }).attr("y", function(d) {
- var centroid = labelPath.centroid(d);
+ }).attr("y", function(d2) {
+ var centroid = labelPath.centroid(d2);
return centroid[1];
});
}
function getExtension(fileName) {
if (!fileName)
return;
- var re2 = /\.(gpx|kml|(geo)?json)$/i;
- var match = fileName.toLowerCase().match(re2);
+ var re3 = /\.(gpx|kml|(geo)?json|png)$/i;
+ var match = fileName.toLowerCase().match(re3);
return match && match.length && match[0];
}
function xmlToDom(textdata) {
_src = extension + " data file";
this.fitZoom();
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawData.showLabels = function(val) {
} else {
hideLayer();
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawData.hasData = function() {
var fail = false;
var tested = 0;
var regex;
- for (var i2 = 0; i2 < blocklists.length; i2++) {
- regex = blocklists[i2];
+ for (var i3 = 0; i3 < blocklists.length; i3++) {
+ regex = blocklists[i3];
fail = regex.test(val);
tested++;
if (fail)
_fileList = null;
_geojson = null;
_src = src || "vectortile:" + val.split(/[?#]/)[0];
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawData.geojson = function(gj, src) {
_geojson = ensureIDs(gj);
_src = src || "unknown.geojson";
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawData.fileList = function(fileList) {
if (!arguments.length)
return _fileList;
_template = null;
- _fileList = fileList;
_geojson = null;
_src = null;
+ _fileList = fileList;
if (!fileList || !fileList.length)
return this;
- var f2 = fileList[0];
- var extension = getExtension(f2.name);
+ var f3 = fileList[0];
+ var extension = getExtension(f3.name);
var reader = new FileReader();
reader.onload = function() {
- return function(e) {
- drawData.setFile(extension, e.target.result);
+ return function(e3) {
+ drawData.setFile(extension, e3.target.result);
};
- }(f2);
- reader.readAsText(f2);
+ }(f3);
+ reader.readAsText(f3);
return this;
};
drawData.url = function(url, defaultExtension) {
var geom = feature3.geometry;
if (!geom)
return coords2;
- var c = geom.coordinates;
+ var c2 = geom.coordinates;
switch (geom.type) {
case "Point":
- c = [c];
+ c2 = [c2];
case "MultiPoint":
case "LineString":
break;
case "MultiPolygon":
- c = utilArrayFlatten(c);
+ c2 = utilArrayFlatten(c2);
case "Polygon":
case "MultiLineString":
- c = utilArrayFlatten(c);
+ c2 = utilArrayFlatten(c2);
break;
}
- return utilArrayUnion(coords2, c);
+ return utilArrayUnion(coords2, c2);
}, []);
if (!geoPolygonIntersectsPolygon(viewport, coords, true)) {
var extent = geoExtent(bounds_default({ type: "LineString", coordinates: coords }));
let legend = context.container().select(".main-content").selectAll(".debug-legend").data(debugData.length ? [0] : []);
legend.exit().remove();
legend = legend.enter().append("div").attr("class", "fillD debug-legend").merge(legend);
- let legendItems = legend.selectAll(".debug-legend-item").data(debugData, (d) => d.label);
+ let legendItems = legend.selectAll(".debug-legend-item").data(debugData, (d2) => d2.label);
legendItems.exit().remove();
- legendItems.enter().append("span").attr("class", (d) => `debug-legend-item ${d.class}`).text((d) => d.label);
+ legendItems.enter().append("span").attr("class", (d2) => `debug-legend-item ${d2.class}`).text((d2) => d2.label);
let layer = selection2.selectAll(".layer-debug").data(showImagery || showDownloaded ? [0] : []);
layer.exit().remove();
layer = layer.enter().append("g").attr("class", "layer-debug").merge(layer);
const extent = context.map().extent();
- _mainFileFetcher.get("imagery").then((d) => {
- const hits = showImagery && d.query.bbox(extent.rectangle(), true) || [];
- const features = hits.map((d2) => d2.features[d2.id]);
+ _mainFileFetcher.get("imagery").then((d2) => {
+ const hits = showImagery && d2.query.bbox(extent.rectangle(), true) || [];
+ const features = hits.map((d4) => d4.features[d4.id]);
let imagery = layer.selectAll("path.debug-imagery").data(features);
imagery.exit().remove();
imagery.enter().append("path").attr("class", "debug-imagery debug orange");
["wetland_swamp", "wetland_swamp"],
["wetland_bog", "wetland_bog"],
["wetland_reedbed", "wetland_reedbed"]
- ]).enter().append("pattern").attr("id", function(d) {
- return "ideditor-pattern-" + d[0];
+ ]).enter().append("pattern").attr("id", function(d2) {
+ return "ideditor-pattern-" + d2[0];
}).attr("width", 32).attr("height", 32).attr("patternUnits", "userSpaceOnUse");
- patterns2.append("rect").attr("x", 0).attr("y", 0).attr("width", 32).attr("height", 32).attr("class", function(d) {
- return "pattern-color-" + d[0];
+ patterns2.append("rect").attr("x", 0).attr("y", 0).attr("width", 32).attr("height", 32).attr("class", function(d2) {
+ return "pattern-color-" + d2[0];
});
- patterns2.append("image").attr("x", 0).attr("y", 0).attr("width", 32).attr("height", 32).attr("xlink:href", function(d) {
- return context.imagePath("pattern/" + d[1] + ".png");
+ patterns2.append("image").attr("x", 0).attr("y", 0).attr("width", 32).attr("height", 32).attr("xlink:href", function(d2) {
+ return context.imagePath("pattern/" + d2[1] + ".png");
});
- _defsSelection.selectAll("clipPath").data([12, 18, 20, 32, 45]).enter().append("clipPath").attr("id", function(d) {
- return "ideditor-clip-square-" + d;
- }).append("rect").attr("x", 0).attr("y", 0).attr("width", function(d) {
- return d;
- }).attr("height", function(d) {
- return d;
+ _defsSelection.selectAll("clipPath").data([12, 18, 20, 32, 45]).enter().append("clipPath").attr("id", function(d2) {
+ return "ideditor-clip-square-" + d2;
+ }).append("rect").attr("x", 0).attr("y", 0).attr("width", function(d2) {
+ return d2;
+ }).attr("height", function(d2) {
+ return d2;
});
addSprites(_spritesheetIds, true);
}
function addSprites(ids, overrideColors) {
_spritesheetIds = utilArrayUniq(_spritesheetIds.concat(ids));
var spritesheets = _defsSelection.selectAll(".spritesheet").data(_spritesheetIds);
- spritesheets.enter().append("g").attr("class", function(d) {
- return "spritesheet spritesheet-" + d;
- }).each(function(d) {
- var url = context.imagePath(d + ".svg");
+ spritesheets.enter().append("g").attr("class", function(d2) {
+ return "spritesheet spritesheet-" + d2;
+ }).each(function(d2) {
+ var url = context.imagePath(d2 + ".svg");
var node = select_default2(this).node();
svg(url).then(function(svg2) {
node.appendChild(
- select_default2(svg2.documentElement).attr("id", "ideditor-" + d).node()
+ select_default2(svg2.documentElement).attr("id", "ideditor-" + d2).node()
);
- if (overrideColors && d !== "iD-sprite") {
+ if (overrideColors && d2 !== "iD-sprite") {
select_default2(node).selectAll("path").attr("fill", "currentColor");
}
}).catch(function() {
// modules/svg/keepRight.js
var _layerEnabled = false;
var _qaService;
- function svgKeepRight(projection2, context, dispatch10) {
- const throttledRedraw = throttle_default(() => dispatch10.call("change"), 1e3);
- const minZoom3 = 12;
+ function svgKeepRight(projection2, context, dispatch14) {
+ const throttledRedraw = throttle_default(() => dispatch14.call("change"), 1e3);
+ const minZoom4 = 12;
let touchLayer = select_default2(null);
let drawLayer = select_default2(null);
let layerVisible = false;
}
function layerOn() {
editOn();
- drawLayer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", () => dispatch10.call("change"));
+ drawLayer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", () => dispatch14.call("change"));
}
function layerOff() {
throttledRedraw.cancel();
touchLayer.selectAll(".qaItem.keepRight").remove();
drawLayer.transition().duration(250).style("opacity", 0).on("end interrupt", () => {
editOff();
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function updateMarkers() {
const selectedID = context.selectedErrorID();
const data = service ? service.getItems(projection2) : [];
const getTransform = svgPointTransform(projection2);
- const markers = drawLayer.selectAll(".qaItem.keepRight").data(data, (d) => d.id);
+ const markers = drawLayer.selectAll(".qaItem.keepRight").data(data, (d2) => d2.id);
markers.exit().remove();
- const markersEnter = markers.enter().append("g").attr("class", (d) => `qaItem ${d.service} itemId-${d.id} itemType-${d.parentIssueType}`);
+ const markersEnter = markers.enter().append("g").attr("class", (d2) => `qaItem ${d2.service} itemId-${d2.id} itemType-${d2.parentIssueType}`);
markersEnter.append("ellipse").attr("cx", 0.5).attr("cy", 1).attr("rx", 6.5).attr("ry", 3).attr("class", "stroke");
markersEnter.append("path").call(markerPath, "shadow");
markersEnter.append("use").attr("class", "qaItem-fill").attr("width", "20px").attr("height", "20px").attr("x", "-8px").attr("y", "-22px").attr("xlink:href", "#iD-icon-bolt");
- markers.merge(markersEnter).sort(sortY).classed("selected", (d) => d.id === selectedID).attr("transform", getTransform);
+ markers.merge(markersEnter).sort(sortY).classed("selected", (d2) => d2.id === selectedID).attr("transform", getTransform);
if (touchLayer.empty())
return;
const fillClass = context.getDebug("target") ? "pink " : "nocolor ";
- const targets = touchLayer.selectAll(".qaItem.keepRight").data(data, (d) => d.id);
+ const targets = touchLayer.selectAll(".qaItem.keepRight").data(data, (d2) => d2.id);
targets.exit().remove();
- targets.enter().append("rect").attr("width", "20px").attr("height", "20px").attr("x", "-8px").attr("y", "-22px").merge(targets).sort(sortY).attr("class", (d) => `qaItem ${d.service} target ${fillClass} itemId-${d.id}`).attr("transform", getTransform);
- function sortY(a, b) {
- return a.id === selectedID ? 1 : b.id === selectedID ? -1 : a.severity === "error" && b.severity !== "error" ? 1 : b.severity === "error" && a.severity !== "error" ? -1 : b.loc[1] - a.loc[1];
+ targets.enter().append("rect").attr("width", "20px").attr("height", "20px").attr("x", "-8px").attr("y", "-22px").merge(targets).sort(sortY).attr("class", (d2) => `qaItem ${d2.service} target ${fillClass} itemId-${d2.id}`).attr("transform", getTransform);
+ function sortY(a2, b2) {
+ return a2.id === selectedID ? 1 : b2.id === selectedID ? -1 : a2.severity === "error" && b2.severity !== "error" ? 1 : b2.severity === "error" && a2.severity !== "error" ? -1 : b2.loc[1] - a2.loc[1];
}
}
function drawKeepRight(selection2) {
drawLayer.exit().remove();
drawLayer = drawLayer.enter().append("g").attr("class", "layer-keepRight").style("display", _layerEnabled ? "block" : "none").merge(drawLayer);
if (_layerEnabled) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
service.loadIssues(projection2);
updateMarkers();
context.enter(modeBrowse(context));
}
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawKeepRight.supported = () => !!getService();
function layerOff() {
layer.style("display", "none");
}
- function transform2(d) {
- return svgPointTransform(projection2)(d);
+ function transform2(d2) {
+ return svgPointTransform(projection2)(d2);
}
function accuracy(accuracy2, loc) {
var degreesRadius = geoMetersToLat(accuracy2), tangentLoc = [loc[0], loc[1] + degreesRadius], projectedTangent = projection2(tangentLoc), projectedLoc = projection2([loc[0], loc[1]]);
}
// modules/svg/labels.js
- var import_rbush7 = __toESM(require_rbush_min());
+ var import_rbush6 = __toESM(require_rbush_min());
function svgLabels(projection2, context) {
var path = path_default(projection2);
var detected = utilDetect();
var baselineHack = detected.ie || detected.browser.toLowerCase() === "edge" || detected.browser.toLowerCase() === "firefox" && detected.version >= 70;
- var _rdrawn = new import_rbush7.default();
- var _rskipped = new import_rbush7.default();
+ var _rdrawn = new import_rbush6.default();
+ var _rskipped = new import_rbush6.default();
var _textWidthCache = {};
var _entitybboxes = {};
var labelStack = [
];
function shouldSkipIcon(preset) {
var noIcons = ["building", "landuse", "natural"];
- return noIcons.some(function(s) {
- return preset.id.indexOf(s) >= 0;
+ return noIcons.some(function(s2) {
+ return preset.id.indexOf(s2) >= 0;
});
}
function get4(array2, prop) {
- return function(d, i2) {
- return array2[i2][prop];
+ return function(d2, i3) {
+ return array2[i3][prop];
};
}
function textWidth(text2, size, elem) {
- var c = _textWidthCache[size];
- if (!c)
- c = _textWidthCache[size] = {};
- if (c[text2]) {
- return c[text2];
+ var c2 = _textWidthCache[size];
+ if (!c2)
+ c2 = _textWidthCache[size] = {};
+ if (c2[text2]) {
+ return c2[text2];
} else if (elem) {
- c[text2] = elem.getComputedTextLength();
- return c[text2];
+ c2[text2] = elem.getComputedTextLength();
+ return c2[text2];
} else {
var str2 = encodeURIComponent(text2).match(/%[CDEFcdef]/g);
if (str2 === null) {
function drawLinePaths(selection2, entities, filter2, classes, labels) {
var paths = selection2.selectAll("path").filter(filter2).data(entities, osmEntity.key);
paths.exit().remove();
- paths.enter().append("path").style("stroke-width", get4(labels, "font-size")).attr("id", function(d) {
- return "ideditor-labelpath-" + d.id;
+ paths.enter().append("path").style("stroke-width", get4(labels, "font-size")).attr("id", function(d2) {
+ return "ideditor-labelpath-" + d2.id;
}).attr("class", classes).merge(paths).attr("d", get4(labels, "lineString"));
}
function drawLineLabels(selection2, entities, filter2, classes, labels) {
var texts = selection2.selectAll("text." + classes).filter(filter2).data(entities, osmEntity.key);
texts.exit().remove();
- texts.enter().append("text").attr("class", function(d, i2) {
- return classes + " " + labels[i2].classes + " " + d.id;
+ texts.enter().append("text").attr("class", function(d2, i3) {
+ return classes + " " + labels[i3].classes + " " + d2.id;
}).attr("dy", baselineHack ? "0.35em" : null).append("textPath").attr("class", "textpath");
- selection2.selectAll("text." + classes).selectAll(".textpath").filter(filter2).data(entities, osmEntity.key).attr("startOffset", "50%").attr("xlink:href", function(d) {
- return "#ideditor-labelpath-" + d.id;
+ selection2.selectAll("text." + classes).selectAll(".textpath").filter(filter2).data(entities, osmEntity.key).attr("startOffset", "50%").attr("xlink:href", function(d2) {
+ return "#ideditor-labelpath-" + d2.id;
}).text(utilDisplayNameForPath);
}
function drawPointLabels(selection2, entities, filter2, classes, labels) {
var texts = selection2.selectAll("text." + classes).filter(filter2).data(entities, osmEntity.key);
texts.exit().remove();
- texts.enter().append("text").attr("class", function(d, i2) {
- return classes + " " + labels[i2].classes + " " + d.id;
- }).merge(texts).attr("x", get4(labels, "x")).attr("y", get4(labels, "y")).style("text-anchor", get4(labels, "textAnchor")).text(utilDisplayName).each(function(d, i2) {
- textWidth(utilDisplayName(d), labels[i2].height, this);
+ texts.enter().append("text").attr("class", function(d2, i3) {
+ return classes + " " + labels[i3].classes + " " + d2.id;
+ }).merge(texts).attr("x", get4(labels, "x")).attr("y", get4(labels, "y")).style("text-anchor", get4(labels, "textAnchor")).text(utilDisplayName).each(function(d2, i3) {
+ textWidth(utilDisplayName(d2), labels[i3].height, this);
});
}
function drawAreaLabels(selection2, entities, filter2, classes, labels) {
entities = entities.filter(hasText);
labels = labels.filter(hasText);
drawPointLabels(selection2, entities, filter2, classes, labels);
- function hasText(d, i2) {
- return labels[i2].hasOwnProperty("x") && labels[i2].hasOwnProperty("y");
+ function hasText(d2, i3) {
+ return labels[i3].hasOwnProperty("x") && labels[i3].hasOwnProperty("y");
}
}
function drawAreaIcons(selection2, entities, filter2, classes, labels) {
var icons = selection2.selectAll("use." + classes).filter(filter2).data(entities, osmEntity.key);
icons.exit().remove();
- icons.enter().append("use").attr("class", "icon " + classes).attr("width", "17px").attr("height", "17px").merge(icons).attr("transform", get4(labels, "transform")).attr("xlink:href", function(d) {
- var preset = _mainPresetIndex.match(d, context.graph());
+ icons.enter().append("use").attr("class", "icon " + classes).attr("width", "17px").attr("height", "17px").merge(icons).attr("transform", get4(labels, "transform")).attr("xlink:href", function(d2) {
+ var preset = _mainPresetIndex.match(d2, context.graph());
var picon = preset && preset.icon;
return picon ? "#" + picon : "";
});
var classes = "debug " + which + " " + (which === "debug-skipped" ? "orange" : "yellow");
var gj = [];
if (context.getDebug("collision")) {
- gj = rtree.all().map(function(d) {
+ gj = rtree.all().map(function(d2) {
return { type: "Polygon", coordinates: [[
- [d.minX, d.minY],
- [d.maxX, d.minY],
- [d.maxX, d.maxY],
- [d.minX, d.maxY],
- [d.minX, d.minY]
+ [d2.minX, d2.minY],
+ [d2.maxX, d2.minY],
+ [d2.maxX, d2.maxY],
+ [d2.minX, d2.maxY],
+ [d2.minX, d2.minY]
]] };
});
}
var zoom = geoScaleToZoom(projection2.scale());
var labelable = [];
var renderNodeAs = {};
- var i2, j2, k, entity, geometry;
- for (i2 = 0; i2 < labelStack.length; i2++) {
+ var i3, j3, k2, entity, geometry;
+ for (i3 = 0; i3 < labelStack.length; i3++) {
labelable.push([]);
}
if (fullRedraw) {
_rskipped.clear();
_entitybboxes = {};
} else {
- for (i2 = 0; i2 < entities.length; i2++) {
- entity = entities[i2];
+ for (i3 = 0; i3 < entities.length; i3++) {
+ entity = entities[i3];
var toRemove = [].concat(_entitybboxes[entity.id] || []).concat(_entitybboxes[entity.id + "I"] || []);
- for (j2 = 0; j2 < toRemove.length; j2++) {
- _rdrawn.remove(toRemove[j2]);
- _rskipped.remove(toRemove[j2]);
+ for (j3 = 0; j3 < toRemove.length; j3++) {
+ _rdrawn.remove(toRemove[j3]);
+ _rskipped.remove(toRemove[j3]);
}
}
}
- for (i2 = 0; i2 < entities.length; i2++) {
- entity = entities[i2];
+ for (i3 = 0; i3 < entities.length; i3++) {
+ entity = entities[i3];
geometry = entity.geometry(graph);
if (geometry === "point" || geometry === "vertex" && isInterestingVertex(entity)) {
var hasDirections = entity.directions(graph, projection2).length;
var icon2 = preset && !shouldSkipIcon(preset) && preset.icon;
if (!icon2 && !utilDisplayName(entity))
continue;
- for (k = 0; k < labelStack.length; k++) {
- var matchGeom = labelStack[k][0];
- var matchKey = labelStack[k][1];
- var matchVal = labelStack[k][2];
+ for (k2 = 0; k2 < labelStack.length; k2++) {
+ var matchGeom = labelStack[k2][0];
+ var matchKey = labelStack[k2][1];
+ var matchVal = labelStack[k2][2];
var hasVal = entity.tags[matchKey];
if (geometry === matchGeom && hasVal && (matchVal === "*" || matchVal === hasVal)) {
- labelable[k].push(entity);
+ labelable[k2].push(entity);
break;
}
}
line: [],
area: []
};
- for (k = 0; k < labelable.length; k++) {
- var fontSize = labelStack[k][3];
- for (i2 = 0; i2 < labelable[k].length; i2++) {
- entity = labelable[k][i2];
+ for (k2 = 0; k2 < labelable.length; k2++) {
+ var fontSize = labelStack[k2][3];
+ for (i3 = 0; i3 < labelable[k2].length; i3++) {
+ entity = labelable[k2][i3];
geometry = entity.geometry(graph);
var getName = geometry === "line" ? utilDisplayNameForPath : utilDisplayName;
var name = getName(entity);
var width = name && textWidth(name, fontSize);
- var p = null;
+ var p2 = null;
if (geometry === "point" || geometry === "vertex") {
if (wireframe)
continue;
var renderAs = renderNodeAs[entity.id];
if (renderAs === "vertex" && zoom < 17)
continue;
- p = getPointLabel(entity, width, fontSize, renderAs);
+ p2 = getPointLabel(entity, width, fontSize, renderAs);
} else if (geometry === "line") {
- p = getLineLabel(entity, width, fontSize);
+ p2 = getLineLabel(entity, width, fontSize);
} else if (geometry === "area") {
- p = getAreaLabel(entity, width, fontSize);
+ p2 = getAreaLabel(entity, width, fontSize);
}
- if (p) {
+ if (p2) {
if (geometry === "vertex") {
geometry = "point";
}
- p.classes = geometry + " tag-" + labelStack[k][1];
- positions[geometry].push(p);
+ p2.classes = geometry + " tag-" + labelStack[k2][1];
+ positions[geometry].push(p2);
labelled[geometry].push(entity);
}
}
});
}
function getPointLabel(entity2, width2, height, geometry2) {
- var y = geometry2 === "point" ? -12 : 0;
+ var y2 = geometry2 === "point" ? -12 : 0;
var pointOffsets = {
- ltr: [15, y, "start"],
- rtl: [-15, y, "end"]
+ ltr: [15, y2, "start"],
+ rtl: [-15, y2, "end"]
};
var textDirection = _mainLocalizer.textDirection();
var coord3 = projection2(entity2.loc);
var textPadding = 2;
var offset = pointOffsets[textDirection];
- var p2 = {
+ var p3 = {
height,
width: width2,
x: coord3[0] + offset[0],
var bbox3;
if (textDirection === "rtl") {
bbox3 = {
- minX: p2.x - width2 - textPadding,
- minY: p2.y - height / 2 - textPadding,
- maxX: p2.x + textPadding,
- maxY: p2.y + height / 2 + textPadding
+ minX: p3.x - width2 - textPadding,
+ minY: p3.y - height / 2 - textPadding,
+ maxX: p3.x + textPadding,
+ maxY: p3.y + height / 2 + textPadding
};
} else {
bbox3 = {
- minX: p2.x - textPadding,
- minY: p2.y - height / 2 - textPadding,
- maxX: p2.x + width2 + textPadding,
- maxY: p2.y + height / 2 + textPadding
+ minX: p3.x - textPadding,
+ minY: p3.y - height / 2 - textPadding,
+ maxX: p3.x + width2 + textPadding,
+ maxY: p3.y + height / 2 + textPadding
};
}
if (tryInsert([bbox3], entity2.id, true)) {
- return p2;
+ return p3;
}
}
function getLineLabel(entity2, width2, height) {
95
];
var padding = 3;
- for (var i3 = 0; i3 < lineOffsets.length; i3++) {
- var offset = lineOffsets[i3];
+ for (var i4 = 0; i4 < lineOffsets.length; i4++) {
+ var offset = lineOffsets[i4];
var middle = offset / 100 * length;
var start2 = middle - width2 / 2;
if (start2 < 0 || start2 + width2 > length)
}
var bboxes = [];
var boxsize = (height + 2) / 2;
- for (var j3 = 0; j3 < sub.length - 1; j3++) {
- var a = sub[j3];
- var b = sub[j3 + 1];
- var num = Math.max(1, Math.floor(geoVecLength(a, b) / boxsize / 2));
+ for (var j4 = 0; j4 < sub.length - 1; j4++) {
+ var a2 = sub[j4];
+ var b2 = sub[j4 + 1];
+ var num = Math.max(1, Math.floor(geoVecLength(a2, b2) / boxsize / 2));
for (var box = 0; box < num; box++) {
- var p2 = geoVecInterp(a, b, box / num);
- var x05 = p2[0] - boxsize - padding;
- var y05 = p2[1] - boxsize - padding;
- var x12 = p2[0] + boxsize + padding;
- var y12 = p2[1] + boxsize + padding;
+ var p3 = geoVecInterp(a2, b2, box / num);
+ var x05 = p3[0] - boxsize - padding;
+ var y05 = p3[1] - boxsize - padding;
+ var x12 = p3[0] + boxsize + padding;
+ var y12 = p3[1] + boxsize + padding;
bboxes.push({
minX: Math.min(x05, x12),
minY: Math.min(y05, y12),
};
}
}
- function reverse(p3) {
- var angle2 = Math.atan2(p3[1][1] - p3[0][1], p3[1][0] - p3[0][0]);
- return !(p3[0][0] < p3[p3.length - 1][0] && angle2 < Math.PI / 2 && angle2 > -Math.PI / 2);
+ function reverse(p4) {
+ var angle2 = Math.atan2(p4[1][1] - p4[0][1], p4[1][0] - p4[0][0]);
+ return !(p4[0][0] < p4[p4.length - 1][0] && angle2 < Math.PI / 2 && angle2 > -Math.PI / 2);
}
function lineString2(points2) {
return "M" + points2.join("L");
function subpath(points2, from, to) {
var sofar = 0;
var start3, end, i0, i1;
- for (var i4 = 0; i4 < points2.length - 1; i4++) {
- var a2 = points2[i4];
- var b2 = points2[i4 + 1];
- var current = geoVecLength(a2, b2);
+ for (var i5 = 0; i5 < points2.length - 1; i5++) {
+ var a3 = points2[i5];
+ var b3 = points2[i5 + 1];
+ var current = geoVecLength(a3, b3);
var portion;
if (!start3 && sofar + current >= from) {
portion = (from - sofar) / current;
start3 = [
- a2[0] + portion * (b2[0] - a2[0]),
- a2[1] + portion * (b2[1] - a2[1])
+ a3[0] + portion * (b3[0] - a3[0]),
+ a3[1] + portion * (b3[1] - a3[1])
];
- i0 = i4 + 1;
+ i0 = i5 + 1;
}
if (!end && sofar + current >= to) {
portion = (to - sofar) / current;
end = [
- a2[0] + portion * (b2[0] - a2[0]),
- a2[1] + portion * (b2[1] - a2[1])
+ a3[0] + portion * (b3[0] - a3[0]),
+ a3[1] + portion * (b3[1] - a3[1])
];
- i1 = i4 + 1;
+ i1 = i5 + 1;
}
sofar += current;
}
var picon = preset2 && preset2.icon;
var iconSize = 17;
var padding = 2;
- var p2 = {};
+ var p3 = {};
if (picon) {
if (addIcon()) {
addLabel(iconSize + padding);
- return p2;
+ return p3;
}
} else {
if (addLabel(0)) {
- return p2;
+ return p3;
}
}
function addIcon() {
maxY: iconY + iconSize
};
if (tryInsert([bbox3], entity2.id + "I", true)) {
- p2.transform = "translate(" + iconX + "," + iconY + ")";
+ p3.transform = "translate(" + iconX + "," + iconY + ")";
return true;
}
return false;
maxY: labelY + height / 2 + padding
};
if (tryInsert([bbox3], entity2.id, true)) {
- p2.x = labelX;
- p2.y = labelY;
- p2.textAnchor = "middle";
- p2.height = height;
+ p3.x = labelX;
+ p3.y = labelY;
+ p3.textAnchor = "middle";
+ p3.height = height;
return true;
}
}
}
function tryInsert(bboxes, id2, saveSkipped) {
var skipped = false;
- for (var i3 = 0; i3 < bboxes.length; i3++) {
- var bbox3 = bboxes[i3];
+ for (var i4 = 0; i4 < bboxes.length; i4++) {
+ var bbox3 = bboxes[i4];
bbox3.id = id2;
if (bbox3.minX < 0 || bbox3.minY < 0 || bbox3.maxX > dimensions[0] || bbox3.maxY > dimensions[1]) {
skipped = true;
return !skipped;
}
var layer = selection2.selectAll(".layer-osm.labels");
- layer.selectAll(".labels-group").data(["halo", "label", "debug"]).enter().append("g").attr("class", function(d) {
- return "labels-group " + d;
+ layer.selectAll(".labels-group").data(["halo", "label", "debug"]).enter().append("g").attr("class", function(d2) {
+ return "labels-group " + d2;
});
var halo = layer.selectAll(".labels-group.halo");
var label = layer.selectAll(".labels-group.label");
});
ids.push.apply(ids, nearMouse);
}
- for (var i2 = 0; i2 < selectedIDs.length; i2++) {
- var entity = graph.hasEntity(selectedIDs[i2]);
+ for (var i3 = 0; i3 < selectedIDs.length; i3++) {
+ var entity = graph.hasEntity(selectedIDs[i3]);
if (entity && entity.type === "node") {
- ids.push(selectedIDs[i2]);
+ ids.push(selectedIDs[i3]);
}
}
layers.selectAll(utilEntitySelector(ids)).classed("nolabel", true);
return drawLabels;
}
+ // node_modules/exifr/dist/full.esm.mjs
+ var e = "undefined" != typeof self ? self : global;
+ var t = "undefined" != typeof navigator;
+ var i2 = t && "undefined" == typeof HTMLImageElement;
+ var n2 = !("undefined" == typeof global || "undefined" == typeof process || !process.versions || !process.versions.node);
+ var s = e.Buffer;
+ var r = e.BigInt;
+ var a = !!s;
+ var o = (e3) => e3;
+ function l(e3, t2 = o) {
+ if (n2)
+ try {
+ return "function" == typeof __require ? Promise.resolve(t2(__require(e3))) : import(
+ /* webpackIgnore: true */
+ e3
+ ).then(t2);
+ } catch (t3) {
+ console.warn(`Couldn't load ${e3}`);
+ }
+ }
+ var h = e.fetch;
+ var u = (e3) => h = e3;
+ if (!e.fetch) {
+ const e3 = l("http", (e4) => e4), t2 = l("https", (e4) => e4), i3 = (n3, { headers: s2 } = {}) => new Promise(async (r2, a2) => {
+ let { port: o2, hostname: l2, pathname: h2, protocol: u2, search: c2 } = new URL(n3);
+ const f3 = { method: "GET", hostname: l2, path: encodeURI(h2) + c2, headers: s2 };
+ "" !== o2 && (f3.port = Number(o2));
+ const d2 = ("https:" === u2 ? await t2 : await e3).request(f3, (e4) => {
+ if (301 === e4.statusCode || 302 === e4.statusCode) {
+ let t3 = new URL(e4.headers.location, n3).toString();
+ return i3(t3, { headers: s2 }).then(r2).catch(a2);
+ }
+ r2({ status: e4.statusCode, arrayBuffer: () => new Promise((t3) => {
+ let i4 = [];
+ e4.on("data", (e6) => i4.push(e6)), e4.on("end", () => t3(Buffer.concat(i4)));
+ }) });
+ });
+ d2.on("error", a2), d2.end();
+ });
+ u(i3);
+ }
+ function c(e3, t2, i3) {
+ return t2 in e3 ? Object.defineProperty(e3, t2, { value: i3, enumerable: true, configurable: true, writable: true }) : e3[t2] = i3, e3;
+ }
+ var f2 = (e3) => p(e3) ? void 0 : e3;
+ var d = (e3) => void 0 !== e3;
+ function p(e3) {
+ return void 0 === e3 || (e3 instanceof Map ? 0 === e3.size : 0 === Object.values(e3).filter(d).length);
+ }
+ function g2(e3) {
+ let t2 = new Error(e3);
+ throw delete t2.stack, t2;
+ }
+ function m(e3) {
+ return "" === (e3 = function(e4) {
+ for (; e4.endsWith("\0"); )
+ e4 = e4.slice(0, -1);
+ return e4;
+ }(e3).trim()) ? void 0 : e3;
+ }
+ function S(e3) {
+ let t2 = function(e4) {
+ let t3 = 0;
+ return e4.ifd0.enabled && (t3 += 1024), e4.exif.enabled && (t3 += 2048), e4.makerNote && (t3 += 2048), e4.userComment && (t3 += 1024), e4.gps.enabled && (t3 += 512), e4.interop.enabled && (t3 += 100), e4.ifd1.enabled && (t3 += 1024), t3 + 2048;
+ }(e3);
+ return e3.jfif.enabled && (t2 += 50), e3.xmp.enabled && (t2 += 2e4), e3.iptc.enabled && (t2 += 14e3), e3.icc.enabled && (t2 += 6e3), t2;
+ }
+ var C = (e3) => String.fromCharCode.apply(null, e3);
+ var y = "undefined" != typeof TextDecoder ? new TextDecoder("utf-8") : void 0;
+ function b(e3) {
+ return y ? y.decode(e3) : a ? Buffer.from(e3).toString("utf8") : decodeURIComponent(escape(C(e3)));
+ }
+ var I = class _I {
+ static from(e3, t2) {
+ return e3 instanceof this && e3.le === t2 ? e3 : new _I(e3, void 0, void 0, t2);
+ }
+ constructor(e3, t2 = 0, i3, n3) {
+ if ("boolean" == typeof n3 && (this.le = n3), Array.isArray(e3) && (e3 = new Uint8Array(e3)), 0 === e3)
+ this.byteOffset = 0, this.byteLength = 0;
+ else if (e3 instanceof ArrayBuffer) {
+ void 0 === i3 && (i3 = e3.byteLength - t2);
+ let n4 = new DataView(e3, t2, i3);
+ this._swapDataView(n4);
+ } else if (e3 instanceof Uint8Array || e3 instanceof DataView || e3 instanceof _I) {
+ void 0 === i3 && (i3 = e3.byteLength - t2), (t2 += e3.byteOffset) + i3 > e3.byteOffset + e3.byteLength && g2("Creating view outside of available memory in ArrayBuffer");
+ let n4 = new DataView(e3.buffer, t2, i3);
+ this._swapDataView(n4);
+ } else if ("number" == typeof e3) {
+ let t3 = new DataView(new ArrayBuffer(e3));
+ this._swapDataView(t3);
+ } else
+ g2("Invalid input argument for BufferView: " + e3);
+ }
+ _swapArrayBuffer(e3) {
+ this._swapDataView(new DataView(e3));
+ }
+ _swapBuffer(e3) {
+ this._swapDataView(new DataView(e3.buffer, e3.byteOffset, e3.byteLength));
+ }
+ _swapDataView(e3) {
+ this.dataView = e3, this.buffer = e3.buffer, this.byteOffset = e3.byteOffset, this.byteLength = e3.byteLength;
+ }
+ _lengthToEnd(e3) {
+ return this.byteLength - e3;
+ }
+ set(e3, t2, i3 = _I) {
+ return e3 instanceof DataView || e3 instanceof _I ? e3 = new Uint8Array(e3.buffer, e3.byteOffset, e3.byteLength) : e3 instanceof ArrayBuffer && (e3 = new Uint8Array(e3)), e3 instanceof Uint8Array || g2("BufferView.set(): Invalid data argument."), this.toUint8().set(e3, t2), new i3(this, t2, e3.byteLength);
+ }
+ subarray(e3, t2) {
+ return t2 = t2 || this._lengthToEnd(e3), new _I(this, e3, t2);
+ }
+ toUint8() {
+ return new Uint8Array(this.buffer, this.byteOffset, this.byteLength);
+ }
+ getUint8Array(e3, t2) {
+ return new Uint8Array(this.buffer, this.byteOffset + e3, t2);
+ }
+ getString(e3 = 0, t2 = this.byteLength) {
+ return b(this.getUint8Array(e3, t2));
+ }
+ getLatin1String(e3 = 0, t2 = this.byteLength) {
+ let i3 = this.getUint8Array(e3, t2);
+ return C(i3);
+ }
+ getUnicodeString(e3 = 0, t2 = this.byteLength) {
+ const i3 = [];
+ for (let n3 = 0; n3 < t2 && e3 + n3 < this.byteLength; n3 += 2)
+ i3.push(this.getUint16(e3 + n3));
+ return C(i3);
+ }
+ getInt8(e3) {
+ return this.dataView.getInt8(e3);
+ }
+ getUint8(e3) {
+ return this.dataView.getUint8(e3);
+ }
+ getInt16(e3, t2 = this.le) {
+ return this.dataView.getInt16(e3, t2);
+ }
+ getInt32(e3, t2 = this.le) {
+ return this.dataView.getInt32(e3, t2);
+ }
+ getUint16(e3, t2 = this.le) {
+ return this.dataView.getUint16(e3, t2);
+ }
+ getUint32(e3, t2 = this.le) {
+ return this.dataView.getUint32(e3, t2);
+ }
+ getFloat32(e3, t2 = this.le) {
+ return this.dataView.getFloat32(e3, t2);
+ }
+ getFloat64(e3, t2 = this.le) {
+ return this.dataView.getFloat64(e3, t2);
+ }
+ getFloat(e3, t2 = this.le) {
+ return this.dataView.getFloat32(e3, t2);
+ }
+ getDouble(e3, t2 = this.le) {
+ return this.dataView.getFloat64(e3, t2);
+ }
+ getUintBytes(e3, t2, i3) {
+ switch (t2) {
+ case 1:
+ return this.getUint8(e3, i3);
+ case 2:
+ return this.getUint16(e3, i3);
+ case 4:
+ return this.getUint32(e3, i3);
+ case 8:
+ return this.getUint64 && this.getUint64(e3, i3);
+ }
+ }
+ getUint(e3, t2, i3) {
+ switch (t2) {
+ case 8:
+ return this.getUint8(e3, i3);
+ case 16:
+ return this.getUint16(e3, i3);
+ case 32:
+ return this.getUint32(e3, i3);
+ case 64:
+ return this.getUint64 && this.getUint64(e3, i3);
+ }
+ }
+ toString(e3) {
+ return this.dataView.toString(e3, this.constructor.name);
+ }
+ ensureChunk() {
+ }
+ };
+ function P(e3, t2) {
+ g2(`${e3} '${t2}' was not loaded, try using full build of exifr.`);
+ }
+ var k = class extends Map {
+ constructor(e3) {
+ super(), this.kind = e3;
+ }
+ get(e3, t2) {
+ return this.has(e3) || P(this.kind, e3), t2 && (e3 in t2 || function(e4, t3) {
+ g2(`Unknown ${e4} '${t3}'.`);
+ }(this.kind, e3), t2[e3].enabled || P(this.kind, e3)), super.get(e3);
+ }
+ keyList() {
+ return Array.from(this.keys());
+ }
+ };
+ var w = new k("file parser");
+ var T = new k("segment parser");
+ var A = new k("file reader");
+ function D(e3, n3) {
+ return "string" == typeof e3 ? O(e3, n3) : t && !i2 && e3 instanceof HTMLImageElement ? O(e3.src, n3) : e3 instanceof Uint8Array || e3 instanceof ArrayBuffer || e3 instanceof DataView ? new I(e3) : t && e3 instanceof Blob ? x(e3, n3, "blob", R) : void g2("Invalid input argument");
+ }
+ function O(e3, i3) {
+ return (s2 = e3).startsWith("data:") || s2.length > 1e4 ? v(e3, i3, "base64") : n2 && e3.includes("://") ? x(e3, i3, "url", M) : n2 ? v(e3, i3, "fs") : t ? x(e3, i3, "url", M) : void g2("Invalid input argument");
+ var s2;
+ }
+ async function x(e3, t2, i3, n3) {
+ return A.has(i3) ? v(e3, t2, i3) : n3 ? async function(e4, t3) {
+ let i4 = await t3(e4);
+ return new I(i4);
+ }(e3, n3) : void g2(`Parser ${i3} is not loaded`);
+ }
+ async function v(e3, t2, i3) {
+ let n3 = new (A.get(i3))(e3, t2);
+ return await n3.read(), n3;
+ }
+ var M = (e3) => h(e3).then((e4) => e4.arrayBuffer());
+ var R = (e3) => new Promise((t2, i3) => {
+ let n3 = new FileReader();
+ n3.onloadend = () => t2(n3.result || new ArrayBuffer()), n3.onerror = i3, n3.readAsArrayBuffer(e3);
+ });
+ var L = class extends Map {
+ get tagKeys() {
+ return this.allKeys || (this.allKeys = Array.from(this.keys())), this.allKeys;
+ }
+ get tagValues() {
+ return this.allValues || (this.allValues = Array.from(this.values())), this.allValues;
+ }
+ };
+ function U(e3, t2, i3) {
+ let n3 = new L();
+ for (let [e4, t3] of i3)
+ n3.set(e4, t3);
+ if (Array.isArray(t2))
+ for (let i4 of t2)
+ e3.set(i4, n3);
+ else
+ e3.set(t2, n3);
+ return n3;
+ }
+ function F(e3, t2, i3) {
+ let n3, s2 = e3.get(t2);
+ for (n3 of i3)
+ s2.set(n3[0], n3[1]);
+ }
+ var E = /* @__PURE__ */ new Map();
+ var B = /* @__PURE__ */ new Map();
+ var N = /* @__PURE__ */ new Map();
+ var G = ["chunked", "firstChunkSize", "firstChunkSizeNode", "firstChunkSizeBrowser", "chunkSize", "chunkLimit"];
+ var V = ["jfif", "xmp", "icc", "iptc", "ihdr"];
+ var z = ["tiff", ...V];
+ var H = ["ifd0", "ifd1", "exif", "gps", "interop"];
+ var j2 = [...z, ...H];
+ var W = ["makerNote", "userComment"];
+ var K = ["translateKeys", "translateValues", "reviveValues", "multiSegment"];
+ var X = [...K, "sanitize", "mergeOutput", "silentErrors"];
+ var _ = class {
+ get translate() {
+ return this.translateKeys || this.translateValues || this.reviveValues;
+ }
+ };
+ var Y = class extends _ {
+ get needed() {
+ return this.enabled || this.deps.size > 0;
+ }
+ constructor(e3, t2, i3, n3) {
+ if (super(), c(this, "enabled", false), c(this, "skip", /* @__PURE__ */ new Set()), c(this, "pick", /* @__PURE__ */ new Set()), c(this, "deps", /* @__PURE__ */ new Set()), c(this, "translateKeys", false), c(this, "translateValues", false), c(this, "reviveValues", false), this.key = e3, this.enabled = t2, this.parse = this.enabled, this.applyInheritables(n3), this.canBeFiltered = H.includes(e3), this.canBeFiltered && (this.dict = E.get(e3)), void 0 !== i3)
+ if (Array.isArray(i3))
+ this.parse = this.enabled = true, this.canBeFiltered && i3.length > 0 && this.translateTagSet(i3, this.pick);
+ else if ("object" == typeof i3) {
+ if (this.enabled = true, this.parse = false !== i3.parse, this.canBeFiltered) {
+ let { pick: e4, skip: t3 } = i3;
+ e4 && e4.length > 0 && this.translateTagSet(e4, this.pick), t3 && t3.length > 0 && this.translateTagSet(t3, this.skip);
+ }
+ this.applyInheritables(i3);
+ } else
+ true === i3 || false === i3 ? this.parse = this.enabled = i3 : g2(`Invalid options argument: ${i3}`);
+ }
+ applyInheritables(e3) {
+ let t2, i3;
+ for (t2 of K)
+ i3 = e3[t2], void 0 !== i3 && (this[t2] = i3);
+ }
+ translateTagSet(e3, t2) {
+ if (this.dict) {
+ let i3, n3, { tagKeys: s2, tagValues: r2 } = this.dict;
+ for (i3 of e3)
+ "string" == typeof i3 ? (n3 = r2.indexOf(i3), -1 === n3 && (n3 = s2.indexOf(Number(i3))), -1 !== n3 && t2.add(Number(s2[n3]))) : t2.add(i3);
+ } else
+ for (let i3 of e3)
+ t2.add(i3);
+ }
+ finalizeFilters() {
+ !this.enabled && this.deps.size > 0 ? (this.enabled = true, ee(this.pick, this.deps)) : this.enabled && this.pick.size > 0 && ee(this.pick, this.deps);
+ }
+ };
+ var $2 = { jfif: false, tiff: true, xmp: false, icc: false, iptc: false, ifd0: true, ifd1: false, exif: true, gps: true, interop: false, ihdr: void 0, makerNote: false, userComment: false, multiSegment: false, skip: [], pick: [], translateKeys: true, translateValues: true, reviveValues: true, sanitize: true, mergeOutput: true, silentErrors: true, chunked: true, firstChunkSize: void 0, firstChunkSizeNode: 512, firstChunkSizeBrowser: 65536, chunkSize: 65536, chunkLimit: 5 };
+ var J = /* @__PURE__ */ new Map();
+ var q = class extends _ {
+ static useCached(e3) {
+ let t2 = J.get(e3);
+ return void 0 !== t2 || (t2 = new this(e3), J.set(e3, t2)), t2;
+ }
+ constructor(e3) {
+ super(), true === e3 ? this.setupFromTrue() : void 0 === e3 ? this.setupFromUndefined() : Array.isArray(e3) ? this.setupFromArray(e3) : "object" == typeof e3 ? this.setupFromObject(e3) : g2(`Invalid options argument ${e3}`), void 0 === this.firstChunkSize && (this.firstChunkSize = t ? this.firstChunkSizeBrowser : this.firstChunkSizeNode), this.mergeOutput && (this.ifd1.enabled = false), this.filterNestedSegmentTags(), this.traverseTiffDependencyTree(), this.checkLoadedPlugins();
+ }
+ setupFromUndefined() {
+ let e3;
+ for (e3 of G)
+ this[e3] = $2[e3];
+ for (e3 of X)
+ this[e3] = $2[e3];
+ for (e3 of W)
+ this[e3] = $2[e3];
+ for (e3 of j2)
+ this[e3] = new Y(e3, $2[e3], void 0, this);
+ }
+ setupFromTrue() {
+ let e3;
+ for (e3 of G)
+ this[e3] = $2[e3];
+ for (e3 of X)
+ this[e3] = $2[e3];
+ for (e3 of W)
+ this[e3] = true;
+ for (e3 of j2)
+ this[e3] = new Y(e3, true, void 0, this);
+ }
+ setupFromArray(e3) {
+ let t2;
+ for (t2 of G)
+ this[t2] = $2[t2];
+ for (t2 of X)
+ this[t2] = $2[t2];
+ for (t2 of W)
+ this[t2] = $2[t2];
+ for (t2 of j2)
+ this[t2] = new Y(t2, false, void 0, this);
+ this.setupGlobalFilters(e3, void 0, H);
+ }
+ setupFromObject(e3) {
+ let t2;
+ for (t2 of (H.ifd0 = H.ifd0 || H.image, H.ifd1 = H.ifd1 || H.thumbnail, Object.assign(this, e3), G))
+ this[t2] = Z(e3[t2], $2[t2]);
+ for (t2 of X)
+ this[t2] = Z(e3[t2], $2[t2]);
+ for (t2 of W)
+ this[t2] = Z(e3[t2], $2[t2]);
+ for (t2 of z)
+ this[t2] = new Y(t2, $2[t2], e3[t2], this);
+ for (t2 of H)
+ this[t2] = new Y(t2, $2[t2], e3[t2], this.tiff);
+ this.setupGlobalFilters(e3.pick, e3.skip, H, j2), true === e3.tiff ? this.batchEnableWithBool(H, true) : false === e3.tiff ? this.batchEnableWithUserValue(H, e3) : Array.isArray(e3.tiff) ? this.setupGlobalFilters(e3.tiff, void 0, H) : "object" == typeof e3.tiff && this.setupGlobalFilters(e3.tiff.pick, e3.tiff.skip, H);
+ }
+ batchEnableWithBool(e3, t2) {
+ for (let i3 of e3)
+ this[i3].enabled = t2;
+ }
+ batchEnableWithUserValue(e3, t2) {
+ for (let i3 of e3) {
+ let e4 = t2[i3];
+ this[i3].enabled = false !== e4 && void 0 !== e4;
+ }
+ }
+ setupGlobalFilters(e3, t2, i3, n3 = i3) {
+ if (e3 && e3.length) {
+ for (let e4 of n3)
+ this[e4].enabled = false;
+ let t3 = Q(e3, i3);
+ for (let [e4, i4] of t3)
+ ee(this[e4].pick, i4), this[e4].enabled = true;
+ } else if (t2 && t2.length) {
+ let e4 = Q(t2, i3);
+ for (let [t3, i4] of e4)
+ ee(this[t3].skip, i4);
+ }
+ }
+ filterNestedSegmentTags() {
+ let { ifd0: e3, exif: t2, xmp: i3, iptc: n3, icc: s2 } = this;
+ this.makerNote ? t2.deps.add(37500) : t2.skip.add(37500), this.userComment ? t2.deps.add(37510) : t2.skip.add(37510), i3.enabled || e3.skip.add(700), n3.enabled || e3.skip.add(33723), s2.enabled || e3.skip.add(34675);
+ }
+ traverseTiffDependencyTree() {
+ let { ifd0: e3, exif: t2, gps: i3, interop: n3 } = this;
+ n3.needed && (t2.deps.add(40965), e3.deps.add(40965)), t2.needed && e3.deps.add(34665), i3.needed && e3.deps.add(34853), this.tiff.enabled = H.some((e4) => true === this[e4].enabled) || this.makerNote || this.userComment;
+ for (let e4 of H)
+ this[e4].finalizeFilters();
+ }
+ get onlyTiff() {
+ return !V.map((e3) => this[e3].enabled).some((e3) => true === e3) && this.tiff.enabled;
+ }
+ checkLoadedPlugins() {
+ for (let e3 of z)
+ this[e3].enabled && !T.has(e3) && P("segment parser", e3);
+ }
+ };
+ function Q(e3, t2) {
+ let i3, n3, s2, r2, a2 = [];
+ for (s2 of t2) {
+ for (r2 of (i3 = E.get(s2), n3 = [], i3))
+ (e3.includes(r2[0]) || e3.includes(r2[1])) && n3.push(r2[0]);
+ n3.length && a2.push([s2, n3]);
+ }
+ return a2;
+ }
+ function Z(e3, t2) {
+ return void 0 !== e3 ? e3 : void 0 !== t2 ? t2 : void 0;
+ }
+ function ee(e3, t2) {
+ for (let i3 of t2)
+ e3.add(i3);
+ }
+ c(q, "default", $2);
+ var te = class {
+ constructor(e3) {
+ c(this, "parsers", {}), c(this, "output", {}), c(this, "errors", []), c(this, "pushToErrors", (e4) => this.errors.push(e4)), this.options = q.useCached(e3);
+ }
+ async read(e3) {
+ this.file = await D(e3, this.options);
+ }
+ setup() {
+ if (this.fileParser)
+ return;
+ let { file: e3 } = this, t2 = e3.getUint16(0);
+ for (let [i3, n3] of w)
+ if (n3.canHandle(e3, t2))
+ return this.fileParser = new n3(this.options, this.file, this.parsers), e3[i3] = true;
+ this.file.close && this.file.close(), g2("Unknown file format");
+ }
+ async parse() {
+ let { output: e3, errors: t2 } = this;
+ return this.setup(), this.options.silentErrors ? (await this.executeParsers().catch(this.pushToErrors), t2.push(...this.fileParser.errors)) : await this.executeParsers(), this.file.close && this.file.close(), this.options.silentErrors && t2.length > 0 && (e3.errors = t2), f2(e3);
+ }
+ async executeParsers() {
+ let { output: e3 } = this;
+ await this.fileParser.parse();
+ let t2 = Object.values(this.parsers).map(async (t3) => {
+ let i3 = await t3.parse();
+ t3.assignToOutput(e3, i3);
+ });
+ this.options.silentErrors && (t2 = t2.map((e4) => e4.catch(this.pushToErrors))), await Promise.all(t2);
+ }
+ async extractThumbnail() {
+ this.setup();
+ let { options: e3, file: t2 } = this, i3 = T.get("tiff", e3);
+ var n3;
+ if (t2.tiff ? n3 = { start: 0, type: "tiff" } : t2.jpeg && (n3 = await this.fileParser.getOrFindSegment("tiff")), void 0 === n3)
+ return;
+ let s2 = await this.fileParser.ensureSegmentChunk(n3), r2 = this.parsers.tiff = new i3(s2, e3, t2), a2 = await r2.extractThumbnail();
+ return t2.close && t2.close(), a2;
+ }
+ };
+ async function ie(e3, t2) {
+ let i3 = new te(t2);
+ return await i3.read(e3), i3.parse();
+ }
+ var ne = Object.freeze({ __proto__: null, parse: ie, Exifr: te, fileParsers: w, segmentParsers: T, fileReaders: A, tagKeys: E, tagValues: B, tagRevivers: N, createDictionary: U, extendDictionary: F, fetchUrlAsArrayBuffer: M, readBlobAsArrayBuffer: R, chunkedProps: G, otherSegments: V, segments: z, tiffBlocks: H, segmentsAndBlocks: j2, tiffExtractables: W, inheritables: K, allFormatters: X, Options: q });
+ var se = class {
+ constructor(e3, t2, i3) {
+ c(this, "errors", []), c(this, "ensureSegmentChunk", async (e4) => {
+ let t3 = e4.start, i4 = e4.size || 65536;
+ if (this.file.chunked)
+ if (this.file.available(t3, i4))
+ e4.chunk = this.file.subarray(t3, i4);
+ else
+ try {
+ e4.chunk = await this.file.readChunk(t3, i4);
+ } catch (t4) {
+ g2(`Couldn't read segment: ${JSON.stringify(e4)}. ${t4.message}`);
+ }
+ else
+ this.file.byteLength > t3 + i4 ? e4.chunk = this.file.subarray(t3, i4) : void 0 === e4.size ? e4.chunk = this.file.subarray(t3) : g2("Segment unreachable: " + JSON.stringify(e4));
+ return e4.chunk;
+ }), this.extendOptions && this.extendOptions(e3), this.options = e3, this.file = t2, this.parsers = i3;
+ }
+ injectSegment(e3, t2) {
+ this.options[e3].enabled && this.createParser(e3, t2);
+ }
+ createParser(e3, t2) {
+ let i3 = new (T.get(e3))(t2, this.options, this.file);
+ return this.parsers[e3] = i3;
+ }
+ createParsers(e3) {
+ for (let t2 of e3) {
+ let { type: e4, chunk: i3 } = t2, n3 = this.options[e4];
+ if (n3 && n3.enabled) {
+ let t3 = this.parsers[e4];
+ t3 && t3.append || t3 || this.createParser(e4, i3);
+ }
+ }
+ }
+ async readSegments(e3) {
+ let t2 = e3.map(this.ensureSegmentChunk);
+ await Promise.all(t2);
+ }
+ };
+ var re2 = class {
+ static findPosition(e3, t2) {
+ let i3 = e3.getUint16(t2 + 2) + 2, n3 = "function" == typeof this.headerLength ? this.headerLength(e3, t2, i3) : this.headerLength, s2 = t2 + n3, r2 = i3 - n3;
+ return { offset: t2, length: i3, headerLength: n3, start: s2, size: r2, end: s2 + r2 };
+ }
+ static parse(e3, t2 = {}) {
+ return new this(e3, new q({ [this.type]: t2 }), e3).parse();
+ }
+ normalizeInput(e3) {
+ return e3 instanceof I ? e3 : new I(e3);
+ }
+ constructor(e3, t2 = {}, i3) {
+ c(this, "errors", []), c(this, "raw", /* @__PURE__ */ new Map()), c(this, "handleError", (e4) => {
+ if (!this.options.silentErrors)
+ throw e4;
+ this.errors.push(e4.message);
+ }), this.chunk = this.normalizeInput(e3), this.file = i3, this.type = this.constructor.type, this.globalOptions = this.options = t2, this.localOptions = t2[this.type], this.canTranslate = this.localOptions && this.localOptions.translate;
+ }
+ translate() {
+ this.canTranslate && (this.translated = this.translateBlock(this.raw, this.type));
+ }
+ get output() {
+ return this.translated ? this.translated : this.raw ? Object.fromEntries(this.raw) : void 0;
+ }
+ translateBlock(e3, t2) {
+ let i3 = N.get(t2), n3 = B.get(t2), s2 = E.get(t2), r2 = this.options[t2], a2 = r2.reviveValues && !!i3, o2 = r2.translateValues && !!n3, l2 = r2.translateKeys && !!s2, h2 = {};
+ for (let [t3, r3] of e3)
+ a2 && i3.has(t3) ? r3 = i3.get(t3)(r3) : o2 && n3.has(t3) && (r3 = this.translateValue(r3, n3.get(t3))), l2 && s2.has(t3) && (t3 = s2.get(t3) || t3), h2[t3] = r3;
+ return h2;
+ }
+ translateValue(e3, t2) {
+ return t2[e3] || t2.DEFAULT || e3;
+ }
+ assignToOutput(e3, t2) {
+ this.assignObjectToOutput(e3, this.constructor.type, t2);
+ }
+ assignObjectToOutput(e3, t2, i3) {
+ if (this.globalOptions.mergeOutput)
+ return Object.assign(e3, i3);
+ e3[t2] ? Object.assign(e3[t2], i3) : e3[t2] = i3;
+ }
+ };
+ c(re2, "headerLength", 4), c(re2, "type", void 0), c(re2, "multiSegment", false), c(re2, "canHandle", () => false);
+ function ae(e3) {
+ return 192 === e3 || 194 === e3 || 196 === e3 || 219 === e3 || 221 === e3 || 218 === e3 || 254 === e3;
+ }
+ function oe(e3) {
+ return e3 >= 224 && e3 <= 239;
+ }
+ function le(e3, t2, i3) {
+ for (let [n3, s2] of T)
+ if (s2.canHandle(e3, t2, i3))
+ return n3;
+ }
+ var he = class extends se {
+ constructor(...e3) {
+ super(...e3), c(this, "appSegments", []), c(this, "jpegSegments", []), c(this, "unknownSegments", []);
+ }
+ static canHandle(e3, t2) {
+ return 65496 === t2;
+ }
+ async parse() {
+ await this.findAppSegments(), await this.readSegments(this.appSegments), this.mergeMultiSegments(), this.createParsers(this.mergedAppSegments || this.appSegments);
+ }
+ setupSegmentFinderArgs(e3) {
+ true === e3 ? (this.findAll = true, this.wanted = new Set(T.keyList())) : (e3 = void 0 === e3 ? T.keyList().filter((e4) => this.options[e4].enabled) : e3.filter((e4) => this.options[e4].enabled && T.has(e4)), this.findAll = false, this.remaining = new Set(e3), this.wanted = new Set(e3)), this.unfinishedMultiSegment = false;
+ }
+ async findAppSegments(e3 = 0, t2) {
+ this.setupSegmentFinderArgs(t2);
+ let { file: i3, findAll: n3, wanted: s2, remaining: r2 } = this;
+ if (!n3 && this.file.chunked && (n3 = Array.from(s2).some((e4) => {
+ let t3 = T.get(e4), i4 = this.options[e4];
+ return t3.multiSegment && i4.multiSegment;
+ }), n3 && await this.file.readWhole()), e3 = this.findAppSegmentsInRange(e3, i3.byteLength), !this.options.onlyTiff && i3.chunked) {
+ let t3 = false;
+ for (; r2.size > 0 && !t3 && (i3.canReadNextChunk || this.unfinishedMultiSegment); ) {
+ let { nextChunkOffset: n4 } = i3, s3 = this.appSegments.some((e4) => !this.file.available(e4.offset || e4.start, e4.length || e4.size));
+ if (t3 = e3 > n4 && !s3 ? !await i3.readNextChunk(e3) : !await i3.readNextChunk(n4), void 0 === (e3 = this.findAppSegmentsInRange(e3, i3.byteLength)))
+ return;
+ }
+ }
+ }
+ findAppSegmentsInRange(e3, t2) {
+ t2 -= 2;
+ let i3, n3, s2, r2, a2, o2, { file: l2, findAll: h2, wanted: u2, remaining: c2, options: f3 } = this;
+ for (; e3 < t2; e3++)
+ if (255 === l2.getUint8(e3)) {
+ if (i3 = l2.getUint8(e3 + 1), oe(i3)) {
+ if (n3 = l2.getUint16(e3 + 2), s2 = le(l2, e3, n3), s2 && u2.has(s2) && (r2 = T.get(s2), a2 = r2.findPosition(l2, e3), o2 = f3[s2], a2.type = s2, this.appSegments.push(a2), !h2 && (r2.multiSegment && o2.multiSegment ? (this.unfinishedMultiSegment = a2.chunkNumber < a2.chunkCount, this.unfinishedMultiSegment || c2.delete(s2)) : c2.delete(s2), 0 === c2.size)))
+ break;
+ f3.recordUnknownSegments && (a2 = re2.findPosition(l2, e3), a2.marker = i3, this.unknownSegments.push(a2)), e3 += n3 + 1;
+ } else if (ae(i3)) {
+ if (n3 = l2.getUint16(e3 + 2), 218 === i3 && false !== f3.stopAfterSos)
+ return;
+ f3.recordJpegSegments && this.jpegSegments.push({ offset: e3, length: n3, marker: i3 }), e3 += n3 + 1;
+ }
+ }
+ return e3;
+ }
+ mergeMultiSegments() {
+ if (!this.appSegments.some((e4) => e4.multiSegment))
+ return;
+ let e3 = function(e4, t2) {
+ let i3, n3, s2, r2 = /* @__PURE__ */ new Map();
+ for (let a2 = 0; a2 < e4.length; a2++)
+ i3 = e4[a2], n3 = i3[t2], r2.has(n3) ? s2 = r2.get(n3) : r2.set(n3, s2 = []), s2.push(i3);
+ return Array.from(r2);
+ }(this.appSegments, "type");
+ this.mergedAppSegments = e3.map(([e4, t2]) => {
+ let i3 = T.get(e4, this.options);
+ if (i3.handleMultiSegments) {
+ return { type: e4, chunk: i3.handleMultiSegments(t2) };
+ }
+ return t2[0];
+ });
+ }
+ getSegment(e3) {
+ return this.appSegments.find((t2) => t2.type === e3);
+ }
+ async getOrFindSegment(e3) {
+ let t2 = this.getSegment(e3);
+ return void 0 === t2 && (await this.findAppSegments(0, [e3]), t2 = this.getSegment(e3)), t2;
+ }
+ };
+ c(he, "type", "jpeg"), w.set("jpeg", he);
+ var ue = [void 0, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8, 4];
+ var ce = class extends re2 {
+ parseHeader() {
+ var e3 = this.chunk.getUint16();
+ 18761 === e3 ? this.le = true : 19789 === e3 && (this.le = false), this.chunk.le = this.le, this.headerParsed = true;
+ }
+ parseTags(e3, t2, i3 = /* @__PURE__ */ new Map()) {
+ let { pick: n3, skip: s2 } = this.options[t2];
+ n3 = new Set(n3);
+ let r2 = n3.size > 0, a2 = 0 === s2.size, o2 = this.chunk.getUint16(e3);
+ e3 += 2;
+ for (let l2 = 0; l2 < o2; l2++) {
+ let o3 = this.chunk.getUint16(e3);
+ if (r2) {
+ if (n3.has(o3) && (i3.set(o3, this.parseTag(e3, o3, t2)), n3.delete(o3), 0 === n3.size))
+ break;
+ } else
+ !a2 && s2.has(o3) || i3.set(o3, this.parseTag(e3, o3, t2));
+ e3 += 12;
+ }
+ return i3;
+ }
+ parseTag(e3, t2, i3) {
+ let { chunk: n3 } = this, s2 = n3.getUint16(e3 + 2), r2 = n3.getUint32(e3 + 4), a2 = ue[s2];
+ if (a2 * r2 <= 4 ? e3 += 8 : e3 = n3.getUint32(e3 + 8), (s2 < 1 || s2 > 13) && g2(`Invalid TIFF value type. block: ${i3.toUpperCase()}, tag: ${t2.toString(16)}, type: ${s2}, offset ${e3}`), e3 > n3.byteLength && g2(`Invalid TIFF value offset. block: ${i3.toUpperCase()}, tag: ${t2.toString(16)}, type: ${s2}, offset ${e3} is outside of chunk size ${n3.byteLength}`), 1 === s2)
+ return n3.getUint8Array(e3, r2);
+ if (2 === s2)
+ return m(n3.getString(e3, r2));
+ if (7 === s2)
+ return n3.getUint8Array(e3, r2);
+ if (1 === r2)
+ return this.parseTagValue(s2, e3);
+ {
+ let t3 = new (function(e4) {
+ switch (e4) {
+ case 1:
+ return Uint8Array;
+ case 3:
+ return Uint16Array;
+ case 4:
+ return Uint32Array;
+ case 5:
+ return Array;
+ case 6:
+ return Int8Array;
+ case 8:
+ return Int16Array;
+ case 9:
+ return Int32Array;
+ case 10:
+ return Array;
+ case 11:
+ return Float32Array;
+ case 12:
+ return Float64Array;
+ default:
+ return Array;
+ }
+ }(s2))(r2), i4 = a2;
+ for (let n4 = 0; n4 < r2; n4++)
+ t3[n4] = this.parseTagValue(s2, e3), e3 += i4;
+ return t3;
+ }
+ }
+ parseTagValue(e3, t2) {
+ let { chunk: i3 } = this;
+ switch (e3) {
+ case 1:
+ return i3.getUint8(t2);
+ case 3:
+ return i3.getUint16(t2);
+ case 4:
+ return i3.getUint32(t2);
+ case 5:
+ return i3.getUint32(t2) / i3.getUint32(t2 + 4);
+ case 6:
+ return i3.getInt8(t2);
+ case 8:
+ return i3.getInt16(t2);
+ case 9:
+ return i3.getInt32(t2);
+ case 10:
+ return i3.getInt32(t2) / i3.getInt32(t2 + 4);
+ case 11:
+ return i3.getFloat(t2);
+ case 12:
+ return i3.getDouble(t2);
+ case 13:
+ return i3.getUint32(t2);
+ default:
+ g2(`Invalid tiff type ${e3}`);
+ }
+ }
+ };
+ var fe = class extends ce {
+ static canHandle(e3, t2) {
+ return 225 === e3.getUint8(t2 + 1) && 1165519206 === e3.getUint32(t2 + 4) && 0 === e3.getUint16(t2 + 8);
+ }
+ async parse() {
+ this.parseHeader();
+ let { options: e3 } = this;
+ return e3.ifd0.enabled && await this.parseIfd0Block(), e3.exif.enabled && await this.safeParse("parseExifBlock"), e3.gps.enabled && await this.safeParse("parseGpsBlock"), e3.interop.enabled && await this.safeParse("parseInteropBlock"), e3.ifd1.enabled && await this.safeParse("parseThumbnailBlock"), this.createOutput();
+ }
+ safeParse(e3) {
+ let t2 = this[e3]();
+ return void 0 !== t2.catch && (t2 = t2.catch(this.handleError)), t2;
+ }
+ findIfd0Offset() {
+ void 0 === this.ifd0Offset && (this.ifd0Offset = this.chunk.getUint32(4));
+ }
+ findIfd1Offset() {
+ if (void 0 === this.ifd1Offset) {
+ this.findIfd0Offset();
+ let e3 = this.chunk.getUint16(this.ifd0Offset), t2 = this.ifd0Offset + 2 + 12 * e3;
+ this.ifd1Offset = this.chunk.getUint32(t2);
+ }
+ }
+ parseBlock(e3, t2) {
+ let i3 = /* @__PURE__ */ new Map();
+ return this[t2] = i3, this.parseTags(e3, t2, i3), i3;
+ }
+ async parseIfd0Block() {
+ if (this.ifd0)
+ return;
+ let { file: e3 } = this;
+ this.findIfd0Offset(), this.ifd0Offset < 8 && g2("Malformed EXIF data"), !e3.chunked && this.ifd0Offset > e3.byteLength && g2(`IFD0 offset points to outside of file.
+this.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e3.byteLength}`), e3.tiff && await e3.ensureChunk(this.ifd0Offset, S(this.options));
+ let t2 = this.parseBlock(this.ifd0Offset, "ifd0");
+ return 0 !== t2.size ? (this.exifOffset = t2.get(34665), this.interopOffset = t2.get(40965), this.gpsOffset = t2.get(34853), this.xmp = t2.get(700), this.iptc = t2.get(33723), this.icc = t2.get(34675), this.options.sanitize && (t2.delete(34665), t2.delete(40965), t2.delete(34853), t2.delete(700), t2.delete(33723), t2.delete(34675)), t2) : void 0;
+ }
+ async parseExifBlock() {
+ if (this.exif)
+ return;
+ if (this.ifd0 || await this.parseIfd0Block(), void 0 === this.exifOffset)
+ return;
+ this.file.tiff && await this.file.ensureChunk(this.exifOffset, S(this.options));
+ let e3 = this.parseBlock(this.exifOffset, "exif");
+ return this.interopOffset || (this.interopOffset = e3.get(40965)), this.makerNote = e3.get(37500), this.userComment = e3.get(37510), this.options.sanitize && (e3.delete(40965), e3.delete(37500), e3.delete(37510)), this.unpack(e3, 41728), this.unpack(e3, 41729), e3;
+ }
+ unpack(e3, t2) {
+ let i3 = e3.get(t2);
+ i3 && 1 === i3.length && e3.set(t2, i3[0]);
+ }
+ async parseGpsBlock() {
+ if (this.gps)
+ return;
+ if (this.ifd0 || await this.parseIfd0Block(), void 0 === this.gpsOffset)
+ return;
+ let e3 = this.parseBlock(this.gpsOffset, "gps");
+ return e3 && e3.has(2) && e3.has(4) && (e3.set("latitude", de(...e3.get(2), e3.get(1))), e3.set("longitude", de(...e3.get(4), e3.get(3)))), e3;
+ }
+ async parseInteropBlock() {
+ if (!this.interop && (this.ifd0 || await this.parseIfd0Block(), void 0 !== this.interopOffset || this.exif || await this.parseExifBlock(), void 0 !== this.interopOffset))
+ return this.parseBlock(this.interopOffset, "interop");
+ }
+ async parseThumbnailBlock(e3 = false) {
+ if (!this.ifd1 && !this.ifd1Parsed && (!this.options.mergeOutput || e3))
+ return this.findIfd1Offset(), this.ifd1Offset > 0 && (this.parseBlock(this.ifd1Offset, "ifd1"), this.ifd1Parsed = true), this.ifd1;
+ }
+ async extractThumbnail() {
+ if (this.headerParsed || this.parseHeader(), this.ifd1Parsed || await this.parseThumbnailBlock(true), void 0 === this.ifd1)
+ return;
+ let e3 = this.ifd1.get(513), t2 = this.ifd1.get(514);
+ return this.chunk.getUint8Array(e3, t2);
+ }
+ get image() {
+ return this.ifd0;
+ }
+ get thumbnail() {
+ return this.ifd1;
+ }
+ createOutput() {
+ let e3, t2, i3, n3 = {};
+ for (t2 of H)
+ if (e3 = this[t2], !p(e3))
+ if (i3 = this.canTranslate ? this.translateBlock(e3, t2) : Object.fromEntries(e3), this.options.mergeOutput) {
+ if ("ifd1" === t2)
+ continue;
+ Object.assign(n3, i3);
+ } else
+ n3[t2] = i3;
+ return this.makerNote && (n3.makerNote = this.makerNote), this.userComment && (n3.userComment = this.userComment), n3;
+ }
+ assignToOutput(e3, t2) {
+ if (this.globalOptions.mergeOutput)
+ Object.assign(e3, t2);
+ else
+ for (let [i3, n3] of Object.entries(t2))
+ this.assignObjectToOutput(e3, i3, n3);
+ }
+ };
+ function de(e3, t2, i3, n3) {
+ var s2 = e3 + t2 / 60 + i3 / 3600;
+ return "S" !== n3 && "W" !== n3 || (s2 *= -1), s2;
+ }
+ c(fe, "type", "tiff"), c(fe, "headerLength", 10), T.set("tiff", fe);
+ var pe = Object.freeze({ __proto__: null, default: ne, Exifr: te, fileParsers: w, segmentParsers: T, fileReaders: A, tagKeys: E, tagValues: B, tagRevivers: N, createDictionary: U, extendDictionary: F, fetchUrlAsArrayBuffer: M, readBlobAsArrayBuffer: R, chunkedProps: G, otherSegments: V, segments: z, tiffBlocks: H, segmentsAndBlocks: j2, tiffExtractables: W, inheritables: K, allFormatters: X, Options: q, parse: ie });
+ var ge = { ifd0: false, ifd1: false, exif: false, gps: false, interop: false, sanitize: false, reviveValues: true, translateKeys: false, translateValues: false, mergeOutput: false };
+ var me = Object.assign({}, ge, { firstChunkSize: 4e4, gps: [1, 2, 3, 4] });
+ async function Se(e3) {
+ let t2 = new te(me);
+ await t2.read(e3);
+ let i3 = await t2.parse();
+ if (i3 && i3.gps) {
+ let { latitude: e4, longitude: t3 } = i3.gps;
+ return { latitude: e4, longitude: t3 };
+ }
+ }
+ var Ce = Object.assign({}, ge, { tiff: false, ifd1: true, mergeOutput: false });
+ async function ye(e3) {
+ let t2 = new te(Ce);
+ await t2.read(e3);
+ let i3 = await t2.extractThumbnail();
+ return i3 && a ? s.from(i3) : i3;
+ }
+ async function be(e3) {
+ let t2 = await this.thumbnail(e3);
+ if (void 0 !== t2) {
+ let e4 = new Blob([t2]);
+ return URL.createObjectURL(e4);
+ }
+ }
+ var Ie = Object.assign({}, ge, { firstChunkSize: 4e4, ifd0: [274] });
+ async function Pe(e3) {
+ let t2 = new te(Ie);
+ await t2.read(e3);
+ let i3 = await t2.parse();
+ if (i3 && i3.ifd0)
+ return i3.ifd0[274];
+ }
+ var ke = Object.freeze({ 1: { dimensionSwapped: false, scaleX: 1, scaleY: 1, deg: 0, rad: 0 }, 2: { dimensionSwapped: false, scaleX: -1, scaleY: 1, deg: 0, rad: 0 }, 3: { dimensionSwapped: false, scaleX: 1, scaleY: 1, deg: 180, rad: 180 * Math.PI / 180 }, 4: { dimensionSwapped: false, scaleX: -1, scaleY: 1, deg: 180, rad: 180 * Math.PI / 180 }, 5: { dimensionSwapped: true, scaleX: 1, scaleY: -1, deg: 90, rad: 90 * Math.PI / 180 }, 6: { dimensionSwapped: true, scaleX: 1, scaleY: 1, deg: 90, rad: 90 * Math.PI / 180 }, 7: { dimensionSwapped: true, scaleX: 1, scaleY: -1, deg: 270, rad: 270 * Math.PI / 180 }, 8: { dimensionSwapped: true, scaleX: 1, scaleY: 1, deg: 270, rad: 270 * Math.PI / 180 } });
+ var we = true;
+ var Te = true;
+ if ("object" == typeof navigator) {
+ let e3 = navigator.userAgent;
+ if (e3.includes("iPad") || e3.includes("iPhone")) {
+ let t2 = e3.match(/OS (\d+)_(\d+)/);
+ if (t2) {
+ let [, e4, i3] = t2, n3 = Number(e4) + 0.1 * Number(i3);
+ we = n3 < 13.4, Te = false;
+ }
+ } else if (e3.includes("OS X 10")) {
+ let [, t2] = e3.match(/OS X 10[_.](\d+)/);
+ we = Te = Number(t2) < 15;
+ }
+ if (e3.includes("Chrome/")) {
+ let [, t2] = e3.match(/Chrome\/(\d+)/);
+ we = Te = Number(t2) < 81;
+ } else if (e3.includes("Firefox/")) {
+ let [, t2] = e3.match(/Firefox\/(\d+)/);
+ we = Te = Number(t2) < 77;
+ }
+ }
+ async function Ae(e3) {
+ let t2 = await Pe(e3);
+ return Object.assign({ canvas: we, css: Te }, ke[t2]);
+ }
+ var De = class extends I {
+ constructor(...e3) {
+ super(...e3), c(this, "ranges", new Oe()), 0 !== this.byteLength && this.ranges.add(0, this.byteLength);
+ }
+ _tryExtend(e3, t2, i3) {
+ if (0 === e3 && 0 === this.byteLength && i3) {
+ let e4 = new DataView(i3.buffer || i3, i3.byteOffset, i3.byteLength);
+ this._swapDataView(e4);
+ } else {
+ let i4 = e3 + t2;
+ if (i4 > this.byteLength) {
+ let { dataView: e4 } = this._extend(i4);
+ this._swapDataView(e4);
+ }
+ }
+ }
+ _extend(e3) {
+ let t2;
+ t2 = a ? s.allocUnsafe(e3) : new Uint8Array(e3);
+ let i3 = new DataView(t2.buffer, t2.byteOffset, t2.byteLength);
+ return t2.set(new Uint8Array(this.buffer, this.byteOffset, this.byteLength), 0), { uintView: t2, dataView: i3 };
+ }
+ subarray(e3, t2, i3 = false) {
+ return t2 = t2 || this._lengthToEnd(e3), i3 && this._tryExtend(e3, t2), this.ranges.add(e3, t2), super.subarray(e3, t2);
+ }
+ set(e3, t2, i3 = false) {
+ i3 && this._tryExtend(t2, e3.byteLength, e3);
+ let n3 = super.set(e3, t2);
+ return this.ranges.add(t2, n3.byteLength), n3;
+ }
+ async ensureChunk(e3, t2) {
+ this.chunked && (this.ranges.available(e3, t2) || await this.readChunk(e3, t2));
+ }
+ available(e3, t2) {
+ return this.ranges.available(e3, t2);
+ }
+ };
+ var Oe = class {
+ constructor() {
+ c(this, "list", []);
+ }
+ get length() {
+ return this.list.length;
+ }
+ add(e3, t2, i3 = 0) {
+ let n3 = e3 + t2, s2 = this.list.filter((t3) => xe(e3, t3.offset, n3) || xe(e3, t3.end, n3));
+ if (s2.length > 0) {
+ e3 = Math.min(e3, ...s2.map((e4) => e4.offset)), n3 = Math.max(n3, ...s2.map((e4) => e4.end)), t2 = n3 - e3;
+ let i4 = s2.shift();
+ i4.offset = e3, i4.length = t2, i4.end = n3, this.list = this.list.filter((e4) => !s2.includes(e4));
+ } else
+ this.list.push({ offset: e3, length: t2, end: n3 });
+ }
+ available(e3, t2) {
+ let i3 = e3 + t2;
+ return this.list.some((t3) => t3.offset <= e3 && i3 <= t3.end);
+ }
+ };
+ function xe(e3, t2, i3) {
+ return e3 <= t2 && t2 <= i3;
+ }
+ var ve = class extends De {
+ constructor(e3, t2) {
+ super(0), c(this, "chunksRead", 0), this.input = e3, this.options = t2;
+ }
+ async readWhole() {
+ this.chunked = false, await this.readChunk(this.nextChunkOffset);
+ }
+ async readChunked() {
+ this.chunked = true, await this.readChunk(0, this.options.firstChunkSize);
+ }
+ async readNextChunk(e3 = this.nextChunkOffset) {
+ if (this.fullyRead)
+ return this.chunksRead++, false;
+ let t2 = this.options.chunkSize, i3 = await this.readChunk(e3, t2);
+ return !!i3 && i3.byteLength === t2;
+ }
+ async readChunk(e3, t2) {
+ if (this.chunksRead++, 0 !== (t2 = this.safeWrapAddress(e3, t2)))
+ return this._readChunk(e3, t2);
+ }
+ safeWrapAddress(e3, t2) {
+ return void 0 !== this.size && e3 + t2 > this.size ? Math.max(0, this.size - e3) : t2;
+ }
+ get nextChunkOffset() {
+ if (0 !== this.ranges.list.length)
+ return this.ranges.list[0].length;
+ }
+ get canReadNextChunk() {
+ return this.chunksRead < this.options.chunkLimit;
+ }
+ get fullyRead() {
+ return void 0 !== this.size && this.nextChunkOffset === this.size;
+ }
+ read() {
+ return this.options.chunked ? this.readChunked() : this.readWhole();
+ }
+ close() {
+ }
+ };
+ A.set("blob", class extends ve {
+ async readWhole() {
+ this.chunked = false;
+ let e3 = await R(this.input);
+ this._swapArrayBuffer(e3);
+ }
+ readChunked() {
+ return this.chunked = true, this.size = this.input.size, super.readChunked();
+ }
+ async _readChunk(e3, t2) {
+ let i3 = t2 ? e3 + t2 : void 0, n3 = this.input.slice(e3, i3), s2 = await R(n3);
+ return this.set(s2, e3, true);
+ }
+ });
+ var Me = Object.freeze({ __proto__: null, default: pe, Exifr: te, fileParsers: w, segmentParsers: T, fileReaders: A, tagKeys: E, tagValues: B, tagRevivers: N, createDictionary: U, extendDictionary: F, fetchUrlAsArrayBuffer: M, readBlobAsArrayBuffer: R, chunkedProps: G, otherSegments: V, segments: z, tiffBlocks: H, segmentsAndBlocks: j2, tiffExtractables: W, inheritables: K, allFormatters: X, Options: q, parse: ie, gpsOnlyOptions: me, gps: Se, thumbnailOnlyOptions: Ce, thumbnail: ye, thumbnailUrl: be, orientationOnlyOptions: Ie, orientation: Pe, rotations: ke, get rotateCanvas() {
+ return we;
+ }, get rotateCss() {
+ return Te;
+ }, rotation: Ae });
+ A.set("url", class extends ve {
+ async readWhole() {
+ this.chunked = false;
+ let e3 = await M(this.input);
+ e3 instanceof ArrayBuffer ? this._swapArrayBuffer(e3) : e3 instanceof Uint8Array && this._swapBuffer(e3);
+ }
+ async _readChunk(e3, t2) {
+ let i3 = t2 ? e3 + t2 - 1 : void 0, n3 = this.options.httpHeaders || {};
+ (e3 || i3) && (n3.range = `bytes=${[e3, i3].join("-")}`);
+ let s2 = await h(this.input, { headers: n3 }), r2 = await s2.arrayBuffer(), a2 = r2.byteLength;
+ if (416 !== s2.status)
+ return a2 !== t2 && (this.size = e3 + a2), this.set(r2, e3, true);
+ }
+ });
+ I.prototype.getUint64 = function(e3) {
+ let t2 = this.getUint32(e3), i3 = this.getUint32(e3 + 4);
+ return t2 < 1048575 ? t2 << 32 | i3 : void 0 !== typeof r ? (console.warn("Using BigInt because of type 64uint but JS can only handle 53b numbers."), r(t2) << r(32) | r(i3)) : void g2("Trying to read 64b value but JS can only handle 53b numbers.");
+ };
+ var Re = class extends se {
+ parseBoxes(e3 = 0) {
+ let t2 = [];
+ for (; e3 < this.file.byteLength - 4; ) {
+ let i3 = this.parseBoxHead(e3);
+ if (t2.push(i3), 0 === i3.length)
+ break;
+ e3 += i3.length;
+ }
+ return t2;
+ }
+ parseSubBoxes(e3) {
+ e3.boxes = this.parseBoxes(e3.start);
+ }
+ findBox(e3, t2) {
+ return void 0 === e3.boxes && this.parseSubBoxes(e3), e3.boxes.find((e4) => e4.kind === t2);
+ }
+ parseBoxHead(e3) {
+ let t2 = this.file.getUint32(e3), i3 = this.file.getString(e3 + 4, 4), n3 = e3 + 8;
+ return 1 === t2 && (t2 = this.file.getUint64(e3 + 8), n3 += 8), { offset: e3, length: t2, kind: i3, start: n3 };
+ }
+ parseBoxFullHead(e3) {
+ if (void 0 !== e3.version)
+ return;
+ let t2 = this.file.getUint32(e3.start);
+ e3.version = t2 >> 24, e3.start += 4;
+ }
+ };
+ var Le = class extends Re {
+ static canHandle(e3, t2) {
+ if (0 !== t2)
+ return false;
+ let i3 = e3.getUint16(2);
+ if (i3 > 50)
+ return false;
+ let n3 = 16, s2 = [];
+ for (; n3 < i3; )
+ s2.push(e3.getString(n3, 4)), n3 += 4;
+ return s2.includes(this.type);
+ }
+ async parse() {
+ let e3 = this.file.getUint32(0), t2 = this.parseBoxHead(e3);
+ for (; "meta" !== t2.kind; )
+ e3 += t2.length, await this.file.ensureChunk(e3, 16), t2 = this.parseBoxHead(e3);
+ await this.file.ensureChunk(t2.offset, t2.length), this.parseBoxFullHead(t2), this.parseSubBoxes(t2), this.options.icc.enabled && await this.findIcc(t2), this.options.tiff.enabled && await this.findExif(t2);
+ }
+ async registerSegment(e3, t2, i3) {
+ await this.file.ensureChunk(t2, i3);
+ let n3 = this.file.subarray(t2, i3);
+ this.createParser(e3, n3);
+ }
+ async findIcc(e3) {
+ let t2 = this.findBox(e3, "iprp");
+ if (void 0 === t2)
+ return;
+ let i3 = this.findBox(t2, "ipco");
+ if (void 0 === i3)
+ return;
+ let n3 = this.findBox(i3, "colr");
+ void 0 !== n3 && await this.registerSegment("icc", n3.offset + 12, n3.length);
+ }
+ async findExif(e3) {
+ let t2 = this.findBox(e3, "iinf");
+ if (void 0 === t2)
+ return;
+ let i3 = this.findBox(e3, "iloc");
+ if (void 0 === i3)
+ return;
+ let n3 = this.findExifLocIdInIinf(t2), s2 = this.findExtentInIloc(i3, n3);
+ if (void 0 === s2)
+ return;
+ let [r2, a2] = s2;
+ await this.file.ensureChunk(r2, a2);
+ let o2 = 4 + this.file.getUint32(r2);
+ r2 += o2, a2 -= o2, await this.registerSegment("tiff", r2, a2);
+ }
+ findExifLocIdInIinf(e3) {
+ this.parseBoxFullHead(e3);
+ let t2, i3, n3, s2, r2 = e3.start, a2 = this.file.getUint16(r2);
+ for (r2 += 2; a2--; ) {
+ if (t2 = this.parseBoxHead(r2), this.parseBoxFullHead(t2), i3 = t2.start, t2.version >= 2 && (n3 = 3 === t2.version ? 4 : 2, s2 = this.file.getString(i3 + n3 + 2, 4), "Exif" === s2))
+ return this.file.getUintBytes(i3, n3);
+ r2 += t2.length;
+ }
+ }
+ get8bits(e3) {
+ let t2 = this.file.getUint8(e3);
+ return [t2 >> 4, 15 & t2];
+ }
+ findExtentInIloc(e3, t2) {
+ this.parseBoxFullHead(e3);
+ let i3 = e3.start, [n3, s2] = this.get8bits(i3++), [r2, a2] = this.get8bits(i3++), o2 = 2 === e3.version ? 4 : 2, l2 = 1 === e3.version || 2 === e3.version ? 2 : 0, h2 = a2 + n3 + s2, u2 = 2 === e3.version ? 4 : 2, c2 = this.file.getUintBytes(i3, u2);
+ for (i3 += u2; c2--; ) {
+ let e4 = this.file.getUintBytes(i3, o2);
+ i3 += o2 + l2 + 2 + r2;
+ let u3 = this.file.getUint16(i3);
+ if (i3 += 2, e4 === t2)
+ return u3 > 1 && console.warn("ILOC box has more than one extent but we're only processing one\nPlease create an issue at https://github.com/MikeKovarik/exifr with this file"), [this.file.getUintBytes(i3 + a2, n3), this.file.getUintBytes(i3 + a2 + n3, s2)];
+ i3 += u3 * h2;
+ }
+ }
+ };
+ var Ue = class extends Le {
+ };
+ c(Ue, "type", "heic");
+ var Fe = class extends Le {
+ };
+ c(Fe, "type", "avif"), w.set("heic", Ue), w.set("avif", Fe), U(E, ["ifd0", "ifd1"], [[256, "ImageWidth"], [257, "ImageHeight"], [258, "BitsPerSample"], [259, "Compression"], [262, "PhotometricInterpretation"], [270, "ImageDescription"], [271, "Make"], [272, "Model"], [273, "StripOffsets"], [274, "Orientation"], [277, "SamplesPerPixel"], [278, "RowsPerStrip"], [279, "StripByteCounts"], [282, "XResolution"], [283, "YResolution"], [284, "PlanarConfiguration"], [296, "ResolutionUnit"], [301, "TransferFunction"], [305, "Software"], [306, "ModifyDate"], [315, "Artist"], [316, "HostComputer"], [317, "Predictor"], [318, "WhitePoint"], [319, "PrimaryChromaticities"], [513, "ThumbnailOffset"], [514, "ThumbnailLength"], [529, "YCbCrCoefficients"], [530, "YCbCrSubSampling"], [531, "YCbCrPositioning"], [532, "ReferenceBlackWhite"], [700, "ApplicationNotes"], [33432, "Copyright"], [33723, "IPTC"], [34665, "ExifIFD"], [34675, "ICC"], [34853, "GpsIFD"], [330, "SubIFD"], [40965, "InteropIFD"], [40091, "XPTitle"], [40092, "XPComment"], [40093, "XPAuthor"], [40094, "XPKeywords"], [40095, "XPSubject"]]), U(E, "exif", [[33434, "ExposureTime"], [33437, "FNumber"], [34850, "ExposureProgram"], [34852, "SpectralSensitivity"], [34855, "ISO"], [34858, "TimeZoneOffset"], [34859, "SelfTimerMode"], [34864, "SensitivityType"], [34865, "StandardOutputSensitivity"], [34866, "RecommendedExposureIndex"], [34867, "ISOSpeed"], [34868, "ISOSpeedLatitudeyyy"], [34869, "ISOSpeedLatitudezzz"], [36864, "ExifVersion"], [36867, "DateTimeOriginal"], [36868, "CreateDate"], [36873, "GooglePlusUploadCode"], [36880, "OffsetTime"], [36881, "OffsetTimeOriginal"], [36882, "OffsetTimeDigitized"], [37121, "ComponentsConfiguration"], [37122, "CompressedBitsPerPixel"], [37377, "ShutterSpeedValue"], [37378, "ApertureValue"], [37379, "BrightnessValue"], [37380, "ExposureCompensation"], [37381, "MaxApertureValue"], [37382, "SubjectDistance"], [37383, "MeteringMode"], [37384, "LightSource"], [37385, "Flash"], [37386, "FocalLength"], [37393, "ImageNumber"], [37394, "SecurityClassification"], [37395, "ImageHistory"], [37396, "SubjectArea"], [37500, "MakerNote"], [37510, "UserComment"], [37520, "SubSecTime"], [37521, "SubSecTimeOriginal"], [37522, "SubSecTimeDigitized"], [37888, "AmbientTemperature"], [37889, "Humidity"], [37890, "Pressure"], [37891, "WaterDepth"], [37892, "Acceleration"], [37893, "CameraElevationAngle"], [40960, "FlashpixVersion"], [40961, "ColorSpace"], [40962, "ExifImageWidth"], [40963, "ExifImageHeight"], [40964, "RelatedSoundFile"], [41483, "FlashEnergy"], [41486, "FocalPlaneXResolution"], [41487, "FocalPlaneYResolution"], [41488, "FocalPlaneResolutionUnit"], [41492, "SubjectLocation"], [41493, "ExposureIndex"], [41495, "SensingMethod"], [41728, "FileSource"], [41729, "SceneType"], [41730, "CFAPattern"], [41985, "CustomRendered"], [41986, "ExposureMode"], [41987, "WhiteBalance"], [41988, "DigitalZoomRatio"], [41989, "FocalLengthIn35mmFormat"], [41990, "SceneCaptureType"], [41991, "GainControl"], [41992, "Contrast"], [41993, "Saturation"], [41994, "Sharpness"], [41996, "SubjectDistanceRange"], [42016, "ImageUniqueID"], [42032, "OwnerName"], [42033, "SerialNumber"], [42034, "LensInfo"], [42035, "LensMake"], [42036, "LensModel"], [42037, "LensSerialNumber"], [42080, "CompositeImage"], [42081, "CompositeImageCount"], [42082, "CompositeImageExposureTimes"], [42240, "Gamma"], [59932, "Padding"], [59933, "OffsetSchema"], [65e3, "OwnerName"], [65001, "SerialNumber"], [65002, "Lens"], [65100, "RawFile"], [65101, "Converter"], [65102, "WhiteBalance"], [65105, "Exposure"], [65106, "Shadows"], [65107, "Brightness"], [65108, "Contrast"], [65109, "Saturation"], [65110, "Sharpness"], [65111, "Smoothness"], [65112, "MoireFilter"], [40965, "InteropIFD"]]), U(E, "gps", [[0, "GPSVersionID"], [1, "GPSLatitudeRef"], [2, "GPSLatitude"], [3, "GPSLongitudeRef"], [4, "GPSLongitude"], [5, "GPSAltitudeRef"], [6, "GPSAltitude"], [7, "GPSTimeStamp"], [8, "GPSSatellites"], [9, "GPSStatus"], [10, "GPSMeasureMode"], [11, "GPSDOP"], [12, "GPSSpeedRef"], [13, "GPSSpeed"], [14, "GPSTrackRef"], [15, "GPSTrack"], [16, "GPSImgDirectionRef"], [17, "GPSImgDirection"], [18, "GPSMapDatum"], [19, "GPSDestLatitudeRef"], [20, "GPSDestLatitude"], [21, "GPSDestLongitudeRef"], [22, "GPSDestLongitude"], [23, "GPSDestBearingRef"], [24, "GPSDestBearing"], [25, "GPSDestDistanceRef"], [26, "GPSDestDistance"], [27, "GPSProcessingMethod"], [28, "GPSAreaInformation"], [29, "GPSDateStamp"], [30, "GPSDifferential"], [31, "GPSHPositioningError"]]), U(B, ["ifd0", "ifd1"], [[274, { 1: "Horizontal (normal)", 2: "Mirror horizontal", 3: "Rotate 180", 4: "Mirror vertical", 5: "Mirror horizontal and rotate 270 CW", 6: "Rotate 90 CW", 7: "Mirror horizontal and rotate 90 CW", 8: "Rotate 270 CW" }], [296, { 1: "None", 2: "inches", 3: "cm" }]]);
+ var Ee = U(B, "exif", [[34850, { 0: "Not defined", 1: "Manual", 2: "Normal program", 3: "Aperture priority", 4: "Shutter priority", 5: "Creative program", 6: "Action program", 7: "Portrait mode", 8: "Landscape mode" }], [37121, { 0: "-", 1: "Y", 2: "Cb", 3: "Cr", 4: "R", 5: "G", 6: "B" }], [37383, { 0: "Unknown", 1: "Average", 2: "CenterWeightedAverage", 3: "Spot", 4: "MultiSpot", 5: "Pattern", 6: "Partial", 255: "Other" }], [37384, { 0: "Unknown", 1: "Daylight", 2: "Fluorescent", 3: "Tungsten (incandescent light)", 4: "Flash", 9: "Fine weather", 10: "Cloudy weather", 11: "Shade", 12: "Daylight fluorescent (D 5700 - 7100K)", 13: "Day white fluorescent (N 4600 - 5400K)", 14: "Cool white fluorescent (W 3900 - 4500K)", 15: "White fluorescent (WW 3200 - 3700K)", 17: "Standard light A", 18: "Standard light B", 19: "Standard light C", 20: "D55", 21: "D65", 22: "D75", 23: "D50", 24: "ISO studio tungsten", 255: "Other" }], [37385, { 0: "Flash did not fire", 1: "Flash fired", 5: "Strobe return light not detected", 7: "Strobe return light detected", 9: "Flash fired, compulsory flash mode", 13: "Flash fired, compulsory flash mode, return light not detected", 15: "Flash fired, compulsory flash mode, return light detected", 16: "Flash did not fire, compulsory flash mode", 24: "Flash did not fire, auto mode", 25: "Flash fired, auto mode", 29: "Flash fired, auto mode, return light not detected", 31: "Flash fired, auto mode, return light detected", 32: "No flash function", 65: "Flash fired, red-eye reduction mode", 69: "Flash fired, red-eye reduction mode, return light not detected", 71: "Flash fired, red-eye reduction mode, return light detected", 73: "Flash fired, compulsory flash mode, red-eye reduction mode", 77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected", 79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected", 89: "Flash fired, auto mode, red-eye reduction mode", 93: "Flash fired, auto mode, return light not detected, red-eye reduction mode", 95: "Flash fired, auto mode, return light detected, red-eye reduction mode" }], [41495, { 1: "Not defined", 2: "One-chip color area sensor", 3: "Two-chip color area sensor", 4: "Three-chip color area sensor", 5: "Color sequential area sensor", 7: "Trilinear sensor", 8: "Color sequential linear sensor" }], [41728, { 1: "Film Scanner", 2: "Reflection Print Scanner", 3: "Digital Camera" }], [41729, { 1: "Directly photographed" }], [41985, { 0: "Normal", 1: "Custom", 2: "HDR (no original saved)", 3: "HDR (original saved)", 4: "Original (for HDR)", 6: "Panorama", 7: "Portrait HDR", 8: "Portrait" }], [41986, { 0: "Auto", 1: "Manual", 2: "Auto bracket" }], [41987, { 0: "Auto", 1: "Manual" }], [41990, { 0: "Standard", 1: "Landscape", 2: "Portrait", 3: "Night", 4: "Other" }], [41991, { 0: "None", 1: "Low gain up", 2: "High gain up", 3: "Low gain down", 4: "High gain down" }], [41996, { 0: "Unknown", 1: "Macro", 2: "Close", 3: "Distant" }], [42080, { 0: "Unknown", 1: "Not a Composite Image", 2: "General Composite Image", 3: "Composite Image Captured While Shooting" }]]);
+ var Be = { 1: "No absolute unit of measurement", 2: "Inch", 3: "Centimeter" };
+ Ee.set(37392, Be), Ee.set(41488, Be);
+ var Ne = { 0: "Normal", 1: "Low", 2: "High" };
+ function Ge(e3) {
+ return "object" == typeof e3 && void 0 !== e3.length ? e3[0] : e3;
+ }
+ function Ve(e3) {
+ let t2 = Array.from(e3).slice(1);
+ return t2[1] > 15 && (t2 = t2.map((e4) => String.fromCharCode(e4))), "0" !== t2[2] && 0 !== t2[2] || t2.pop(), t2.join(".");
+ }
+ function ze(e3) {
+ if ("string" == typeof e3) {
+ var [t2, i3, n3, s2, r2, a2] = e3.trim().split(/[-: ]/g).map(Number), o2 = new Date(t2, i3 - 1, n3);
+ return Number.isNaN(s2) || Number.isNaN(r2) || Number.isNaN(a2) || (o2.setHours(s2), o2.setMinutes(r2), o2.setSeconds(a2)), Number.isNaN(+o2) ? e3 : o2;
+ }
+ }
+ function He(e3) {
+ if ("string" == typeof e3)
+ return e3;
+ let t2 = [];
+ if (0 === e3[1] && 0 === e3[e3.length - 1])
+ for (let i3 = 0; i3 < e3.length; i3 += 2)
+ t2.push(je(e3[i3 + 1], e3[i3]));
+ else
+ for (let i3 = 0; i3 < e3.length; i3 += 2)
+ t2.push(je(e3[i3], e3[i3 + 1]));
+ return m(String.fromCodePoint(...t2));
+ }
+ function je(e3, t2) {
+ return e3 << 8 | t2;
+ }
+ Ee.set(41992, Ne), Ee.set(41993, Ne), Ee.set(41994, Ne), U(N, ["ifd0", "ifd1"], [[50827, function(e3) {
+ return "string" != typeof e3 ? b(e3) : e3;
+ }], [306, ze], [40091, He], [40092, He], [40093, He], [40094, He], [40095, He]]), U(N, "exif", [[40960, Ve], [36864, Ve], [36867, ze], [36868, ze], [40962, Ge], [40963, Ge]]), U(N, "gps", [[0, (e3) => Array.from(e3).join(".")], [7, (e3) => Array.from(e3).join(":")]]);
+ var We = class extends re2 {
+ static canHandle(e3, t2) {
+ return 225 === e3.getUint8(t2 + 1) && 1752462448 === e3.getUint32(t2 + 4) && "http://ns.adobe.com/" === e3.getString(t2 + 4, "http://ns.adobe.com/".length);
+ }
+ static headerLength(e3, t2) {
+ return "http://ns.adobe.com/xmp/extension/" === e3.getString(t2 + 4, "http://ns.adobe.com/xmp/extension/".length) ? 79 : 4 + "http://ns.adobe.com/xap/1.0/".length + 1;
+ }
+ static findPosition(e3, t2) {
+ let i3 = super.findPosition(e3, t2);
+ return i3.multiSegment = i3.extended = 79 === i3.headerLength, i3.multiSegment ? (i3.chunkCount = e3.getUint8(t2 + 72), i3.chunkNumber = e3.getUint8(t2 + 76), 0 !== e3.getUint8(t2 + 77) && i3.chunkNumber++) : (i3.chunkCount = 1 / 0, i3.chunkNumber = -1), i3;
+ }
+ static handleMultiSegments(e3) {
+ return e3.map((e4) => e4.chunk.getString()).join("");
+ }
+ normalizeInput(e3) {
+ return "string" == typeof e3 ? e3 : I.from(e3).getString();
+ }
+ parse(e3 = this.chunk) {
+ if (!this.localOptions.parse)
+ return e3;
+ e3 = function(e4) {
+ let t3 = {}, i4 = {};
+ for (let e6 of Ze)
+ t3[e6] = [], i4[e6] = 0;
+ return e4.replace(et, (e6, n4, s2) => {
+ if ("<" === n4) {
+ let n5 = ++i4[s2];
+ return t3[s2].push(n5), `${e6}#${n5}`;
+ }
+ return `${e6}#${t3[s2].pop()}`;
+ });
+ }(e3);
+ let t2 = Xe.findAll(e3, "rdf", "Description");
+ 0 === t2.length && t2.push(new Xe("rdf", "Description", void 0, e3));
+ let i3, n3 = {};
+ for (let e4 of t2)
+ for (let t3 of e4.properties)
+ i3 = Je(t3.ns, n3), _e(t3, i3);
+ return function(e4) {
+ let t3;
+ for (let i4 in e4)
+ t3 = e4[i4] = f2(e4[i4]), void 0 === t3 && delete e4[i4];
+ return f2(e4);
+ }(n3);
+ }
+ assignToOutput(e3, t2) {
+ if (this.localOptions.parse)
+ for (let [i3, n3] of Object.entries(t2))
+ switch (i3) {
+ case "tiff":
+ this.assignObjectToOutput(e3, "ifd0", n3);
+ break;
+ case "exif":
+ this.assignObjectToOutput(e3, "exif", n3);
+ break;
+ case "xmlns":
+ break;
+ default:
+ this.assignObjectToOutput(e3, i3, n3);
+ }
+ else
+ e3.xmp = t2;
+ }
+ };
+ c(We, "type", "xmp"), c(We, "multiSegment", true), T.set("xmp", We);
+ var Ke = class _Ke {
+ static findAll(e3) {
+ return qe(e3, /([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)=("[^"]*"|'[^']*')/gm).map(_Ke.unpackMatch);
+ }
+ static unpackMatch(e3) {
+ let t2 = e3[1], i3 = e3[2], n3 = e3[3].slice(1, -1);
+ return n3 = Qe(n3), new _Ke(t2, i3, n3);
+ }
+ constructor(e3, t2, i3) {
+ this.ns = e3, this.name = t2, this.value = i3;
+ }
+ serialize() {
+ return this.value;
+ }
+ };
+ var Xe = class _Xe {
+ static findAll(e3, t2, i3) {
+ if (void 0 !== t2 || void 0 !== i3) {
+ t2 = t2 || "[\\w\\d-]+", i3 = i3 || "[\\w\\d-]+";
+ var n3 = new RegExp(`<(${t2}):(${i3})(#\\d+)?((\\s+?[\\w\\d-:]+=("[^"]*"|'[^']*'))*\\s*)(\\/>|>([\\s\\S]*?)<\\/\\1:\\2\\3>)`, "gm");
+ } else
+ n3 = /<([\w\d-]+):([\w\d-]+)(#\d+)?((\s+?[\w\d-:]+=("[^"]*"|'[^']*'))*\s*)(\/>|>([\s\S]*?)<\/\1:\2\3>)/gm;
+ return qe(e3, n3).map(_Xe.unpackMatch);
+ }
+ static unpackMatch(e3) {
+ let t2 = e3[1], i3 = e3[2], n3 = e3[4], s2 = e3[8];
+ return new _Xe(t2, i3, n3, s2);
+ }
+ constructor(e3, t2, i3, n3) {
+ this.ns = e3, this.name = t2, this.attrString = i3, this.innerXml = n3, this.attrs = Ke.findAll(i3), this.children = _Xe.findAll(n3), this.value = 0 === this.children.length ? Qe(n3) : void 0, this.properties = [...this.attrs, ...this.children];
+ }
+ get isPrimitive() {
+ return void 0 !== this.value && 0 === this.attrs.length && 0 === this.children.length;
+ }
+ get isListContainer() {
+ return 1 === this.children.length && this.children[0].isList;
+ }
+ get isList() {
+ let { ns: e3, name: t2 } = this;
+ return "rdf" === e3 && ("Seq" === t2 || "Bag" === t2 || "Alt" === t2);
+ }
+ get isListItem() {
+ return "rdf" === this.ns && "li" === this.name;
+ }
+ serialize() {
+ if (0 === this.properties.length && void 0 === this.value)
+ return;
+ if (this.isPrimitive)
+ return this.value;
+ if (this.isListContainer)
+ return this.children[0].serialize();
+ if (this.isList)
+ return $e(this.children.map(Ye));
+ if (this.isListItem && 1 === this.children.length && 0 === this.attrs.length)
+ return this.children[0].serialize();
+ let e3 = {};
+ for (let t2 of this.properties)
+ _e(t2, e3);
+ return void 0 !== this.value && (e3.value = this.value), f2(e3);
+ }
+ };
+ function _e(e3, t2) {
+ let i3 = e3.serialize();
+ void 0 !== i3 && (t2[e3.name] = i3);
+ }
+ var Ye = (e3) => e3.serialize();
+ var $e = (e3) => 1 === e3.length ? e3[0] : e3;
+ var Je = (e3, t2) => t2[e3] ? t2[e3] : t2[e3] = {};
+ function qe(e3, t2) {
+ let i3, n3 = [];
+ if (!e3)
+ return n3;
+ for (; null !== (i3 = t2.exec(e3)); )
+ n3.push(i3);
+ return n3;
+ }
+ function Qe(e3) {
+ if (function(e4) {
+ return null == e4 || "null" === e4 || "undefined" === e4 || "" === e4 || "" === e4.trim();
+ }(e3))
+ return;
+ let t2 = Number(e3);
+ if (!Number.isNaN(t2))
+ return t2;
+ let i3 = e3.toLowerCase();
+ return "true" === i3 || "false" !== i3 && e3.trim();
+ }
+ var Ze = ["rdf:li", "rdf:Seq", "rdf:Bag", "rdf:Alt", "rdf:Description"];
+ var et = new RegExp(`(<|\\/)(${Ze.join("|")})`, "g");
+ var tt = Object.freeze({ __proto__: null, default: Me, Exifr: te, fileParsers: w, segmentParsers: T, fileReaders: A, tagKeys: E, tagValues: B, tagRevivers: N, createDictionary: U, extendDictionary: F, fetchUrlAsArrayBuffer: M, readBlobAsArrayBuffer: R, chunkedProps: G, otherSegments: V, segments: z, tiffBlocks: H, segmentsAndBlocks: j2, tiffExtractables: W, inheritables: K, allFormatters: X, Options: q, parse: ie, gpsOnlyOptions: me, gps: Se, thumbnailOnlyOptions: Ce, thumbnail: ye, thumbnailUrl: be, orientationOnlyOptions: Ie, orientation: Pe, rotations: ke, get rotateCanvas() {
+ return we;
+ }, get rotateCss() {
+ return Te;
+ }, rotation: Ae });
+ var at = l("fs", (e3) => e3.promises);
+ A.set("fs", class extends ve {
+ async readWhole() {
+ this.chunked = false, this.fs = await at;
+ let e3 = await this.fs.readFile(this.input);
+ this._swapBuffer(e3);
+ }
+ async readChunked() {
+ this.chunked = true, this.fs = await at, await this.open(), await this.readChunk(0, this.options.firstChunkSize);
+ }
+ async open() {
+ void 0 === this.fh && (this.fh = await this.fs.open(this.input, "r"), this.size = (await this.fh.stat(this.input)).size);
+ }
+ async _readChunk(e3, t2) {
+ void 0 === this.fh && await this.open(), e3 + t2 > this.size && (t2 = this.size - e3);
+ var i3 = this.subarray(e3, t2, true);
+ return await this.fh.read(i3.dataView, 0, t2, e3), i3;
+ }
+ async close() {
+ if (this.fh) {
+ let e3 = this.fh;
+ this.fh = void 0, await e3.close();
+ }
+ }
+ });
+ A.set("base64", class extends ve {
+ constructor(...e3) {
+ super(...e3), this.input = this.input.replace(/^data:([^;]+);base64,/gim, ""), this.size = this.input.length / 4 * 3, this.input.endsWith("==") ? this.size -= 2 : this.input.endsWith("=") && (this.size -= 1);
+ }
+ async _readChunk(e3, t2) {
+ let i3, n3, r2 = this.input;
+ void 0 === e3 ? (e3 = 0, i3 = 0, n3 = 0) : (i3 = 4 * Math.floor(e3 / 3), n3 = e3 - i3 / 4 * 3), void 0 === t2 && (t2 = this.size);
+ let o2 = e3 + t2, l2 = i3 + 4 * Math.ceil(o2 / 3);
+ r2 = r2.slice(i3, l2);
+ let h2 = Math.min(t2, this.size - e3);
+ if (a) {
+ let t3 = s.from(r2, "base64").slice(n3, n3 + h2);
+ return this.set(t3, e3, true);
+ }
+ {
+ let t3 = this.subarray(e3, h2, true), i4 = atob(r2), s2 = t3.toUint8();
+ for (let e4 = 0; e4 < h2; e4++)
+ s2[e4] = i4.charCodeAt(n3 + e4);
+ return t3;
+ }
+ }
+ });
+ var ot = class extends se {
+ static canHandle(e3, t2) {
+ return 18761 === t2 || 19789 === t2;
+ }
+ extendOptions(e3) {
+ let { ifd0: t2, xmp: i3, iptc: n3, icc: s2 } = e3;
+ i3.enabled && t2.deps.add(700), n3.enabled && t2.deps.add(33723), s2.enabled && t2.deps.add(34675), t2.finalizeFilters();
+ }
+ async parse() {
+ let { tiff: e3, xmp: t2, iptc: i3, icc: n3 } = this.options;
+ if (e3.enabled || t2.enabled || i3.enabled || n3.enabled) {
+ let e4 = Math.max(S(this.options), this.options.chunkSize);
+ await this.file.ensureChunk(0, e4), this.createParser("tiff", this.file), this.parsers.tiff.parseHeader(), await this.parsers.tiff.parseIfd0Block(), this.adaptTiffPropAsSegment("xmp"), this.adaptTiffPropAsSegment("iptc"), this.adaptTiffPropAsSegment("icc");
+ }
+ }
+ adaptTiffPropAsSegment(e3) {
+ if (this.parsers.tiff[e3]) {
+ let t2 = this.parsers.tiff[e3];
+ this.injectSegment(e3, t2);
+ }
+ }
+ };
+ c(ot, "type", "tiff"), w.set("tiff", ot);
+ var lt = l("zlib");
+ var ht = ["ihdr", "iccp", "text", "itxt", "exif"];
+ var ut = class extends se {
+ constructor(...e3) {
+ super(...e3), c(this, "catchError", (e4) => this.errors.push(e4)), c(this, "metaChunks", []), c(this, "unknownChunks", []);
+ }
+ static canHandle(e3, t2) {
+ return 35152 === t2 && 2303741511 === e3.getUint32(0) && 218765834 === e3.getUint32(4);
+ }
+ async parse() {
+ let { file: e3 } = this;
+ await this.findPngChunksInRange("\x89PNG\r\n\1a\n".length, e3.byteLength), await this.readSegments(this.metaChunks), this.findIhdr(), this.parseTextChunks(), await this.findExif().catch(this.catchError), await this.findXmp().catch(this.catchError), await this.findIcc().catch(this.catchError);
+ }
+ async findPngChunksInRange(e3, t2) {
+ let { file: i3 } = this;
+ for (; e3 < t2; ) {
+ let t3 = i3.getUint32(e3), n3 = i3.getUint32(e3 + 4), s2 = i3.getString(e3 + 4, 4).toLowerCase(), r2 = t3 + 4 + 4 + 4, a2 = { type: s2, offset: e3, length: r2, start: e3 + 4 + 4, size: t3, marker: n3 };
+ ht.includes(s2) ? this.metaChunks.push(a2) : this.unknownChunks.push(a2), e3 += r2;
+ }
+ }
+ parseTextChunks() {
+ let e3 = this.metaChunks.filter((e4) => "text" === e4.type);
+ for (let t2 of e3) {
+ let [e4, i3] = this.file.getString(t2.start, t2.size).split("\0");
+ this.injectKeyValToIhdr(e4, i3);
+ }
+ }
+ injectKeyValToIhdr(e3, t2) {
+ let i3 = this.parsers.ihdr;
+ i3 && i3.raw.set(e3, t2);
+ }
+ findIhdr() {
+ let e3 = this.metaChunks.find((e4) => "ihdr" === e4.type);
+ e3 && false !== this.options.ihdr.enabled && this.createParser("ihdr", e3.chunk);
+ }
+ async findExif() {
+ let e3 = this.metaChunks.find((e4) => "exif" === e4.type);
+ e3 && this.injectSegment("tiff", e3.chunk);
+ }
+ async findXmp() {
+ let e3 = this.metaChunks.filter((e4) => "itxt" === e4.type);
+ for (let t2 of e3) {
+ "XML:com.adobe.xmp" === t2.chunk.getString(0, "XML:com.adobe.xmp".length) && this.injectSegment("xmp", t2.chunk);
+ }
+ }
+ async findIcc() {
+ let e3 = this.metaChunks.find((e4) => "iccp" === e4.type);
+ if (!e3)
+ return;
+ let { chunk: t2 } = e3, i3 = t2.getUint8Array(0, 81), s2 = 0;
+ for (; s2 < 80 && 0 !== i3[s2]; )
+ s2++;
+ let r2 = s2 + 2, a2 = t2.getString(0, s2);
+ if (this.injectKeyValToIhdr("ProfileName", a2), n2) {
+ let e4 = await lt, i4 = t2.getUint8Array(r2);
+ i4 = e4.inflateSync(i4), this.injectSegment("icc", i4);
+ }
+ }
+ };
+ c(ut, "type", "png"), w.set("png", ut), U(E, "interop", [[1, "InteropIndex"], [2, "InteropVersion"], [4096, "RelatedImageFileFormat"], [4097, "RelatedImageWidth"], [4098, "RelatedImageHeight"]]), F(E, "ifd0", [[11, "ProcessingSoftware"], [254, "SubfileType"], [255, "OldSubfileType"], [263, "Thresholding"], [264, "CellWidth"], [265, "CellLength"], [266, "FillOrder"], [269, "DocumentName"], [280, "MinSampleValue"], [281, "MaxSampleValue"], [285, "PageName"], [286, "XPosition"], [287, "YPosition"], [290, "GrayResponseUnit"], [297, "PageNumber"], [321, "HalftoneHints"], [322, "TileWidth"], [323, "TileLength"], [332, "InkSet"], [337, "TargetPrinter"], [18246, "Rating"], [18249, "RatingPercent"], [33550, "PixelScale"], [34264, "ModelTransform"], [34377, "PhotoshopSettings"], [50706, "DNGVersion"], [50707, "DNGBackwardVersion"], [50708, "UniqueCameraModel"], [50709, "LocalizedCameraModel"], [50736, "DNGLensInfo"], [50739, "ShadowScale"], [50740, "DNGPrivateData"], [33920, "IntergraphMatrix"], [33922, "ModelTiePoint"], [34118, "SEMInfo"], [34735, "GeoTiffDirectory"], [34736, "GeoTiffDoubleParams"], [34737, "GeoTiffAsciiParams"], [50341, "PrintIM"], [50721, "ColorMatrix1"], [50722, "ColorMatrix2"], [50723, "CameraCalibration1"], [50724, "CameraCalibration2"], [50725, "ReductionMatrix1"], [50726, "ReductionMatrix2"], [50727, "AnalogBalance"], [50728, "AsShotNeutral"], [50729, "AsShotWhiteXY"], [50730, "BaselineExposure"], [50731, "BaselineNoise"], [50732, "BaselineSharpness"], [50734, "LinearResponseLimit"], [50735, "CameraSerialNumber"], [50741, "MakerNoteSafety"], [50778, "CalibrationIlluminant1"], [50779, "CalibrationIlluminant2"], [50781, "RawDataUniqueID"], [50827, "OriginalRawFileName"], [50828, "OriginalRawFileData"], [50831, "AsShotICCProfile"], [50832, "AsShotPreProfileMatrix"], [50833, "CurrentICCProfile"], [50834, "CurrentPreProfileMatrix"], [50879, "ColorimetricReference"], [50885, "SRawType"], [50898, "PanasonicTitle"], [50899, "PanasonicTitle2"], [50931, "CameraCalibrationSig"], [50932, "ProfileCalibrationSig"], [50933, "ProfileIFD"], [50934, "AsShotProfileName"], [50936, "ProfileName"], [50937, "ProfileHueSatMapDims"], [50938, "ProfileHueSatMapData1"], [50939, "ProfileHueSatMapData2"], [50940, "ProfileToneCurve"], [50941, "ProfileEmbedPolicy"], [50942, "ProfileCopyright"], [50964, "ForwardMatrix1"], [50965, "ForwardMatrix2"], [50966, "PreviewApplicationName"], [50967, "PreviewApplicationVersion"], [50968, "PreviewSettingsName"], [50969, "PreviewSettingsDigest"], [50970, "PreviewColorSpace"], [50971, "PreviewDateTime"], [50972, "RawImageDigest"], [50973, "OriginalRawFileDigest"], [50981, "ProfileLookTableDims"], [50982, "ProfileLookTableData"], [51043, "TimeCodes"], [51044, "FrameRate"], [51058, "TStop"], [51081, "ReelName"], [51089, "OriginalDefaultFinalSize"], [51090, "OriginalBestQualitySize"], [51091, "OriginalDefaultCropSize"], [51105, "CameraLabel"], [51107, "ProfileHueSatMapEncoding"], [51108, "ProfileLookTableEncoding"], [51109, "BaselineExposureOffset"], [51110, "DefaultBlackRender"], [51111, "NewRawImageDigest"], [51112, "RawToPreviewGain"]]);
+ var ct = [[273, "StripOffsets"], [279, "StripByteCounts"], [288, "FreeOffsets"], [289, "FreeByteCounts"], [291, "GrayResponseCurve"], [292, "T4Options"], [293, "T6Options"], [300, "ColorResponseUnit"], [320, "ColorMap"], [324, "TileOffsets"], [325, "TileByteCounts"], [326, "BadFaxLines"], [327, "CleanFaxData"], [328, "ConsecutiveBadFaxLines"], [330, "SubIFD"], [333, "InkNames"], [334, "NumberofInks"], [336, "DotRange"], [338, "ExtraSamples"], [339, "SampleFormat"], [340, "SMinSampleValue"], [341, "SMaxSampleValue"], [342, "TransferRange"], [343, "ClipPath"], [344, "XClipPathUnits"], [345, "YClipPathUnits"], [346, "Indexed"], [347, "JPEGTables"], [351, "OPIProxy"], [400, "GlobalParametersIFD"], [401, "ProfileType"], [402, "FaxProfile"], [403, "CodingMethods"], [404, "VersionYear"], [405, "ModeNumber"], [433, "Decode"], [434, "DefaultImageColor"], [435, "T82Options"], [437, "JPEGTables"], [512, "JPEGProc"], [515, "JPEGRestartInterval"], [517, "JPEGLosslessPredictors"], [518, "JPEGPointTransforms"], [519, "JPEGQTables"], [520, "JPEGDCTables"], [521, "JPEGACTables"], [559, "StripRowCounts"], [999, "USPTOMiscellaneous"], [18247, "XP_DIP_XML"], [18248, "StitchInfo"], [28672, "SonyRawFileType"], [28688, "SonyToneCurve"], [28721, "VignettingCorrection"], [28722, "VignettingCorrParams"], [28724, "ChromaticAberrationCorrection"], [28725, "ChromaticAberrationCorrParams"], [28726, "DistortionCorrection"], [28727, "DistortionCorrParams"], [29895, "SonyCropTopLeft"], [29896, "SonyCropSize"], [32781, "ImageID"], [32931, "WangTag1"], [32932, "WangAnnotation"], [32933, "WangTag3"], [32934, "WangTag4"], [32953, "ImageReferencePoints"], [32954, "RegionXformTackPoint"], [32955, "WarpQuadrilateral"], [32956, "AffineTransformMat"], [32995, "Matteing"], [32996, "DataType"], [32997, "ImageDepth"], [32998, "TileDepth"], [33300, "ImageFullWidth"], [33301, "ImageFullHeight"], [33302, "TextureFormat"], [33303, "WrapModes"], [33304, "FovCot"], [33305, "MatrixWorldToScreen"], [33306, "MatrixWorldToCamera"], [33405, "Model2"], [33421, "CFARepeatPatternDim"], [33422, "CFAPattern2"], [33423, "BatteryLevel"], [33424, "KodakIFD"], [33445, "MDFileTag"], [33446, "MDScalePixel"], [33447, "MDColorTable"], [33448, "MDLabName"], [33449, "MDSampleInfo"], [33450, "MDPrepDate"], [33451, "MDPrepTime"], [33452, "MDFileUnits"], [33589, "AdventScale"], [33590, "AdventRevision"], [33628, "UIC1Tag"], [33629, "UIC2Tag"], [33630, "UIC3Tag"], [33631, "UIC4Tag"], [33918, "IntergraphPacketData"], [33919, "IntergraphFlagRegisters"], [33921, "INGRReserved"], [34016, "Site"], [34017, "ColorSequence"], [34018, "IT8Header"], [34019, "RasterPadding"], [34020, "BitsPerRunLength"], [34021, "BitsPerExtendedRunLength"], [34022, "ColorTable"], [34023, "ImageColorIndicator"], [34024, "BackgroundColorIndicator"], [34025, "ImageColorValue"], [34026, "BackgroundColorValue"], [34027, "PixelIntensityRange"], [34028, "TransparencyIndicator"], [34029, "ColorCharacterization"], [34030, "HCUsage"], [34031, "TrapIndicator"], [34032, "CMYKEquivalent"], [34152, "AFCP_IPTC"], [34232, "PixelMagicJBIGOptions"], [34263, "JPLCartoIFD"], [34306, "WB_GRGBLevels"], [34310, "LeafData"], [34687, "TIFF_FXExtensions"], [34688, "MultiProfiles"], [34689, "SharedData"], [34690, "T88Options"], [34732, "ImageLayer"], [34750, "JBIGOptions"], [34856, "Opto-ElectricConvFactor"], [34857, "Interlace"], [34908, "FaxRecvParams"], [34909, "FaxSubAddress"], [34910, "FaxRecvTime"], [34929, "FedexEDR"], [34954, "LeafSubIFD"], [37387, "FlashEnergy"], [37388, "SpatialFrequencyResponse"], [37389, "Noise"], [37390, "FocalPlaneXResolution"], [37391, "FocalPlaneYResolution"], [37392, "FocalPlaneResolutionUnit"], [37397, "ExposureIndex"], [37398, "TIFF-EPStandardID"], [37399, "SensingMethod"], [37434, "CIP3DataFile"], [37435, "CIP3Sheet"], [37436, "CIP3Side"], [37439, "StoNits"], [37679, "MSDocumentText"], [37680, "MSPropertySetStorage"], [37681, "MSDocumentTextPosition"], [37724, "ImageSourceData"], [40965, "InteropIFD"], [40976, "SamsungRawPointersOffset"], [40977, "SamsungRawPointersLength"], [41217, "SamsungRawByteOrder"], [41218, "SamsungRawUnknown"], [41484, "SpatialFrequencyResponse"], [41485, "Noise"], [41489, "ImageNumber"], [41490, "SecurityClassification"], [41491, "ImageHistory"], [41494, "TIFF-EPStandardID"], [41995, "DeviceSettingDescription"], [42112, "GDALMetadata"], [42113, "GDALNoData"], [44992, "ExpandSoftware"], [44993, "ExpandLens"], [44994, "ExpandFilm"], [44995, "ExpandFilterLens"], [44996, "ExpandScanner"], [44997, "ExpandFlashLamp"], [46275, "HasselbladRawImage"], [48129, "PixelFormat"], [48130, "Transformation"], [48131, "Uncompressed"], [48132, "ImageType"], [48256, "ImageWidth"], [48257, "ImageHeight"], [48258, "WidthResolution"], [48259, "HeightResolution"], [48320, "ImageOffset"], [48321, "ImageByteCount"], [48322, "AlphaOffset"], [48323, "AlphaByteCount"], [48324, "ImageDataDiscard"], [48325, "AlphaDataDiscard"], [50215, "OceScanjobDesc"], [50216, "OceApplicationSelector"], [50217, "OceIDNumber"], [50218, "OceImageLogic"], [50255, "Annotations"], [50459, "HasselbladExif"], [50547, "OriginalFileName"], [50560, "USPTOOriginalContentType"], [50656, "CR2CFAPattern"], [50710, "CFAPlaneColor"], [50711, "CFALayout"], [50712, "LinearizationTable"], [50713, "BlackLevelRepeatDim"], [50714, "BlackLevel"], [50715, "BlackLevelDeltaH"], [50716, "BlackLevelDeltaV"], [50717, "WhiteLevel"], [50718, "DefaultScale"], [50719, "DefaultCropOrigin"], [50720, "DefaultCropSize"], [50733, "BayerGreenSplit"], [50737, "ChromaBlurRadius"], [50738, "AntiAliasStrength"], [50752, "RawImageSegmentation"], [50780, "BestQualityScale"], [50784, "AliasLayerMetadata"], [50829, "ActiveArea"], [50830, "MaskedAreas"], [50935, "NoiseReductionApplied"], [50974, "SubTileBlockSize"], [50975, "RowInterleaveFactor"], [51008, "OpcodeList1"], [51009, "OpcodeList2"], [51022, "OpcodeList3"], [51041, "NoiseProfile"], [51114, "CacheVersion"], [51125, "DefaultUserCrop"], [51157, "NikonNEFInfo"], [65024, "KdcIFD"]];
+ F(E, "ifd0", ct), F(E, "exif", ct), U(B, "gps", [[23, { M: "Magnetic North", T: "True North" }], [25, { K: "Kilometers", M: "Miles", N: "Nautical Miles" }]]);
+ var ft = class extends re2 {
+ static canHandle(e3, t2) {
+ return 224 === e3.getUint8(t2 + 1) && 1246120262 === e3.getUint32(t2 + 4) && 0 === e3.getUint8(t2 + 8);
+ }
+ parse() {
+ return this.parseTags(), this.translate(), this.output;
+ }
+ parseTags() {
+ this.raw = /* @__PURE__ */ new Map([[0, this.chunk.getUint16(0)], [2, this.chunk.getUint8(2)], [3, this.chunk.getUint16(3)], [5, this.chunk.getUint16(5)], [7, this.chunk.getUint8(7)], [8, this.chunk.getUint8(8)]]);
+ }
+ };
+ c(ft, "type", "jfif"), c(ft, "headerLength", 9), T.set("jfif", ft), U(E, "jfif", [[0, "JFIFVersion"], [2, "ResolutionUnit"], [3, "XResolution"], [5, "YResolution"], [7, "ThumbnailWidth"], [8, "ThumbnailHeight"]]);
+ var dt = class extends re2 {
+ parse() {
+ return this.parseTags(), this.translate(), this.output;
+ }
+ parseTags() {
+ this.raw = new Map([[0, this.chunk.getUint32(0)], [4, this.chunk.getUint32(4)], [8, this.chunk.getUint8(8)], [9, this.chunk.getUint8(9)], [10, this.chunk.getUint8(10)], [11, this.chunk.getUint8(11)], [12, this.chunk.getUint8(12)], ...Array.from(this.raw)]);
+ }
+ };
+ c(dt, "type", "ihdr"), T.set("ihdr", dt), U(E, "ihdr", [[0, "ImageWidth"], [4, "ImageHeight"], [8, "BitDepth"], [9, "ColorType"], [10, "Compression"], [11, "Filter"], [12, "Interlace"]]), U(B, "ihdr", [[9, { 0: "Grayscale", 2: "RGB", 3: "Palette", 4: "Grayscale with Alpha", 6: "RGB with Alpha", DEFAULT: "Unknown" }], [10, { 0: "Deflate/Inflate", DEFAULT: "Unknown" }], [11, { 0: "Adaptive", DEFAULT: "Unknown" }], [12, { 0: "Noninterlaced", 1: "Adam7 Interlace", DEFAULT: "Unknown" }]]);
+ var pt = class extends re2 {
+ static canHandle(e3, t2) {
+ return 226 === e3.getUint8(t2 + 1) && 1229144927 === e3.getUint32(t2 + 4);
+ }
+ static findPosition(e3, t2) {
+ let i3 = super.findPosition(e3, t2);
+ return i3.chunkNumber = e3.getUint8(t2 + 16), i3.chunkCount = e3.getUint8(t2 + 17), i3.multiSegment = i3.chunkCount > 1, i3;
+ }
+ static handleMultiSegments(e3) {
+ return function(e4) {
+ let t2 = function(e6) {
+ let t3 = e6[0].constructor, i3 = 0;
+ for (let t4 of e6)
+ i3 += t4.length;
+ let n3 = new t3(i3), s2 = 0;
+ for (let t4 of e6)
+ n3.set(t4, s2), s2 += t4.length;
+ return n3;
+ }(e4.map((e6) => e6.chunk.toUint8()));
+ return new I(t2);
+ }(e3);
+ }
+ parse() {
+ return this.raw = /* @__PURE__ */ new Map(), this.parseHeader(), this.parseTags(), this.translate(), this.output;
+ }
+ parseHeader() {
+ let { raw: e3 } = this;
+ this.chunk.byteLength < 84 && g2("ICC header is too short");
+ for (let [t2, i3] of Object.entries(gt)) {
+ t2 = parseInt(t2, 10);
+ let n3 = i3(this.chunk, t2);
+ "\0\0\0\0" !== n3 && e3.set(t2, n3);
+ }
+ }
+ parseTags() {
+ let e3, t2, i3, n3, s2, { raw: r2 } = this, a2 = this.chunk.getUint32(128), o2 = 132, l2 = this.chunk.byteLength;
+ for (; a2--; ) {
+ if (e3 = this.chunk.getString(o2, 4), t2 = this.chunk.getUint32(o2 + 4), i3 = this.chunk.getUint32(o2 + 8), n3 = this.chunk.getString(t2, 4), t2 + i3 > l2)
+ return void console.warn("reached the end of the first ICC chunk. Enable options.tiff.multiSegment to read all ICC segments.");
+ s2 = this.parseTag(n3, t2, i3), void 0 !== s2 && "\0\0\0\0" !== s2 && r2.set(e3, s2), o2 += 12;
+ }
+ }
+ parseTag(e3, t2, i3) {
+ switch (e3) {
+ case "desc":
+ return this.parseDesc(t2);
+ case "mluc":
+ return this.parseMluc(t2);
+ case "text":
+ return this.parseText(t2, i3);
+ case "sig ":
+ return this.parseSig(t2);
+ }
+ if (!(t2 + i3 > this.chunk.byteLength))
+ return this.chunk.getUint8Array(t2, i3);
+ }
+ parseDesc(e3) {
+ let t2 = this.chunk.getUint32(e3 + 8) - 1;
+ return m(this.chunk.getString(e3 + 12, t2));
+ }
+ parseText(e3, t2) {
+ return m(this.chunk.getString(e3 + 8, t2 - 8));
+ }
+ parseSig(e3) {
+ return m(this.chunk.getString(e3 + 8, 4));
+ }
+ parseMluc(e3) {
+ let { chunk: t2 } = this, i3 = t2.getUint32(e3 + 8), n3 = t2.getUint32(e3 + 12), s2 = e3 + 16, r2 = [];
+ for (let a2 = 0; a2 < i3; a2++) {
+ let i4 = t2.getString(s2 + 0, 2), a3 = t2.getString(s2 + 2, 2), o2 = t2.getUint32(s2 + 4), l2 = t2.getUint32(s2 + 8) + e3, h2 = m(t2.getUnicodeString(l2, o2));
+ r2.push({ lang: i4, country: a3, text: h2 }), s2 += n3;
+ }
+ return 1 === i3 ? r2[0].text : r2;
+ }
+ translateValue(e3, t2) {
+ return "string" == typeof e3 ? t2[e3] || t2[e3.toLowerCase()] || e3 : t2[e3] || e3;
+ }
+ };
+ c(pt, "type", "icc"), c(pt, "multiSegment", true), c(pt, "headerLength", 18);
+ var gt = { 4: mt, 8: function(e3, t2) {
+ return [e3.getUint8(t2), e3.getUint8(t2 + 1) >> 4, e3.getUint8(t2 + 1) % 16].map((e4) => e4.toString(10)).join(".");
+ }, 12: mt, 16: mt, 20: mt, 24: function(e3, t2) {
+ const i3 = e3.getUint16(t2), n3 = e3.getUint16(t2 + 2) - 1, s2 = e3.getUint16(t2 + 4), r2 = e3.getUint16(t2 + 6), a2 = e3.getUint16(t2 + 8), o2 = e3.getUint16(t2 + 10);
+ return new Date(Date.UTC(i3, n3, s2, r2, a2, o2));
+ }, 36: mt, 40: mt, 48: mt, 52: mt, 64: (e3, t2) => e3.getUint32(t2), 80: mt };
+ function mt(e3, t2) {
+ return m(e3.getString(t2, 4));
+ }
+ T.set("icc", pt), U(E, "icc", [[4, "ProfileCMMType"], [8, "ProfileVersion"], [12, "ProfileClass"], [16, "ColorSpaceData"], [20, "ProfileConnectionSpace"], [24, "ProfileDateTime"], [36, "ProfileFileSignature"], [40, "PrimaryPlatform"], [44, "CMMFlags"], [48, "DeviceManufacturer"], [52, "DeviceModel"], [56, "DeviceAttributes"], [64, "RenderingIntent"], [68, "ConnectionSpaceIlluminant"], [80, "ProfileCreator"], [84, "ProfileID"], ["Header", "ProfileHeader"], ["MS00", "WCSProfiles"], ["bTRC", "BlueTRC"], ["bXYZ", "BlueMatrixColumn"], ["bfd", "UCRBG"], ["bkpt", "MediaBlackPoint"], ["calt", "CalibrationDateTime"], ["chad", "ChromaticAdaptation"], ["chrm", "Chromaticity"], ["ciis", "ColorimetricIntentImageState"], ["clot", "ColorantTableOut"], ["clro", "ColorantOrder"], ["clrt", "ColorantTable"], ["cprt", "ProfileCopyright"], ["crdi", "CRDInfo"], ["desc", "ProfileDescription"], ["devs", "DeviceSettings"], ["dmdd", "DeviceModelDesc"], ["dmnd", "DeviceMfgDesc"], ["dscm", "ProfileDescriptionML"], ["fpce", "FocalPlaneColorimetryEstimates"], ["gTRC", "GreenTRC"], ["gXYZ", "GreenMatrixColumn"], ["gamt", "Gamut"], ["kTRC", "GrayTRC"], ["lumi", "Luminance"], ["meas", "Measurement"], ["meta", "Metadata"], ["mmod", "MakeAndModel"], ["ncl2", "NamedColor2"], ["ncol", "NamedColor"], ["ndin", "NativeDisplayInfo"], ["pre0", "Preview0"], ["pre1", "Preview1"], ["pre2", "Preview2"], ["ps2i", "PS2RenderingIntent"], ["ps2s", "PostScript2CSA"], ["psd0", "PostScript2CRD0"], ["psd1", "PostScript2CRD1"], ["psd2", "PostScript2CRD2"], ["psd3", "PostScript2CRD3"], ["pseq", "ProfileSequenceDesc"], ["psid", "ProfileSequenceIdentifier"], ["psvm", "PS2CRDVMSize"], ["rTRC", "RedTRC"], ["rXYZ", "RedMatrixColumn"], ["resp", "OutputResponse"], ["rhoc", "ReflectionHardcopyOrigColorimetry"], ["rig0", "PerceptualRenderingIntentGamut"], ["rig2", "SaturationRenderingIntentGamut"], ["rpoc", "ReflectionPrintOutputColorimetry"], ["sape", "SceneAppearanceEstimates"], ["scoe", "SceneColorimetryEstimates"], ["scrd", "ScreeningDesc"], ["scrn", "Screening"], ["targ", "CharTarget"], ["tech", "Technology"], ["vcgt", "VideoCardGamma"], ["view", "ViewingConditions"], ["vued", "ViewingCondDesc"], ["wtpt", "MediaWhitePoint"]]);
+ var St = { "4d2p": "Erdt Systems", AAMA: "Aamazing Technologies", ACER: "Acer", ACLT: "Acolyte Color Research", ACTI: "Actix Sytems", ADAR: "Adara Technology", ADBE: "Adobe", ADI: "ADI Systems", AGFA: "Agfa Graphics", ALMD: "Alps Electric", ALPS: "Alps Electric", ALWN: "Alwan Color Expertise", AMTI: "Amiable Technologies", AOC: "AOC International", APAG: "Apago", APPL: "Apple Computer", AST: "AST", "AT&T": "AT&T", BAEL: "BARBIERI electronic", BRCO: "Barco NV", BRKP: "Breakpoint", BROT: "Brother", BULL: "Bull", BUS: "Bus Computer Systems", "C-IT": "C-Itoh", CAMR: "Intel", CANO: "Canon", CARR: "Carroll Touch", CASI: "Casio", CBUS: "Colorbus PL", CEL: "Crossfield", CELx: "Crossfield", CGS: "CGS Publishing Technologies International", CHM: "Rochester Robotics", CIGL: "Colour Imaging Group, London", CITI: "Citizen", CL00: "Candela", CLIQ: "Color IQ", CMCO: "Chromaco", CMiX: "CHROMiX", COLO: "Colorgraphic Communications", COMP: "Compaq", COMp: "Compeq/Focus Technology", CONR: "Conrac Display Products", CORD: "Cordata Technologies", CPQ: "Compaq", CPRO: "ColorPro", CRN: "Cornerstone", CTX: "CTX International", CVIS: "ColorVision", CWC: "Fujitsu Laboratories", DARI: "Darius Technology", DATA: "Dataproducts", DCP: "Dry Creek Photo", DCRC: "Digital Contents Resource Center, Chung-Ang University", DELL: "Dell Computer", DIC: "Dainippon Ink and Chemicals", DICO: "Diconix", DIGI: "Digital", "DL&C": "Digital Light & Color", DPLG: "Doppelganger", DS: "Dainippon Screen", DSOL: "DOOSOL", DUPN: "DuPont", EPSO: "Epson", ESKO: "Esko-Graphics", ETRI: "Electronics and Telecommunications Research Institute", EVER: "Everex Systems", EXAC: "ExactCODE", Eizo: "Eizo", FALC: "Falco Data Products", FF: "Fuji Photo Film", FFEI: "FujiFilm Electronic Imaging", FNRD: "Fnord Software", FORA: "Fora", FORE: "Forefront Technology", FP: "Fujitsu", FPA: "WayTech Development", FUJI: "Fujitsu", FX: "Fuji Xerox", GCC: "GCC Technologies", GGSL: "Global Graphics Software", GMB: "Gretagmacbeth", GMG: "GMG", GOLD: "GoldStar Technology", GOOG: "Google", GPRT: "Giantprint", GTMB: "Gretagmacbeth", GVC: "WayTech Development", GW2K: "Sony", HCI: "HCI", HDM: "Heidelberger Druckmaschinen", HERM: "Hermes", HITA: "Hitachi America", HP: "Hewlett-Packard", HTC: "Hitachi", HiTi: "HiTi Digital", IBM: "IBM", IDNT: "Scitex", IEC: "Hewlett-Packard", IIYA: "Iiyama North America", IKEG: "Ikegami Electronics", IMAG: "Image Systems", IMI: "Ingram Micro", INTC: "Intel", INTL: "N/A (INTL)", INTR: "Intra Electronics", IOCO: "Iocomm International Technology", IPS: "InfoPrint Solutions Company", IRIS: "Scitex", ISL: "Ichikawa Soft Laboratory", ITNL: "N/A (ITNL)", IVM: "IVM", IWAT: "Iwatsu Electric", Idnt: "Scitex", Inca: "Inca Digital Printers", Iris: "Scitex", JPEG: "Joint Photographic Experts Group", JSFT: "Jetsoft Development", JVC: "JVC Information Products", KART: "Scitex", KFC: "KFC Computek Components", KLH: "KLH Computers", KMHD: "Konica Minolta", KNCA: "Konica", KODA: "Kodak", KYOC: "Kyocera", Kart: "Scitex", LCAG: "Leica", LCCD: "Leeds Colour", LDAK: "Left Dakota", LEAD: "Leading Technology", LEXM: "Lexmark International", LINK: "Link Computer", LINO: "Linotronic", LITE: "Lite-On", Leaf: "Leaf", Lino: "Linotronic", MAGC: "Mag Computronic", MAGI: "MAG Innovision", MANN: "Mannesmann", MICN: "Micron Technology", MICR: "Microtek", MICV: "Microvitec", MINO: "Minolta", MITS: "Mitsubishi Electronics America", MITs: "Mitsuba", MNLT: "Minolta", MODG: "Modgraph", MONI: "Monitronix", MONS: "Monaco Systems", MORS: "Morse Technology", MOTI: "Motive Systems", MSFT: "Microsoft", MUTO: "MUTOH INDUSTRIES", Mits: "Mitsubishi Electric", NANA: "NANAO", NEC: "NEC", NEXP: "NexPress Solutions", NISS: "Nissei Sangyo America", NKON: "Nikon", NONE: "none", OCE: "Oce Technologies", OCEC: "OceColor", OKI: "Oki", OKID: "Okidata", OKIP: "Okidata", OLIV: "Olivetti", OLYM: "Olympus", ONYX: "Onyx Graphics", OPTI: "Optiquest", PACK: "Packard Bell", PANA: "Matsushita Electric Industrial", PANT: "Pantone", PBN: "Packard Bell", PFU: "PFU", PHIL: "Philips Consumer Electronics", PNTX: "HOYA", POne: "Phase One A/S", PREM: "Premier Computer Innovations", PRIN: "Princeton Graphic Systems", PRIP: "Princeton Publishing Labs", QLUX: "Hong Kong", QMS: "QMS", QPCD: "QPcard AB", QUAD: "QuadLaser", QUME: "Qume", RADI: "Radius", RDDx: "Integrated Color Solutions", RDG: "Roland DG", REDM: "REDMS Group", RELI: "Relisys", RGMS: "Rolf Gierling Multitools", RICO: "Ricoh", RNLD: "Edmund Ronald", ROYA: "Royal", RPC: "Ricoh Printing Systems", RTL: "Royal Information Electronics", SAMP: "Sampo", SAMS: "Samsung", SANT: "Jaime Santana Pomares", SCIT: "Scitex", SCRN: "Dainippon Screen", SDP: "Scitex", SEC: "Samsung", SEIK: "Seiko Instruments", SEIk: "Seikosha", SGUY: "ScanGuy.com", SHAR: "Sharp Laboratories", SICC: "International Color Consortium", SONY: "Sony", SPCL: "SpectraCal", STAR: "Star", STC: "Sampo Technology", Scit: "Scitex", Sdp: "Scitex", Sony: "Sony", TALO: "Talon Technology", TAND: "Tandy", TATU: "Tatung", TAXA: "TAXAN America", TDS: "Tokyo Denshi Sekei", TECO: "TECO Information Systems", TEGR: "Tegra", TEKT: "Tektronix", TI: "Texas Instruments", TMKR: "TypeMaker", TOSB: "Toshiba", TOSH: "Toshiba", TOTK: "TOTOKU ELECTRIC", TRIU: "Triumph", TSBT: "Toshiba", TTX: "TTX Computer Products", TVM: "TVM Professional Monitor", TW: "TW Casper", ULSX: "Ulead Systems", UNIS: "Unisys", UTZF: "Utz Fehlau & Sohn", VARI: "Varityper", VIEW: "Viewsonic", VISL: "Visual communication", VIVO: "Vivo Mobile Communication", WANG: "Wang", WLBR: "Wilbur Imaging", WTG2: "Ware To Go", WYSE: "WYSE Technology", XERX: "Xerox", XRIT: "X-Rite", ZRAN: "Zoran", Zebr: "Zebra Technologies", appl: "Apple Computer", bICC: "basICColor", berg: "bergdesign", ceyd: "Integrated Color Solutions", clsp: "MacDermid ColorSpan", ds: "Dainippon Screen", dupn: "DuPont", ffei: "FujiFilm Electronic Imaging", flux: "FluxData", iris: "Scitex", kart: "Scitex", lcms: "Little CMS", lino: "Linotronic", none: "none", ob4d: "Erdt Systems", obic: "Medigraph", quby: "Qubyx Sarl", scit: "Scitex", scrn: "Dainippon Screen", sdp: "Scitex", siwi: "SIWI GRAFIKA", yxym: "YxyMaster" };
+ var Ct = { scnr: "Scanner", mntr: "Monitor", prtr: "Printer", link: "Device Link", abst: "Abstract", spac: "Color Space Conversion Profile", nmcl: "Named Color", cenc: "ColorEncodingSpace profile", mid: "MultiplexIdentification profile", mlnk: "MultiplexLink profile", mvis: "MultiplexVisualization profile", nkpf: "Nikon Input Device Profile (NON-STANDARD!)" };
+ U(B, "icc", [[4, St], [12, Ct], [40, Object.assign({}, St, Ct)], [48, St], [80, St], [64, { 0: "Perceptual", 1: "Relative Colorimetric", 2: "Saturation", 3: "Absolute Colorimetric" }], ["tech", { amd: "Active Matrix Display", crt: "Cathode Ray Tube Display", kpcd: "Photo CD", pmd: "Passive Matrix Display", dcam: "Digital Camera", dcpj: "Digital Cinema Projector", dmpc: "Digital Motion Picture Camera", dsub: "Dye Sublimation Printer", epho: "Electrophotographic Printer", esta: "Electrostatic Printer", flex: "Flexography", fprn: "Film Writer", fscn: "Film Scanner", grav: "Gravure", ijet: "Ink Jet Printer", imgs: "Photo Image Setter", mpfr: "Motion Picture Film Recorder", mpfs: "Motion Picture Film Scanner", offs: "Offset Lithography", pjtv: "Projection Television", rpho: "Photographic Paper Printer", rscn: "Reflective Scanner", silk: "Silkscreen", twax: "Thermal Wax Printer", vidc: "Video Camera", vidm: "Video Monitor" }]]);
+ var yt = class extends re2 {
+ static canHandle(e3, t2, i3) {
+ return 237 === e3.getUint8(t2 + 1) && "Photoshop" === e3.getString(t2 + 4, 9) && void 0 !== this.containsIptc8bim(e3, t2, i3);
+ }
+ static headerLength(e3, t2, i3) {
+ let n3, s2 = this.containsIptc8bim(e3, t2, i3);
+ if (void 0 !== s2)
+ return n3 = e3.getUint8(t2 + s2 + 7), n3 % 2 != 0 && (n3 += 1), 0 === n3 && (n3 = 4), s2 + 8 + n3;
+ }
+ static containsIptc8bim(e3, t2, i3) {
+ for (let n3 = 0; n3 < i3; n3++)
+ if (this.isIptcSegmentHead(e3, t2 + n3))
+ return n3;
+ }
+ static isIptcSegmentHead(e3, t2) {
+ return 56 === e3.getUint8(t2) && 943868237 === e3.getUint32(t2) && 1028 === e3.getUint16(t2 + 4);
+ }
+ parse() {
+ let { raw: e3 } = this, t2 = this.chunk.byteLength - 1, i3 = false;
+ for (let n3 = 0; n3 < t2; n3++)
+ if (28 === this.chunk.getUint8(n3) && 2 === this.chunk.getUint8(n3 + 1)) {
+ i3 = true;
+ let t3 = this.chunk.getUint16(n3 + 3), s2 = this.chunk.getUint8(n3 + 2), r2 = this.chunk.getLatin1String(n3 + 5, t3);
+ e3.set(s2, this.pluralizeValue(e3.get(s2), r2)), n3 += 4 + t3;
+ } else if (i3)
+ break;
+ return this.translate(), this.output;
+ }
+ pluralizeValue(e3, t2) {
+ return void 0 !== e3 ? e3 instanceof Array ? (e3.push(t2), e3) : [e3, t2] : t2;
+ }
+ };
+ c(yt, "type", "iptc"), c(yt, "translateValues", false), c(yt, "reviveValues", false), T.set("iptc", yt), U(E, "iptc", [[0, "ApplicationRecordVersion"], [3, "ObjectTypeReference"], [4, "ObjectAttributeReference"], [5, "ObjectName"], [7, "EditStatus"], [8, "EditorialUpdate"], [10, "Urgency"], [12, "SubjectReference"], [15, "Category"], [20, "SupplementalCategories"], [22, "FixtureIdentifier"], [25, "Keywords"], [26, "ContentLocationCode"], [27, "ContentLocationName"], [30, "ReleaseDate"], [35, "ReleaseTime"], [37, "ExpirationDate"], [38, "ExpirationTime"], [40, "SpecialInstructions"], [42, "ActionAdvised"], [45, "ReferenceService"], [47, "ReferenceDate"], [50, "ReferenceNumber"], [55, "DateCreated"], [60, "TimeCreated"], [62, "DigitalCreationDate"], [63, "DigitalCreationTime"], [65, "OriginatingProgram"], [70, "ProgramVersion"], [75, "ObjectCycle"], [80, "Byline"], [85, "BylineTitle"], [90, "City"], [92, "Sublocation"], [95, "State"], [100, "CountryCode"], [101, "Country"], [103, "OriginalTransmissionReference"], [105, "Headline"], [110, "Credit"], [115, "Source"], [116, "CopyrightNotice"], [118, "Contact"], [120, "Caption"], [121, "LocalCaption"], [122, "Writer"], [125, "RasterizedCaption"], [130, "ImageType"], [131, "ImageOrientation"], [135, "LanguageIdentifier"], [150, "AudioType"], [151, "AudioSamplingRate"], [152, "AudioSamplingResolution"], [153, "AudioDuration"], [154, "AudioOutcue"], [184, "JobID"], [185, "MasterDocumentID"], [186, "ShortDocumentID"], [187, "UniqueDocumentID"], [188, "OwnerID"], [200, "ObjectPreviewFileFormat"], [201, "ObjectPreviewFileVersion"], [202, "ObjectPreviewData"], [221, "Prefs"], [225, "ClassifyState"], [228, "SimilarityIndex"], [230, "DocumentNotes"], [231, "DocumentHistory"], [232, "ExifCameraInfo"], [255, "CatalogSets"]]), U(B, "iptc", [[10, { 0: "0 (reserved)", 1: "1 (most urgent)", 2: "2", 3: "3", 4: "4", 5: "5 (normal urgency)", 6: "6", 7: "7", 8: "8 (least urgent)", 9: "9 (user-defined priority)" }], [75, { a: "Morning", b: "Both Morning and Evening", p: "Evening" }], [131, { L: "Landscape", P: "Portrait", S: "Square" }]]);
+ var full_esm_default = tt;
+
+ // modules/services/plane_photo.js
+ var dispatch6 = dispatch_default("viewerChanged");
+ var _photo;
+ var _wrapper;
+ var imgZoom;
+ var _widthOverflow;
+ function zoomPan(d3_event) {
+ let t2 = d3_event.transform;
+ _photo.call(utilSetTransform, t2.x, t2.y, t2.k);
+ }
+ function zoomBeahvior() {
+ const { width: wrapperWidth, height: wrapperHeight } = _wrapper.node().getBoundingClientRect();
+ const { naturalHeight, naturalWidth } = _photo.node();
+ const intrinsicRatio = naturalWidth / naturalHeight;
+ _widthOverflow = wrapperHeight * intrinsicRatio - wrapperWidth;
+ return zoom_default2().extent([[0, 0], [wrapperWidth, wrapperHeight]]).translateExtent([[0, 0], [wrapperWidth + _widthOverflow, wrapperHeight]]).scaleExtent([1, 15]).on("zoom", zoomPan);
+ }
+ function loadImage(selection2, path) {
+ return new Promise((resolve) => {
+ selection2.attr("src", path);
+ selection2.on("load", () => {
+ resolve(selection2);
+ });
+ });
+ }
+ var plane_photo_default = {
+ init: async function(context, selection2) {
+ this.event = utilRebind(this, dispatch6, "on");
+ _wrapper = selection2.append("div").attr("class", "photo-frame plane-frame").classed("hide", true);
+ _photo = _wrapper.append("img").attr("class", "plane-photo");
+ context.ui().photoviewer.on("resize.plane", () => {
+ imgZoom = zoomBeahvior();
+ _wrapper.call(imgZoom);
+ });
+ await Promise.resolve();
+ return this;
+ },
+ showPhotoFrame: function(context) {
+ const isHidden = context.selectAll(".photo-frame.plane-frame.hide").size();
+ if (isHidden) {
+ context.selectAll(".photo-frame:not(.plane-frame)").classed("hide", true);
+ context.selectAll(".photo-frame.plane-frame").classed("hide", false);
+ }
+ return this;
+ },
+ hidePhotoFrame: function(context) {
+ context.select("photo-frame.plane-frame").classed("hide", false);
+ return this;
+ },
+ selectPhoto: function(data, keepOrientation) {
+ dispatch6.call("viewerChanged");
+ loadImage(_photo, "");
+ loadImage(_photo, data.image_path).then(() => {
+ if (!keepOrientation) {
+ imgZoom = zoomBeahvior();
+ _wrapper.call(imgZoom);
+ _wrapper.call(imgZoom.transform, identity2.translate(-_widthOverflow / 2, 0));
+ }
+ });
+ return this;
+ },
+ getYaw: function() {
+ return 0;
+ }
+ };
+
+ // modules/svg/local_photos.js
+ var _initialized2 = false;
+ var _enabled2 = false;
+ var minViewfieldZoom = 16;
+ function svgLocalPhotos(projection2, context, dispatch14) {
+ const detected = utilDetect();
+ let layer = select_default2(null);
+ let _fileList;
+ let _photos = [];
+ let _idAutoinc = 0;
+ let _photoFrame;
+ function init2() {
+ if (_initialized2)
+ return;
+ _enabled2 = true;
+ function over(d3_event) {
+ d3_event.stopPropagation();
+ d3_event.preventDefault();
+ d3_event.dataTransfer.dropEffect = "copy";
+ }
+ context.container().attr("dropzone", "copy").on("drop.svgLocalPhotos", function(d3_event) {
+ d3_event.stopPropagation();
+ d3_event.preventDefault();
+ if (!detected.filedrop)
+ return;
+ drawPhotos.fileList(d3_event.dataTransfer.files, (loaded) => {
+ if (loaded.length > 0) {
+ drawPhotos.fitZoom(false);
+ }
+ });
+ }).on("dragenter.svgLocalPhotos", over).on("dragexit.svgLocalPhotos", over).on("dragover.svgLocalPhotos", over);
+ _initialized2 = true;
+ }
+ function ensureViewerLoaded(context2) {
+ if (_photoFrame) {
+ return Promise.resolve(_photoFrame);
+ }
+ const viewer = context2.container().select(".photoviewer").selectAll(".local-photos-wrapper").data([0]);
+ const viewerEnter = viewer.enter().append("div").attr("class", "photo-wrapper local-photos-wrapper").classed("hide", true);
+ viewerEnter.append("div").attr("class", "photo-attribution fillD");
+ return plane_photo_default.init(context2, viewerEnter).then((planePhotoFrame) => {
+ _photoFrame = planePhotoFrame;
+ });
+ }
+ function click(d3_event, image, zoomTo) {
+ ensureViewerLoaded(context).then(() => {
+ const viewer = context.container().select(".photoviewer").datum(image).classed("hide", false);
+ const viewerWrap = viewer.select(".local-photos-wrapper").classed("hide", false);
+ const attribution = viewerWrap.selectAll(".photo-attribution").text("");
+ if (image.name) {
+ attribution.append("span").classed("filename", true).text(image.name);
+ }
+ _photoFrame.selectPhoto({ image_path: "" });
+ image.getSrc().then((src) => {
+ _photoFrame.selectPhoto({ image_path: src }).showPhotoFrame(viewerWrap);
+ setStyles();
+ });
+ });
+ if (zoomTo) {
+ context.map().centerEase(image.loc);
+ }
+ }
+ function transform2(d2) {
+ var svgpoint = projection2(d2.loc);
+ return "translate(" + svgpoint[0] + "," + svgpoint[1] + ")";
+ }
+ function setStyles(hovered) {
+ const viewer = context.container().select(".photoviewer");
+ const selected = viewer.empty() ? void 0 : viewer.datum();
+ context.container().selectAll(".layer-local-photos .viewfield-group").classed("hovered", (d2) => d2.id === hovered?.id).classed("highlighted", (d2) => d2.id === hovered?.id || d2.id === selected?.id).classed("currentView", (d2) => d2.id === selected?.id);
+ }
+ function display_markers(imageList) {
+ imageList = imageList.filter((image) => isArray_default(image.loc) && isNumber_default(image.loc[0]) && isNumber_default(image.loc[1]));
+ const groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(imageList, function(d2) {
+ return d2.id;
+ });
+ groups.exit().remove();
+ const groupsEnter = groups.enter().append("g").attr("class", "viewfield-group").on("mouseenter", (d3_event, d2) => setStyles(d2)).on("mouseleave", () => setStyles(null)).on("click", click);
+ groupsEnter.append("g").attr("class", "viewfield-scale");
+ const markers = groups.merge(groupsEnter).attr("transform", transform2).select(".viewfield-scale");
+ markers.selectAll("circle").data([0]).enter().append("circle").attr("dx", "0").attr("dy", "0").attr("r", "6");
+ const showViewfields = context.map().zoom() >= minViewfieldZoom;
+ const viewfields = markers.selectAll(".viewfield").data(showViewfields ? [0] : []);
+ viewfields.exit().remove();
+ viewfields.enter().insert("path", "circle").attr("class", "viewfield").attr("transform", function() {
+ const d2 = this.parentNode.__data__;
+ return `rotate(${Math.round(d2.direction ?? 0)},0,0),scale(1.5,1.5),translate(-8,-13)`;
+ }).attr("d", "M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z").style("visibility", function() {
+ const d2 = this.parentNode.__data__;
+ return isNumber_default(d2.direction) ? "visible" : "hidden";
+ });
+ }
+ function drawPhotos(selection2) {
+ layer = selection2.selectAll(".layer-local-photos").data(_photos ? [0] : []);
+ layer.exit().remove();
+ const layerEnter = layer.enter().append("g").attr("class", "layer-local-photos");
+ layerEnter.append("g").attr("class", "markers");
+ layer = layerEnter.merge(layer);
+ if (_photos && _photos.length !== 0) {
+ display_markers(_photos);
+ }
+ }
+ function readFileAsDataURL(file) {
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader();
+ reader.onload = () => resolve(reader.result);
+ reader.onerror = (error) => reject(error);
+ reader.readAsDataURL(file);
+ });
+ }
+ async function readmultifiles(files, callback) {
+ const loaded = [];
+ for (const file of files) {
+ try {
+ const exifData = await full_esm_default.parse(file);
+ const photo = {
+ id: _idAutoinc++,
+ name: file.name,
+ getSrc: () => readFileAsDataURL(file),
+ file,
+ loc: [exifData.longitude, exifData.latitude],
+ direction: exifData.GPSImgDirection
+ };
+ loaded.push(photo);
+ const sameName = _photos.filter((i3) => i3.name === photo.name);
+ if (sameName.length === 0) {
+ _photos.push(photo);
+ } else {
+ const thisContent = await photo.getSrc();
+ const sameNameContent = await Promise.allSettled(sameName.map((i3) => i3.getSrc()));
+ if (!sameNameContent.some((i3) => i3.value === thisContent)) {
+ _photos.push(photo);
+ }
+ }
+ } catch (err) {
+ }
+ }
+ if (typeof callback === "function")
+ callback(loaded);
+ dispatch14.call("change");
+ }
+ drawPhotos.setFiles = function(fileList, callback) {
+ readmultifiles(Array.from(fileList), callback);
+ return this;
+ };
+ drawPhotos.fileList = function(fileList, callback) {
+ if (!arguments.length)
+ return _fileList;
+ _fileList = fileList;
+ if (!fileList || !fileList.length)
+ return this;
+ drawPhotos.setFiles(_fileList, callback);
+ return this;
+ };
+ drawPhotos.getPhotos = function() {
+ return _photos;
+ };
+ drawPhotos.removePhoto = function(id2) {
+ _photos = _photos.filter((i3) => i3.id !== id2);
+ dispatch14.call("change");
+ return _photos;
+ };
+ drawPhotos.openPhoto = click;
+ drawPhotos.fitZoom = function(force) {
+ const coords = _photos.map((image) => image.loc).filter((l2) => isArray_default(l2) && isNumber_default(l2[0]) && isNumber_default(l2[1]));
+ if (coords.length === 0)
+ return;
+ const extent = coords.map((l2) => geoExtent(l2, l2)).reduce((a2, b2) => a2.extend(b2));
+ const map2 = context.map();
+ var viewport = map2.trimmedExtent().polygon();
+ if (force !== false || !geoPolygonIntersectsPolygon(viewport, coords, true)) {
+ map2.centerZoom(extent.center(), Math.min(18, map2.trimmedExtentZoom(extent)));
+ }
+ };
+ function showLayer() {
+ layer.style("display", "block");
+ layer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end", function() {
+ dispatch14.call("change");
+ });
+ }
+ function hideLayer() {
+ layer.transition().duration(250).style("opacity", 0).on("end", () => {
+ layer.selectAll(".viewfield-group").remove();
+ layer.style("display", "none");
+ });
+ }
+ drawPhotos.enabled = function(val) {
+ if (!arguments.length)
+ return _enabled2;
+ _enabled2 = val;
+ if (_enabled2) {
+ showLayer();
+ } else {
+ hideLayer();
+ }
+ dispatch14.call("change");
+ return this;
+ };
+ drawPhotos.hasData = function() {
+ return isArray_default(_photos) && _photos.length > 0;
+ };
+ init2();
+ return drawPhotos;
+ }
+
// modules/svg/improveOSM.js
var _layerEnabled2 = false;
var _qaService2;
- function svgImproveOSM(projection2, context, dispatch10) {
- const throttledRedraw = throttle_default(() => dispatch10.call("change"), 1e3);
- const minZoom3 = 12;
+ function svgImproveOSM(projection2, context, dispatch14) {
+ const throttledRedraw = throttle_default(() => dispatch14.call("change"), 1e3);
+ const minZoom4 = 12;
let touchLayer = select_default2(null);
let drawLayer = select_default2(null);
let layerVisible = false;
}
function layerOn() {
editOn();
- drawLayer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", () => dispatch10.call("change"));
+ drawLayer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", () => dispatch14.call("change"));
}
function layerOff() {
throttledRedraw.cancel();
touchLayer.selectAll(".qaItem.improveOSM").remove();
drawLayer.transition().duration(250).style("opacity", 0).on("end interrupt", () => {
editOff();
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function updateMarkers() {
const selectedID = context.selectedErrorID();
const data = service ? service.getItems(projection2) : [];
const getTransform = svgPointTransform(projection2);
- const markers = drawLayer.selectAll(".qaItem.improveOSM").data(data, (d) => d.id);
+ const markers = drawLayer.selectAll(".qaItem.improveOSM").data(data, (d2) => d2.id);
markers.exit().remove();
- const markersEnter = markers.enter().append("g").attr("class", (d) => `qaItem ${d.service} itemId-${d.id} itemType-${d.itemType}`);
+ const markersEnter = markers.enter().append("g").attr("class", (d2) => `qaItem ${d2.service} itemId-${d2.id} itemType-${d2.itemType}`);
markersEnter.append("polygon").call(markerPath, "shadow");
markersEnter.append("ellipse").attr("cx", 0).attr("cy", 0).attr("rx", 4.5).attr("ry", 2).attr("class", "stroke");
markersEnter.append("polygon").attr("fill", "currentColor").call(markerPath, "qaItem-fill");
- markersEnter.append("use").attr("class", "icon-annotation").attr("transform", "translate(-6, -22)").attr("width", "12px").attr("height", "12px").attr("xlink:href", (d) => d.icon ? "#" + d.icon : "");
- markers.merge(markersEnter).sort(sortY).classed("selected", (d) => d.id === selectedID).attr("transform", getTransform);
+ markersEnter.append("use").attr("class", "icon-annotation").attr("transform", "translate(-6, -22)").attr("width", "12px").attr("height", "12px").attr("xlink:href", (d2) => d2.icon ? "#" + d2.icon : "");
+ markers.merge(markersEnter).sort(sortY).classed("selected", (d2) => d2.id === selectedID).attr("transform", getTransform);
if (touchLayer.empty())
return;
const fillClass = context.getDebug("target") ? "pink " : "nocolor ";
- const targets = touchLayer.selectAll(".qaItem.improveOSM").data(data, (d) => d.id);
+ const targets = touchLayer.selectAll(".qaItem.improveOSM").data(data, (d2) => d2.id);
targets.exit().remove();
- targets.enter().append("rect").attr("width", "20px").attr("height", "30px").attr("x", "-10px").attr("y", "-28px").merge(targets).sort(sortY).attr("class", (d) => `qaItem ${d.service} target ${fillClass} itemId-${d.id}`).attr("transform", getTransform);
- function sortY(a, b) {
- return a.id === selectedID ? 1 : b.id === selectedID ? -1 : b.loc[1] - a.loc[1];
+ targets.enter().append("rect").attr("width", "20px").attr("height", "30px").attr("x", "-10px").attr("y", "-28px").merge(targets).sort(sortY).attr("class", (d2) => `qaItem ${d2.service} target ${fillClass} itemId-${d2.id}`).attr("transform", getTransform);
+ function sortY(a2, b2) {
+ return a2.id === selectedID ? 1 : b2.id === selectedID ? -1 : b2.loc[1] - a2.loc[1];
}
}
function drawImproveOSM(selection2) {
drawLayer.exit().remove();
drawLayer = drawLayer.enter().append("g").attr("class", "layer-improveOSM").style("display", _layerEnabled2 ? "block" : "none").merge(drawLayer);
if (_layerEnabled2) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
service.loadIssues(projection2);
updateMarkers();
context.enter(modeBrowse(context));
}
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawImproveOSM.supported = () => !!getService();
// modules/svg/osmose.js
var _layerEnabled3 = false;
var _qaService3;
- function svgOsmose(projection2, context, dispatch10) {
- const throttledRedraw = throttle_default(() => dispatch10.call("change"), 1e3);
- const minZoom3 = 12;
+ function svgOsmose(projection2, context, dispatch14) {
+ const throttledRedraw = throttle_default(() => dispatch14.call("change"), 1e3);
+ const minZoom4 = 12;
let touchLayer = select_default2(null);
let drawLayer = select_default2(null);
let layerVisible = false;
}
function layerOn() {
editOn();
- drawLayer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", () => dispatch10.call("change"));
+ drawLayer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", () => dispatch14.call("change"));
}
function layerOff() {
throttledRedraw.cancel();
touchLayer.selectAll(".qaItem.osmose").remove();
drawLayer.transition().duration(250).style("opacity", 0).on("end interrupt", () => {
editOff();
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function updateMarkers() {
const selectedID = context.selectedErrorID();
const data = service ? service.getItems(projection2) : [];
const getTransform = svgPointTransform(projection2);
- const markers = drawLayer.selectAll(".qaItem.osmose").data(data, (d) => d.id);
+ const markers = drawLayer.selectAll(".qaItem.osmose").data(data, (d2) => d2.id);
markers.exit().remove();
- const markersEnter = markers.enter().append("g").attr("class", (d) => `qaItem ${d.service} itemId-${d.id} itemType-${d.itemType}`);
+ const markersEnter = markers.enter().append("g").attr("class", (d2) => `qaItem ${d2.service} itemId-${d2.id} itemType-${d2.itemType}`);
markersEnter.append("polygon").call(markerPath, "shadow");
markersEnter.append("ellipse").attr("cx", 0).attr("cy", 0).attr("rx", 4.5).attr("ry", 2).attr("class", "stroke");
- markersEnter.append("polygon").attr("fill", (d) => service.getColor(d.item)).call(markerPath, "qaItem-fill");
- markersEnter.append("use").attr("class", "icon-annotation").attr("transform", "translate(-6, -22)").attr("width", "12px").attr("height", "12px").attr("xlink:href", (d) => d.icon ? "#" + d.icon : "");
- markers.merge(markersEnter).sort(sortY).classed("selected", (d) => d.id === selectedID).attr("transform", getTransform);
+ markersEnter.append("polygon").attr("fill", (d2) => service.getColor(d2.item)).call(markerPath, "qaItem-fill");
+ markersEnter.append("use").attr("class", "icon-annotation").attr("transform", "translate(-6, -22)").attr("width", "12px").attr("height", "12px").attr("xlink:href", (d2) => d2.icon ? "#" + d2.icon : "");
+ markers.merge(markersEnter).sort(sortY).classed("selected", (d2) => d2.id === selectedID).attr("transform", getTransform);
if (touchLayer.empty())
return;
const fillClass = context.getDebug("target") ? "pink" : "nocolor";
- const targets = touchLayer.selectAll(".qaItem.osmose").data(data, (d) => d.id);
+ const targets = touchLayer.selectAll(".qaItem.osmose").data(data, (d2) => d2.id);
targets.exit().remove();
- targets.enter().append("rect").attr("width", "20px").attr("height", "30px").attr("x", "-10px").attr("y", "-28px").merge(targets).sort(sortY).attr("class", (d) => `qaItem ${d.service} target ${fillClass} itemId-${d.id}`).attr("transform", getTransform);
- function sortY(a, b) {
- return a.id === selectedID ? 1 : b.id === selectedID ? -1 : b.loc[1] - a.loc[1];
+ targets.enter().append("rect").attr("width", "20px").attr("height", "30px").attr("x", "-10px").attr("y", "-28px").merge(targets).sort(sortY).attr("class", (d2) => `qaItem ${d2.service} target ${fillClass} itemId-${d2.id}`).attr("transform", getTransform);
+ function sortY(a2, b2) {
+ return a2.id === selectedID ? 1 : b2.id === selectedID ? -1 : b2.loc[1] - a2.loc[1];
}
}
function drawOsmose(selection2) {
drawLayer.exit().remove();
drawLayer = drawLayer.enter().append("g").attr("class", "layer-osmose").style("display", _layerEnabled3 ? "block" : "none").merge(drawLayer);
if (_layerEnabled3) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
service.loadIssues(projection2);
updateMarkers();
context.enter(modeBrowse(context));
}
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawOsmose.supported = () => !!getService();
}
// modules/svg/streetside.js
- function svgStreetside(projection2, context, dispatch10) {
+ function svgStreetside(projection2, context, dispatch14) {
var throttledRedraw = throttle_default(function() {
- dispatch10.call("change");
+ dispatch14.call("change");
}, 1e3);
- var minZoom3 = 14;
+ var minZoom4 = 14;
var minMarkerZoom = 16;
- var minViewfieldZoom = 18;
+ var minViewfieldZoom2 = 18;
var layer = select_default2(null);
var _viewerYaw = 0;
var _selectedSequence = null;
return;
editOn();
layer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end", function() {
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function hideLayer() {
layer.selectAll(".viewfield-group").remove();
layer.style("display", "none");
}
- function click(d3_event, d) {
+ function click(d3_event, d2) {
var service = getService();
if (!service)
return;
- if (d.sequenceKey !== _selectedSequence) {
+ if (d2.sequenceKey !== _selectedSequence) {
_viewerYaw = 0;
}
- _selectedSequence = d.sequenceKey;
+ _selectedSequence = d2.sequenceKey;
service.ensureViewerLoaded(context).then(function() {
- service.selectImage(context, d.key).yaw(_viewerYaw).showViewer(context);
+ service.selectImage(context, d2.key).yaw(_viewerYaw).showViewer(context);
});
- context.map().centerEase(d.loc);
+ context.map().centerEase(d2.loc);
}
- function mouseover(d3_event, d) {
+ function mouseover(d3_event, d2) {
var service = getService();
if (service)
- service.setStyles(context, d);
+ service.setStyles(context, d2);
}
function mouseout() {
var service = getService();
if (service)
service.setStyles(context, null);
}
- function transform2(d) {
- var t = svgPointTransform(projection2)(d);
- var rot = d.ca + _viewerYaw;
+ function transform2(d2) {
+ var t2 = svgPointTransform(projection2)(d2);
+ var rot = d2.ca + _viewerYaw;
if (rot) {
- t += " rotate(" + Math.floor(rot) + ",0,0)";
+ t2 += " rotate(" + Math.floor(rot) + ",0,0)";
}
- return t;
+ return t2;
}
function viewerChanged() {
var service = getService();
function update() {
var viewer = context.container().select(".photoviewer");
var selected = viewer.empty() ? void 0 : viewer.datum();
- var z = ~~context.map().zoom();
- var showMarkers = z >= minMarkerZoom;
- var showViewfields = z >= minViewfieldZoom;
+ var z2 = ~~context.map().zoom();
+ var showMarkers = z2 >= minMarkerZoom;
+ var showViewfields = z2 >= minViewfieldZoom2;
var service = getService();
var sequences = [];
var bubbles = [];
sequences = filterSequences(sequences);
bubbles = filterBubbles(bubbles);
}
- var traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, function(d) {
- return d.properties.key;
+ var traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, function(d2) {
+ return d2.properties.key;
});
traces.exit().remove();
traces = traces.enter().append("path").attr("class", "sequence").merge(traces).attr("d", svgPath(projection2).geojson);
- var groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(bubbles, function(d) {
- return d.key + (d.sequenceKey ? "v1" : "v0");
+ var groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(bubbles, function(d2) {
+ return d2.key + (d2.sequenceKey ? "v1" : "v0");
});
groups.exit().remove();
var groupsEnter = groups.enter().append("g").attr("class", "viewfield-group").on("mouseenter", mouseover).on("mouseleave", mouseout).on("click", click);
groupsEnter.append("g").attr("class", "viewfield-scale");
- var markers = groups.merge(groupsEnter).sort(function(a, b) {
- return a === selected ? 1 : b === selected ? -1 : b.loc[1] - a.loc[1];
+ var markers = groups.merge(groupsEnter).sort(function(a2, b2) {
+ return a2 === selected ? 1 : b2 === selected ? -1 : b2.loc[1] - a2.loc[1];
}).attr("transform", transform2).select(".viewfield-scale");
markers.selectAll("circle").data([0]).enter().append("circle").attr("dx", "0").attr("dy", "0").attr("r", "6");
var viewfields = markers.selectAll(".viewfield").data(showViewfields ? [0] : []);
viewfields.exit().remove();
viewfields.enter().insert("path", "circle").attr("class", "viewfield").attr("transform", "scale(1.5,1.5),translate(-8, -13)").attr("d", viewfieldPath);
function viewfieldPath() {
- var d = this.parentNode.__data__;
- if (d.pano) {
+ var d2 = this.parentNode.__data__;
+ if (d2.pano) {
return "M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0";
} else {
return "M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z";
layerEnter.append("g").attr("class", "markers");
layer = layerEnter.merge(layer);
if (enabled) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
update();
service.loadBubbles(projection2);
}
}
}
- drawImages.enabled = function(_) {
+ drawImages.enabled = function(_2) {
if (!arguments.length)
return svgStreetside.enabled;
- svgStreetside.enabled = _;
+ svgStreetside.enabled = _2;
if (svgStreetside.enabled) {
showLayer();
context.photos().on("change.streetside", update);
hideLayer();
context.photos().on("change.streetside", null);
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawImages.supported = function() {
return !!getService();
};
+ drawImages.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
+ init2();
+ return drawImages;
+ }
+
+ // modules/svg/vegbilder.js
+ function svgVegbilder(projection2, context, dispatch14) {
+ const throttledRedraw = throttle_default(() => dispatch14.call("change"), 1e3);
+ const minZoom4 = 14;
+ const minMarkerZoom = 16;
+ const minViewfieldZoom2 = 18;
+ let layer = select_default2(null);
+ let _viewerYaw = 0;
+ let _vegbilder;
+ function init2() {
+ if (svgVegbilder.initialized)
+ return;
+ svgVegbilder.enabled = false;
+ svgVegbilder.initialized = true;
+ }
+ function getService() {
+ if (services.vegbilder && !_vegbilder) {
+ _vegbilder = services.vegbilder;
+ _vegbilder.event.on("viewerChanged.svgVegbilder", viewerChanged).on("loadedImages.svgVegbilder", throttledRedraw);
+ } else if (!services.vegbilder && _vegbilder) {
+ _vegbilder = null;
+ }
+ return _vegbilder;
+ }
+ function showLayer() {
+ const service = getService();
+ if (!service)
+ return;
+ editOn();
+ layer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end", () => dispatch14.call("change"));
+ }
+ function hideLayer() {
+ throttledRedraw.cancel();
+ layer.transition().duration(250).style("opacity", 0).on("end", editOff);
+ }
+ function editOn() {
+ layer.style("display", "block");
+ }
+ function editOff() {
+ layer.selectAll(".viewfield-group").remove();
+ layer.style("display", "none");
+ }
+ function click(d3_event, d2) {
+ const service = getService();
+ if (!service)
+ return;
+ service.ensureViewerLoaded(context).then(() => {
+ service.selectImage(context, d2.key).showViewer(context);
+ });
+ context.map().centerEase(d2.loc);
+ }
+ function mouseover(d3_event, d2) {
+ const service = getService();
+ if (service)
+ service.setStyles(context, d2);
+ }
+ function mouseout() {
+ const service = getService();
+ if (service)
+ service.setStyles(context, null);
+ }
+ function transform2(d2, selected) {
+ let t2 = svgPointTransform(projection2)(d2);
+ let rot = d2.ca;
+ if (d2 === selected) {
+ rot += _viewerYaw;
+ }
+ if (rot) {
+ t2 += " rotate(" + Math.floor(rot) + ",0,0)";
+ }
+ return t2;
+ }
+ function viewerChanged() {
+ const service = getService();
+ if (!service)
+ return;
+ const frame2 = service.photoFrame();
+ _viewerYaw = frame2.getYaw();
+ if (context.map().isTransformed())
+ return;
+ layer.selectAll(".viewfield-group.currentView").attr("transform", (d2) => transform2(d2, d2));
+ }
+ function filterImages(images) {
+ const photoContext = context.photos();
+ const fromDateString = photoContext.fromDate();
+ const toDateString = photoContext.toDate();
+ const showsFlat = photoContext.showsFlat();
+ const showsPano = photoContext.showsPanoramic();
+ if (fromDateString) {
+ const fromDate = new Date(fromDateString);
+ images = images.filter((image) => image.captured_at.getTime() >= fromDate.getTime());
+ }
+ if (toDateString) {
+ const toDate = new Date(toDateString);
+ images = images.filter((image) => image.captured_at.getTime() <= toDate.getTime());
+ }
+ if (!showsPano) {
+ images = images.filter((image) => !image.is_sphere);
+ }
+ if (!showsFlat) {
+ images = images.filter((image) => image.is_sphere);
+ }
+ return images;
+ }
+ function filterSequences(sequences) {
+ const photoContext = context.photos();
+ const fromDateString = photoContext.fromDate();
+ const toDateString = photoContext.toDate();
+ const showsFlat = photoContext.showsFlat();
+ const showsPano = photoContext.showsPanoramic();
+ if (fromDateString) {
+ const fromDate = new Date(fromDateString);
+ sequences = sequences.filter(({ images }) => images[0].captured_at.getTime() >= fromDate.getTime());
+ }
+ if (toDateString) {
+ const toDate = new Date(toDateString);
+ sequences = sequences.filter(({ images }) => images[images.length - 1].captured_at.getTime() <= toDate.getTime());
+ }
+ if (!showsPano) {
+ sequences = sequences.filter(({ images }) => !images[0].is_sphere);
+ }
+ if (!showsFlat) {
+ sequences = sequences.filter(({ images }) => images[0].is_sphere);
+ }
+ return sequences;
+ }
+ function update() {
+ const viewer = context.container().select(".photoviewer");
+ const selected = viewer.empty() ? void 0 : viewer.datum();
+ const z2 = ~~context.map().zoom();
+ const showMarkers = z2 >= minMarkerZoom;
+ const showViewfields = z2 >= minViewfieldZoom2;
+ const service = getService();
+ let sequences = [];
+ let images = [];
+ if (service) {
+ service.loadImages(context);
+ sequences = service.sequences(projection2);
+ images = showMarkers ? service.images(projection2) : [];
+ images = filterImages(images);
+ sequences = filterSequences(sequences);
+ }
+ let traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, (d2) => d2.key);
+ traces.exit().remove();
+ traces.enter().append("path").attr("class", "sequence").merge(traces).attr("d", svgPath(projection2).geojson);
+ const groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(images, (d2) => d2.key);
+ groups.exit().remove();
+ const groupsEnter = groups.enter().append("g").attr("class", "viewfield-group").on("mouseenter", mouseover).on("mouseleave", mouseout).on("click", click);
+ groupsEnter.append("g").attr("class", "viewfield-scale");
+ const markers = groups.merge(groupsEnter).sort((a2, b2) => {
+ return a2 === selected ? 1 : b2 === selected ? -1 : b2.loc[1] - a2.loc[1];
+ }).attr("transform", (d2) => transform2(d2, selected)).select(".viewfield-scale");
+ markers.selectAll("circle").data([0]).enter().append("circle").attr("dx", "0").attr("dy", "0").attr("r", "6");
+ const viewfields = markers.selectAll(".viewfield").data(showViewfields ? [0] : []);
+ viewfields.exit().remove();
+ viewfields.enter().insert("path", "circle").attr("class", "viewfield").attr("transform", "scale(1.5,1.5),translate(-8, -13)").attr("d", viewfieldPath);
+ function viewfieldPath() {
+ const d2 = this.parentNode.__data__;
+ if (d2.is_sphere) {
+ return "M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0";
+ } else {
+ return "M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z";
+ }
+ }
+ }
+ function drawImages(selection2) {
+ const enabled = svgVegbilder.enabled;
+ const service = getService();
+ layer = selection2.selectAll(".layer-vegbilder").data(service ? [0] : []);
+ layer.exit().remove();
+ const layerEnter = layer.enter().append("g").attr("class", "layer-vegbilder").style("display", enabled ? "block" : "none");
+ layerEnter.append("g").attr("class", "sequences");
+ layerEnter.append("g").attr("class", "markers");
+ layer = layerEnter.merge(layer);
+ if (enabled) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
+ editOn();
+ update();
+ service.loadImages(context);
+ } else {
+ editOff();
+ }
+ }
+ }
+ drawImages.enabled = function(_2) {
+ if (!arguments.length)
+ return svgVegbilder.enabled;
+ svgVegbilder.enabled = _2;
+ if (svgVegbilder.enabled) {
+ showLayer();
+ context.photos().on("change.vegbilder", update);
+ } else {
+ hideLayer();
+ context.photos().on("change.vegbilder", null);
+ }
+ dispatch14.call("change");
+ return this;
+ };
+ drawImages.supported = function() {
+ return !!getService();
+ };
+ drawImages.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
+ drawImages.validHere = function(extent, zoom) {
+ return zoom >= minZoom4 - 2 && getService().validHere(extent);
+ };
init2();
return drawImages;
}
// modules/svg/mapillary_images.js
- function svgMapillaryImages(projection2, context, dispatch10) {
+ function svgMapillaryImages(projection2, context, dispatch14) {
const throttledRedraw = throttle_default(function() {
- dispatch10.call("change");
+ dispatch14.call("change");
}, 1e3);
- const minZoom3 = 12;
+ const minZoom4 = 12;
const minMarkerZoom = 16;
- const minViewfieldZoom = 18;
+ const minViewfieldZoom2 = 18;
let layer = select_default2(null);
let _mapillary;
function init2() {
return;
editOn();
layer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end", function() {
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function hideLayer() {
if (service)
service.setStyles(context, null);
}
- function transform2(d) {
- let t = svgPointTransform(projection2)(d);
- if (d.ca) {
- t += " rotate(" + Math.floor(d.ca) + ",0,0)";
+ function transform2(d2) {
+ let t2 = svgPointTransform(projection2)(d2);
+ if (d2.ca) {
+ t2 += " rotate(" + Math.floor(d2.ca) + ",0,0)";
}
- return t;
+ return t2;
}
function filterImages(images) {
const showsPano = context.photos().showsPanoramic();
return sequences;
}
function update() {
- const z = ~~context.map().zoom();
- const showMarkers = z >= minMarkerZoom;
- const showViewfields = z >= minViewfieldZoom;
+ const z2 = ~~context.map().zoom();
+ const showMarkers = z2 >= minMarkerZoom;
+ const showViewfields = z2 >= minViewfieldZoom2;
const service = getService();
let sequences = service ? service.sequences(projection2) : [];
let images = service && showMarkers ? service.images(projection2) : [];
images = filterImages(images);
sequences = filterSequences(sequences, service);
service.filterViewer(context);
- let traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, function(d) {
- return d.properties.id;
+ let traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, function(d2) {
+ return d2.properties.id;
});
traces.exit().remove();
traces = traces.enter().append("path").attr("class", "sequence").merge(traces).attr("d", svgPath(projection2).geojson);
- const groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(images, function(d) {
- return d.id;
+ const groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(images, function(d2) {
+ return d2.id;
});
groups.exit().remove();
const groupsEnter = groups.enter().append("g").attr("class", "viewfield-group").on("mouseenter", mouseover).on("mouseleave", mouseout).on("click", click);
groupsEnter.append("g").attr("class", "viewfield-scale");
- const markers = groups.merge(groupsEnter).sort(function(a, b) {
- return b.loc[1] - a.loc[1];
+ const markers = groups.merge(groupsEnter).sort(function(a2, b2) {
+ return b2.loc[1] - a2.loc[1];
}).attr("transform", transform2).select(".viewfield-scale");
markers.selectAll("circle").data([0]).enter().append("circle").attr("dx", "0").attr("dy", "0").attr("r", "6");
const viewfields = markers.selectAll(".viewfield").data(showViewfields ? [0] : []);
layerEnter.append("g").attr("class", "markers");
layer = layerEnter.merge(layer);
if (enabled) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
update();
service.loadImages(projection2);
}
}
}
- drawImages.enabled = function(_) {
+ drawImages.enabled = function(_2) {
if (!arguments.length)
return svgMapillaryImages.enabled;
- svgMapillaryImages.enabled = _;
+ svgMapillaryImages.enabled = _2;
if (svgMapillaryImages.enabled) {
showLayer();
context.photos().on("change.mapillary_images", update);
hideLayer();
context.photos().on("change.mapillary_images", null);
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawImages.supported = function() {
return !!getService();
};
+ drawImages.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
init2();
return drawImages;
}
const throttledRedraw = throttle_default(function() {
update();
}, 1e3);
- const minZoom3 = 12;
- const minViewfieldZoom = 18;
+ const minZoom4 = 12;
+ const minViewfieldZoom2 = 18;
let layer = select_default2(null);
let _mapillary;
let viewerCompassAngle;
if (services.mapillary && !_mapillary) {
_mapillary = services.mapillary;
_mapillary.event.on("imageChanged", throttledRedraw);
- _mapillary.event.on("bearingChanged", function(e) {
- viewerCompassAngle = e.bearing;
+ _mapillary.event.on("bearingChanged", function(e3) {
+ viewerCompassAngle = e3.bearing;
if (context.map().isTransformed())
return;
- layer.selectAll(".viewfield-group.currentView").filter(function(d) {
- return d.is_pano;
+ layer.selectAll(".viewfield-group.currentView").filter(function(d2) {
+ return d2.is_pano;
}).attr("transform", transform2);
});
} else if (!services.mapillary && _mapillary) {
layer.selectAll(".viewfield-group").remove();
layer.style("display", "none");
}
- function transform2(d) {
- let t = svgPointTransform(projection2)(d);
- if (d.is_pano && viewerCompassAngle !== null && isFinite(viewerCompassAngle)) {
- t += " rotate(" + Math.floor(viewerCompassAngle) + ",0,0)";
- } else if (d.ca) {
- t += " rotate(" + Math.floor(d.ca) + ",0,0)";
+ function transform2(d2) {
+ let t2 = svgPointTransform(projection2)(d2);
+ if (d2.is_pano && viewerCompassAngle !== null && isFinite(viewerCompassAngle)) {
+ t2 += " rotate(" + Math.floor(viewerCompassAngle) + ",0,0)";
+ } else if (d2.ca) {
+ t2 += " rotate(" + Math.floor(d2.ca) + ",0,0)";
}
- return t;
+ return t2;
}
function update() {
- const z = ~~context.map().zoom();
- const showViewfields = z >= minViewfieldZoom;
+ const z2 = ~~context.map().zoom();
+ const showViewfields = z2 >= minViewfieldZoom2;
const service = getService();
const image = service && service.getActiveImage();
- const groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(image ? [image] : [], function(d) {
- return d.id;
+ const groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(image ? [image] : [], function(d2) {
+ return d2.id;
});
groups.exit().remove();
const groupsEnter = groups.enter().append("g").attr("class", "viewfield-group currentView highlighted");
const layerEnter = layer.enter().append("g").attr("class", "layer-mapillary-position");
layerEnter.append("g").attr("class", "markers");
layer = layerEnter.merge(layer);
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
update();
} else {
drawImages.supported = function() {
return !!getService();
};
+ drawImages.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
init2();
return drawImages;
}
// modules/svg/mapillary_signs.js
- function svgMapillarySigns(projection2, context, dispatch10) {
+ function svgMapillarySigns(projection2, context, dispatch14) {
const throttledRedraw = throttle_default(function() {
- dispatch10.call("change");
+ dispatch14.call("change");
}, 1e3);
- const minZoom3 = 12;
+ const minZoom4 = 12;
let layer = select_default2(null);
let _mapillary;
function init2() {
layer.selectAll(".icon-sign").remove();
layer.style("display", "none");
}
- function click(d3_event, d) {
+ function click(d3_event, d2) {
const service = getService();
if (!service)
return;
- context.map().centerEase(d.loc);
+ context.map().centerEase(d2.loc);
const selectedImageId = service.getActiveImage() && service.getActiveImage().id;
- service.getDetections(d.id).then((detections) => {
+ service.getDetections(d2.id).then((detections) => {
if (detections.length) {
const imageId = detections[0].image.id;
if (imageId === selectedImageId) {
let data = service ? service.signs(projection2) : [];
data = filterData(data);
const transform2 = svgPointTransform(projection2);
- const signs = layer.selectAll(".icon-sign").data(data, function(d) {
- return d.id;
+ const signs = layer.selectAll(".icon-sign").data(data, function(d2) {
+ return d2.id;
});
signs.exit().remove();
const enter = signs.enter().append("g").attr("class", "icon-sign icon-detected").on("click", click);
- enter.append("use").attr("width", "24px").attr("height", "24px").attr("x", "-12px").attr("y", "-12px").attr("xlink:href", function(d) {
- return "#" + d.value;
+ enter.append("use").attr("width", "24px").attr("height", "24px").attr("x", "-12px").attr("y", "-12px").attr("xlink:href", function(d2) {
+ return "#" + d2.value;
});
enter.append("rect").attr("width", "24px").attr("height", "24px").attr("x", "-12px").attr("y", "-12px");
signs.merge(enter).attr("transform", transform2);
layer.exit().remove();
layer = layer.enter().append("g").attr("class", "layer-mapillary-signs layer-mapillary-detections").style("display", enabled ? "block" : "none").merge(layer);
if (enabled) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
update();
service.loadSigns(projection2);
service.showSignDetections(false);
}
}
- drawSigns.enabled = function(_) {
+ drawSigns.enabled = function(_2) {
if (!arguments.length)
return svgMapillarySigns.enabled;
- svgMapillarySigns.enabled = _;
+ svgMapillarySigns.enabled = _2;
if (svgMapillarySigns.enabled) {
showLayer();
context.photos().on("change.mapillary_signs", update);
hideLayer();
context.photos().on("change.mapillary_signs", null);
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawSigns.supported = function() {
return !!getService();
};
+ drawSigns.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
init2();
return drawSigns;
}
// modules/svg/mapillary_map_features.js
- function svgMapillaryMapFeatures(projection2, context, dispatch10) {
+ function svgMapillaryMapFeatures(projection2, context, dispatch14) {
const throttledRedraw = throttle_default(function() {
- dispatch10.call("change");
+ dispatch14.call("change");
}, 1e3);
- const minZoom3 = 12;
+ const minZoom4 = 12;
let layer = select_default2(null);
let _mapillary;
function init2() {
layer.selectAll(".icon-map-feature").remove();
layer.style("display", "none");
}
- function click(d3_event, d) {
+ function click(d3_event, d2) {
const service = getService();
if (!service)
return;
- context.map().centerEase(d.loc);
+ context.map().centerEase(d2.loc);
const selectedImageId = service.getActiveImage() && service.getActiveImage().id;
- service.getDetections(d.id).then((detections) => {
+ service.getDetections(d2.id).then((detections) => {
if (detections.length) {
const imageId = detections[0].image.id;
if (imageId === selectedImageId) {
let data = service ? service.mapFeatures(projection2) : [];
data = filterData(data);
const transform2 = svgPointTransform(projection2);
- const mapFeatures = layer.selectAll(".icon-map-feature").data(data, function(d) {
- return d.id;
+ const mapFeatures = layer.selectAll(".icon-map-feature").data(data, function(d2) {
+ return d2.id;
});
mapFeatures.exit().remove();
const enter = mapFeatures.enter().append("g").attr("class", "icon-map-feature icon-detected").on("click", click);
- enter.append("title").text(function(d) {
- var id2 = d.value.replace(/--/g, ".").replace(/-/g, "_");
+ enter.append("title").text(function(d2) {
+ var id2 = d2.value.replace(/--/g, ".").replace(/-/g, "_");
return _t("mapillary_map_features." + id2);
});
- enter.append("use").attr("width", "24px").attr("height", "24px").attr("x", "-12px").attr("y", "-12px").attr("xlink:href", function(d) {
- if (d.value === "object--billboard") {
+ enter.append("use").attr("width", "24px").attr("height", "24px").attr("x", "-12px").attr("y", "-12px").attr("xlink:href", function(d2) {
+ if (d2.value === "object--billboard") {
return "#object--sign--advertisement";
}
- return "#" + d.value;
+ return "#" + d2.value;
});
enter.append("rect").attr("width", "24px").attr("height", "24px").attr("x", "-12px").attr("y", "-12px");
mapFeatures.merge(enter).attr("transform", transform2);
layer.exit().remove();
layer = layer.enter().append("g").attr("class", "layer-mapillary-map-features layer-mapillary-detections").style("display", enabled ? "block" : "none").merge(layer);
if (enabled) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
update();
service.loadMapFeatures(projection2);
service.showFeatureDetections(false);
}
}
- drawMapFeatures.enabled = function(_) {
+ drawMapFeatures.enabled = function(_2) {
if (!arguments.length)
return svgMapillaryMapFeatures.enabled;
- svgMapillaryMapFeatures.enabled = _;
+ svgMapillaryMapFeatures.enabled = _2;
if (svgMapillaryMapFeatures.enabled) {
showLayer();
context.photos().on("change.mapillary_map_features", update);
hideLayer();
context.photos().on("change.mapillary_map_features", null);
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawMapFeatures.supported = function() {
return !!getService();
};
+ drawMapFeatures.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
init2();
return drawMapFeatures;
}
// modules/svg/kartaview_images.js
- function svgKartaviewImages(projection2, context, dispatch10) {
+ function svgKartaviewImages(projection2, context, dispatch14) {
var throttledRedraw = throttle_default(function() {
- dispatch10.call("change");
+ dispatch14.call("change");
}, 1e3);
- var minZoom3 = 12;
+ var minZoom4 = 12;
var minMarkerZoom = 16;
- var minViewfieldZoom = 18;
+ var minViewfieldZoom2 = 18;
var layer = select_default2(null);
var _kartaview;
function init2() {
return;
editOn();
layer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end", function() {
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function hideLayer() {
layer.selectAll(".viewfield-group").remove();
layer.style("display", "none");
}
- function click(d3_event, d) {
+ function click(d3_event, d2) {
var service = getService();
if (!service)
return;
service.ensureViewerLoaded(context).then(function() {
- service.selectImage(context, d.key).showViewer(context);
+ service.selectImage(context, d2.key).showViewer(context);
});
- context.map().centerEase(d.loc);
+ context.map().centerEase(d2.loc);
}
- function mouseover(d3_event, d) {
+ function mouseover(d3_event, d2) {
var service = getService();
if (service)
- service.setStyles(context, d);
+ service.setStyles(context, d2);
}
function mouseout() {
var service = getService();
if (service)
service.setStyles(context, null);
}
- function transform2(d) {
- var t = svgPointTransform(projection2)(d);
- if (d.ca) {
- t += " rotate(" + Math.floor(d.ca) + ",0,0)";
+ function transform2(d2) {
+ var t2 = svgPointTransform(projection2)(d2);
+ if (d2.ca) {
+ t2 += " rotate(" + Math.floor(d2.ca) + ",0,0)";
}
- return t;
+ return t2;
}
function filterImages(images) {
var fromDate = context.photos().fromDate();
function update() {
var viewer = context.container().select(".photoviewer");
var selected = viewer.empty() ? void 0 : viewer.datum();
- var z = ~~context.map().zoom();
- var showMarkers = z >= minMarkerZoom;
- var showViewfields = z >= minViewfieldZoom;
+ var z2 = ~~context.map().zoom();
+ var showMarkers = z2 >= minMarkerZoom;
+ var showViewfields = z2 >= minViewfieldZoom2;
var service = getService();
var sequences = [];
var images = [];
sequences = filterSequences(sequences);
images = filterImages(images);
}
- var traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, function(d) {
- return d.properties.key;
+ var traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, function(d2) {
+ return d2.properties.key;
});
traces.exit().remove();
traces = traces.enter().append("path").attr("class", "sequence").merge(traces).attr("d", svgPath(projection2).geojson);
- var groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(images, function(d) {
- return d.key;
+ var groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(images, function(d2) {
+ return d2.key;
});
groups.exit().remove();
var groupsEnter = groups.enter().append("g").attr("class", "viewfield-group").on("mouseenter", mouseover).on("mouseleave", mouseout).on("click", click);
groupsEnter.append("g").attr("class", "viewfield-scale");
- var markers = groups.merge(groupsEnter).sort(function(a, b) {
- return a === selected ? 1 : b === selected ? -1 : b.loc[1] - a.loc[1];
+ var markers = groups.merge(groupsEnter).sort(function(a2, b2) {
+ return a2 === selected ? 1 : b2 === selected ? -1 : b2.loc[1] - a2.loc[1];
}).attr("transform", transform2).select(".viewfield-scale");
markers.selectAll("circle").data([0]).enter().append("circle").attr("dx", "0").attr("dy", "0").attr("r", "6");
var viewfields = markers.selectAll(".viewfield").data(showViewfields ? [0] : []);
layerEnter.append("g").attr("class", "markers");
layer = layerEnter.merge(layer);
if (enabled) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
update();
service.loadImages(projection2);
}
}
}
- drawImages.enabled = function(_) {
+ drawImages.enabled = function(_2) {
if (!arguments.length)
return svgKartaviewImages.enabled;
- svgKartaviewImages.enabled = _;
+ svgKartaviewImages.enabled = _2;
if (svgKartaviewImages.enabled) {
showLayer();
context.photos().on("change.kartaview_images", update);
hideLayer();
context.photos().on("change.kartaview_images", null);
}
- dispatch10.call("change");
+ dispatch14.call("change");
+ return this;
+ };
+ drawImages.supported = function() {
+ return !!getService();
+ };
+ drawImages.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
+ init2();
+ return drawImages;
+ }
+
+ // modules/svg/mapilio_images.js
+ function svgMapilioImages(projection2, context, dispatch14) {
+ const throttledRedraw = throttle_default(function() {
+ dispatch14.call("change");
+ }, 1e3);
+ const minZoom4 = 12;
+ let layer = select_default2(null);
+ let _mapilio;
+ const viewFieldZoomLevel = 18;
+ function init2() {
+ if (svgMapilioImages.initialized)
+ return;
+ svgMapilioImages.enabled = false;
+ svgMapilioImages.initialized = true;
+ }
+ function getService() {
+ if (services.mapilio && !_mapilio) {
+ _mapilio = services.mapilio;
+ _mapilio.event.on("loadedImages", throttledRedraw);
+ } else if (!services.mapilio && _mapilio) {
+ _mapilio = null;
+ }
+ return _mapilio;
+ }
+ function showLayer() {
+ const service = getService();
+ if (!service)
+ return;
+ editOn();
+ layer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end", function() {
+ dispatch14.call("change");
+ });
+ }
+ function hideLayer() {
+ throttledRedraw.cancel();
+ layer.transition().duration(250).style("opacity", 0).on("end", editOff);
+ }
+ function transform2(d2) {
+ let t2 = svgPointTransform(projection2)(d2);
+ if (d2.heading) {
+ t2 += " rotate(" + Math.floor(d2.heading) + ",0,0)";
+ }
+ return t2;
+ }
+ function editOn() {
+ layer.style("display", "block");
+ }
+ function editOff() {
+ layer.selectAll(".viewfield-group").remove();
+ layer.style("display", "none");
+ }
+ function click(d3_event, image) {
+ const service = getService();
+ if (!service)
+ return;
+ service.ensureViewerLoaded(context, image.id).then(function() {
+ service.selectImage(context, image.id).showViewer(context);
+ });
+ context.map().centerEase(image.loc);
+ }
+ function mouseover(d3_event, image) {
+ const service = getService();
+ if (service)
+ service.setStyles(context, image);
+ }
+ function mouseout() {
+ const service = getService();
+ if (service)
+ service.setStyles(context, null);
+ }
+ function update() {
+ const z2 = ~~context.map().zoom();
+ const showViewfields = z2 >= viewFieldZoomLevel;
+ const service = getService();
+ let sequences = service ? service.sequences(projection2) : [];
+ let images = service ? service.images(projection2) : [];
+ let traces = layer.selectAll(".sequences").selectAll(".sequence").data(sequences, function(d2) {
+ return d2.properties.id;
+ });
+ traces.exit().remove();
+ traces.enter().append("path").attr("class", "sequence").merge(traces).attr("d", svgPath(projection2).geojson);
+ const groups = layer.selectAll(".markers").selectAll(".viewfield-group").data(images, function(d2) {
+ return d2.id;
+ });
+ groups.exit().remove();
+ const groupsEnter = groups.enter().append("g").attr("class", "viewfield-group").on("mouseenter", mouseover).on("mouseleave", mouseout).on("click", click);
+ groupsEnter.append("g").attr("class", "viewfield-scale");
+ const markers = groups.merge(groupsEnter).sort(function(a2, b2) {
+ return b2.loc[1] - a2.loc[1];
+ }).attr("transform", transform2).select(".viewfield-scale");
+ markers.selectAll("circle").data([0]).enter().append("circle").attr("dx", "0").attr("dy", "0").attr("r", "6");
+ const viewfields = markers.selectAll(".viewfield").data(showViewfields ? [0] : []);
+ viewfields.exit().remove();
+ viewfields.enter().insert("path", "circle").attr("class", "viewfield").attr("transform", "scale(1.5,1.5),translate(-8, -13)").attr("d", viewfieldPath);
+ function viewfieldPath() {
+ if (this.parentNode.__data__.isPano) {
+ return "M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0";
+ } else {
+ return "M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z";
+ }
+ }
+ }
+ function drawImages(selection2) {
+ const enabled = svgMapilioImages.enabled;
+ const service = getService();
+ layer = selection2.selectAll(".layer-mapilio").data(service ? [0] : []);
+ layer.exit().remove();
+ const layerEnter = layer.enter().append("g").attr("class", "layer-mapilio").style("display", enabled ? "block" : "none");
+ layerEnter.append("g").attr("class", "sequences");
+ layerEnter.append("g").attr("class", "markers");
+ layer = layerEnter.merge(layer);
+ if (enabled) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
+ editOn();
+ update();
+ service.loadImages(projection2);
+ service.loadLines(projection2);
+ } else {
+ editOff();
+ }
+ }
+ }
+ drawImages.enabled = function(_2) {
+ if (!arguments.length)
+ return svgMapilioImages.enabled;
+ svgMapilioImages.enabled = _2;
+ if (svgMapilioImages.enabled) {
+ showLayer();
+ context.photos().on("change.mapilio_images", null);
+ } else {
+ hideLayer();
+ context.photos().on("change.mapilio_images", null);
+ }
+ dispatch14.call("change");
return this;
};
drawImages.supported = function() {
return !!getService();
};
+ drawImages.rendered = function(zoom) {
+ return zoom >= minZoom4;
+ };
init2();
return drawImages;
}
// modules/svg/osm.js
- function svgOsm(projection2, context, dispatch10) {
+ function svgOsm(projection2, context, dispatch14) {
var enabled = true;
function drawOsm(selection2) {
- selection2.selectAll(".layer-osm").data(["covered", "areas", "lines", "points", "labels"]).enter().append("g").attr("class", function(d) {
- return "layer-osm " + d;
+ selection2.selectAll(".layer-osm").data(["covered", "areas", "lines", "points", "labels"]).enter().append("g").attr("class", function(d2) {
+ return "layer-osm " + d2;
});
- selection2.selectAll(".layer-osm.points").selectAll(".points-group").data(["points", "midpoints", "vertices", "turns"]).enter().append("g").attr("class", function(d) {
- return "points-group " + d;
+ selection2.selectAll(".layer-osm.points").selectAll(".points-group").data(["points", "midpoints", "vertices", "turns"]).enter().append("g").attr("class", function(d2) {
+ return "points-group " + d2;
});
}
function showLayer() {
var layer = context.surface().selectAll(".data-layer.osm");
layer.interrupt();
layer.classed("disabled", false).style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", function() {
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function hideLayer() {
layer.interrupt();
layer.transition().duration(250).style("opacity", 0).on("end interrupt", function() {
layer.classed("disabled", true);
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
drawOsm.enabled = function(val) {
} else {
hideLayer();
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
return drawOsm;
// modules/svg/notes.js
var _notesEnabled = false;
var _osmService;
- function svgNotes(projection2, context, dispatch10) {
- if (!dispatch10) {
- dispatch10 = dispatch_default("change");
+ function svgNotes(projection2, context, dispatch14) {
+ if (!dispatch14) {
+ dispatch14 = dispatch_default("change");
}
var throttledRedraw = throttle_default(function() {
- dispatch10.call("change");
+ dispatch14.call("change");
}, 1e3);
- var minZoom3 = 12;
+ var minZoom4 = 12;
var touchLayer = select_default2(null);
var drawLayer = select_default2(null);
var _notesVisible = false;
function layerOn() {
editOn();
drawLayer.style("opacity", 0).transition().duration(250).style("opacity", 1).on("end interrupt", function() {
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function layerOff() {
touchLayer.selectAll(".note").remove();
drawLayer.transition().duration(250).style("opacity", 0).on("end interrupt", function() {
editOff();
- dispatch10.call("change");
+ dispatch14.call("change");
});
}
function updateMarkers() {
var selectedID = context.selectedNoteID();
var data = service ? service.notes(projection2) : [];
var getTransform = svgPointTransform(projection2);
- var notes = drawLayer.selectAll(".note").data(data, function(d) {
- return d.status + d.id;
+ var notes = drawLayer.selectAll(".note").data(data, function(d2) {
+ return d2.status + d2.id;
});
notes.exit().remove();
- var notesEnter = notes.enter().append("g").attr("class", function(d) {
- return "note note-" + d.id + " " + d.status;
- }).classed("new", function(d) {
- return d.id < 0;
+ var notesEnter = notes.enter().append("g").attr("class", function(d2) {
+ return "note note-" + d2.id + " " + d2.status;
+ }).classed("new", function(d2) {
+ return d2.id < 0;
});
notesEnter.append("ellipse").attr("cx", 0.5).attr("cy", 1).attr("rx", 6.5).attr("ry", 3).attr("class", "stroke");
notesEnter.append("path").call(markerPath, "shadow");
notesEnter.append("use").attr("class", "note-fill").attr("width", "20px").attr("height", "20px").attr("x", "-8px").attr("y", "-22px").attr("xlink:href", "#iD-icon-note");
- notesEnter.selectAll(".icon-annotation").data(function(d) {
- return [d];
- }).enter().append("use").attr("class", "icon-annotation").attr("width", "10px").attr("height", "10px").attr("x", "-3px").attr("y", "-19px").attr("xlink:href", function(d) {
- if (d.id < 0)
+ notesEnter.selectAll(".icon-annotation").data(function(d2) {
+ return [d2];
+ }).enter().append("use").attr("class", "icon-annotation").attr("width", "10px").attr("height", "10px").attr("x", "-3px").attr("y", "-19px").attr("xlink:href", function(d2) {
+ if (d2.id < 0)
return "#iD-icon-plus";
- if (d.status === "open")
+ if (d2.status === "open")
return "#iD-icon-close";
return "#iD-icon-apply";
});
- notes.merge(notesEnter).sort(sortY).classed("selected", function(d) {
+ notes.merge(notesEnter).sort(sortY).classed("selected", function(d2) {
var mode = context.mode();
var isMoving = mode && mode.id === "drag-note";
- return !isMoving && d.id === selectedID;
+ return !isMoving && d2.id === selectedID;
}).attr("transform", getTransform);
if (touchLayer.empty())
return;
var fillClass = context.getDebug("target") ? "pink " : "nocolor ";
- var targets = touchLayer.selectAll(".note").data(data, function(d) {
- return d.id;
+ var targets = touchLayer.selectAll(".note").data(data, function(d2) {
+ return d2.id;
});
targets.exit().remove();
- targets.enter().append("rect").attr("width", "20px").attr("height", "20px").attr("x", "-8px").attr("y", "-22px").merge(targets).sort(sortY).attr("class", function(d) {
- var newClass = d.id < 0 ? "new" : "";
- return "note target note-" + d.id + " " + fillClass + newClass;
+ targets.enter().append("rect").attr("width", "20px").attr("height", "20px").attr("x", "-8px").attr("y", "-22px").merge(targets).sort(sortY).attr("class", function(d2) {
+ var newClass = d2.id < 0 ? "new" : "";
+ return "note target note-" + d2.id + " " + fillClass + newClass;
}).attr("transform", getTransform);
- function sortY(a, b) {
- if (a.id === selectedID)
+ function sortY(a2, b2) {
+ if (a2.id === selectedID)
return 1;
- if (b.id === selectedID)
+ if (b2.id === selectedID)
return -1;
- return b.loc[1] - a.loc[1];
+ return b2.loc[1] - a2.loc[1];
}
}
function drawNotes(selection2) {
drawLayer.exit().remove();
drawLayer = drawLayer.enter().append("g").attr("class", "layer-notes").style("display", _notesEnabled ? "block" : "none").merge(drawLayer);
if (_notesEnabled) {
- if (service && ~~context.map().zoom() >= minZoom3) {
+ if (service && ~~context.map().zoom() >= minZoom4) {
editOn();
service.loadNotes(projection2);
updateMarkers();
context.enter(modeBrowse(context));
}
}
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
return drawNotes;
// modules/svg/touch.js
function svgTouch() {
function drawTouch(selection2) {
- selection2.selectAll(".layer-touch").data(["areas", "lines", "points", "turns", "markers"]).enter().append("g").attr("class", function(d) {
- return "layer-touch " + d;
+ selection2.selectAll(".layer-touch").data(["areas", "lines", "points", "turns", "markers"]).enter().append("g").attr("class", function(d2) {
+ return "layer-touch " + d2;
});
}
return drawTouch;
// modules/svg/layers.js
function svgLayers(projection2, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var svg2 = select_default2(null);
var _layers = [
- { id: "osm", layer: svgOsm(projection2, context, dispatch10) },
- { id: "notes", layer: svgNotes(projection2, context, dispatch10) },
- { id: "data", layer: svgData(projection2, context, dispatch10) },
- { id: "keepRight", layer: svgKeepRight(projection2, context, dispatch10) },
- { id: "improveOSM", layer: svgImproveOSM(projection2, context, dispatch10) },
- { id: "osmose", layer: svgOsmose(projection2, context, dispatch10) },
- { id: "streetside", layer: svgStreetside(projection2, context, dispatch10) },
- { id: "mapillary", layer: svgMapillaryImages(projection2, context, dispatch10) },
- { id: "mapillary-position", layer: svgMapillaryPosition(projection2, context, dispatch10) },
- { id: "mapillary-map-features", layer: svgMapillaryMapFeatures(projection2, context, dispatch10) },
- { id: "mapillary-signs", layer: svgMapillarySigns(projection2, context, dispatch10) },
- { id: "kartaview", layer: svgKartaviewImages(projection2, context, dispatch10) },
- { id: "debug", layer: svgDebug(projection2, context, dispatch10) },
- { id: "geolocate", layer: svgGeolocate(projection2, context, dispatch10) },
- { id: "touch", layer: svgTouch(projection2, context, dispatch10) }
+ { id: "osm", layer: svgOsm(projection2, context, dispatch14) },
+ { id: "notes", layer: svgNotes(projection2, context, dispatch14) },
+ { id: "data", layer: svgData(projection2, context, dispatch14) },
+ { id: "keepRight", layer: svgKeepRight(projection2, context, dispatch14) },
+ { id: "improveOSM", layer: svgImproveOSM(projection2, context, dispatch14) },
+ { id: "osmose", layer: svgOsmose(projection2, context, dispatch14) },
+ { id: "streetside", layer: svgStreetside(projection2, context, dispatch14) },
+ { id: "mapillary", layer: svgMapillaryImages(projection2, context, dispatch14) },
+ { id: "mapillary-position", layer: svgMapillaryPosition(projection2, context, dispatch14) },
+ { id: "mapillary-map-features", layer: svgMapillaryMapFeatures(projection2, context, dispatch14) },
+ { id: "mapillary-signs", layer: svgMapillarySigns(projection2, context, dispatch14) },
+ { id: "kartaview", layer: svgKartaviewImages(projection2, context, dispatch14) },
+ { id: "mapilio", layer: svgMapilioImages(projection2, context, dispatch14) },
+ { id: "vegbilder", layer: svgVegbilder(projection2, context, dispatch14) },
+ { id: "local-photos", layer: svgLocalPhotos(projection2, context, dispatch14) },
+ { id: "debug", layer: svgDebug(projection2, context, dispatch14) },
+ { id: "geolocate", layer: svgGeolocate(projection2, context, dispatch14) },
+ { id: "touch", layer: svgTouch(projection2, context, dispatch14) }
];
function drawLayers(selection2) {
svg2 = selection2.selectAll(".surface").data([0]);
defs.enter().append("defs").attr("class", "surface-defs");
var groups = svg2.selectAll(".data-layer").data(_layers);
groups.exit().remove();
- groups.enter().append("g").attr("class", function(d) {
- return "data-layer " + d.id;
- }).merge(groups).each(function(d) {
- select_default2(this).call(d.layer);
+ groups.enter().append("g").attr("class", function(d2) {
+ return "data-layer " + d2.id;
+ }).merge(groups).each(function(d2) {
+ select_default2(this).call(d2.layer);
});
}
drawLayers.all = function() {
return _layers;
};
drawLayers.layer = function(id2) {
- var obj = _layers.find(function(o) {
- return o.id === id2;
+ var obj = _layers.find(function(o2) {
+ return o2.id === id2;
});
return obj && obj.layer;
};
drawLayers.remove = function(what) {
var arr = [].concat(what);
arr.forEach(function(id2) {
- _layers = _layers.filter(function(o) {
- return o.id !== id2;
+ _layers = _layers.filter(function(o2) {
+ return o2.id !== id2;
});
});
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawLayers.add = function(what) {
_layers.push(obj);
}
});
- dispatch10.call("change");
+ dispatch14.call("change");
return this;
};
drawLayers.dimensions = function(val) {
utilSetDimensions(svg2, val);
return this;
};
- return utilRebind(drawLayers, dispatch10, "on");
+ return utilRebind(drawLayers, dispatch14, "on");
}
// modules/svg/lines.js
data.nopes.push.apply(data.nopes, features.active);
});
var targetData = data.targets.filter(getPath);
- var targets = selection2.selectAll(".line.target-allowed").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(targetData, function key(d) {
- return d.id;
+ var targets = selection2.selectAll(".line.target-allowed").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(targetData, function key(d2) {
+ return d2.id;
});
targets.exit().remove();
- var segmentWasEdited = function(d) {
- var wayID = d.properties.entity.id;
+ var segmentWasEdited = function(d2) {
+ var wayID = d2.properties.entity.id;
if (!base.entities[wayID] || !(0, import_fast_deep_equal6.default)(graph.entities[wayID].nodes, base.entities[wayID].nodes)) {
return false;
}
- return d.properties.nodes.some(function(n2) {
- return !base.entities[n2.id] || !(0, import_fast_deep_equal6.default)(graph.entities[n2.id].loc, base.entities[n2.id].loc);
+ return d2.properties.nodes.some(function(n3) {
+ return !base.entities[n3.id] || !(0, import_fast_deep_equal6.default)(graph.entities[n3.id].loc, base.entities[n3.id].loc);
});
};
- targets.enter().append("path").merge(targets).attr("d", getPath).attr("class", function(d) {
- return "way line target target-allowed " + targetClass + d.id;
+ targets.enter().append("path").merge(targets).attr("d", getPath).attr("class", function(d2) {
+ return "way line target target-allowed " + targetClass + d2.id;
}).classed("segment-edited", segmentWasEdited);
var nopeData = data.nopes.filter(getPath);
- var nopes = selection2.selectAll(".line.target-nope").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(nopeData, function key(d) {
- return d.id;
+ var nopes = selection2.selectAll(".line.target-nope").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(nopeData, function key(d2) {
+ return d2.id;
});
nopes.exit().remove();
- nopes.enter().append("path").merge(nopes).attr("d", getPath).attr("class", function(d) {
- return "way line target target-nope " + nopeClass + d.id;
+ nopes.enter().append("path").merge(nopes).attr("d", getPath).attr("class", function(d2) {
+ return "way line target target-nope " + nopeClass + d2.id;
}).classed("segment-edited", segmentWasEdited);
}
function drawLines(selection2, graph, entities, filter2) {
var base = context.history().base();
- function waystack(a, b) {
+ function waystack(a2, b2) {
var selected = context.selectedIDs();
- var scoreA = selected.indexOf(a.id) !== -1 ? 20 : 0;
- var scoreB = selected.indexOf(b.id) !== -1 ? 20 : 0;
- if (a.tags.highway) {
- scoreA -= highway_stack[a.tags.highway];
+ var scoreA = selected.indexOf(a2.id) !== -1 ? 20 : 0;
+ var scoreB = selected.indexOf(b2.id) !== -1 ? 20 : 0;
+ if (a2.tags.highway) {
+ scoreA -= highway_stack[a2.tags.highway];
}
- if (b.tags.highway) {
- scoreB -= highway_stack[b.tags.highway];
+ if (b2.tags.highway) {
+ scoreB -= highway_stack[b2.tags.highway];
}
return scoreA - scoreB;
}
var selectedClass = !isDrawing && isSelected ? "selected " : "";
var lines = selection3.selectAll("path").filter(filter2).data(getPathData(isSelected), osmEntity.key);
lines.exit().remove();
- lines.enter().append("path").attr("class", function(d) {
+ lines.enter().append("path").attr("class", function(d2) {
var prefix = "way line";
- if (!d.hasInterestingTags()) {
- var parentRelations = graph.parentRelations(d);
+ if (!d2.hasInterestingTags()) {
+ var parentRelations = graph.parentRelations(d2);
var parentMultipolygons = parentRelations.filter(function(relation) {
return relation.isMultipolygon();
});
prefix = "relation area";
}
}
- var oldMPClass = oldMultiPolygonOuters[d.id] ? "old-multipolygon " : "";
- return prefix + " " + klass + " " + selectedClass + oldMPClass + d.id;
- }).classed("added", function(d) {
- return !base.entities[d.id];
- }).classed("geometry-edited", function(d) {
- return graph.entities[d.id] && base.entities[d.id] && !(0, import_fast_deep_equal6.default)(graph.entities[d.id].nodes, base.entities[d.id].nodes);
- }).classed("retagged", function(d) {
- return graph.entities[d.id] && base.entities[d.id] && !(0, import_fast_deep_equal6.default)(graph.entities[d.id].tags, base.entities[d.id].tags);
+ var oldMPClass = oldMultiPolygonOuters[d2.id] ? "old-multipolygon " : "";
+ return prefix + " " + klass + " " + selectedClass + oldMPClass + d2.id;
+ }).classed("added", function(d2) {
+ return !base.entities[d2.id];
+ }).classed("geometry-edited", function(d2) {
+ return graph.entities[d2.id] && base.entities[d2.id] && !(0, import_fast_deep_equal6.default)(graph.entities[d2.id].nodes, base.entities[d2.id].nodes);
+ }).classed("retagged", function(d2) {
+ return graph.entities[d2.id] && base.entities[d2.id] && !(0, import_fast_deep_equal6.default)(graph.entities[d2.id].tags, base.entities[d2.id].tags);
}).call(svgTagClasses()).merge(lines).sort(waystack).attr("d", getPath).call(svgTagClasses().tags(svgRelationMemberTags(graph)));
return selection3;
}
return function() {
var layer = this.parentNode.__data__;
var data = pathdata[layer] || [];
- return data.filter(function(d) {
+ return data.filter(function(d2) {
if (isSelected) {
- return context.selectedIDs().indexOf(d.id) !== -1;
+ return context.selectedIDs().indexOf(d2.id) !== -1;
} else {
- return context.selectedIDs().indexOf(d.id) === -1;
+ return context.selectedIDs().indexOf(d2.id) === -1;
}
});
};
function data() {
return groupdata[this.parentNode.__data__] || [];
},
- function key(d) {
- return [d.id, d.index];
+ function key(d2) {
+ return [d2.id, d2.index];
}
);
markers.exit().remove();
- markers = markers.enter().append("path").attr("class", pathclass).merge(markers).attr("marker-mid", marker).attr("d", function(d) {
- return d.d;
+ markers = markers.enter().append("path").attr("class", pathclass).merge(markers).attr("marker-mid", marker).attr("d", function(d2) {
+ return d2.d;
});
if (detected.ie) {
markers.each(function() {
var onewaydata = {};
var sideddata = {};
var oldMultiPolygonOuters = {};
- for (var i2 = 0; i2 < entities.length; i2++) {
- var entity = entities[i2];
+ for (var i3 = 0; i3 < entities.length; i3++) {
+ var entity = entities[i3];
var outer = osmOldMultipolygonOuterMember(entity, graph);
if (outer) {
ways.push(entity.mergeTags(outer.tags));
var pathdata = utilArrayGroupBy(ways, function(way) {
return way.layer();
});
- Object.keys(pathdata).forEach(function(k) {
- var v = pathdata[k];
- var onewayArr = v.filter(function(d) {
- return d.isOneWay();
+ Object.keys(pathdata).forEach(function(k2) {
+ var v2 = pathdata[k2];
+ var onewayArr = v2.filter(function(d2) {
+ return d2.isOneWay();
});
var onewaySegments = svgMarkerSegments(
projection2,
return entity2.tags.oneway === "reversible" || entity2.tags.oneway === "alternating";
}
);
- onewaydata[k] = utilArrayFlatten(onewayArr.map(onewaySegments));
- var sidedArr = v.filter(function(d) {
- return d.isSided();
+ onewaydata[k2] = utilArrayFlatten(onewayArr.map(onewaySegments));
+ var sidedArr = v2.filter(function(d2) {
+ return d2.isSided();
});
var sidedSegments = svgMarkerSegments(
projection2,
return false;
}
);
- sideddata[k] = utilArrayFlatten(sidedArr.map(sidedSegments));
+ sideddata[k2] = utilArrayFlatten(sidedArr.map(sidedSegments));
});
var covered = selection2.selectAll(".layer-osm.covered");
var uncovered = selection2.selectAll(".layer-osm.lines");
[covered, uncovered].forEach(function(selection3) {
var range3 = selection3 === covered ? range(-10, 0) : range(0, 11);
var layergroup = selection3.selectAll("g.layergroup").data(range3);
- layergroup = layergroup.enter().append("g").attr("class", function(d) {
- return "layergroup layer" + String(d);
+ layergroup = layergroup.enter().append("g").attr("class", function(d2) {
+ return "layergroup layer" + String(d2);
}).merge(layergroup);
- layergroup.selectAll("g.linegroup").data(["shadow", "casing", "stroke", "shadow-highlighted", "casing-highlighted", "stroke-highlighted"]).enter().append("g").attr("class", function(d) {
- return "linegroup line-" + d;
+ layergroup.selectAll("g.linegroup").data(["shadow", "casing", "stroke", "shadow-highlighted", "casing-highlighted", "stroke-highlighted"]).enter().append("g").attr("class", function(d2) {
+ return "linegroup line-" + d2;
});
layergroup.selectAll("g.line-shadow").call(drawLineGroup, "shadow", false);
layergroup.selectAll("g.line-casing").call(drawLineGroup, "casing", false);
"sided",
"sidedgroup",
sideddata,
- function marker(d) {
- var category = graph.entity(d.id).sidednessIdentifier();
+ function marker(d2) {
+ var category = graph.entity(d2.id).sidednessIdentifier();
return "url(#ideditor-sided-marker-" + category + ")";
}
);
}
};
});
- var targets = selection2.selectAll(".midpoint.target").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(data, function key(d) {
- return d.id;
+ var targets = selection2.selectAll(".midpoint.target").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(data, function key(d2) {
+ return d2.id;
});
targets.exit().remove();
- targets.enter().append("circle").attr("r", targetRadius).merge(targets).attr("class", function(d) {
- return "node midpoint target " + fillClass + d.id;
+ targets.enter().append("circle").attr("r", targetRadius).merge(targets).attr("class", function(d2) {
+ return "node midpoint target " + fillClass + d2.id;
}).attr("transform", getTransform);
}
function drawMidpoints(selection2, graph, entities, filter2, extent) {
}
var poly = extent.polygon();
var midpoints = {};
- for (var i2 = 0; i2 < entities.length; i2++) {
- var entity = entities[i2];
+ for (var i3 = 0; i3 < entities.length; i3++) {
+ var entity = entities[i3];
if (entity.type !== "way")
continue;
if (!filter2(entity))
if (context.selectedIDs().indexOf(entity.id) < 0)
continue;
var nodes = graph.childNodes(entity);
- for (var j2 = 0; j2 < nodes.length - 1; j2++) {
- var a = nodes[j2];
- var b = nodes[j2 + 1];
- var id2 = [a.id, b.id].sort().join("-");
+ for (var j3 = 0; j3 < nodes.length - 1; j3++) {
+ var a2 = nodes[j3];
+ var b2 = nodes[j3 + 1];
+ var id2 = [a2.id, b2.id].sort().join("-");
if (midpoints[id2]) {
midpoints[id2].parents.push(entity);
- } else if (geoVecLength(projection2(a.loc), projection2(b.loc)) > 40) {
- var point2 = geoVecInterp(a.loc, b.loc, 0.5);
+ } else if (geoVecLength(projection2(a2.loc), projection2(b2.loc)) > 40) {
+ var point2 = geoVecInterp(a2.loc, b2.loc, 0.5);
var loc = null;
if (extent.intersects(point2)) {
loc = point2;
} else {
- for (var k = 0; k < 4; k++) {
- point2 = geoLineIntersection([a.loc, b.loc], [poly[k], poly[k + 1]]);
- if (point2 && geoVecLength(projection2(a.loc), projection2(point2)) > 20 && geoVecLength(projection2(b.loc), projection2(point2)) > 20) {
+ for (var k2 = 0; k2 < 4; k2++) {
+ point2 = geoLineIntersection([a2.loc, b2.loc], [poly[k2], poly[k2 + 1]]);
+ if (point2 && geoVecLength(projection2(a2.loc), projection2(point2)) > 20 && geoVecLength(projection2(b2.loc), projection2(point2)) > 20) {
loc = point2;
break;
}
type: "midpoint",
id: id2,
loc,
- edge: [a.id, b.id],
+ edge: [a2.id, b2.id],
parents: [entity]
};
}
}
}
}
- function midpointFilter(d) {
- if (midpoints[d.id])
+ function midpointFilter(d2) {
+ if (midpoints[d2.id])
return true;
- for (var i3 = 0; i3 < d.parents.length; i3++) {
- if (filter2(d.parents[i3])) {
+ for (var i4 = 0; i4 < d2.parents.length; i4++) {
+ if (filter2(d2.parents[i4])) {
return true;
}
}
return false;
}
- var groups = drawLayer.selectAll(".midpoint").filter(midpointFilter).data(Object.values(midpoints), function(d) {
- return d.id;
+ var groups = drawLayer.selectAll(".midpoint").filter(midpointFilter).data(Object.values(midpoints), function(d2) {
+ return d2.id;
});
groups.exit().remove();
var enter = groups.enter().insert("g", ":first-child").attr("class", "midpoint");
enter.append("polygon").attr("points", "-6,8 10,0 -6,-8").attr("class", "shadow");
enter.append("polygon").attr("points", "-3,4 5,0 -3,-4").attr("class", "fill");
- groups = groups.merge(enter).attr("transform", function(d) {
+ groups = groups.merge(enter).attr("transform", function(d2) {
var translate = svgPointTransform(projection2);
- var a2 = graph.entity(d.edge[0]);
- var b2 = graph.entity(d.edge[1]);
- var angle2 = geoAngle(a2, b2, projection2) * (180 / Math.PI);
- return translate(d) + " rotate(" + angle2 + ")";
+ var a3 = graph.entity(d2.edge[0]);
+ var b3 = graph.entity(d2.edge[1]);
+ var angle2 = geoAngle(a3, b3, projection2) * (180 / Math.PI);
+ return translate(d2) + " rotate(" + angle2 + ")";
}).call(svgTagClasses().tags(
- function(d) {
- return d.parents[0].tags;
+ function(d2) {
+ return d2.parents[0].tags;
}
));
groups.select("polygon.shadow");
function markerPath(selection2, klass) {
selection2.attr("class", klass).attr("transform", "translate(-8, -23)").attr("d", "M 17,8 C 17,13 11,21 8.5,23.5 C 6,21 0,13 0,8 C 0,4 4,-0.5 8.5,-0.5 C 13,-0.5 17,4 17,8 z");
}
- function sortY(a, b) {
- return b.loc[1] - a.loc[1];
+ function sortY(a2, b2) {
+ return b2.loc[1] - a2.loc[1];
}
- function fastEntityKey(d) {
+ function fastEntityKey(d2) {
var mode = context.mode();
var isMoving = mode && /^(add|draw|drag|move|rotate)/.test(mode.id);
- return isMoving ? d.id : osmEntity.key(d);
+ return isMoving ? d2.id : osmEntity.key(d2);
}
function drawTargets(selection2, graph, entities, filter2) {
var fillClass = context.getDebug("target") ? "pink " : "nocolor ";
geometry: node.asGeoJSON()
});
});
- var targets = selection2.selectAll(".point.target").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(data, function key(d) {
- return d.id;
+ var targets = selection2.selectAll(".point.target").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(data, function key(d2) {
+ return d2.id;
});
targets.exit().remove();
- targets.enter().append("rect").attr("x", -10).attr("y", -26).attr("width", 20).attr("height", 30).merge(targets).attr("class", function(d) {
- return "node point target " + fillClass + d.id;
+ targets.enter().append("rect").attr("x", -10).attr("y", -26).attr("width", 20).attr("height", 30).merge(targets).attr("class", function(d2) {
+ return "node point target " + fillClass + d2.id;
}).attr("transform", getTransform);
}
function drawPoints(selection2, graph, entities, filter2) {
var touchLayer = selection2.selectAll(".layer-touch.points");
var groups = drawLayer.selectAll("g.point").filter(filter2).data(points, fastEntityKey);
groups.exit().remove();
- var enter = groups.enter().append("g").attr("class", function(d) {
- return "node point " + d.id;
+ var enter = groups.enter().append("g").attr("class", function(d2) {
+ return "node point " + d2.id;
}).order();
enter.append("path").call(markerPath, "shadow");
enter.append("ellipse").attr("cx", 0.5).attr("cy", 1).attr("rx", 6.5).attr("ry", 3).attr("class", "stroke");
enter.append("path").call(markerPath, "stroke");
enter.append("use").attr("transform", "translate(-5.5, -20)").attr("class", "icon").attr("width", "12px").attr("height", "12px");
- groups = groups.merge(enter).attr("transform", svgPointTransform(projection2)).classed("added", function(d) {
- return !base.entities[d.id];
- }).classed("moved", function(d) {
- return base.entities[d.id] && !(0, import_fast_deep_equal7.default)(graph.entities[d.id].loc, base.entities[d.id].loc);
- }).classed("retagged", function(d) {
- return base.entities[d.id] && !(0, import_fast_deep_equal7.default)(graph.entities[d.id].tags, base.entities[d.id].tags);
+ groups = groups.merge(enter).attr("transform", svgPointTransform(projection2)).classed("added", function(d2) {
+ return !base.entities[d2.id];
+ }).classed("moved", function(d2) {
+ return base.entities[d2.id] && !(0, import_fast_deep_equal7.default)(graph.entities[d2.id].loc, base.entities[d2.id].loc);
+ }).classed("retagged", function(d2) {
+ return base.entities[d2.id] && !(0, import_fast_deep_equal7.default)(graph.entities[d2.id].tags, base.entities[d2.id].tags);
}).call(svgTagClasses());
groups.select(".shadow");
groups.select(".stroke");
// modules/svg/turns.js
function svgTurns(projection2, context) {
function icon2(turn) {
- var u = turn.u ? "-u" : "";
+ var u2 = turn.u ? "-u" : "";
if (turn.no)
- return "#iD-turn-no" + u;
+ return "#iD-turn-no" + u2;
if (turn.only)
- return "#iD-turn-only" + u;
- return "#iD-turn-yes" + u;
+ return "#iD-turn-only" + u2;
+ return "#iD-turn-yes" + u2;
}
function drawTurns(selection2, graph, turns) {
- function turnTransform(d) {
+ function turnTransform(d2) {
var pxRadius = 50;
- var toWay = graph.entity(d.to.way);
- var toPoints = graph.childNodes(toWay).map(function(n2) {
- return n2.loc;
+ var toWay = graph.entity(d2.to.way);
+ var toPoints = graph.childNodes(toWay).map(function(n3) {
+ return n3.loc;
}).map(projection2);
var toLength = geoPathLength(toPoints);
var mid = toLength / 2;
- var toNode = graph.entity(d.to.node);
- var toVertex = graph.entity(d.to.vertex);
- var a = geoAngle(toVertex, toNode, projection2);
- var o = projection2(toVertex.loc);
- var r = d.u ? 0 : !toWay.__via ? pxRadius : Math.min(mid, pxRadius);
- return "translate(" + (r * Math.cos(a) + o[0]) + "," + (r * Math.sin(a) + o[1]) + ") rotate(" + a * 180 / Math.PI + ")";
+ var toNode = graph.entity(d2.to.node);
+ var toVertex = graph.entity(d2.to.vertex);
+ var a2 = geoAngle(toVertex, toNode, projection2);
+ var o2 = projection2(toVertex.loc);
+ var r2 = d2.u ? 0 : !toWay.__via ? pxRadius : Math.min(mid, pxRadius);
+ return "translate(" + (r2 * Math.cos(a2) + o2[0]) + "," + (r2 * Math.sin(a2) + o2[1]) + ") rotate(" + a2 * 180 / Math.PI + ")";
}
var drawLayer = selection2.selectAll(".layer-osm.points .points-group.turns");
var touchLayer = selection2.selectAll(".layer-touch.turns");
- var groups = drawLayer.selectAll("g.turn").data(turns, function(d) {
- return d.key;
+ var groups = drawLayer.selectAll("g.turn").data(turns, function(d2) {
+ return d2.key;
});
groups.exit().remove();
- var groupsEnter = groups.enter().append("g").attr("class", function(d) {
- return "turn " + d.key;
+ var groupsEnter = groups.enter().append("g").attr("class", function(d2) {
+ return "turn " + d2.key;
});
- var turnsEnter = groupsEnter.filter(function(d) {
- return !d.u;
+ var turnsEnter = groupsEnter.filter(function(d2) {
+ return !d2.u;
});
turnsEnter.append("rect").attr("transform", "translate(-22, -12)").attr("width", "44").attr("height", "24");
turnsEnter.append("use").attr("transform", "translate(-22, -12)").attr("width", "44").attr("height", "24");
- var uEnter = groupsEnter.filter(function(d) {
- return d.u;
+ var uEnter = groupsEnter.filter(function(d2) {
+ return d2.u;
});
uEnter.append("circle").attr("r", "16");
uEnter.append("use").attr("transform", "translate(-16, -16)").attr("width", "32").attr("height", "32");
- groups = groups.merge(groupsEnter).attr("opacity", function(d) {
- return d.direct === false ? "0.7" : null;
+ groups = groups.merge(groupsEnter).attr("opacity", function(d2) {
+ return d2.direct === false ? "0.7" : null;
}).attr("transform", turnTransform);
groups.select("use").attr("xlink:href", icon2);
groups.select("rect");
groups.select("circle");
var fillClass = context.getDebug("target") ? "pink " : "nocolor ";
- groups = touchLayer.selectAll("g.turn").data(turns, function(d) {
- return d.key;
+ groups = touchLayer.selectAll("g.turn").data(turns, function(d2) {
+ return d2.key;
});
groups.exit().remove();
- groupsEnter = groups.enter().append("g").attr("class", function(d) {
- return "turn " + d.key;
+ groupsEnter = groups.enter().append("g").attr("class", function(d2) {
+ return "turn " + d2.key;
});
- turnsEnter = groupsEnter.filter(function(d) {
- return !d.u;
+ turnsEnter = groupsEnter.filter(function(d2) {
+ return !d2.u;
});
turnsEnter.append("rect").attr("class", "target " + fillClass).attr("transform", "translate(-22, -12)").attr("width", "44").attr("height", "24");
- uEnter = groupsEnter.filter(function(d) {
- return d.u;
+ uEnter = groupsEnter.filter(function(d2) {
+ return d2.u;
});
uEnter.append("circle").attr("class", "target " + fillClass).attr("r", "16");
groups = groups.merge(groupsEnter).attr("transform", turnTransform);
var _currSelected = {};
var _prevSelected = {};
var _radii = {};
- function sortY(a, b) {
- return b.loc[1] - a.loc[1];
+ function sortY(a2, b2) {
+ return b2.loc[1] - a2.loc[1];
}
- function fastEntityKey(d) {
+ function fastEntityKey(d2) {
var mode = context.mode();
var isMoving = mode && /^(add|draw|drag|move|rotate)/.test(mode.id);
- return isMoving ? d.id : osmEntity.key(d);
+ return isMoving ? d2.id : osmEntity.key(d2);
}
function draw(selection2, graph, vertices, sets2, filter2) {
sets2 = sets2 || { selected: {}, important: {}, hovered: {} };
var directions = {};
var wireframe = context.surface().classed("fill-wireframe");
var zoom = geoScaleToZoom(projection2.scale());
- var z = zoom < 17 ? 0 : zoom < 18 ? 1 : 2;
+ var z2 = zoom < 17 ? 0 : zoom < 18 ? 1 : 2;
var activeID = context.activeID();
var base = context.history().base();
- function getIcon(d) {
- var entity = graph.entity(d.id);
+ function getIcon(d2) {
+ var entity = graph.entity(d2.id);
if (entity.id in icons)
return icons[entity.id];
icons[entity.id] = entity.hasInterestingTags() && _mainPresetIndex.match(entity, graph).icon;
["shadow", "stroke", "fill"].forEach(function(klass) {
var rads = radiuses[klass];
selection3.selectAll("." + klass).each(function(entity) {
- var i2 = z && getIcon(entity);
- var r = rads[i2 ? 3 : z];
+ var i3 = z2 && getIcon(entity);
+ var r2 = rads[i3 ? 3 : z2];
if (entity.id !== activeID && entity.isEndpoint(graph) && !entity.isConnected(graph)) {
- r += 1.5;
+ r2 += 1.5;
}
if (klass === "shadow") {
- _radii[entity.id] = r;
+ _radii[entity.id] = r2;
}
- select_default2(this).attr("r", r).attr("visibility", i2 && klass === "fill" ? "hidden" : null);
+ select_default2(this).attr("r", r2).attr("visibility", i3 && klass === "fill" ? "hidden" : null);
});
});
}
vertices.sort(sortY);
var groups = selection2.selectAll("g.vertex").filter(filter2).data(vertices, fastEntityKey);
groups.exit().remove();
- var enter = groups.enter().append("g").attr("class", function(d) {
- return "node vertex " + d.id;
+ var enter = groups.enter().append("g").attr("class", function(d2) {
+ return "node vertex " + d2.id;
}).order();
enter.append("circle").attr("class", "shadow");
enter.append("circle").attr("class", "stroke");
- enter.filter(function(d) {
- return d.hasInterestingTags();
+ enter.filter(function(d2) {
+ return d2.hasInterestingTags();
}).append("circle").attr("class", "fill");
- groups = groups.merge(enter).attr("transform", svgPointTransform(projection2)).classed("sibling", function(d) {
- return d.id in sets2.selected;
- }).classed("shared", function(d) {
- return graph.isShared(d);
- }).classed("endpoint", function(d) {
- return d.isEndpoint(graph);
- }).classed("added", function(d) {
- return !base.entities[d.id];
- }).classed("moved", function(d) {
- return base.entities[d.id] && !(0, import_fast_deep_equal8.default)(graph.entities[d.id].loc, base.entities[d.id].loc);
- }).classed("retagged", function(d) {
- return base.entities[d.id] && !(0, import_fast_deep_equal8.default)(graph.entities[d.id].tags, base.entities[d.id].tags);
+ groups = groups.merge(enter).attr("transform", svgPointTransform(projection2)).classed("sibling", function(d2) {
+ return d2.id in sets2.selected;
+ }).classed("shared", function(d2) {
+ return graph.isShared(d2);
+ }).classed("endpoint", function(d2) {
+ return d2.isEndpoint(graph);
+ }).classed("added", function(d2) {
+ return !base.entities[d2.id];
+ }).classed("moved", function(d2) {
+ return base.entities[d2.id] && !(0, import_fast_deep_equal8.default)(graph.entities[d2.id].loc, base.entities[d2.id].loc);
+ }).classed("retagged", function(d2) {
+ return base.entities[d2.id] && !(0, import_fast_deep_equal8.default)(graph.entities[d2.id].tags, base.entities[d2.id].tags);
}).call(updateAttributes);
- var iconUse = groups.selectAll(".icon").data(function data(d) {
- return zoom >= 17 && getIcon(d) ? [d] : [];
+ var iconUse = groups.selectAll(".icon").data(function data(d2) {
+ return zoom >= 17 && getIcon(d2) ? [d2] : [];
}, fastEntityKey);
iconUse.exit().remove();
- iconUse.enter().append("use").attr("class", "icon").attr("width", "12px").attr("height", "12px").attr("transform", "translate(-6, -6)").attr("xlink:href", function(d) {
- var picon = getIcon(d);
+ iconUse.enter().append("use").attr("class", "icon").attr("width", "12px").attr("height", "12px").attr("transform", "translate(-6, -6)").attr("xlink:href", function(d2) {
+ var picon = getIcon(d2);
return picon ? "#" + picon : "";
});
- var dgroups = groups.selectAll(".viewfieldgroup").data(function data(d) {
- return zoom >= 18 && getDirections(d) ? [d] : [];
+ var dgroups = groups.selectAll(".viewfieldgroup").data(function data(d2) {
+ return zoom >= 18 && getDirections(d2) ? [d2] : [];
}, fastEntityKey);
dgroups.exit().remove();
dgroups = dgroups.enter().insert("g", ".shadow").attr("class", "viewfieldgroup").merge(dgroups);
- var viewfields = dgroups.selectAll(".viewfield").data(getDirections, function key(d) {
- return osmEntity.key(d);
+ var viewfields = dgroups.selectAll(".viewfield").data(getDirections, function key(d2) {
+ return osmEntity.key(d2);
});
viewfields.exit().remove();
- viewfields.enter().append("path").attr("class", "viewfield").attr("d", "M0,0H0").merge(viewfields).attr("marker-start", "url(#ideditor-viewfield-marker" + (wireframe ? "-wireframe" : "") + ")").attr("transform", function(d) {
- return "rotate(" + d + ")";
+ viewfields.enter().append("path").attr("class", "viewfield").attr("d", "M0,0H0").merge(viewfields).attr("marker-start", "url(#ideditor-viewfield-marker" + (wireframe ? "-wireframe" : "") + ")").attr("transform", function(d2) {
+ return "rotate(" + d2 + ")";
});
}
function drawTargets(selection2, graph, entities, filter2) {
});
}
});
- var targets = selection2.selectAll(".vertex.target-allowed").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(data.targets, function key(d) {
- return d.id;
+ var targets = selection2.selectAll(".vertex.target-allowed").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(data.targets, function key(d2) {
+ return d2.id;
});
targets.exit().remove();
- targets.enter().append("circle").attr("r", function(d) {
- return _radii[d.id] || radiuses.shadow[3];
- }).merge(targets).attr("class", function(d) {
- return "node vertex target target-allowed " + targetClass + d.id;
+ targets.enter().append("circle").attr("r", function(d2) {
+ return _radii[d2.id] || radiuses.shadow[3];
+ }).merge(targets).attr("class", function(d2) {
+ return "node vertex target target-allowed " + targetClass + d2.id;
}).attr("transform", getTransform);
- var nopes = selection2.selectAll(".vertex.target-nope").filter(function(d) {
- return filter2(d.properties.entity);
- }).data(data.nopes, function key(d) {
- return d.id;
+ var nopes = selection2.selectAll(".vertex.target-nope").filter(function(d2) {
+ return filter2(d2.properties.entity);
+ }).data(data.nopes, function key(d2) {
+ return d2.id;
});
nopes.exit().remove();
- nopes.enter().append("circle").attr("r", function(d) {
- return _radii[d.properties.entity.id] || radiuses.shadow[3];
- }).merge(nopes).attr("class", function(d) {
- return "node vertex target target-nope " + nopeClass + d.id;
+ nopes.enter().append("circle").attr("r", function(d2) {
+ return _radii[d2.properties.entity.id] || radiuses.shadow[3];
+ }).merge(nopes).attr("class", function(d2) {
+ return "node vertex target target-nope " + nopeClass + d2.id;
}).attr("transform", getTransform);
}
function renderAsVertex(entity, graph, wireframe, zoom) {
seenIds[entity.id] = true;
var geometry = entity.geometry(graph);
if (!context.features().isHiddenFeature(entity, graph, geometry)) {
- var i2;
+ var i3;
if (entity.type === "way") {
- for (i2 = 0; i2 < entity.nodes.length; i2++) {
- var child = graph.hasEntity(entity.nodes[i2]);
+ for (i3 = 0; i3 < entity.nodes.length; i3++) {
+ var child = graph.hasEntity(entity.nodes[i3]);
if (child) {
addChildVertices(child);
}
}
} else if (entity.type === "relation") {
- for (i2 = 0; i2 < entity.members.length; i2++) {
- var member = graph.hasEntity(entity.members[i2].id);
+ for (i3 = 0; i3 < entity.members.length; i3++) {
+ var member = graph.hasEntity(entity.members[i3].id);
if (member) {
addChildVertices(member);
}
_currPersistent = {};
_radii = {};
}
- for (var i2 = 0; i2 < entities.length; i2++) {
- var entity = entities[i2];
+ for (var i3 = 0; i3 < entities.length; i3++) {
+ var entity = entities[i3];
var geometry = entity.geometry(graph);
var keep = false;
if (geometry === "point" && renderAsVertex(entity, graph, wireframe, zoom)) {
// hovered + siblings of hovered (render only in draw modes)
};
var all = Object.assign({}, isMoving ? _currHover : {}, _currSelected, _currPersistent);
- var filterRendered = function(d) {
- return d.id in _currPersistent || d.id in _currSelected || d.id in _currHover || filter2(d);
+ var filterRendered = function(d2) {
+ return d2.id in _currPersistent || d2.id in _currSelected || d2.id in _currHover || filter2(d2);
};
drawLayer.call(draw, graph, currentVisible(all), sets2, filterRendered);
- var filterTouch = function(d) {
- return isMoving ? true : filterRendered(d);
+ var filterTouch = function(d2) {
+ return isMoving ? true : filterRendered(d2);
};
touchLayer.call(drawTargets, graph, currentVisible(all), filterTouch);
function currentVisible(which) {
} else {
_currSelected = getSiblingAndChildVertices(context.selectedIDs(), graph, wireframe, zoom);
}
- var filter2 = function(d) {
- return d.id in _prevSelected;
+ var filter2 = function(d2) {
+ return d2.id in _prevSelected;
};
drawVertices(selection2, graph, Object.values(_prevSelected), filter2, extent, false);
};
} else {
_currHover = {};
}
- var filter2 = function(d) {
- return d.id in _prevHover;
+ var filter2 = function(d2) {
+ return d2.id in _prevHover;
};
drawVertices(selection2, graph, Object.values(_prevHover), filter2, extent, false);
};
return !d3_event.ctrlKey && !d3_event.button;
}
function defaultExtent2() {
- var e = this;
- if (e instanceof SVGElement) {
- e = e.ownerSVGElement || e;
- if (e.hasAttribute("viewBox")) {
- e = e.viewBox.baseVal;
- return [[e.x, e.y], [e.x + e.width, e.y + e.height]];
+ var e3 = this;
+ if (e3 instanceof SVGElement) {
+ e3 = e3.ownerSVGElement || e3;
+ if (e3.hasAttribute("viewBox")) {
+ e3 = e3.viewBox.baseVal;
+ return [[e3.x, e3.y], [e3.x + e3.width, e3.y + e3.height]];
}
- return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];
+ return [[0, 0], [e3.width.baseVal.value, e3.height.baseVal.value]];
}
- return [[0, 0], [e.clientWidth, e.clientHeight]];
+ return [[0, 0], [e3.clientWidth, e3.clientHeight]];
}
function defaultWheelDelta2(d3_event) {
return -d3_event.deltaY * (d3_event.deltaMode === 1 ? 0.05 : d3_event.deltaMode ? 1 : 2e-3);
);
}
function utilZoomPan() {
- var filter2 = defaultFilter3, extent = defaultExtent2, constrain = defaultConstrain2, wheelDelta = defaultWheelDelta2, scaleExtent = [0, Infinity], translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], interpolate = zoom_default, dispatch10 = dispatch_default("start", "zoom", "end"), _wheelDelay = 150, _transform = identity2, _activeGesture;
+ var filter2 = defaultFilter3, extent = defaultExtent2, constrain = defaultConstrain2, wheelDelta = defaultWheelDelta2, scaleExtent = [0, Infinity], translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], interpolate = zoom_default, dispatch14 = dispatch_default("start", "zoom", "end"), _wheelDelay = 150, _transform = identity2, _activeGesture;
function zoom(selection2) {
selection2.on("pointerdown.zoom", pointerdown).on("wheel.zoom", wheeled).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
select_default2(window).on("pointermove.zoompan", pointermove).on("pointerup.zoompan pointercancel.zoompan", pointerup);
});
}
};
- zoom.scaleBy = function(selection2, k, p) {
+ zoom.scaleBy = function(selection2, k2, p2) {
zoom.scaleTo(selection2, function() {
- var k0 = _transform.k, k1 = typeof k === "function" ? k.apply(this, arguments) : k;
+ var k0 = _transform.k, k1 = typeof k2 === "function" ? k2.apply(this, arguments) : k2;
return k0 * k1;
- }, p);
+ }, p2);
};
- zoom.scaleTo = function(selection2, k, p) {
+ zoom.scaleTo = function(selection2, k2, p2) {
zoom.transform(selection2, function() {
- var e = extent.apply(this, arguments), t0 = _transform, p02 = !p ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, p1 = t0.invert(p02), k1 = typeof k === "function" ? k.apply(this, arguments) : k;
- return constrain(translate(scale(t0, k1), p02, p1), e, translateExtent);
- }, p);
+ var e3 = extent.apply(this, arguments), t0 = _transform, p02 = !p2 ? centroid(e3) : typeof p2 === "function" ? p2.apply(this, arguments) : p2, p1 = t0.invert(p02), k1 = typeof k2 === "function" ? k2.apply(this, arguments) : k2;
+ return constrain(translate(scale(t0, k1), p02, p1), e3, translateExtent);
+ }, p2);
};
- zoom.translateBy = function(selection2, x, y) {
+ zoom.translateBy = function(selection2, x2, y2) {
zoom.transform(selection2, function() {
return constrain(_transform.translate(
- typeof x === "function" ? x.apply(this, arguments) : x,
- typeof y === "function" ? y.apply(this, arguments) : y
+ typeof x2 === "function" ? x2.apply(this, arguments) : x2,
+ typeof y2 === "function" ? y2.apply(this, arguments) : y2
), extent.apply(this, arguments), translateExtent);
});
};
- zoom.translateTo = function(selection2, x, y, p) {
+ zoom.translateTo = function(selection2, x2, y2, p2) {
zoom.transform(selection2, function() {
- var e = extent.apply(this, arguments), t = _transform, p02 = !p ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p;
- return constrain(identity2.translate(p02[0], p02[1]).scale(t.k).translate(
- typeof x === "function" ? -x.apply(this, arguments) : -x,
- typeof y === "function" ? -y.apply(this, arguments) : -y
- ), e, translateExtent);
- }, p);
+ var e3 = extent.apply(this, arguments), t2 = _transform, p02 = !p2 ? centroid(e3) : typeof p2 === "function" ? p2.apply(this, arguments) : p2;
+ return constrain(identity2.translate(p02[0], p02[1]).scale(t2.k).translate(
+ typeof x2 === "function" ? -x2.apply(this, arguments) : -x2,
+ typeof y2 === "function" ? -y2.apply(this, arguments) : -y2
+ ), e3, translateExtent);
+ }, p2);
};
- function scale(transform2, k) {
- k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));
- return k === transform2.k ? transform2 : new Transform(k, transform2.x, transform2.y);
+ function scale(transform2, k2) {
+ k2 = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k2));
+ return k2 === transform2.k ? transform2 : new Transform(k2, transform2.x, transform2.y);
}
function translate(transform2, p02, p1) {
- var x = p02[0] - p1[0] * transform2.k, y = p02[1] - p1[1] * transform2.k;
- return x === transform2.x && y === transform2.y ? transform2 : new Transform(transform2.k, x, y);
+ var x2 = p02[0] - p1[0] * transform2.k, y2 = p02[1] - p1[1] * transform2.k;
+ return x2 === transform2.x && y2 === transform2.y ? transform2 : new Transform(transform2.k, x2, y2);
}
function centroid(extent2) {
return [(+extent2[0][0] + +extent2[1][0]) / 2, (+extent2[0][1] + +extent2[1][1]) / 2];
}).on("interrupt.zoom end.zoom", function() {
gesture(this, arguments).end(null);
}).tween("zoom", function() {
- var that = this, args = arguments, g = gesture(that, args), e = extent.apply(that, args), p = !point2 ? centroid(e) : typeof point2 === "function" ? point2.apply(that, args) : point2, w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), a = _transform, b = typeof transform2 === "function" ? transform2.apply(that, args) : transform2, i2 = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));
- return function(t) {
- if (t === 1) {
- t = b;
+ var that = this, args = arguments, g3 = gesture(that, args), e3 = extent.apply(that, args), p2 = !point2 ? centroid(e3) : typeof point2 === "function" ? point2.apply(that, args) : point2, w2 = Math.max(e3[1][0] - e3[0][0], e3[1][1] - e3[0][1]), a2 = _transform, b2 = typeof transform2 === "function" ? transform2.apply(that, args) : transform2, i3 = interpolate(a2.invert(p2).concat(w2 / a2.k), b2.invert(p2).concat(w2 / b2.k));
+ return function(t2) {
+ if (t2 === 1) {
+ t2 = b2;
} else {
- var l = i2(t);
- var k = w / l[2];
- t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k);
+ var l2 = i3(t2);
+ var k2 = w2 / l2[2];
+ t2 = new Transform(k2, p2[0] - l2[0] * k2, p2[1] - l2[1] * k2);
}
- g.zoom(null, null, t);
+ g3.zoom(null, null, t2);
};
});
}
start: function(d3_event) {
if (++this.active === 1) {
_activeGesture = this;
- dispatch10.call("start", this, d3_event);
+ dispatch14.call("start", this, d3_event);
}
return this;
},
if (this.pointer1 && key !== "touch")
this.pointer1[1] = transform2.invert(this.pointer1[0]);
_transform = transform2;
- dispatch10.call("zoom", this, d3_event, key, transform2);
+ dispatch14.call("zoom", this, d3_event, key, transform2);
return this;
},
end: function(d3_event) {
if (--this.active === 0) {
_activeGesture = null;
- dispatch10.call("end", this, d3_event);
+ dispatch14.call("end", this, d3_event);
}
return this;
}
function wheeled(d3_event) {
if (!filter2.apply(this, arguments))
return;
- var g = gesture(this, arguments), t = _transform, k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p = utilFastMouse(this)(d3_event);
- if (g.wheel) {
- if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {
- g.mouse[1] = t.invert(g.mouse[0] = p);
+ var g3 = gesture(this, arguments), t2 = _transform, k2 = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t2.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p2 = utilFastMouse(this)(d3_event);
+ if (g3.wheel) {
+ if (g3.mouse[0][0] !== p2[0] || g3.mouse[0][1] !== p2[1]) {
+ g3.mouse[1] = t2.invert(g3.mouse[0] = p2);
}
- clearTimeout(g.wheel);
+ clearTimeout(g3.wheel);
} else {
- g.mouse = [p, t.invert(p)];
+ g3.mouse = [p2, t2.invert(p2)];
interrupt_default(this);
- g.start(d3_event);
+ g3.start(d3_event);
}
d3_event.preventDefault();
d3_event.stopImmediatePropagation();
- g.wheel = setTimeout(wheelidled, _wheelDelay);
- g.zoom(d3_event, "mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));
+ g3.wheel = setTimeout(wheelidled, _wheelDelay);
+ g3.zoom(d3_event, "mouse", constrain(translate(scale(t2, k2), g3.mouse[0], g3.mouse[1]), g3.extent, translateExtent));
function wheelidled() {
- g.wheel = null;
- g.end(d3_event);
+ g3.wheel = null;
+ g3.end(d3_event);
}
}
var _downPointerIDs = /* @__PURE__ */ new Set();
_downPointerIDs.add(d3_event.pointerId);
if (!filter2.apply(this, arguments))
return;
- var g = gesture(this, arguments, _downPointerIDs.size === 1);
+ var g3 = gesture(this, arguments, _downPointerIDs.size === 1);
var started;
d3_event.stopImmediatePropagation();
_pointerLocGetter = utilFastMouse(this);
var loc = _pointerLocGetter(d3_event);
- var p = [loc, _transform.invert(loc), d3_event.pointerId];
- if (!g.pointer0) {
- g.pointer0 = p;
+ var p2 = [loc, _transform.invert(loc), d3_event.pointerId];
+ if (!g3.pointer0) {
+ g3.pointer0 = p2;
started = true;
- } else if (!g.pointer1 && g.pointer0[2] !== p[2]) {
- g.pointer1 = p;
+ } else if (!g3.pointer1 && g3.pointer0[2] !== p2[2]) {
+ g3.pointer1 = p2;
}
if (started) {
interrupt_default(this);
- g.start(d3_event);
+ g3.start(d3_event);
}
}
function pointermove(d3_event) {
return;
if (!_activeGesture || !_pointerLocGetter)
return;
- var g = gesture(this, arguments);
- var isPointer0 = g.pointer0 && g.pointer0[2] === d3_event.pointerId;
- var isPointer1 = !isPointer0 && g.pointer1 && g.pointer1[2] === d3_event.pointerId;
+ var g3 = gesture(this, arguments);
+ var isPointer0 = g3.pointer0 && g3.pointer0[2] === d3_event.pointerId;
+ var isPointer1 = !isPointer0 && g3.pointer1 && g3.pointer1[2] === d3_event.pointerId;
if ((isPointer0 || isPointer1) && "buttons" in d3_event && !d3_event.buttons) {
- if (g.pointer0)
- _downPointerIDs.delete(g.pointer0[2]);
- if (g.pointer1)
- _downPointerIDs.delete(g.pointer1[2]);
- g.end(d3_event);
+ if (g3.pointer0)
+ _downPointerIDs.delete(g3.pointer0[2]);
+ if (g3.pointer1)
+ _downPointerIDs.delete(g3.pointer1[2]);
+ g3.end(d3_event);
return;
}
d3_event.preventDefault();
d3_event.stopImmediatePropagation();
var loc = _pointerLocGetter(d3_event);
- var t, p, l;
+ var t2, p2, l2;
if (isPointer0)
- g.pointer0[0] = loc;
+ g3.pointer0[0] = loc;
else if (isPointer1)
- g.pointer1[0] = loc;
- t = _transform;
- if (g.pointer1) {
- var p02 = g.pointer0[0], l0 = g.pointer0[1], p1 = g.pointer1[0], l1 = g.pointer1[1], dp = (dp = p1[0] - p02[0]) * dp + (dp = p1[1] - p02[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
- t = scale(t, Math.sqrt(dp / dl));
- p = [(p02[0] + p1[0]) / 2, (p02[1] + p1[1]) / 2];
- l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
- } else if (g.pointer0) {
- p = g.pointer0[0];
- l = g.pointer0[1];
+ g3.pointer1[0] = loc;
+ t2 = _transform;
+ if (g3.pointer1) {
+ var p02 = g3.pointer0[0], l0 = g3.pointer0[1], p1 = g3.pointer1[0], l1 = g3.pointer1[1], dp = (dp = p1[0] - p02[0]) * dp + (dp = p1[1] - p02[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
+ t2 = scale(t2, Math.sqrt(dp / dl));
+ p2 = [(p02[0] + p1[0]) / 2, (p02[1] + p1[1]) / 2];
+ l2 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
+ } else if (g3.pointer0) {
+ p2 = g3.pointer0[0];
+ l2 = g3.pointer0[1];
} else {
return;
}
- g.zoom(d3_event, "touch", constrain(translate(t, p, l), g.extent, translateExtent));
+ g3.zoom(d3_event, "touch", constrain(translate(t2, p2, l2), g3.extent, translateExtent));
}
function pointerup(d3_event) {
if (!_downPointerIDs.has(d3_event.pointerId))
_downPointerIDs.delete(d3_event.pointerId);
if (!_activeGesture)
return;
- var g = gesture(this, arguments);
+ var g3 = gesture(this, arguments);
d3_event.stopImmediatePropagation();
- if (g.pointer0 && g.pointer0[2] === d3_event.pointerId)
- delete g.pointer0;
- else if (g.pointer1 && g.pointer1[2] === d3_event.pointerId)
- delete g.pointer1;
- if (g.pointer1 && !g.pointer0) {
- g.pointer0 = g.pointer1;
- delete g.pointer1;
- }
- if (g.pointer0) {
- g.pointer0[1] = _transform.invert(g.pointer0[0]);
+ if (g3.pointer0 && g3.pointer0[2] === d3_event.pointerId)
+ delete g3.pointer0;
+ else if (g3.pointer1 && g3.pointer1[2] === d3_event.pointerId)
+ delete g3.pointer1;
+ if (g3.pointer1 && !g3.pointer0) {
+ g3.pointer0 = g3.pointer1;
+ delete g3.pointer1;
+ }
+ if (g3.pointer0) {
+ g3.pointer0[1] = _transform.invert(g3.pointer0[0]);
} else {
- g.end(d3_event);
+ g3.end(d3_event);
}
}
- zoom.wheelDelta = function(_) {
- return arguments.length ? (wheelDelta = utilFunctor(+_), zoom) : wheelDelta;
+ zoom.wheelDelta = function(_2) {
+ return arguments.length ? (wheelDelta = utilFunctor(+_2), zoom) : wheelDelta;
};
- zoom.filter = function(_) {
- return arguments.length ? (filter2 = utilFunctor(!!_), zoom) : filter2;
+ zoom.filter = function(_2) {
+ return arguments.length ? (filter2 = utilFunctor(!!_2), zoom) : filter2;
};
- zoom.extent = function(_) {
- return arguments.length ? (extent = utilFunctor([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;
+ zoom.extent = function(_2) {
+ return arguments.length ? (extent = utilFunctor([[+_2[0][0], +_2[0][1]], [+_2[1][0], +_2[1][1]]]), zoom) : extent;
};
- zoom.scaleExtent = function(_) {
- return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];
+ zoom.scaleExtent = function(_2) {
+ return arguments.length ? (scaleExtent[0] = +_2[0], scaleExtent[1] = +_2[1], zoom) : [scaleExtent[0], scaleExtent[1]];
};
- zoom.translateExtent = function(_) {
- return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
+ zoom.translateExtent = function(_2) {
+ return arguments.length ? (translateExtent[0][0] = +_2[0][0], translateExtent[1][0] = +_2[1][0], translateExtent[0][1] = +_2[0][1], translateExtent[1][1] = +_2[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
};
- zoom.constrain = function(_) {
- return arguments.length ? (constrain = _, zoom) : constrain;
+ zoom.constrain = function(_2) {
+ return arguments.length ? (constrain = _2, zoom) : constrain;
};
- zoom.interpolate = function(_) {
- return arguments.length ? (interpolate = _, zoom) : interpolate;
+ zoom.interpolate = function(_2) {
+ return arguments.length ? (interpolate = _2, zoom) : interpolate;
};
- zoom._transform = function(_) {
- return arguments.length ? (_transform = _, zoom) : _transform;
+ zoom._transform = function(_2) {
+ return arguments.length ? (_transform = _2, zoom) : _transform;
};
- return utilRebind(zoom, dispatch10, "on");
+ return utilRebind(zoom, dispatch14, "on");
}
// modules/util/double_up.js
function utilDoubleUp() {
- var dispatch10 = dispatch_default("doubleUp");
+ var dispatch14 = dispatch_default("doubleUp");
var _maxTimespan = 500;
var _maxDistance = 20;
var _pointer;
var loc = [d3_event.clientX, d3_event.clientY];
if (pointerIsValidFor(loc)) {
var locInThis = utilFastMouse(this)(d3_event);
- dispatch10.call("doubleUp", this, d3_event, locInThis);
+ dispatch14.call("doubleUp", this, d3_event, locInThis);
}
_pointer = void 0;
}
selection2.on("pointerdown.doubleUp", pointerdown).on("pointerup.doubleUp", pointerup);
} else {
selection2.on("dblclick.doubleUp", function(d3_event) {
- dispatch10.call("doubleUp", this, d3_event, utilFastMouse(this)(d3_event));
+ dispatch14.call("doubleUp", this, d3_event, utilFastMouse(this)(d3_event));
});
}
}
doubleUp.off = function(selection2) {
selection2.on("pointerdown.doubleUp", null).on("pointerup.doubleUp", null).on("dblclick.doubleUp", null);
};
- return utilRebind(doubleUp, dispatch10, "on");
+ return utilRebind(doubleUp, dispatch14, "on");
}
// modules/renderer/map.js
return Math.max(min3, Math.min(num, max3));
}
function rendererMap(context) {
- var dispatch10 = dispatch_default(
+ var dispatch14 = dispatch_default(
"move",
"drawn",
"crossEditableZoom",
var _pointerDown = false;
var _pointerPrefix = "PointerEvent" in window ? "pointer" : "mouse";
var _zoomerPannerFunction = "PointerEvent" in window ? utilZoomPan : zoom_default2;
- var _zoomerPanner = _zoomerPannerFunction().scaleExtent([kMin, kMax]).interpolate(value_default).filter(zoomEventFilter).on("zoom.map", zoomPan).on("start.map", function(d3_event) {
+ var _zoomerPanner = _zoomerPannerFunction().scaleExtent([kMin, kMax]).interpolate(value_default).filter(zoomEventFilter).on("zoom.map", zoomPan2).on("start.map", function(d3_event) {
_pointerDown = d3_event && (d3_event.type === "pointerdown" || d3_event.sourceEvent && d3_event.sourceEvent.type === "pointerdown");
}).on("end.map", function() {
_pointerDown = false;
if (map2.editableDataEnabled() && !_isTransformed) {
var hover = d3_event.target.__data__;
surface.call(drawVertices.drawHover, context.graph(), hover, map2.extent());
- dispatch10.call("drawn", this, { full: false });
+ dispatch14.call("drawn", this, { full: false });
}
}).on(_pointerPrefix + "out.vertices", function(d3_event) {
if (map2.editableDataEnabled() && !_isTransformed) {
var hover = d3_event.relatedTarget && d3_event.relatedTarget.__data__;
surface.call(drawVertices.drawHover, context.graph(), hover, map2.extent());
- dispatch10.call("drawn", this, { full: false });
+ dispatch14.call("drawn", this, { full: false });
}
});
var detected = utilDetect();
!select_default2(d3_event.target).classed("fill"))
return;
var zoomOut2 = d3_event.shiftKey;
- var t = projection2.transform();
- var p1 = t.invert(p02);
- t = t.scale(zoomOut2 ? 0.5 : 2);
- t.x = p02[0] - p1[0] * t.k;
- t.y = p02[1] - p1[1] * t.k;
- map2.transformEase(t);
+ var t2 = projection2.transform();
+ var p1 = t2.invert(p02);
+ t2 = t2.scale(zoomOut2 ? 0.5 : 2);
+ t2.x = p02[0] - p1[0] * t2.k;
+ t2.y = p02[1] - p1[1] * t2.k;
+ map2.transformEase(t2);
});
context.on("enter.map", function() {
if (!map2.editableDataEnabled(
}
});
var data = Object.values(selectedAndParents);
- var filter2 = function(d) {
- return d.id in selectedAndParents;
+ var filter2 = function(d2) {
+ return d2.id in selectedAndParents;
};
data = context.features().filter(data, graph);
surface.call(drawVertices.drawSelected, graph, map2.extent()).call(drawLines, graph, data, filter2).call(drawAreas, graph, data, filter2).call(drawMidpoints, graph, data, filter2, map2.trimmedExtent());
- dispatch10.call("drawn", this, { full: false });
+ dispatch14.call("drawn", this, { full: false });
scheduleRedraw();
});
map2.dimensions(utilGetDimensions(selection2));
if (d3_event.type === "mousedown") {
var hasOrphan = false;
var listeners = window.__on;
- for (var i2 = 0; i2 < listeners.length; i2++) {
- var listener = listeners[i2];
+ for (var i3 = 0; i3 < listeners.length; i3++) {
+ var listener = listeners[i3];
if (listener.name === "zoom" && listener.type === "mouseup") {
hasOrphan = true;
break;
var complete = difference.complete(map2.extent());
data = Object.values(complete).filter(Boolean);
set3 = new Set(Object.keys(complete));
- filter2 = function(d) {
- return set3.has(d.id);
+ filter2 = function(d2) {
+ return set3.has(d2.id);
};
features.clear(data);
} else {
set3 = new Set(data.map(function(entity) {
return entity.id;
}));
- filter2 = function(d) {
- return set3.has(d.id);
+ filter2 = function(d2) {
+ return set3.has(d2.id);
};
} else {
data = all;
surface.call(drawVertices.drawSelected, graph, map2.extent());
}
surface.call(drawVertices, graph, data, filter2, map2.extent(), fullRedraw).call(drawLines, graph, data, filter2).call(drawAreas, graph, data, filter2).call(drawMidpoints, graph, data, filter2, map2.trimmedExtent()).call(drawLabels, graph, data, filter2, _dimensions, fullRedraw).call(drawPoints, graph, data, filter2);
- dispatch10.call("drawn", this, { full: true });
+ dispatch14.call("drawn", this, { full: true });
}
map2.init = function() {
drawLayers = svgLayers(projection2, context);
if (mode && !allowed[mode.id]) {
context.enter(modeBrowse(context));
}
- dispatch10.call("drawn", this, { full: true });
+ dispatch14.call("drawn", this, { full: true });
}
function gestureChange(d3_event) {
- var e = d3_event;
- e.preventDefault();
+ var e3 = d3_event;
+ e3.preventDefault();
var props = {
deltaMode: 0,
// dummy values to ignore in zoomPan
deltaY: 1,
// dummy values to ignore in zoomPan
- clientX: e.clientX,
- clientY: e.clientY,
- screenX: e.screenX,
- screenY: e.screenY,
- x: e.x,
- y: e.y
+ clientX: e3.clientX,
+ clientY: e3.clientY,
+ screenX: e3.screenX,
+ screenY: e3.screenY,
+ x: e3.x,
+ y: e3.y
};
var e22 = new WheelEvent("wheel", props);
- e22._scale = e.scale;
- e22._rotation = e.rotation;
+ e22._scale = e3.scale;
+ e22._rotation = e3.rotation;
_selection.node().dispatchEvent(e22);
}
- function zoomPan(event, key, transform2) {
+ function zoomPan2(event, key, transform2) {
var source = event && event.sourceEvent || event;
var eventTransform = transform2 || event && event.transform;
- var x = eventTransform.x;
- var y = eventTransform.y;
- var k = eventTransform.k;
+ var x2 = eventTransform.x;
+ var y2 = eventTransform.y;
+ var k2 = eventTransform.k;
if (source && source.type === "wheel") {
if (_pointerDown)
return;
var detected = utilDetect();
var dX = source.deltaX;
var dY = source.deltaY;
- var x2 = x;
- var y2 = y;
- var k2 = k;
+ var x22 = x2;
+ var y22 = y2;
+ var k22 = k2;
var t0, p02, p1;
if (source.deltaMode === 1) {
var lines = Math.abs(source.deltaY);
t0 = _isTransformed ? _transformLast : _transformStart;
p02 = _getMouseCoords(source);
p1 = t0.invert(p02);
- k2 = t0.k * Math.pow(2, -dY / 500);
- k2 = clamp(k2, kMin, kMax);
- x2 = p02[0] - p1[0] * k2;
- y2 = p02[1] - p1[1] * k2;
+ k22 = t0.k * Math.pow(2, -dY / 500);
+ k22 = clamp(k22, kMin, kMax);
+ x22 = p02[0] - p1[0] * k22;
+ y22 = p02[1] - p1[1] * k22;
} else if (source._scale) {
t0 = _gestureTransformStart;
p02 = _getMouseCoords(source);
p1 = t0.invert(p02);
- k2 = t0.k * source._scale;
- k2 = clamp(k2, kMin, kMax);
- x2 = p02[0] - p1[0] * k2;
- y2 = p02[1] - p1[1] * k2;
+ k22 = t0.k * source._scale;
+ k22 = clamp(k22, kMin, kMax);
+ x22 = p02[0] - p1[0] * k22;
+ y22 = p02[1] - p1[1] * k22;
} else if (source.ctrlKey && !isInteger(dY)) {
dY *= 6;
t0 = _isTransformed ? _transformLast : _transformStart;
p02 = _getMouseCoords(source);
p1 = t0.invert(p02);
- k2 = t0.k * Math.pow(2, -dY / 500);
- k2 = clamp(k2, kMin, kMax);
- x2 = p02[0] - p1[0] * k2;
- y2 = p02[1] - p1[1] * k2;
+ k22 = t0.k * Math.pow(2, -dY / 500);
+ k22 = clamp(k22, kMin, kMax);
+ x22 = p02[0] - p1[0] * k22;
+ y22 = p02[1] - p1[1] * k22;
} else if ((source.altKey || source.shiftKey) && isInteger(dY)) {
t0 = _isTransformed ? _transformLast : _transformStart;
p02 = _getMouseCoords(source);
p1 = t0.invert(p02);
- k2 = t0.k * Math.pow(2, -dY / 500);
- k2 = clamp(k2, kMin, kMax);
- x2 = p02[0] - p1[0] * k2;
- y2 = p02[1] - p1[1] * k2;
+ k22 = t0.k * Math.pow(2, -dY / 500);
+ k22 = clamp(k22, kMin, kMax);
+ x22 = p02[0] - p1[0] * k22;
+ y22 = p02[1] - p1[1] * k22;
} else if (detected.os === "mac" && detected.browser !== "Firefox" && !source.ctrlKey && isInteger(dX) && isInteger(dY)) {
p1 = projection2.translate();
- x2 = p1[0] - dX;
- y2 = p1[1] - dY;
- k2 = projection2.scale();
- k2 = clamp(k2, kMin, kMax);
- }
- if (x2 !== x || y2 !== y || k2 !== k) {
- x = x2;
- y = y2;
- k = k2;
- eventTransform = identity2.translate(x2, y2).scale(k2);
+ x22 = p1[0] - dX;
+ y22 = p1[1] - dY;
+ k22 = projection2.scale();
+ k22 = clamp(k22, kMin, kMax);
+ }
+ if (x22 !== x2 || y22 !== y2 || k22 !== k2) {
+ x2 = x22;
+ y2 = y22;
+ k2 = k22;
+ eventTransform = identity2.translate(x22, y22).scale(k22);
if (_zoomerPanner._transform) {
_zoomerPanner._transform(eventTransform);
} else {
}
}
}
- if (_transformStart.x === x && _transformStart.y === y && _transformStart.k === k) {
+ if (_transformStart.x === x2 && _transformStart.y === y2 && _transformStart.k === k2) {
return;
}
- if (geoScaleToZoom(k, TILESIZE) < _minzoom) {
+ if (geoScaleToZoom(k2, TILESIZE) < _minzoom) {
surface.interrupt();
- dispatch10.call("hitMinZoom", this, map2);
+ dispatch14.call("hitMinZoom", this, map2);
setCenterZoom(map2.center(), context.minEditableZoom(), 0, true);
scheduleRedraw();
- dispatch10.call("move", this, map2);
+ dispatch14.call("move", this, map2);
return;
}
projection2.transform(eventTransform);
var withinEditableZoom = map2.withinEditableZoom();
if (_lastWithinEditableZoom !== withinEditableZoom) {
if (_lastWithinEditableZoom !== void 0) {
- dispatch10.call("crossEditableZoom", this, withinEditableZoom);
+ dispatch14.call("crossEditableZoom", this, withinEditableZoom);
}
_lastWithinEditableZoom = withinEditableZoom;
}
- var scale = k / _transformStart.k;
- var tX = (x / scale - _transformStart.x) * scale;
- var tY = (y / scale - _transformStart.y) * scale;
+ var scale = k2 / _transformStart.k;
+ var tX = (x2 / scale - _transformStart.x) * scale;
+ var tY = (y2 / scale - _transformStart.y) * scale;
if (context.inIntro()) {
curtainProjection.transform({
- x: x - tX,
- y: y - tY,
- k
+ x: x2 - tX,
+ y: y2 - tY,
+ k: k2
});
}
if (source) {
_transformLast = eventTransform;
utilSetTransform(supersurface, tX, tY, scale);
scheduleRedraw();
- dispatch10.call("move", this, map2);
+ dispatch14.call("move", this, map2);
function isInteger(val) {
return typeof val === "number" && isFinite(val) && Math.floor(val) === val;
}
difference = extent = void 0;
}
var zoom = map2.zoom();
- var z = String(~~zoom);
- if (surface.attr("data-zoom") !== z) {
- surface.attr("data-zoom", z);
+ var z2 = String(~~zoom);
+ if (surface.attr("data-zoom") !== z2) {
+ surface.attr("data-zoom", z2);
}
var lat = map2.center()[1];
var lowzoom = linear3().domain([-60, 0, 60]).range([17, 18.5, 17]).clamp(true);
map2.mouse = function(d3_event) {
var event = d3_event || _lastPointerEvent;
if (event) {
- var s;
- while (s = event.sourceEvent) {
- event = s;
+ var s2;
+ while (s2 = event.sourceEvent) {
+ event = s2;
}
return _getMouseCoords(event);
}
return _isTransformed;
};
function setTransform(t2, duration, force) {
- var t = projection2.transform();
- if (!force && t2.k === t.k && t2.x === t.x && t2.y === t.y)
+ var t3 = projection2.transform();
+ if (!force && t2.k === t3.k && t2.x === t3.x && t2.y === t3.y)
return false;
if (duration) {
_selection.transition().duration(duration).on("start", function() {
return true;
}
function setCenterZoom(loc2, z2, duration, force) {
- var c = map2.center();
- var z = map2.zoom();
- if (loc2[0] === c[0] && loc2[1] === c[1] && z2 === z && !force)
+ var c2 = map2.center();
+ var z3 = map2.zoom();
+ if (loc2[0] === c2[0] && loc2[1] === c2[1] && z2 === z3 && !force)
return false;
var proj = geoRawMercator().transform(projection2.transform());
var k2 = clamp(geoZoomToScale(z2, TILESIZE), kMin, kMax);
proj.scale(k2);
- var t = proj.translate();
+ var t2 = proj.translate();
var point2 = proj(loc2);
var center = pxCenter();
- t[0] += center[0] - point2[0];
- t[1] += center[1] - point2[1];
- return setTransform(identity2.translate(t[0], t[1]).scale(k2), duration, force);
+ t2[0] += center[0] - point2[0];
+ t2[1] += center[1] - point2[1];
+ return setTransform(identity2.translate(t2[0], t2[1]).scale(k2), duration, force);
}
map2.pan = function(delta, duration) {
- var t = projection2.translate();
- var k = projection2.scale();
- t[0] += delta[0];
- t[1] += delta[1];
+ var t2 = projection2.translate();
+ var k2 = projection2.scale();
+ t2[0] += delta[0];
+ t2[1] += delta[1];
if (duration) {
_selection.transition().duration(duration).on("start", function() {
map2.startEase();
- }).call(_zoomerPanner.transform, identity2.translate(t[0], t[1]).scale(k));
+ }).call(_zoomerPanner.transform, identity2.translate(t2[0], t2[1]).scale(k2));
} else {
- projection2.translate(t);
+ projection2.translate(t2);
_transformStart = projection2.transform();
_selection.call(_zoomerPanner.transform, _transformStart);
- dispatch10.call("move", this, map2);
+ dispatch14.call("move", this, map2);
immediateRedraw();
}
return map2;
return projection2.invert(pxCenter());
}
if (setCenterZoom(loc2, map2.zoom())) {
- dispatch10.call("move", this, map2);
+ dispatch14.call("move", this, map2);
}
scheduleRedraw();
return map2;
}
if (z2 < _minzoom) {
surface.interrupt();
- dispatch10.call("hitMinZoom", this, map2);
+ dispatch14.call("hitMinZoom", this, map2);
z2 = context.minEditableZoom();
}
if (setCenterZoom(map2.center(), z2)) {
- dispatch10.call("move", this, map2);
+ dispatch14.call("move", this, map2);
}
scheduleRedraw();
return map2;
};
map2.centerZoom = function(loc2, z2) {
if (setCenterZoom(loc2, z2)) {
- dispatch10.call("move", this, map2);
+ dispatch14.call("move", this, map2);
}
scheduleRedraw();
return map2;
map2.toggleHighlightEdited = function() {
surface.classed("highlight-edited", !surface.classed("highlight-edited"));
map2.pan([0, 0]);
- dispatch10.call("changeHighlighting", this);
+ dispatch14.call("changeHighlighting", this);
};
map2.areaFillOptions = ["wireframe", "partial", "full"];
map2.activeAreaFill = function(val) {
}
updateAreaFill();
map2.pan([0, 0]);
- dispatch10.call("changeAreaFill", this);
+ dispatch14.call("changeAreaFill", this);
return map2;
};
map2.toggleWireframe = function() {
map2.doubleUpHandler = function() {
return _doubleUpHandler;
};
- return utilRebind(map2, dispatch10, "on");
+ return utilRebind(map2, dispatch14, "on");
}
// modules/renderer/photos.js
function rendererPhotos(context) {
- var dispatch10 = dispatch_default("change");
- var _layerIDs = ["streetside", "mapillary", "mapillary-map-features", "mapillary-signs", "kartaview"];
+ var dispatch14 = dispatch_default("change");
+ var _layerIDs = ["streetside", "mapillary", "mapillary-map-features", "mapillary-signs", "kartaview", "mapilio", "vegbilder"];
var _allPhotoTypes = ["flat", "panoramic"];
var _shownPhotoTypes = _allPhotoTypes.slice();
var _dateFilters = ["fromDate", "toDate"];
if (window.mocha)
return;
var hash = utilStringQs(window.location.hash);
- var enabled = context.layers().all().filter(function(d) {
- return _layerIDs.indexOf(d.id) !== -1 && d.layer && d.layer.supported() && d.layer.enabled();
- }).map(function(d) {
- return d.id;
+ var enabled = context.layers().all().filter(function(d2) {
+ return _layerIDs.indexOf(d2.id) !== -1 && d2.layer && d2.layer.supported() && d2.layer.enabled();
+ }).map(function(d2) {
+ return d2.id;
});
if (enabled.length) {
hash.photo_overlay = enabled.join(",");
_fromDate = _toDate;
}
}
- dispatch10.call("change", this);
+ dispatch14.call("change", this);
if (updateUrl) {
var rangeString;
if (_fromDate || _toDate) {
if (val && typeof val === "string")
val = val.replace(/;/g, ",").split(",");
if (val) {
- val = val.map((d) => d.trim()).filter(Boolean);
+ val = val.map((d2) => d2.trim()).filter(Boolean);
if (!val.length) {
val = null;
}
}
_usernames = val;
- dispatch10.call("change", this);
+ dispatch14.call("change", this);
if (updateUrl) {
var hashString;
if (_usernames) {
return layer && layer.supported() && layer.enabled();
}
photos.shouldFilterByDate = function() {
- return showsLayer("mapillary") || showsLayer("kartaview") || showsLayer("streetside");
+ return showsLayer("mapillary") || showsLayer("kartaview") || showsLayer("streetside") || showsLayer("vegbilder");
};
photos.shouldFilterByPhotoType = function() {
- return showsLayer("mapillary") || showsLayer("streetside") && showsLayer("kartaview");
+ return showsLayer("mapillary") || showsLayer("streetside") && showsLayer("kartaview") || showsLayer("vegbilder");
};
photos.shouldFilterByUsername = function() {
return !showsLayer("mapillary") && showsLayer("kartaview") && !showsLayer("streetside");
} else {
_shownPhotoTypes.push(val);
}
- dispatch10.call("change", this);
+ dispatch14.call("change", this);
return photos;
};
photos.usernames = function() {
}
context.layers().on("change.rendererPhotos", updateStorage);
};
- return utilRebind(photos, dispatch10, "on");
+ return utilRebind(photos, dispatch14, "on");
}
// modules/ui/account.js
userLink.call(svgIcon("#iD-icon-avatar", "pre-text light"));
}
userLink.append("span").attr("class", "label").html(user.display_name);
- loginLogout.classed("hide", false).select("a").text(_t("logout")).on("click", (e) => {
- e.preventDefault();
+ loginLogout.classed("hide", false).select("a").text(_t("logout")).on("click", (e3) => {
+ e3.preventDefault();
osm.logout();
tryLogout();
});
} else {
userInfo.html("").classed("hide", true);
- loginLogout.classed("hide", false).select("a").text(_t("login")).on("click", (e) => {
- e.preventDefault();
+ loginLogout.classed("hide", false).select("a").text(_t("login")).on("click", (e3) => {
+ e3.preventDefault();
osm.authenticate();
});
}
if (!osm)
return;
const url = osm.getUrlRoot() + "/logout?referer=%2Flogin";
- const w = 600;
- const h = 550;
+ const w2 = 600;
+ const h2 = 550;
const settings = [
- ["width", w],
- ["height", h],
- ["left", window.screen.width / 2 - w / 2],
- ["top", window.screen.height / 2 - h / 2]
- ].map((x) => x.join("=")).join(",");
+ ["width", w2],
+ ["height", h2],
+ ["left", window.screen.width / 2 - w2 / 2],
+ ["top", window.screen.height / 2 - h2 / 2]
+ ].map((x2) => x2.join("=")).join(",");
window.open(url, "_blank", settings);
}
return function(selection2) {
function render(selection2, data, klass) {
let div = selection2.selectAll(`.${klass}`).data([0]);
div = div.enter().append("div").attr("class", klass).merge(div);
- let attributions = div.selectAll(".attribution").data(data, (d) => d.id);
+ let attributions = div.selectAll(".attribution").data(data, (d2) => d2.id);
attributions.exit().remove();
- attributions = attributions.enter().append("span").attr("class", "attribution").each((d, i2, nodes) => {
- let attribution = select_default2(nodes[i2]);
- if (d.terms_html) {
- attribution.html(d.terms_html);
+ attributions = attributions.enter().append("span").attr("class", "attribution").each((d2, i3, nodes) => {
+ let attribution = select_default2(nodes[i3]);
+ if (d2.terms_html) {
+ attribution.html(d2.terms_html);
return;
}
- if (d.terms_url) {
- attribution = attribution.append("a").attr("href", d.terms_url).attr("target", "_blank");
+ if (d2.terms_url) {
+ attribution = attribution.append("a").attr("href", d2.terms_url).attr("target", "_blank");
}
- const sourceID = d.id.replace(/\./g, "<TX_DOT>");
+ const sourceID = d2.id.replace(/\./g, "<TX_DOT>");
const terms_text = _t(
`imagery.${sourceID}.attribution.text`,
- { default: d.terms_text || d.id || d.name() }
+ { default: d2.terms_text || d2.id || d2.name() }
);
- if (d.icon && !d.overlay) {
- attribution.append("img").attr("class", "source-image").attr("src", d.icon);
+ if (d2.icon && !d2.overlay) {
+ attribution.append("img").attr("class", "source-image").attr("src", d2.icon);
}
attribution.append("span").attr("class", "attribution-text").text(terms_text);
}).merge(attributions);
- let copyright = attributions.selectAll(".copyright-notice").data((d) => {
- let notice = d.copyrightNotices(context.map().zoom(), context.map().extent());
+ let copyright = attributions.selectAll(".copyright-notice").data((d2) => {
+ let notice = d2.copyrightNotices(context.map().zoom(), context.map().extent());
return notice ? [notice] : [];
});
copyright.exit().remove();
function update() {
let baselayer = context.background().baseLayerSource();
_selection.call(render, baselayer ? [baselayer] : [], "base-layer-attribution");
- const z = context.map().zoom();
+ const z2 = context.map().zoom();
let overlays = context.background().overlayLayerSources() || [];
- _selection.call(render, overlays.filter((s) => s.validZoom(z)), "overlay-layer-attribution");
+ _selection.call(render, overlays.filter((s2) => s2.validZoom(z2)), "overlay-layer-attribution");
}
return function(selection2) {
_selection = selection2;
if (entity && entity.user)
users[entity.user] = true;
});
- var u = Object.keys(users), subset = u.slice(0, u.length > limit ? limit - 1 : limit);
+ var u2 = Object.keys(users), subset = u2.slice(0, u2.length > limit ? limit - 1 : limit);
wrap2.html("").call(svgIcon("#iD-icon-nearby", "pre-text light"));
var userList = select_default2(document.createElement("span"));
- userList.selectAll().data(subset).enter().append("a").attr("class", "user-link").attr("href", function(d) {
- return osm.userURL(d);
+ userList.selectAll().data(subset).enter().append("a").attr("class", "user-link").attr("href", function(d2) {
+ return osm.userURL(d2);
}).attr("target", "_blank").text(String);
- if (u.length > limit) {
+ if (u2.length > limit) {
var count = select_default2(document.createElement("span"));
- var othersNum = u.length - limit + 1;
+ var othersNum = u2.length - limit + 1;
count.append("a").attr("target", "_blank").attr("href", function() {
return osm.changesetsURL(context.map().center(), context.map().zoom());
}).text(othersNum);
} else {
wrap2.append("span").html(_t.html("contributors.list", { users: { html: userList.html() } }));
}
- if (!u.length) {
+ if (!u2.length) {
hidden = true;
wrap2.transition().style("opacity", 0);
} else if (hidden) {
tooltip.content(function() {
var heading = _heading.apply(this, arguments);
var text2 = _title.apply(this, arguments);
- var keys = _keys.apply(this, arguments);
- var headingCallback = typeof heading === "function" ? heading : (s) => s.text(heading);
- var textCallback = typeof text2 === "function" ? text2 : (s) => s.text(text2);
+ var keys2 = _keys.apply(this, arguments);
+ var headingCallback = typeof heading === "function" ? heading : (s2) => s2.text(heading);
+ var textCallback = typeof text2 === "function" ? text2 : (s2) => s2.text(text2);
return function(selection2) {
var headingSelect = selection2.selectAll(".tooltip-heading").data(heading ? [heading] : []);
headingSelect.exit().remove();
var textSelect = selection2.selectAll(".tooltip-text").data(text2 ? [text2] : []);
textSelect.exit().remove();
textSelect.enter().append("div").attr("class", "tooltip-text").merge(textSelect).text("").call(textCallback);
- var keyhintWrap = selection2.selectAll(".keyhint-wrap").data(keys && keys.length ? [0] : []);
+ var keyhintWrap = selection2.selectAll(".keyhint-wrap").data(keys2 && keys2.length ? [0] : []);
keyhintWrap.exit().remove();
var keyhintWrapEnter = keyhintWrap.enter().append("div").attr("class", "keyhint-wrap");
keyhintWrapEnter.append("span").call(_t.append("tooltip_keyhint"));
keyhintWrap = keyhintWrapEnter.merge(keyhintWrap);
- keyhintWrap.selectAll("kbd.shortcut").data(keys && keys.length ? keys : []).enter().append("kbd").attr("class", "shortcut").text(function(d) {
- return d;
+ keyhintWrap.selectAll("kbd.shortcut").data(keys2 && keys2.length ? keys2 : []).enter().append("kbd").attr("class", "shortcut").text(function(d2) {
+ return d2;
});
};
});
// modules/ui/edit_menu.js
function uiEditMenu(context) {
- var dispatch10 = dispatch_default("toggled");
+ var dispatch14 = dispatch_default("toggled");
var _menu = select_default2(null);
var _operations = [];
var _anchorLoc = [0, 0];
_menuHeight = _verticalPadding * 2 + ops.length * buttonHeight;
_menu = selection2.append("div").attr("class", "edit-menu").classed("touch-menu", isTouchMenu).style("padding", _verticalPadding + "px 0");
var buttons = _menu.selectAll(".edit-menu-item").data(ops);
- var buttonsEnter = buttons.enter().append("button").attr("class", function(d) {
- return "edit-menu-item edit-menu-item-" + d.id;
+ var buttonsEnter = buttons.enter().append("button").attr("class", function(d2) {
+ return "edit-menu-item edit-menu-item-" + d2.id;
}).style("height", buttonHeight + "px").on("click", click).on("pointerup", pointerup).on("pointerdown mousedown", function pointerdown(d3_event) {
d3_event.stopPropagation();
- }).on("mouseenter.highlight", function(d3_event, d) {
- if (!d.relatedEntityIds || select_default2(this).classed("disabled"))
+ }).on("mouseenter.highlight", function(d3_event, d2) {
+ if (!d2.relatedEntityIds || select_default2(this).classed("disabled"))
return;
- utilHighlightEntities(d.relatedEntityIds(), true, context);
- }).on("mouseleave.highlight", function(d3_event, d) {
- if (!d.relatedEntityIds)
+ utilHighlightEntities(d2.relatedEntityIds(), true, context);
+ }).on("mouseleave.highlight", function(d3_event, d2) {
+ if (!d2.relatedEntityIds)
return;
- utilHighlightEntities(d.relatedEntityIds(), false, context);
+ utilHighlightEntities(d2.relatedEntityIds(), false, context);
});
- buttonsEnter.each(function(d) {
- var tooltip = uiTooltip().heading(() => d.title).title(d.tooltip).keys([d.keys[0]]);
+ buttonsEnter.each(function(d2) {
+ var tooltip = uiTooltip().heading(() => d2.title).title(d2.tooltip).keys([d2.keys[0]]);
_tooltips.push(tooltip);
- select_default2(this).call(tooltip).append("div").attr("class", "icon-wrap").call(svgIcon(d.icon && d.icon() || "#iD-operation-" + d.id, "operation"));
+ select_default2(this).call(tooltip).append("div").attr("class", "icon-wrap").call(svgIcon(d2.icon && d2.icon() || "#iD-operation-" + d2.id, "operation"));
});
if (showLabels) {
- buttonsEnter.append("span").attr("class", "label").each(function(d) {
- select_default2(this).call(d.title);
+ buttonsEnter.append("span").attr("class", "label").each(function(d2) {
+ select_default2(this).call(d2.title);
});
}
- buttonsEnter.merge(buttons).classed("disabled", function(d) {
- return d.disabled();
+ buttonsEnter.merge(buttons).classed("disabled", function(d2) {
+ return d2.disabled();
});
updatePosition();
var initialScale = context.projection.scale();
}
lastPointerUpType = null;
}
- dispatch10.call("toggled", this, true);
+ dispatch14.call("toggled", this, true);
};
function updatePosition() {
if (!_menu || _menu.empty())
context.map().on("move.edit-menu", null).on("drawn.edit-menu", null);
_menu.remove();
_tooltips = [];
- dispatch10.call("toggled", this, false);
+ dispatch14.call("toggled", this, false);
};
editMenu.anchorLoc = function(val) {
if (!arguments.length)
_operations = val;
return editMenu;
};
- return utilRebind(editMenu, dispatch10, "on");
+ return utilRebind(editMenu, dispatch14, "on");
}
// modules/ui/feature_info.js
var features = context.features();
var stats = features.stats();
var count = 0;
- var hiddenList = features.hidden().map(function(k) {
- if (stats[k]) {
- count += stats[k];
+ var hiddenList = features.hidden().map(function(k2) {
+ if (stats[k2]) {
+ count += stats[k2];
return _t.append("inspector.title_count", {
- title: _t("feature." + k + ".description"),
- count: stats[k]
+ title: _t("feature." + k2 + ".description"),
+ count: stats[k2]
});
}
return null;
var _duration = 2e3;
var _iconName = "#iD-icon-no";
var _iconClass = "disabled";
- var _label = (s) => s.text("");
+ var _label = (s2) => s2.text("");
function flash() {
if (_flashTimer) {
_flashTimer.stop();
}, _duration);
return content;
}
- flash.duration = function(_) {
+ flash.duration = function(_2) {
if (!arguments.length)
return _duration;
- _duration = _;
+ _duration = _2;
return flash;
};
- flash.label = function(_) {
+ flash.label = function(_2) {
if (!arguments.length)
return _label;
- if (typeof _ !== "function") {
- _label = (selection2) => selection2.text(_);
+ if (typeof _2 !== "function") {
+ _label = (selection2) => selection2.text(_2);
} else {
- _label = (selection2) => selection2.text("").call(_);
+ _label = (selection2) => selection2.text("").call(_2);
}
return flash;
};
- flash.iconName = function(_) {
+ flash.iconName = function(_2) {
if (!arguments.length)
return _iconName;
- _iconName = _;
+ _iconName = _2;
return flash;
};
- flash.iconClass = function(_) {
+ flash.iconClass = function(_2) {
if (!arguments.length)
return _iconClass;
- _iconClass = _;
+ _iconClass = _2;
return flash;
};
return flash;
if (!isSupported())
return;
var detected = utilDetect();
- var keys = detected.os === "mac" ? [uiCmd("\u2303\u2318F"), "f11"] : ["f11"];
- context.keybinding().on(keys, fullScreen);
+ var keys2 = detected.os === "mac" ? [uiCmd("\u2303\u2318F"), "f11"] : ["f11"];
+ context.keybinding().on(keys2, fullScreen);
};
}
selection2.text("");
var list = selection2.append("ul").attr("class", "background-info");
list.append("li").call(_currSourceName);
- _metadataKeys.forEach(function(k) {
- if (isDG && k === "vintage")
+ _metadataKeys.forEach(function(k2) {
+ if (isDG && k2 === "vintage")
return;
- list.append("li").attr("class", "background-info-list-" + k).classed("hide", !_metadata[k]).call(_t.append("info_panels.background." + k, { suffix: ":" })).append("span").attr("class", "background-info-span-" + k).text(_metadata[k]);
+ list.append("li").attr("class", "background-info-list-" + k2).classed("hide", !_metadata[k2]).call(_t.append("info_panels.background." + k2, { suffix: ":" })).append("span").attr("class", "background-info-span-" + k2).text(_metadata[k2]);
});
debouncedGetMetadata(selection2);
var toggleTiles = context.getDebug("tile") ? "hide_tiles" : "show_tiles";
if (tile.empty())
return;
var sourceName = _currSourceName;
- var d = tile.datum();
- var zoom = d && d.length >= 3 && d[2] || Math.floor(context.map().zoom());
+ var d2 = tile.datum();
+ var zoom = d2 && d2.length >= 3 && d2[2] || Math.floor(context.map().zoom());
var center = context.map().center();
_metadata.zoom = String(zoom);
selection2.selectAll(".background-info-list-zoom").classed("hide", false).selectAll(".background-info-span-zoom").text(_metadata.zoom);
- if (!d || !d.length >= 3)
+ if (!d2 || !d2.length >= 3)
return;
- background.baseLayerSource().getMetadata(center, d, function(err, result) {
+ background.baseLayerSource().getMetadata(center, d2, function(err, result) {
if (err || _currSourceName !== sourceName)
return;
var vintage = result.vintage;
_metadata.vintage = vintage && vintage.range || _t("info_panels.background.unknown");
selection2.selectAll(".background-info-list-vintage").classed("hide", false).selectAll(".background-info-span-vintage").text(_metadata.vintage);
- _metadataKeys.forEach(function(k) {
- if (k === "zoom" || k === "vintage")
+ _metadataKeys.forEach(function(k2) {
+ if (k2 === "zoom" || k2 === "vintage")
return;
- var val = result[k];
- _metadata[k] = val;
- selection2.selectAll(".background-info-list-" + k).classed("hide", !val).selectAll(".background-info-span-" + k).text(val);
+ var val = result[k2];
+ _metadata[k2] = val;
+ selection2.selectAll(".background-info-list-" + k2).classed("hide", !val).selectAll(".background-info-span-" + k2).text(val);
});
});
}
minute: "numeric",
second: "numeric"
};
- var d = new Date(timestamp);
- if (isNaN(d.getTime()))
+ var d2 = new Date(timestamp);
+ if (isNaN(d2.getTime()))
return _t("info_panels.history.unknown");
- return d.toLocaleString(_mainLocalizer.localeCode(), options2);
+ return d2.toLocaleString(_mainLocalizer.localeCode(), options2);
}
function displayUser(selection2, userName) {
if (!userName) {
selected = [_t.html("note.note") + " " + selectedNoteID];
note = osm.getNote(selectedNoteID);
} else {
- selected = context.selectedIDs().filter(function(e) {
- return context.hasEntity(e);
+ selected = context.selectedIDs().filter(function(e3) {
+ return context.hasEntity(e3);
});
if (selected.length) {
entity = context.entity(selected[0]);
// modules/util/units.js
var OSM_PRECISION = 7;
- function displayLength(m, isImperial) {
- var d = m * (isImperial ? 3.28084 : 1);
+ function displayLength(m2, isImperial) {
+ var d2 = m2 * (isImperial ? 3.28084 : 1);
var unit2;
if (isImperial) {
- if (d >= 5280) {
- d /= 5280;
+ if (d2 >= 5280) {
+ d2 /= 5280;
unit2 = "miles";
} else {
unit2 = "feet";
}
} else {
- if (d >= 1e3) {
- d /= 1e3;
+ if (d2 >= 1e3) {
+ d2 /= 1e3;
unit2 = "kilometers";
} else {
unit2 = "meters";
}
}
return _t("units." + unit2, {
- quantity: d.toLocaleString(_mainLocalizer.localeCode(), {
+ quantity: d2.toLocaleString(_mainLocalizer.localeCode(), {
maximumSignificantDigits: 4
})
});
}
function displayArea(m2, isImperial) {
var locale2 = _mainLocalizer.localeCode();
- var d = m2 * (isImperial ? 10.7639111056 : 1);
- var d1, d2, area;
+ var d2 = m2 * (isImperial ? 10.7639111056 : 1);
+ var d1, d22, area;
var unit1 = "";
var unit2 = "";
if (isImperial) {
- if (d >= 6969600) {
- d1 = d / 27878400;
+ if (d2 >= 6969600) {
+ d1 = d2 / 27878400;
unit1 = "square_miles";
} else {
- d1 = d;
+ d1 = d2;
unit1 = "square_feet";
}
- if (d > 4356 && d < 4356e4) {
- d2 = d / 43560;
+ if (d2 > 4356 && d2 < 4356e4) {
+ d22 = d2 / 43560;
unit2 = "acres";
}
} else {
- if (d >= 25e4) {
- d1 = d / 1e6;
+ if (d2 >= 25e4) {
+ d1 = d2 / 1e6;
unit1 = "square_kilometers";
} else {
- d1 = d;
+ d1 = d2;
unit1 = "square_meters";
}
- if (d > 1e3 && d < 1e7) {
- d2 = d / 1e4;
+ if (d2 > 1e3 && d2 < 1e7) {
+ d22 = d2 / 1e4;
unit2 = "hectares";
}
}
maximumSignificantDigits: 4
})
});
- if (d2) {
+ if (d22) {
return _t("units.area_pair", {
area1: area,
area2: _t("units." + unit2, {
- quantity: d2.toLocaleString(locale2, {
+ quantity: d22.toLocaleString(locale2, {
maximumSignificantDigits: 2
})
})
return area;
}
}
- function wrap(x, min3, max3) {
- var d = max3 - min3;
- return ((x - min3) % d + d) % d + min3;
+ function wrap(x2, min3, max3) {
+ var d2 = max3 - min3;
+ return ((x2 - min3) % d2 + d2) % d2 + min3;
}
- function clamp2(x, min3, max3) {
- return Math.max(min3, Math.min(x, max3));
+ function clamp2(x2, min3, max3) {
+ return Math.max(min3, Math.min(x2, max3));
}
function displayCoordinate(deg, pos, neg) {
var locale2 = _mainLocalizer.localeCode();
// modules/ui/panels/measurement.js
function uiPanelMeasurement(context) {
- function radiansToMeters(r) {
- return r * 63710071809e-4;
+ function radiansToMeters(r2) {
+ return r2 * 63710071809e-4;
}
- function steradiansToSqmeters(r) {
- return r / (4 * Math.PI) * 510065621724e3;
+ function steradiansToSqmeters(r2) {
+ return r2 / (4 * Math.PI) * 510065621724e3;
}
function toLineString(feature3) {
if (feature3.type === "LineString")
heading = selected.length === 1 ? selected[0].id : _t.html("info_panels.selected", { n: selected.length });
if (selected.length) {
var extent = geoExtent();
- for (var i2 in selected) {
- var entity = selected[i2];
+ for (var i3 in selected) {
+ var entity = selected[i3];
extent._extend(entity.extent(graph));
geometry = entity.geometry(graph);
if (geometry === "line" || geometry === "area") {
var wasActive = ["measurement"];
var panels = {};
var active = {};
- ids.forEach(function(k) {
- if (!panels[k]) {
- panels[k] = uiInfoPanels[k](context);
- active[k] = false;
+ ids.forEach(function(k2) {
+ if (!panels[k2]) {
+ panels[k2] = uiInfoPanels[k2](context);
+ active[k2] = false;
}
});
function info(selection2) {
function redraw() {
- var activeids = ids.filter(function(k) {
- return active[k];
+ var activeids = ids.filter(function(k2) {
+ return active[k2];
}).sort();
- var containers = infoPanels.selectAll(".panel-container").data(activeids, function(k) {
- return k;
+ var containers = infoPanels.selectAll(".panel-container").data(activeids, function(k2) {
+ return k2;
});
- containers.exit().style("opacity", 1).transition().duration(200).style("opacity", 0).on("end", function(d) {
- select_default2(this).call(panels[d].off).remove();
+ containers.exit().style("opacity", 1).transition().duration(200).style("opacity", 0).on("end", function(d2) {
+ select_default2(this).call(panels[d2].off).remove();
});
- var enter = containers.enter().append("div").attr("class", function(d) {
- return "fillD2 panel-container panel-container-" + d;
+ var enter = containers.enter().append("div").attr("class", function(d2) {
+ return "fillD2 panel-container panel-container-" + d2;
});
enter.style("opacity", 0).transition().duration(200).style("opacity", 1);
var title = enter.append("div").attr("class", "panel-title fillD2");
- title.append("h3").each(function(d) {
- return panels[d].label(select_default2(this));
+ title.append("h3").each(function(d2) {
+ return panels[d2].label(select_default2(this));
});
- title.append("button").attr("class", "close").attr("title", _t("icons.close")).on("click", function(d3_event, d) {
+ title.append("button").attr("class", "close").attr("title", _t("icons.close")).on("click", function(d3_event, d2) {
d3_event.stopImmediatePropagation();
d3_event.preventDefault();
- info.toggle(d);
+ info.toggle(d2);
}).call(svgIcon("#iD-icon-close"));
- enter.append("div").attr("class", function(d) {
- return "panel-content panel-content-" + d;
+ enter.append("div").attr("class", function(d2) {
+ return "panel-content panel-content-" + d2;
});
- infoPanels.selectAll(".panel-content").each(function(d) {
- select_default2(this).call(panels[d]);
+ infoPanels.selectAll(".panel-content").each(function(d2) {
+ select_default2(this).call(panels[d2]);
});
}
info.toggle = function(which) {
- var activeids = ids.filter(function(k) {
- return active[k];
+ var activeids = ids.filter(function(k2) {
+ return active[k2];
});
if (which) {
active[which] = !active[which];
} else {
if (activeids.length) {
wasActive = activeids;
- activeids.forEach(function(k) {
- active[k] = false;
+ activeids.forEach(function(k2) {
+ active[k2] = false;
});
} else {
- wasActive.forEach(function(k) {
- active[k] = true;
+ wasActive.forEach(function(k2) {
+ active[k2] = true;
});
}
}
d3_event.preventDefault();
info.toggle();
});
- ids.forEach(function(k) {
- var key = _t("info_panels." + k + ".key", { default: null });
+ ids.forEach(function(k2) {
+ var key = _t("info_panels." + k2 + ".key", { default: null });
if (!key)
return;
context.keybinding().on(uiCmd("\u2318\u21E7" + key), function(d3_event) {
d3_event.stopImmediatePropagation();
d3_event.preventDefault();
- info.toggle(k);
+ info.toggle(k2);
});
});
}
"subdistrict",
"suburb"
];
- addrTags.forEach(function(k) {
- var key2 = "intro.graph." + k;
- var tag = "addr:" + k;
+ addrTags.forEach(function(k2) {
+ var key2 = "intro.graph." + k2;
+ var tag = "addr:" + k2;
var val = obj.tags && obj.tags[tag];
var str2 = _t(key2, { default: val });
if (str2) {
var threshold = 15;
var lowerBound = Math.cos((90 - threshold) * Math.PI / 180);
var upperBound = Math.cos(threshold * Math.PI / 180);
- for (var i2 = 0; i2 < points.length; i2++) {
- var a = points[(i2 - 1 + points.length) % points.length];
- var origin = points[i2];
- var b = points[(i2 + 1) % points.length];
- var dotp = geoVecNormalizedDot(a, b, origin);
+ for (var i3 = 0; i3 < points.length; i3++) {
+ var a2 = points[(i3 - 1 + points.length) % points.length];
+ var origin = points[i3];
+ var b2 = points[(i3 + 1) % points.length];
+ var dotp = geoVecNormalizedDot(a2, b2, origin);
var mag = Math.abs(dotp);
if (mag > lowerBound && mag < upperBound) {
return false;
options2.buttonCallback();
});
}
- var tip = copyBox(tooltip.node().getBoundingClientRect()), w = containerNode.clientWidth, h = containerNode.clientHeight, tooltipWidth = 200, tooltipArrow = 5, side, pos;
+ var tip = copyBox(tooltip.node().getBoundingClientRect()), w2 = containerNode.clientWidth, h2 = containerNode.clientHeight, tooltipWidth = 200, tooltipArrow = 5, side, pos;
if (options2.tooltipClass === "intro-mouse") {
tip.height += 80;
}
- if (tooltipBox.top + tooltipBox.height > h) {
- tooltipBox.height -= tooltipBox.top + tooltipBox.height - h;
+ if (tooltipBox.top + tooltipBox.height > h2) {
+ tooltipBox.height -= tooltipBox.top + tooltipBox.height - h2;
}
- if (tooltipBox.left + tooltipBox.width > w) {
- tooltipBox.width -= tooltipBox.left + tooltipBox.width - w;
+ if (tooltipBox.left + tooltipBox.width > w2) {
+ tooltipBox.width -= tooltipBox.left + tooltipBox.width - w2;
}
if (tooltipBox.top + tooltipBox.height < 100) {
side = "bottom";
tooltipBox.left + tooltipBox.width / 2 - tip.width / 2,
tooltipBox.top + tooltipBox.height
];
- } else if (tooltipBox.top > h - 140) {
+ } else if (tooltipBox.top > h2 - 140) {
side = "top";
pos = [
tooltipBox.left + tooltipBox.width / 2 - tip.width / 2,
pos = [tooltipBox.left - tooltipWidth - tooltipArrow, tipY];
}
} else {
- if (tooltipBox.left + tooltipBox.width + tooltipArrow + tooltipWidth > w - 70) {
+ if (tooltipBox.left + tooltipBox.width + tooltipArrow + tooltipWidth > w2 - 70) {
side = "left";
pos = [tooltipBox.left - tooltipWidth - tooltipArrow, tipY];
} else {
if (side === "left" || side === "right") {
if (pos[1] < 60) {
shiftY = 60 - pos[1];
- } else if (pos[1] + tip.height > h - 100) {
- shiftY = h - pos[1] - tip.height - 100;
+ } else if (pos[1] + tip.height > h2 - 100) {
+ shiftY = h2 - pos[1] - tip.height - 100;
}
}
tooltip.selectAll(".popover-inner").style("top", shiftY + "px");
} else {
selection2 = darkness.transition().duration(duration || 600).ease(linear2);
}
- selection2.attr("d", function(d) {
+ selection2.attr("d", function(d2) {
var containerWidth = containerNode.clientWidth;
var containerHeight = containerNode.clientHeight;
var string = "M 0,0 L 0," + containerHeight + " L " + containerWidth + "," + containerHeight + "L" + containerWidth + ",0 Z";
- if (!d)
+ if (!d2)
return string;
- return string + "M" + d.left + "," + d.top + "L" + d.left + "," + (d.top + d.height) + "L" + (d.left + d.width) + "," + (d.top + d.height) + "L" + (d.left + d.width) + "," + d.top + "Z";
+ return string + "M" + d2.left + "," + d2.top + "L" + d2.left + "," + (d2.top + d2.height) + "L" + (d2.left + d2.width) + "," + (d2.top + d2.height) + "L" + (d2.left + d2.width) + "," + d2.top + "Z";
});
};
curtain.remove = function() {
// modules/ui/intro/welcome.js
function uiIntroWelcome(context, reveal) {
- var dispatch10 = dispatch_default("done");
+ var dispatch14 = dispatch_default("done");
var chapter = {
title: "intro.welcome.title"
};
);
}
function chapters() {
- dispatch10.call("done");
+ dispatch14.call("done");
reveal(
".intro-nav-wrap .chapter-navigation",
helpHtml("intro.welcome.chapters", { next: _t("intro.navigation.title") })
chapter.exit();
chapter.enter();
};
- return utilRebind(chapter, dispatch10, "on");
+ return utilRebind(chapter, dispatch14, "on");
}
// modules/ui/intro/navigation.js
function uiIntroNavigation(context, reveal) {
- var dispatch10 = dispatch_default("done");
+ var dispatch14 = dispatch_default("done");
var timeouts = [];
var hallId = "n2061";
var townHall = [-85.63591, 41.94285];
var chapter = {
title: "intro.navigation.title"
};
- function timeout2(f2, t) {
- timeouts.push(window.setTimeout(f2, t));
+ function timeout2(f3, t2) {
+ timeouts.push(window.setTimeout(f3, t2));
}
function eventCancel(d3_event) {
d3_event.stopPropagation();
}
}
function play() {
- dispatch10.call("done");
+ dispatch14.call("done");
reveal(
".ideditor",
helpHtml("intro.navigation.play", { next: _t("intro.points.title") }),
chapter.exit();
chapter.enter();
};
- return utilRebind(chapter, dispatch10, "on");
+ return utilRebind(chapter, dispatch14, "on");
}
// modules/ui/intro/point.js
function uiIntroPoint(context, reveal) {
- var dispatch10 = dispatch_default("done");
+ var dispatch14 = dispatch_default("done");
var timeouts = [];
var intersection = [-85.63279, 41.94394];
var building = [-85.632422, 41.944045];
var chapter = {
title: "intro.points.title"
};
- function timeout2(f2, t) {
- timeouts.push(window.setTimeout(f2, t));
+ function timeout2(f3, t2) {
+ timeouts.push(window.setTimeout(f3, t2));
}
function eventCancel(d3_event) {
d3_event.stopPropagation();
}
}
function play() {
- dispatch10.call("done");
+ dispatch14.call("done");
reveal(
".ideditor",
helpHtml("intro.points.play", { next: _t("intro.areas.title") }),
chapter.exit();
chapter.enter();
};
- return utilRebind(chapter, dispatch10, "on");
+ return utilRebind(chapter, dispatch14, "on");
}
// modules/ui/intro/area.js
function uiIntroArea(context, reveal) {
- var dispatch10 = dispatch_default("done");
+ var dispatch14 = dispatch_default("done");
var playground = [-85.63552, 41.94159];
var playgroundPreset = _mainPresetIndex.item("leisure/playground");
var nameField = _mainPresetIndex.field("name");
var chapter = {
title: "intro.areas.title"
};
- function timeout2(f2, t) {
- timeouts.push(window.setTimeout(f2, t));
+ function timeout2(f3, t2) {
+ timeouts.push(window.setTimeout(f3, t2));
}
function eventCancel(d3_event) {
d3_event.stopPropagation();
var end = start2 + (box.top - 300);
pane.transition().duration(250).tween("scroll.inspector", function() {
var node = this;
- var i2 = number_default(start2, end);
- return function(t) {
- node.scrollTop = i2(t);
+ var i3 = number_default(start2, end);
+ return function(t2) {
+ node.scrollTop = i3(t2);
};
});
}
}
}
function play() {
- dispatch10.call("done");
+ dispatch14.call("done");
reveal(
".ideditor",
helpHtml("intro.areas.play", { next: _t("intro.lines.title") }),
chapter.exit();
chapter.enter();
};
- return utilRebind(chapter, dispatch10, "on");
+ return utilRebind(chapter, dispatch14, "on");
}
// modules/ui/intro/line.js
function uiIntroLine(context, reveal) {
- var dispatch10 = dispatch_default("done");
+ var dispatch14 = dispatch_default("done");
var timeouts = [];
var _tulipRoadID = null;
var flowerRoadID = "w646";
var chapter = {
title: "intro.lines.title"
};
- function timeout2(f2, t) {
- timeouts.push(window.setTimeout(f2, t));
+ function timeout2(f3, t2) {
+ timeouts.push(window.setTimeout(f3, t2));
}
function eventCancel(d3_event) {
d3_event.stopPropagation();
}
}
function play() {
- dispatch10.call("done");
+ dispatch14.call("done");
reveal(
".ideditor",
helpHtml("intro.lines.play", { next: _t("intro.buildings.title") }),
chapter.exit();
chapter.enter();
};
- return utilRebind(chapter, dispatch10, "on");
+ return utilRebind(chapter, dispatch14, "on");
}
// modules/ui/intro/building.js
function uiIntroBuilding(context, reveal) {
- var dispatch10 = dispatch_default("done");
+ var dispatch14 = dispatch_default("done");
var house = [-85.62815, 41.95638];
var tank = [-85.62732, 41.95347];
var buildingCatetory = _mainPresetIndex.item("category-building");
var chapter = {
title: "intro.buildings.title"
};
- function timeout2(f2, t) {
- timeouts.push(window.setTimeout(f2, t));
+ function timeout2(f3, t2) {
+ timeouts.push(window.setTimeout(f3, t2));
}
function eventCancel(d3_event) {
d3_event.stopPropagation();
var graph = context.graph();
var way = context.entity(context.selectedIDs()[0]);
var nodes = graph.childNodes(way);
- var points = utilArrayUniq(nodes).map(function(n2) {
- return context.projection(n2.loc);
+ var points = utilArrayUniq(nodes).map(function(n3) {
+ return context.projection(n3.loc);
});
if (isMostlySquare(points)) {
_houseID = way.id;
}
}
function play() {
- dispatch10.call("done");
+ dispatch14.call("done");
reveal(
".ideditor",
helpHtml("intro.buildings.play", { next: _t("intro.startediting.title") }),
chapter.exit();
chapter.enter();
};
- return utilRebind(chapter, dispatch10, "on");
+ return utilRebind(chapter, dispatch14, "on");
}
// modules/ui/intro/start_editing.js
function uiIntroStartEditing(context, reveal) {
- var dispatch10 = dispatch_default("done", "startEditing");
+ var dispatch14 = dispatch_default("done", "startEditing");
var modalSelection = select_default2(null);
var chapter = {
title: "intro.startediting.title"
});
startbutton.append("svg").attr("class", "illustration").append("use").attr("xlink:href", "#iD-logo-walkthrough");
startbutton.append("h2").call(_t.append("intro.startediting.start"));
- dispatch10.call("startEditing");
+ dispatch14.call("startEditing");
}
chapter.enter = function() {
showHelp();
modalSelection.remove();
context.container().selectAll(".shaded").remove();
};
- return utilRebind(chapter, dispatch10, "on");
+ return utilRebind(chapter, dispatch14, "on");
}
// modules/ui/intro/intro.js
} else {
context.background().bing();
}
- overlays.forEach((d) => context.background().toggleOverlayLayer(d));
+ overlays.forEach((d2) => context.background().toggleOverlayLayer(d2));
let layers = context.layers();
layers.all().forEach((item) => {
if (typeof item.layer.enabled === "function") {
corePreferences("walkthrough_started", "yes");
let storedProgress = corePreferences("walkthrough_progress") || "";
let progress = storedProgress.split(";").filter(Boolean);
- let chapters = chapterFlow.map((chapter, i2) => {
- let s = chapterUi[chapter](context, curtain.reveal).on("done", () => {
- buttons.filter((d) => d.title === s.title).classed("finished", true);
- if (i2 < chapterFlow.length - 1) {
- const next = chapterFlow[i2 + 1];
+ let chapters = chapterFlow.map((chapter, i3) => {
+ let s2 = chapterUi[chapter](context, curtain.reveal).on("done", () => {
+ buttons.filter((d2) => d2.title === s2.title).classed("finished", true);
+ if (i3 < chapterFlow.length - 1) {
+ const next = chapterFlow[i3 + 1];
context.container().select(`button.chapter-${next}`).classed("next", true);
}
progress.push(chapter);
corePreferences("walkthrough_progress", utilArrayUniq(progress).join(";"));
});
- return s;
+ return s2;
});
chapters[chapters.length - 1].on("startEditing", () => {
progress.push("startEditing");
}
context.history().reset().merge(Object.values(baseEntities));
context.background().baseLayerSource(background);
- overlays.forEach((d) => context.background().toggleOverlayLayer(d));
+ overlays.forEach((d2) => context.background().toggleOverlayLayer(d2));
if (history) {
context.history().fromJSON(history, false);
}
let navwrap = selection2.append("div").attr("class", "intro-nav-wrap fillD");
navwrap.append("svg").attr("class", "intro-nav-wrap-logo").append("use").attr("xlink:href", "#iD-logo-walkthrough");
let buttonwrap = navwrap.append("div").attr("class", "joined").selectAll("button.chapter");
- let buttons = buttonwrap.data(chapters).enter().append("button").attr("class", (d, i2) => `chapter chapter-${chapterFlow[i2]}`).on("click", enterChapter);
- buttons.append("span").html((d) => _t.html(d.title));
+ let buttons = buttonwrap.data(chapters).enter().append("button").attr("class", (d2, i3) => `chapter chapter-${chapterFlow[i3]}`).on("click", enterChapter);
+ buttons.append("span").html((d2) => _t.html(d2.title));
buttons.append("span").attr("class", "status").call(svgIcon(_mainLocalizer.textDirection() === "rtl" ? "#iD-icon-backward" : "#iD-icon-forward", "inline"));
enterChapter(null, chapters[0]);
function enterChapter(d3_event, newChapter) {
context.enter(modeBrowse(context));
_currChapter = newChapter;
_currChapter.enter();
- buttons.classed("next", false).classed("active", (d) => d.title === _currChapter.title);
+ buttons.classed("next", false).classed("active", (d2) => d2.title === _currChapter.title);
}
}
return intro;
shownItems.push(resolvedItem);
}
}
- var chips = selection2.selectAll(".chip").data(shownItems, function(d) {
- return d.id;
+ var chips = selection2.selectAll(".chip").data(shownItems, function(d2) {
+ return d2.id;
});
chips.exit().remove();
- var enter = chips.enter().append("a").attr("class", function(d) {
- return "chip " + d.id + "-count";
- }).attr("href", "#").each(function(d) {
+ var enter = chips.enter().append("a").attr("class", function(d2) {
+ return "chip " + d2.id + "-count";
+ }).attr("href", "#").each(function(d2) {
var chipSelection = select_default2(this);
- var tooltipBehavior = uiTooltip().placement("top").title(() => _t.append(d.descriptionID));
+ var tooltipBehavior = uiTooltip().placement("top").title(() => _t.append(d2.descriptionID));
chipSelection.call(tooltipBehavior).on("click", function(d3_event) {
d3_event.preventDefault();
tooltipBehavior.hide(select_default2(this));
context.ui().togglePanes(context.container().select(".map-panes .issues-pane"));
});
- chipSelection.call(svgIcon("#" + d.iconID));
+ chipSelection.call(svgIcon("#" + d2.iconID));
});
enter.append("span").attr("class", "count");
- enter.merge(chips).selectAll("span.count").text(function(d) {
- return d.count.toString();
+ enter.merge(chips).selectAll("span.count").text(function(d2) {
+ return d2.count.toString();
});
}
return function(selection2) {
function zoomed(d3_event) {
if (_skipEvents)
return;
- var x = d3_event.transform.x;
- var y = d3_event.transform.y;
- var k = d3_event.transform.k;
- var isZooming = k !== _tStart.k;
- var isPanning = x !== _tStart.x || y !== _tStart.y;
+ var x2 = d3_event.transform.x;
+ var y2 = d3_event.transform.y;
+ var k2 = d3_event.transform.k;
+ var isZooming = k2 !== _tStart.k;
+ var isPanning = x2 !== _tStart.x || y2 !== _tStart.y;
if (!isZooming && !isPanning) {
return;
}
var tMini = projection2.transform();
var tX, tY, scale;
if (_gesture === "zoom") {
- scale = k / tMini.k;
+ scale = k2 / tMini.k;
tX = (_cMini[0] / scale - _cMini[0]) * scale;
tY = (_cMini[1] / scale - _cMini[1]) * scale;
} else {
- k = tMini.k;
+ k2 = tMini.k;
scale = 1;
- tX = x - tMini.x;
- tY = y - tMini.y;
+ tX = x2 - tMini.x;
+ tY = y2 - tMini.y;
}
utilSetTransform(tiles, tX, tY, scale);
utilSetTransform(viewport, 0, 0, scale);
_isTransformed = true;
- _tCurr = identity2.translate(x, y).scale(k);
+ _tCurr = identity2.translate(x2, y2).scale(k2);
var zMain = geoScaleToZoom(context.projection.scale());
- var zMini = geoScaleToZoom(k);
+ var zMini = geoScaleToZoom(k2);
_zDiff = zMain - zMini;
queueRedraw();
}
background.enter().append("div").attr("class", "map-in-map-background").merge(background).call(backgroundLayer);
var overlaySources = context.background().overlayLayerSources();
var activeOverlayLayers = [];
- for (var i2 = 0; i2 < overlaySources.length; i2++) {
- if (overlaySources[i2].validZoom(zMini)) {
- if (!overlayLayers[i2])
- overlayLayers[i2] = rendererTileLayer(context);
- activeOverlayLayers.push(overlayLayers[i2].source(overlaySources[i2]).projection(projection2).dimensions(_dMini));
+ for (var i3 = 0; i3 < overlaySources.length; i3++) {
+ if (overlaySources[i3].validZoom(zMini)) {
+ if (!overlayLayers[i3])
+ overlayLayers[i3] = rendererTileLayer(context);
+ activeOverlayLayers.push(overlayLayers[i3].source(overlaySources[i3]).projection(projection2).dimensions(_dMini));
}
}
var overlay = tiles.selectAll(".map-in-map-overlay").data([0]);
overlay = overlay.enter().append("div").attr("class", "map-in-map-overlay").merge(overlay);
- var overlays = overlay.selectAll("div").data(activeOverlayLayers, function(d) {
- return d.source().name();
+ var overlays = overlay.selectAll("div").data(activeOverlayLayers, function(d2) {
+ return d2.source().name();
});
overlays.exit().remove();
overlays = overlays.enter().append("div").merge(overlays).each(function(layer) {
viewport = wrap2.selectAll(".map-in-map-viewport").data([0]);
viewport = viewport.enter().append("svg").attr("class", "map-in-map-viewport").merge(viewport);
var path = viewport.selectAll(".map-in-map-bbox").data([bbox2]);
- path.enter().append("path").attr("class", "map-in-map-bbox").merge(path).attr("d", getPath).classed("thick", function(d) {
- return getPath.area(d) < 30;
+ path.enter().append("path").attr("class", "map-in-map-bbox").merge(path).attr("d", getPath).classed("thick", function(d2) {
+ return getPath.area(d2) < 30;
});
}
}
// modules/ui/photoviewer.js
function uiPhotoviewer(context) {
- var dispatch10 = dispatch_default("resize");
+ var dispatch14 = dispatch_default("resize");
var _pointerPrefix = "PointerEvent" in window ? "pointer" : "mouse";
function photoviewer(selection2) {
selection2.append("button").attr("class", "thumb-hide").attr("title", _t("icons.close")).on("click", function() {
if (services.kartaview) {
services.kartaview.hideViewer(context);
}
+ if (services.mapilio) {
+ services.mapilio.hideViewer(context);
+ }
+ if (services.vegbilder) {
+ services.vegbilder.hideViewer(context);
+ }
}).append("div").call(svgIcon("#iD-icon-close"));
function preventDefault(d3_event) {
d3_event.preventDefault();
}
selection2.append("button").attr("class", "resize-handle-xy").on("touchstart touchdown touchend", preventDefault).on(
_pointerPrefix + "down",
- buildResizeListener(selection2, "resize", dispatch10, { resizeOnX: true, resizeOnY: true })
+ buildResizeListener(selection2, "resize", dispatch14, { resizeOnX: true, resizeOnY: true })
);
selection2.append("button").attr("class", "resize-handle-x").on("touchstart touchdown touchend", preventDefault).on(
_pointerPrefix + "down",
- buildResizeListener(selection2, "resize", dispatch10, { resizeOnX: true })
+ buildResizeListener(selection2, "resize", dispatch14, { resizeOnX: true })
);
selection2.append("button").attr("class", "resize-handle-y").on("touchstart touchdown touchend", preventDefault).on(
_pointerPrefix + "down",
- buildResizeListener(selection2, "resize", dispatch10, { resizeOnY: true })
+ buildResizeListener(selection2, "resize", dispatch14, { resizeOnY: true })
);
- function buildResizeListener(target, eventName, dispatch11, options2) {
+ function buildResizeListener(target, eventName, dispatch15, options2) {
var resizeOnX = !!options2.resizeOnX;
var resizeOnY = !!options2.resizeOnY;
var minHeight = options2.minHeight || 240;
var newHeight = clamp3(startHeight + startY - d3_event.clientY, minHeight, maxHeight);
target.style("height", newHeight + "px");
}
- dispatch11.call(eventName, target, utilGetDimensions(target, true));
+ dispatch15.call(eventName, target, subtractPadding(utilGetDimensions(target, true), target));
}
function clamp3(num, min3, max3) {
return Math.max(min3, Math.min(num, max3));
Math.min(photoDimensions[1], mapDimensions[1] - 90)
];
photoviewer2.style("width", setPhotoDimensions[0] + "px").style("height", setPhotoDimensions[1] + "px");
- dispatch10.call("resize", photoviewer2, setPhotoDimensions);
+ dispatch14.call("resize", photoviewer2, subtractPadding(setPhotoDimensions, photoviewer2));
}
};
- return utilRebind(photoviewer, dispatch10, "on");
+ function subtractPadding(dimensions, selection2) {
+ return [
+ dimensions[0] - parseFloat(selection2.style("padding-left")) - parseFloat(selection2.style("padding-right")),
+ dimensions[1] - parseFloat(selection2.style("padding-top")) - parseFloat(selection2.style("padding-bottom"))
+ ];
+ }
+ return utilRebind(photoviewer, dispatch14, "on");
}
// modules/ui/restore.js
function uiScale(context) {
var projection2 = context.projection, isImperial = !_mainLocalizer.usesMetric(), maxLength = 180, tickHeight = 8;
function scaleDefs(loc1, loc2) {
- var lat = (loc2[1] + loc1[1]) / 2, conversion = isImperial ? 3.28084 : 1, dist = geoLonToMeters(loc2[0] - loc1[0], lat) * conversion, scale = { dist: 0, px: 0, text: "" }, buckets, i2, val, dLon;
+ var lat = (loc2[1] + loc1[1]) / 2, conversion = isImperial ? 3.28084 : 1, dist = geoLonToMeters(loc2[0] - loc1[0], lat) * conversion, scale = { dist: 0, px: 0, text: "" }, buckets, i3, val, dLon;
if (isImperial) {
buckets = [528e4, 528e3, 52800, 5280, 500, 50, 5, 1];
} else {
buckets = [5e6, 5e5, 5e4, 5e3, 500, 50, 5, 1];
}
- for (i2 = 0; i2 < buckets.length; i2++) {
- val = buckets[i2];
+ for (i3 = 0; i3 < buckets.length; i3++) {
+ val = buckets[i3];
if (dist >= val) {
scale.dist = Math.floor(dist / val) * val;
break;
var shortcutsList = wrapperEnter.append("div").attr("class", "shortcuts-list");
wrapper = wrapper.merge(wrapperEnter);
var tabs = tabsBar.selectAll(".tab").data(_dataShortcuts);
- var tabsEnter = tabs.enter().append("a").attr("class", "tab").attr("href", "#").on("click", function(d3_event, d) {
+ var tabsEnter = tabs.enter().append("a").attr("class", "tab").attr("href", "#").on("click", function(d3_event, d2) {
d3_event.preventDefault();
- var i2 = _dataShortcuts.indexOf(d);
- _activeTab = i2;
+ var i3 = _dataShortcuts.indexOf(d2);
+ _activeTab = i3;
render(selection2);
});
- tabsEnter.append("span").html(function(d) {
- return _t.html(d.text);
+ tabsEnter.append("span").html(function(d2) {
+ return _t.html(d2.text);
});
- wrapper.selectAll(".tab").classed("active", function(d, i2) {
- return i2 === _activeTab;
+ wrapper.selectAll(".tab").classed("active", function(d2, i3) {
+ return i3 === _activeTab;
});
var shortcuts = shortcutsList.selectAll(".shortcut-tab").data(_dataShortcuts);
- var shortcutsEnter = shortcuts.enter().append("div").attr("class", function(d) {
- return "shortcut-tab shortcut-tab-" + d.tab;
+ var shortcutsEnter = shortcuts.enter().append("div").attr("class", function(d2) {
+ return "shortcut-tab shortcut-tab-" + d2.tab;
});
- var columnsEnter = shortcutsEnter.selectAll(".shortcut-column").data(function(d) {
- return d.columns;
+ var columnsEnter = shortcutsEnter.selectAll(".shortcut-column").data(function(d2) {
+ return d2.columns;
}).enter().append("table").attr("class", "shortcut-column");
- var rowsEnter = columnsEnter.selectAll(".shortcut-row").data(function(d) {
- return d.rows;
+ var rowsEnter = columnsEnter.selectAll(".shortcut-row").data(function(d2) {
+ return d2.rows;
}).enter().append("tr").attr("class", "shortcut-row");
- var sectionRows = rowsEnter.filter(function(d) {
- return !d.shortcuts;
+ var sectionRows = rowsEnter.filter(function(d2) {
+ return !d2.shortcuts;
});
sectionRows.append("td");
- sectionRows.append("td").attr("class", "shortcut-section").append("h3").html(function(d) {
- return _t.html(d.text);
+ sectionRows.append("td").attr("class", "shortcut-section").append("h3").html(function(d2) {
+ return _t.html(d2.text);
});
- var shortcutRows = rowsEnter.filter(function(d) {
- return d.shortcuts;
+ var shortcutRows = rowsEnter.filter(function(d2) {
+ return d2.shortcuts;
});
var shortcutKeys = shortcutRows.append("td").attr("class", "shortcut-keys");
- var modifierKeys = shortcutKeys.filter(function(d) {
- return d.modifiers;
+ var modifierKeys = shortcutKeys.filter(function(d2) {
+ return d2.modifiers;
});
- modifierKeys.selectAll("kbd.modifier").data(function(d) {
- if (detected.os === "win" && d.text === "shortcuts.editing.commands.redo") {
+ modifierKeys.selectAll("kbd.modifier").data(function(d2) {
+ if (detected.os === "win" && d2.text === "shortcuts.editing.commands.redo") {
return ["\u2318"];
- } else if (detected.os !== "mac" && d.text === "shortcuts.browsing.display_options.fullscreen") {
+ } else if (detected.os !== "mac" && d2.text === "shortcuts.browsing.display_options.fullscreen") {
return [];
} else {
- return d.modifiers;
+ return d2.modifiers;
}
}).enter().each(function() {
var selection3 = select_default2(this);
- selection3.append("kbd").attr("class", "modifier").text(function(d) {
- return uiCmd.display(d);
+ selection3.append("kbd").attr("class", "modifier").text(function(d2) {
+ return uiCmd.display(d2);
});
selection3.append("span").text("+");
});
- shortcutKeys.selectAll("kbd.shortcut").data(function(d) {
- var arr = d.shortcuts;
- if (detected.os === "win" && d.text === "shortcuts.editing.commands.redo") {
+ shortcutKeys.selectAll("kbd.shortcut").data(function(d2) {
+ var arr = d2.shortcuts;
+ if (detected.os === "win" && d2.text === "shortcuts.editing.commands.redo") {
arr = ["Y"];
- } else if (detected.os !== "mac" && d.text === "shortcuts.browsing.display_options.fullscreen") {
+ } else if (detected.os !== "mac" && d2.text === "shortcuts.browsing.display_options.fullscreen") {
arr = ["F11"];
}
- arr = arr.map(function(s) {
- return uiCmd.display(s.indexOf(".") !== -1 ? _t(s) : s);
+ arr = arr.map(function(s2) {
+ return uiCmd.display(s2.indexOf(".") !== -1 ? _t(s2) : s2);
});
- return utilArrayUniq(arr).map(function(s) {
+ return utilArrayUniq(arr).map(function(s2) {
return {
- shortcut: s,
- separator: d.separator,
- suffix: d.suffix
+ shortcut: s2,
+ separator: d2.separator,
+ suffix: d2.suffix
};
});
- }).enter().each(function(d, i2, nodes) {
+ }).enter().each(function(d2, i3, nodes) {
var selection3 = select_default2(this);
- var click = d.shortcut.toLowerCase().match(/(.*).click/);
+ var click = d2.shortcut.toLowerCase().match(/(.*).click/);
if (click && click[1]) {
selection3.call(svgIcon("#iD-walkthrough-mouse-" + click[1], "operation"));
- } else if (d.shortcut.toLowerCase() === "long-press") {
+ } else if (d2.shortcut.toLowerCase() === "long-press") {
selection3.call(svgIcon("#iD-walkthrough-longpress", "longpress operation"));
- } else if (d.shortcut.toLowerCase() === "tap") {
+ } else if (d2.shortcut.toLowerCase() === "tap") {
selection3.call(svgIcon("#iD-walkthrough-tap", "tap operation"));
} else {
- selection3.append("kbd").attr("class", "shortcut").text(function(d2) {
- return d2.shortcut;
+ selection3.append("kbd").attr("class", "shortcut").text(function(d4) {
+ return d4.shortcut;
});
}
- if (i2 < nodes.length - 1) {
- selection3.append("span").html(d.separator || "\xA0" + _t.html("shortcuts.or") + "\xA0");
- } else if (i2 === nodes.length - 1 && d.suffix) {
- selection3.append("span").text(d.suffix);
+ if (i3 < nodes.length - 1) {
+ selection3.append("span").html(d2.separator || "\xA0" + _t.html("shortcuts.or") + "\xA0");
+ } else if (i3 === nodes.length - 1 && d2.suffix) {
+ selection3.append("span").text(d2.suffix);
}
});
- shortcutKeys.filter(function(d) {
- return d.gesture;
+ shortcutKeys.filter(function(d2) {
+ return d2.gesture;
}).each(function() {
var selection3 = select_default2(this);
selection3.append("span").text("+");
- selection3.append("span").attr("class", "gesture").html(function(d) {
- return _t.html(d.gesture);
+ selection3.append("span").attr("class", "gesture").html(function(d2) {
+ return _t.html(d2.gesture);
});
});
- shortcutRows.append("td").attr("class", "shortcut-desc").html(function(d) {
- return d.text ? _t.html(d.text) : "\xA0";
+ shortcutRows.append("td").attr("class", "shortcut-desc").html(function(d2) {
+ return d2.text ? _t.html(d2.text) : "\xA0";
});
- wrapper.selectAll(".shortcut-tab").style("display", function(d, i2) {
- return i2 === _activeTab ? "flex" : "none";
+ wrapper.selectAll(".shortcut-tab").style("display", function(d2, i3) {
+ return i3 === _activeTab ? "flex" : "none";
});
}
return function(selection2, show) {
function dataHeader(selection2) {
var header = selection2.selectAll(".data-header").data(
_datum ? [_datum] : [],
- function(d) {
- return d.__featurehash__;
+ function(d2) {
+ return d2.__featurehash__;
}
);
header.exit().remove();
// modules/ui/combobox.js
var _comboHideTimerID;
function uiCombobox(context, klass) {
- var dispatch10 = dispatch_default("accept", "cancel", "update");
+ var dispatch14 = dispatch_default("accept", "cancel", "update");
var container = context.container();
var _suggestions = [];
var _data = [];
var _tDown = 0;
var _mouseEnterHandler, _mouseLeaveHandler;
var _fetcher = function(val, cb) {
- cb(_data.filter(function(d) {
- var terms = d.terms || [];
- terms.push(d.value);
- if (d.key) {
- terms.push(d.key);
+ cb(_data.filter(function(d2) {
+ var terms = d2.terms || [];
+ terms.push(d2.value);
+ if (d2.key) {
+ terms.push(d2.key);
}
return terms.some(function(term) {
return term.toString().toLowerCase().indexOf(val.toLowerCase()) !== -1;
input.classed("combobox-input", true).on("focus.combo-input", focus).on("blur.combo-input", blur).on("keydown.combo-input", keydown).on("keyup.combo-input", keyup).on("input.combo-input", change).on("mousedown.combo-input", mousedown).each(function() {
var parent = this.parentNode;
var sibling = this.nextSibling;
- select_default2(parent).selectAll(".combobox-caret").filter(function(d) {
- return d === input.node();
+ select_default2(parent).selectAll(".combobox-caret").filter(function(d2) {
+ return d2 === input.node();
}).data([input.node()]).enter().insert("div", function() {
return sibling;
}).attr("class", "combobox-caret").on("mousedown.combo-caret", function(d3_event) {
function nav(dir) {
if (_suggestions.length) {
var index = -1;
- for (var i2 = 0; i2 < _suggestions.length; i2++) {
- if (_selected && _suggestions[i2].value === _selected) {
- index = i2;
+ for (var i3 = 0; i3 < _suggestions.length; i3++) {
+ if (_selected && _suggestions[i3].value === _selected) {
+ index = i3;
break;
}
}
index = Math.max(Math.min(index + dir, _suggestions.length - 1), 0);
_selected = _suggestions[index].value;
utilGetSetValue(input, _selected);
- dispatch10.call("update");
+ dispatch14.call("update");
}
render();
ensureVisible();
}
return value2;
}
- function fetchComboData(v, cb) {
+ function fetchComboData(v2, cb) {
_cancelFetch = false;
- _fetcher.call(input, v, function(results) {
+ _fetcher.call(input, v2, function(results) {
if (_cancelFetch)
return;
_suggestions = results;
- results.forEach(function(d) {
- _fetched[d.value] = d;
+ results.forEach(function(d2) {
+ _fetched[d2.value] = d2;
});
if (cb) {
cb();
if (isFinite(val))
return;
const suggestionValues = [];
- _suggestions.forEach((s) => {
- suggestionValues.push(s.value);
- if (s.key && s.key !== s.value) {
- suggestionValues.push(s.key);
+ _suggestions.forEach((s2) => {
+ suggestionValues.push(s2.value);
+ if (s2.key && s2.key !== s2.value) {
+ suggestionValues.push(s2.key);
}
});
var bestIndex = -1;
- for (var i2 = 0; i2 < suggestionValues.length; i2++) {
- var suggestion = suggestionValues[i2];
+ for (var i3 = 0; i3 < suggestionValues.length; i3++) {
+ var suggestion = suggestionValues[i3];
var compare = _caseSensitive ? suggestion : suggestion.toLowerCase();
if (compare === val) {
- bestIndex = i2;
+ bestIndex = i3;
break;
} else if (bestIndex === -1 && compare.indexOf(val) === 0) {
- bestIndex = i2;
+ bestIndex = i3;
}
}
if (bestIndex !== -1) {
var bestVal = suggestionValues[bestIndex];
input.property("value", bestVal);
input.node().setSelectionRange(val.length, bestVal.length);
- dispatch10.call("update");
+ dispatch14.call("update");
return bestVal;
}
}
if (!shown)
return;
var combo = container.selectAll(".combobox");
- var options2 = combo.selectAll(".combobox-option").data(_suggestions, function(d) {
- return d.value;
+ var options2 = combo.selectAll(".combobox-option").data(_suggestions, function(d2) {
+ return d2.value;
});
options2.exit().remove();
- options2.enter().append("a").attr("class", function(d) {
- return "combobox-option " + (d.klass || "");
- }).attr("title", function(d) {
- return d.title;
- }).each(function(d) {
- if (d.display) {
- d.display(select_default2(this));
+ options2.enter().append("a").attr("class", function(d2) {
+ return "combobox-option " + (d2.klass || "");
+ }).attr("title", function(d2) {
+ return d2.title;
+ }).each(function(d2) {
+ if (d2.display) {
+ d2.display(select_default2(this));
} else {
- select_default2(this).text(d.value);
+ select_default2(this).text(d2.value);
}
- }).on("mouseenter", _mouseEnterHandler).on("mouseleave", _mouseLeaveHandler).merge(options2).classed("selected", function(d) {
- return d.value === _selected || d.key === _selected;
+ }).on("mouseenter", _mouseEnterHandler).on("mouseleave", _mouseLeaveHandler).merge(options2).classed("selected", function(d2) {
+ return d2.value === _selected || d2.key === _selected;
}).on("click.combo-option", accept).order();
var node = attachTo ? attachTo.node() : input.node();
var containerRect = container.node().getBoundingClientRect();
var rect = node.getBoundingClientRect();
combo.style("left", rect.left + 5 - containerRect.left + "px").style("width", rect.width - 10 + "px").style("top", rect.height + rect.top - containerRect.top + "px");
}
- function accept(d3_event, d) {
+ function accept(d3_event, d2) {
_cancelFetch = true;
var thiz = input.node();
- if (d) {
- utilGetSetValue(input, d.value);
+ if (d2) {
+ utilGetSetValue(input, d2.value);
utilTriggerEvent(input, "change");
}
var val = utilGetSetValue(input);
thiz.setSelectionRange(val.length, val.length);
- d = _fetched[val];
- dispatch10.call("accept", thiz, d, val);
+ d2 = _fetched[val];
+ dispatch14.call("accept", thiz, d2, val);
hide();
}
function cancel() {
val = val.slice(0, start2) + val.slice(end);
utilGetSetValue(input, val);
thiz.setSelectionRange(val.length, val.length);
- dispatch10.call("cancel", thiz);
+ dispatch14.call("cancel", thiz);
hide();
}
};
_mouseLeaveHandler = val;
return combobox;
};
- return utilRebind(combobox, dispatch10, "on");
+ return utilRebind(combobox, dispatch14, "on");
}
uiCombobox.off = function(input, context) {
input.on("focus.combo-input", null).on("blur.combo-input", null).on("keydown.combo-input", null).on("keyup.combo-input", null).on("input.combo-input", null).on("mousedown.combo-input", null).on("mouseup.combo-input", null);
// modules/ui/disclosure.js
function uiDisclosure(context, key, expandedDefault) {
- var dispatch10 = dispatch_default("toggled");
+ var dispatch14 = dispatch_default("toggled");
var _expanded;
var _label = utilFunctor("");
var _updatePreference = true;
if (_expanded) {
wrap2.call(_content);
}
- dispatch10.call("toggled", this, _expanded);
+ dispatch14.call("toggled", this, _expanded);
}
};
disclosure.label = function(val) {
_content = val;
return disclosure;
};
- return utilRebind(disclosure, dispatch10, "on");
+ return utilRebind(disclosure, dispatch14, "on");
}
// modules/ui/section.js
};
tagReference.body = function(selection2) {
var itemID = what.qid || what.key + "-" + (what.value || "");
- _body = selection2.selectAll(".tag-reference-body").data([itemID], function(d) {
- return d;
+ _body = selection2.selectAll(".tag-reference-body").data([itemID], function(d2) {
+ return d2;
});
_body.exit().remove();
_body = _body.enter().append("div").attr("class", "tag-reference-body").style("max-height", "0").style("opacity", "0").merge(_body);
});
}
function clickHelp(index) {
- var d = docs[index];
+ var d2 = docs[index];
var tkeys = fieldHelpKeys[fieldName][index][1];
- _body.selectAll(".field-help-nav-item").classed("active", function(d2, i2) {
- return i2 === index;
+ _body.selectAll(".field-help-nav-item").classed("active", function(d4, i3) {
+ return i3 === index;
});
- var content = _body.selectAll(".field-help-content").html(d.html);
- content.selectAll("p").attr("class", function(d2, i2) {
- return tkeys[i2];
+ var content = _body.selectAll(".field-help-content").html(d2.html);
+ content.selectAll("p").attr("class", function(d4, i3) {
+ return tkeys[i3];
});
- if (d.key === "help.field.restrictions.inspecting") {
+ if (d2.key === "help.field.restrictions.inspecting") {
content.insert("img", "p.from_shadow").attr("class", "field-help-image cf").attr("src", context.imagePath("tr_inspect.gif"));
- } else if (d.key === "help.field.restrictions.modifying") {
+ } else if (d2.key === "help.field.restrictions.modifying") {
content.insert("img", "p.allow_turn").attr("class", "field-help-image cf").attr("src", context.imagePath("tr_modify.gif"));
}
}
hide();
}).call(svgIcon("#iD-icon-close"));
var navEnter = enter.append("div").attr("class", "field-help-nav cf");
- var titles = docs.map(function(d) {
- return d.title;
+ var titles = docs.map(function(d2) {
+ return d2.title;
});
- navEnter.selectAll(".field-help-nav-item").data(titles).enter().append("div").attr("class", "field-help-nav-item").html(function(d) {
- return d;
- }).on("click", function(d3_event, d) {
+ navEnter.selectAll(".field-help-nav-item").data(titles).enter().append("div").attr("class", "field-help-nav-item").html(function(d2) {
+ return d2;
+ }).on("click", function(d3_event, d2) {
d3_event.stopPropagation();
d3_event.preventDefault();
- clickHelp(titles.indexOf(d));
+ clickHelp(titles.indexOf(d2));
});
enter.append("div").attr("class", "field-help-content");
_body = _body.merge(enter);
// modules/ui/fields/check.js
function uiFieldCheck(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var options2 = field.options;
var values = [];
var texts = [];
options2 = stringsField.options;
}
if (options2) {
- for (var i2 in options2) {
- var v = options2[i2];
- values.push(v === "undefined" ? void 0 : v);
- texts.push(stringsField.t.html("options." + v, { "default": v }));
+ for (var i3 in options2) {
+ var v2 = options2[i3];
+ values.push(v2 === "undefined" ? void 0 : v2);
+ texts.push(stringsField.t.html("options." + v2, { "default": v2 }));
}
} else {
values = [void 0, "yes"];
text2 = label.selectAll("span.value");
input.on("click", function(d3_event) {
d3_event.stopPropagation();
- var t = {};
+ var t2 = {};
if (Array.isArray(_tags[field.key])) {
if (values.indexOf("yes") !== -1) {
- t[field.key] = "yes";
+ t2[field.key] = "yes";
} else {
- t[field.key] = values[0];
+ t2[field.key] = values[0];
}
} else {
- t[field.key] = values[(values.indexOf(_value) + 1) % values.length];
+ t2[field.key] = values[(values.indexOf(_value) + 1) % values.length];
}
- if (t[field.key] === "reversible" || t[field.key] === "alternating") {
- t[field.key] = values[0];
+ if (t2[field.key] === "reversible" || t2[field.key] === "alternating") {
+ t2[field.key] = values[0];
}
- dispatch10.call("change", this, t);
+ dispatch14.call("change", this, t2);
});
if (field.type === "onewayCheck") {
reverser = label.selectAll(".reverser");
d3_event.stopPropagation();
context.perform(
function(graph) {
- for (var i3 in _entityIDs) {
- graph = actionReverse(_entityIDs[i3])(graph);
+ for (var i4 in _entityIDs) {
+ graph = actionReverse(_entityIDs[i4])(graph);
}
return graph;
},
check.focus = function() {
input.node().focus();
};
- return utilRebind(check, dispatch10, "on");
+ return utilRebind(check, dispatch14, "on");
}
// modules/ui/length_indicator.js
lengthIndicator.update = function(val) {
const strLen = utilUnicodeCharsCount(utilCleanOsmString(val, Number.POSITIVE_INFINITY));
let indicator = _wrap.selectAll("span.length-indicator").data([strLen]);
- indicator.enter().append("span").merge(indicator).classed("length-indicator", true).classed("limit-reached", (d) => d > maxChars).style("border-right-width", (d) => `${Math.abs(maxChars - d) * 2}px`).style("margin-right", (d) => d > maxChars ? `${(maxChars - d) * 2}px` : 0).style("opacity", (d) => d > maxChars * 0.8 ? Math.min(1, (d / maxChars - 0.8) / (1 - 0.8)) : 0).style("pointer-events", (d) => d > maxChars * 0.8 ? null : "none");
+ indicator.enter().append("span").merge(indicator).classed("length-indicator", true).classed("limit-reached", (d2) => d2 > maxChars).style("border-right-width", (d2) => `${Math.abs(maxChars - d2) * 2}px`).style("margin-right", (d2) => d2 > maxChars ? `${(maxChars - d2) * 2}px` : 0).style("opacity", (d2) => d2 > maxChars * 0.8 ? Math.min(1, (d2 / maxChars - 0.8) / (1 - 0.8)) : 0).style("pointer-events", (d2) => d2 > maxChars * 0.8 ? null : "none");
if (_silent)
return;
if (strLen > maxChars) {
// modules/ui/fields/combo.js
function uiFieldCombo(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var _isMulti = field.type === "multiCombo" || field.type === "manyCombo";
var _isNetwork = field.type === "networkCombo";
var _isSemi = field.type === "semiCombo";
var _countryCode;
var _staticPlaceholder;
var _dataDeprecated = [];
- _mainFileFetcher.get("deprecated").then(function(d) {
- _dataDeprecated = d;
+ _mainFileFetcher.get("deprecated").then(function(d2) {
+ _dataDeprecated = d2;
}).catch(function() {
});
if (_isMulti && field.key && /[^:]$/.test(field.key)) {
field.key += ":";
}
- function snake(s) {
- return s.replace(/\s+/g, "_");
+ function snake(s2) {
+ return s2.replace(/\s+/g, "_");
}
- function clean2(s) {
- return s.split(";").map(function(s2) {
- return s2.trim();
+ function clean2(s2) {
+ return s2.split(";").map(function(s3) {
+ return s3.trim();
}).join(";");
}
function tagValue(dval) {
dval = clean2(dval || "");
- var found = getOptions().find(function(o) {
- return o.key && clean2(o.value) === dval;
+ var found = getOptions(true).find(function(o2) {
+ return o2.key && clean2(o2.value) === dval;
});
if (found)
return found.key;
}
return dval;
}
- function getLabelId(field2, v) {
- return field2.hasTextForStringId(`options.${v}.title`) ? `options.${v}.title` : `options.${v}`;
+ function getLabelId(field2, v2) {
+ return field2.hasTextForStringId(`options.${v2}.title`) ? `options.${v2}.title` : `options.${v2}`;
}
function displayValue(tval) {
tval = tval || "";
}
return (selection2) => selection2.text(tval);
}
- function objectDifference(a, b) {
- return a.filter(function(d1) {
- return !b.some(function(d2) {
- return !d2.isMixed && d1.value === d2.value;
+ function objectDifference(a2, b2) {
+ return a2.filter(function(d1) {
+ return !b2.some(function(d2) {
+ return d1.value === d2.value;
});
});
}
setTaginfoValues("", setPlaceholder);
} else {
selection2.call(_combobox, attachTo);
- setStaticValues(setPlaceholder);
+ setTimeout(() => setStaticValues(setPlaceholder), 0);
}
}
- function getOptions() {
+ function getOptions(allOptions) {
var stringsField = field.resolveReference("stringsCrossReference");
if (!(field.options || stringsField.options))
return [];
- return (field.options || stringsField.options).map(function(v) {
- const labelId = getLabelId(stringsField, v);
+ let options2;
+ if (allOptions !== true) {
+ options2 = field.options || stringsField.options;
+ } else {
+ options2 = [].concat(field.options, stringsField.options).filter(Boolean);
+ }
+ return options2.map(function(v2) {
+ const labelId = getLabelId(stringsField, v2);
return {
- key: v,
- value: stringsField.t(labelId, { default: v }),
- title: stringsField.t(`options.${v}.description`, { default: v }),
- display: addComboboxIcons(stringsField.t.append(labelId, { default: v }), v),
+ key: v2,
+ value: stringsField.t(labelId, { default: v2 }),
+ title: stringsField.t(`options.${v2}.description`, { default: v2 }),
+ display: addComboboxIcons(stringsField.t.append(labelId, { default: v2 }), v2),
klass: stringsField.hasTextForStringId(labelId) ? "" : "raw-option"
};
});
if (callback)
callback(_comboData);
}
- function setTaginfoValues(q, callback) {
- var queryFilter = (d) => d.value.toLowerCase().includes(q.toLowerCase()) || d.key.toLowerCase().includes(q.toLowerCase());
+ function setTaginfoValues(q2, callback) {
+ var queryFilter = (d2) => d2.value.toLowerCase().includes(q2.toLowerCase()) || d2.key.toLowerCase().includes(q2.toLowerCase());
setStaticValues(callback, queryFilter);
var stringsField = field.resolveReference("stringsCrossReference");
var fn = _isMulti ? "multikeys" : "values";
- var query = (_isMulti ? field.key : "") + q;
- var hasCountryPrefix = _isNetwork && _countryCode && _countryCode.indexOf(q.toLowerCase()) === 0;
+ var query = (_isMulti ? field.key : "") + q2;
+ var hasCountryPrefix = _isNetwork && _countryCode && _countryCode.indexOf(q2.toLowerCase()) === 0;
if (hasCountryPrefix) {
query = _countryCode + ":";
}
var params = {
- debounce: q !== "",
+ debounce: q2 !== "",
key: field.key,
query
};
services.taginfo[fn](params, function(err, data) {
if (err)
return;
- data = data.filter((d) => field.type !== "typeCombo" || d.value !== "yes");
- data = data.filter((d) => {
- var value = d.value;
+ data = data.filter((d2) => field.type !== "typeCombo" || d2.value !== "yes");
+ data = data.filter((d2) => {
+ var value = d2.value;
if (_isMulti) {
value = value.slice(field.key.length);
}
});
var deprecatedValues = osmEntity.deprecatedTagValuesByKey(_dataDeprecated)[field.key];
if (deprecatedValues) {
- data = data.filter((d) => !deprecatedValues.includes(d.value));
+ data = data.filter((d2) => !deprecatedValues.includes(d2.value));
}
if (hasCountryPrefix) {
- data = data.filter((d) => d.value.toLowerCase().indexOf(_countryCode + ":") === 0);
+ data = data.filter((d2) => d2.value.toLowerCase().indexOf(_countryCode + ":") === 0);
}
- const additionalOptions = (field.options || stringsField.options || []).filter((v) => !data.some((dv) => dv.value === (_isMulti ? field.key + v : v))).map((v) => ({ value: v }));
+ const additionalOptions = (field.options || stringsField.options || []).filter((v2) => !data.some((dv) => dv.value === (_isMulti ? field.key + v2 : v2))).map((v2) => ({ value: v2 }));
_container.classed("empty-combobox", data.length === 0);
- _comboData = data.concat(additionalOptions).map(function(d) {
- var v = d.value;
+ _comboData = data.concat(additionalOptions).map(function(d2) {
+ var v2 = d2.value;
if (_isMulti)
- v = v.replace(field.key, "");
- const labelId = getLabelId(stringsField, v);
+ v2 = v2.replace(field.key, "");
+ const labelId = getLabelId(stringsField, v2);
var isLocalizable = stringsField.hasTextForStringId(labelId);
- var label = stringsField.t(labelId, { default: v });
+ var label = stringsField.t(labelId, { default: v2 });
return {
- key: v,
+ key: v2,
value: label,
- title: stringsField.t(`options.${v}.description`, { default: isLocalizable ? v : d.title !== label ? d.title : "" }),
- display: addComboboxIcons(stringsField.t.append(labelId, { default: v }), v),
+ title: stringsField.t(`options.${v2}.description`, { default: isLocalizable ? v2 : d2.title !== label ? d2.title : "" }),
+ display: addComboboxIcons(stringsField.t.append(labelId, { default: v2 }), v2),
klass: isLocalizable ? "" : "raw-option"
};
});
if (_isMulti || _isSemi) {
_staticPlaceholder = field.placeholder() || _t("inspector.add");
} else {
- var vals = values.map(function(d) {
- return d.value;
- }).filter(function(s) {
- return s.length < 20;
+ var vals = values.map(function(d2) {
+ return d2.value;
+ }).filter(function(s2) {
+ return s2.length < 20;
});
- var placeholders = vals.length > 1 ? vals : values.map(function(d) {
- return d.key;
+ var placeholders = vals.length > 1 ? vals : values.map(function(d2) {
+ return d2.key;
});
_staticPlaceholder = field.placeholder() || placeholders.slice(0, 3).join(", ");
}
ph = _staticPlaceholder;
}
_container.selectAll("input").attr("placeholder", ph);
+ var hideAdd = !_allowCustomValues && !values.length;
+ _container.selectAll(".chiplist .input-wrap").style("display", hideAdd ? "none" : null);
}
function change() {
- var t = {};
+ var t2 = {};
var val;
if (_isMulti || _isSemi) {
var vals;
_container.classed("active", false);
utilGetSetValue(_input, "");
if (_isMulti) {
- utilArrayUniq(vals).forEach(function(v) {
- var key = (field.key || "") + v;
+ utilArrayUniq(vals).forEach(function(v2) {
+ var key = (field.key || "") + v2;
if (_tags) {
var old = _tags[key];
if (typeof old === "string" && old.toLowerCase() !== "no")
}
key = context.cleanTagKey(key);
field.keys.push(key);
- t[key] = "yes";
+ t2[key] = "yes";
});
} else if (_isSemi) {
- var arr = _multiData.map(function(d) {
- return d.key;
+ var arr = _multiData.map(function(d2) {
+ return d2.key;
});
arr = arr.concat(vals);
- t[field.key] = context.cleanTagValue(utilArrayUniq(arr).filter(Boolean).join(";"));
+ t2[field.key] = context.cleanTagValue(utilArrayUniq(arr).filter(Boolean).join(";"));
}
window.setTimeout(function() {
_input.node().focus();
if (!rawValue && Array.isArray(_tags[field.key]))
return;
val = context.cleanTagValue(tagValue(rawValue));
- t[field.key] = val || void 0;
+ t2[field.key] = val || void 0;
}
- dispatch10.call("change", this, t);
+ dispatch14.call("change", this, t2);
}
- function removeMultikey(d3_event, d) {
+ function removeMultikey(d3_event, d2) {
d3_event.preventDefault();
d3_event.stopPropagation();
- var t = {};
+ var t2 = {};
if (_isMulti) {
- t[d.key] = void 0;
+ t2[d2.key] = void 0;
} else if (_isSemi) {
var arr = _multiData.map(function(md) {
- return md.key === d.key ? null : md.key;
+ return md.key === d2.key ? null : md.key;
}).filter(Boolean);
arr = utilArrayUniq(arr);
- t[field.key] = arr.length ? arr.join(";") : void 0;
- _lengthIndicator.update(t[field.key]);
+ t2[field.key] = arr.length ? arr.join(";") : void 0;
+ _lengthIndicator.update(t2[field.key]);
}
- dispatch10.call("change", this, t);
+ dispatch14.call("change", this, t2);
+ }
+ function invertMultikey(d3_event, d2) {
+ d3_event.preventDefault();
+ d3_event.stopPropagation();
+ var t2 = {};
+ if (_isMulti) {
+ t2[d2.key] = _tags[d2.key] === "yes" ? "no" : "yes";
+ }
+ dispatch14.call("change", this, t2);
}
function combo(selection2) {
_container = selection2.selectAll(".form-field-input-wrap").data([0]);
}).merge(_container);
_inputWrap = _container.selectAll(".input-wrap").data([0]);
_inputWrap = _inputWrap.enter().append("li").attr("class", "input-wrap").merge(_inputWrap);
+ var hideAdd = !_allowCustomValues && !_comboData.length;
+ _inputWrap.style("display", hideAdd ? "none" : null);
_input = _inputWrap.selectAll("input").data([0]);
} else {
_input = _container.selectAll("input").data([0]);
}
- _input = _input.enter().append("input").attr("type", "text").attr("id", field.domId).call(utilNoAuto).call(initCombo, selection2).merge(_input);
+ _input = _input.enter().append("input").attr("type", "text").attr("id", field.domId).call(utilNoAuto).call(initCombo, _container).merge(_input);
if (_isSemi) {
_inputWrap.call(_lengthIndicator);
} else if (!_isMulti) {
}
function updateIcon(value) {
value = tagValue(value);
+ let container = _container;
+ if (field.type === "multiCombo" || field.type === "semiCombo") {
+ container = _container.select(".input-wrap");
+ }
const iconsField = field.resolveReference("iconsCrossReference");
if (iconsField.icons) {
- _container.selectAll(".tag-value-icon").remove();
+ container.selectAll(".tag-value-icon").remove();
if (iconsField.icons[value]) {
- _container.selectAll(".tag-value-icon").data([value]).enter().insert("div", "input").attr("class", "tag-value-icon").call(svgIcon(`#${iconsField.icons[value]}`));
+ container.selectAll(".tag-value-icon").data([value]).enter().insert("div", "input").attr("class", "tag-value-icon").call(svgIcon(`#${iconsField.icons[value]}`));
}
}
}
combo.tags = function(tags) {
_tags = tags;
var stringsField = field.resolveReference("stringsCrossReference");
+ var isMixed = Array.isArray(tags[field.key]);
+ var showsValue = (value) => !isMixed && value && !(field.type === "typeCombo" && value === "yes");
+ var isRawValue = (value) => showsValue(value) && !stringsField.hasTextForStringId(`options.${value}`) && !stringsField.hasTextForStringId(`options.${value}.title`);
+ var isKnownValue = (value) => showsValue(value) && !isRawValue(value);
+ var isReadOnly = !_allowCustomValues;
if (_isMulti || _isSemi) {
_multiData = [];
var maxLength;
if (_isMulti) {
- for (var k in tags) {
- if (field.key && k.indexOf(field.key) !== 0)
+ for (var k2 in tags) {
+ if (field.key && k2.indexOf(field.key) !== 0)
continue;
- if (!field.key && field.keys.indexOf(k) === -1)
+ if (!field.key && field.keys.indexOf(k2) === -1)
continue;
- var v = tags[k];
- if (!v || typeof v === "string" && v.toLowerCase() === "no")
- continue;
- var suffix = field.key ? k.slice(field.key.length) : k;
+ var v2 = tags[k2];
+ var suffix = field.key ? k2.slice(field.key.length) : k2;
_multiData.push({
- key: k,
+ key: k2,
value: displayValue(suffix),
- display: renderValue(suffix),
- isMixed: Array.isArray(v)
+ display: addComboboxIcons(renderValue(suffix), suffix),
+ state: typeof v2 === "string" ? v2.toLowerCase() : "",
+ isMixed: Array.isArray(v2)
});
}
if (field.key) {
- field.keys = _multiData.map(function(d) {
- return d.key;
+ field.keys = _multiData.map(function(d2) {
+ return d2.key;
});
maxLength = context.maxCharsForTagKey() - utilUnicodeCharsCount(field.key);
} else {
allValues = utilArrayUniq((tags[field.key] || "").split(";")).filter(Boolean);
commonValues = allValues;
}
- _multiData = allValues.map(function(v2) {
+ _multiData = allValues.map(function(v3) {
return {
- key: v2,
- value: displayValue(v2),
- display: renderValue(v2),
- isMixed: !commonValues.includes(v2)
+ key: v3,
+ value: displayValue(v3),
+ display: addComboboxIcons(renderValue(v3), v3),
+ isMixed: !commonValues.includes(v3)
};
});
var currLength = utilUnicodeCharsCount(commonValues.join(";"));
}
}
maxLength = Math.max(0, maxLength);
- var allowDragAndDrop = _isSemi && !Array.isArray(tags[field.key]);
- var available = objectDifference(_comboData, _multiData);
- _combobox.data(available);
- var hideAdd = !_allowCustomValues && !available.length || maxLength <= 0;
+ var hideAdd = maxLength <= 0 || !_allowCustomValues && !_comboData.length;
_container.selectAll(".chiplist .input-wrap").style("display", hideAdd ? "none" : null);
+ var allowDragAndDrop = _isSemi && !Array.isArray(tags[field.key]);
var chips = _container.selectAll(".chip").data(_multiData);
chips.exit().remove();
var enter = chips.enter().insert("li", ".input-wrap").attr("class", "chip");
enter.append("span");
enter.append("a");
- chips = chips.merge(enter).order().classed("raw-value", function(d) {
- var k2 = d.key;
+ chips = chips.merge(enter).order().classed("raw-value", function(d2) {
+ var k3 = d2.key;
if (_isMulti)
- k2 = k2.replace(field.key, "");
- return !stringsField.hasTextForStringId("options." + k2);
- }).classed("draggable", allowDragAndDrop).classed("mixed", function(d) {
- return d.isMixed;
- }).attr("title", function(d) {
- return d.isMixed ? _t("inspector.unshared_value_tooltip") : null;
- });
+ k3 = k3.replace(field.key, "");
+ return !stringsField.hasTextForStringId("options." + k3);
+ }).classed("draggable", allowDragAndDrop).classed("mixed", function(d2) {
+ return d2.isMixed;
+ }).attr("title", function(d2) {
+ if (d2.isMixed) {
+ return _t("inspector.unshared_value_tooltip");
+ }
+ if (!["yes", "no"].includes(d2.state)) {
+ return d2.state;
+ }
+ return null;
+ }).classed("negated", (d2) => d2.state === "no");
+ if (!_isSemi) {
+ chips.selectAll("input[type=checkbox]").remove();
+ chips.insert("input", "span").attr("type", "checkbox").property("checked", (d2) => d2.state === "yes").property("indeterminate", (d2) => d2.isMixed || !["yes", "no"].includes(d2.state)).on("click", invertMultikey);
+ }
if (allowDragAndDrop) {
registerDragAndDrop(chips);
}
- chips.select("span").each(function(d) {
+ chips.select("span").each(function(d2) {
const selection2 = select_default2(this);
- if (d.display) {
+ if (d2.display) {
selection2.text("");
- d.display(selection2);
+ d2.display(selection2);
} else {
- selection2.text(d.value);
+ selection2.text(d2.value);
}
});
chips.select("a").attr("href", "#").on("click", removeMultikey).attr("class", "remove").text("\xD7");
+ updateIcon("");
} else {
- var isMixed = Array.isArray(tags[field.key]);
var mixedValues = isMixed && tags[field.key].map(function(val) {
return displayValue(val);
}).filter(Boolean);
- var showsValue = !isMixed && tags[field.key] && !(field.type === "typeCombo" && tags[field.key] === "yes");
- var isRawValue = showsValue && !stringsField.hasTextForStringId(`options.${tags[field.key]}`) && !stringsField.hasTextForStringId(`options.${tags[field.key]}.title`);
- var isKnownValue = showsValue && !isRawValue;
- var isReadOnly = !_allowCustomValues || isKnownValue;
- utilGetSetValue(_input, !isMixed ? displayValue(tags[field.key]) : "").classed("raw-value", isRawValue).classed("known-value", isKnownValue).attr("readonly", isReadOnly ? "readonly" : void 0).attr("title", isMixed ? mixedValues.join("\n") : void 0).attr("placeholder", isMixed ? _t("inspector.multiple_values") : _staticPlaceholder || "").classed("mixed", isMixed).on("keydown.deleteCapture", function(d3_event) {
- if (isReadOnly && isKnownValue && (d3_event.keyCode === utilKeybinding.keyCodes["\u232B"] || d3_event.keyCode === utilKeybinding.keyCodes["\u2326"])) {
+ utilGetSetValue(_input, !isMixed ? displayValue(tags[field.key]) : "").data([tags[field.key]]).classed("raw-value", isRawValue).classed("known-value", isKnownValue).attr("readonly", isReadOnly ? "readonly" : void 0).attr("title", isMixed ? mixedValues.join("\n") : void 0).attr("placeholder", isMixed ? _t("inspector.multiple_values") : _staticPlaceholder || "").classed("mixed", isMixed).on("keydown.deleteCapture", function(d3_event) {
+ if (isReadOnly && isKnownValue(tags[field.key]) && (d3_event.keyCode === utilKeybinding.keyCodes["\u232B"] || d3_event.keyCode === utilKeybinding.keyCodes["\u2326"])) {
d3_event.preventDefault();
d3_event.stopPropagation();
- var t = {};
- t[field.key] = void 0;
- dispatch10.call("change", this, t);
+ var t2 = {};
+ t2[field.key] = void 0;
+ dispatch14.call("change", this, t2);
}
});
if (!Array.isArray(tags[field.key])) {
_lengthIndicator.update(tags[field.key]);
}
}
+ const refreshStyles = () => {
+ _input.data([tagValue(utilGetSetValue(_input))]).classed("raw-value", isRawValue).classed("known-value", isKnownValue);
+ };
+ _input.on("input.refreshStyles", refreshStyles);
+ _combobox.on("update.refreshStyles", refreshStyles);
+ refreshStyles();
};
function registerDragAndDrop(selection2) {
var dragOrigin, targetIndex;
};
targetIndex = null;
}).on("drag", function(d3_event) {
- var x = d3_event.x - dragOrigin.x, y = d3_event.y - dragOrigin.y;
+ var x2 = d3_event.x - dragOrigin.x, y2 = d3_event.y - dragOrigin.y;
if (!select_default2(this).classed("dragging") && // don't display drag until dragging beyond a distance threshold
- Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) <= 5)
+ Math.sqrt(Math.pow(x2, 2) + Math.pow(y2, 2)) <= 5)
return;
var index = selection2.nodes().indexOf(this);
select_default2(this).classed("dragging", true);
_container.selectAll(".chip").style("transform", function(d2, index2) {
var node = select_default2(this).node();
if (index === index2) {
- return "translate(" + x + "px, " + y + "px)";
+ return "translate(" + x2 + "px, " + y2 + "px)";
} else if (index2 > index && d3_event.y > node.offsetTop) {
if (targetIndex === null || index2 > targetIndex) {
targetIndex = index2;
}).style("transform", function(d2, index2) {
var node = select_default2(this).node();
if (index === index2) {
- return "translate(" + x + "px, " + y + "px)";
+ return "translate(" + x2 + "px, " + y2 + "px)";
}
if (node.offsetTop === targetIndexOffsetTop) {
if (index2 < index && index2 >= targetIndex) {
var element = _multiData[index];
_multiData.splice(index, 1);
_multiData.splice(targetIndex, 0, element);
- var t = {};
+ var t2 = {};
if (_multiData.length) {
- t[field.key] = _multiData.map(function(element2) {
+ t2[field.key] = _multiData.map(function(element2) {
return element2.key;
}).join(";");
} else {
- t[field.key] = void 0;
+ t2[field.key] = void 0;
}
- dispatch10.call("change", this, t);
+ dispatch14.call("change", this, t2);
}
dragOrigin = void 0;
targetIndex = void 0;
function combinedEntityExtent() {
return _entityIDs && _entityIDs.length && utilTotalExtent(_entityIDs, context.graph());
}
- return utilRebind(combo, dispatch10, "on");
+ return utilRebind(combo, dispatch14, "on");
}
// modules/ui/fields/input.js
+ var likelyRawNumberFormat = /^-?(0\.\d*|\d*\.\d{0,2}(\d{4,})?|\d{4,}\.\d{3})$/;
function uiFieldText(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var input = select_default2(null);
var outlinkButton = select_default2(null);
var wrap2 = select_default2(null);
var _tags;
var _phoneFormats = {};
const isDirectionField = field.key.split(":").some((keyPart) => keyPart === "direction");
+ const formatFloat = _mainLocalizer.floatFormatter(_mainLocalizer.languageCode());
+ const parseLocaleFloat = _mainLocalizer.floatParser(_mainLocalizer.languageCode());
+ const countDecimalPlaces = _mainLocalizer.decimalPlaceCounter(_mainLocalizer.languageCode());
if (field.type === "tel") {
- _mainFileFetcher.get("phone_formats").then(function(d) {
- _phoneFormats = d;
+ _mainFileFetcher.get("phone_formats").then(function(d2) {
+ _phoneFormats = d2;
updatePhonePlaceholder();
}).catch(function() {
});
});
field.locked(isLocked);
}
- function i2(selection2) {
+ function i3(selection2) {
calcLocked();
var isLocked = field.locked();
wrap2 = selection2.selectAll(".form-field-input-wrap").data([0]);
input.attr("type", "text");
var inc = field.increment;
var buttons = wrap2.selectAll(".increment, .decrement").data(rtl ? [inc, -inc] : [-inc, inc]);
- buttons.enter().append("button").attr("class", function(d) {
- var which = d > 0 ? "increment" : "decrement";
+ buttons.enter().append("button").attr("class", function(d2) {
+ var which = d2 > 0 ? "increment" : "decrement";
return "form-field-button " + which;
- }).attr("title", function(d) {
- var which = d > 0 ? "increment" : "decrement";
+ }).attr("title", function(d2) {
+ var which = d2 > 0 ? "increment" : "decrement";
return _t(`inspector.${which}`);
- }).merge(buttons).on("click", function(d3_event, d) {
+ }).merge(buttons).on("click", function(d3_event, d2) {
d3_event.preventDefault();
var isMixed = Array.isArray(_tags[field.key]);
if (isMixed)
return;
var raw_vals = input.node().value || "0";
var vals = raw_vals.split(";");
- vals = vals.map(function(v) {
- var num = Number(v);
+ vals = vals.map(function(v2) {
+ v2 = v2.trim();
+ const isRawNumber = likelyRawNumberFormat.test(v2);
+ var num = isRawNumber ? parseFloat(v2) : parseLocaleFloat(v2);
if (isDirectionField) {
- const compassDir = cardinal[v.trim().toLowerCase()];
+ const compassDir = cardinal[v2.toLowerCase()];
if (compassDir !== void 0) {
num = compassDir;
}
}
- if (!isFinite(num)) {
- return v.trim();
- }
- num += d;
+ if (!isFinite(num))
+ return v2;
+ num = parseFloat(num);
+ if (!isFinite(num))
+ return v2;
+ num += d2;
if (isDirectionField) {
num = (num % 360 + 360) % 360;
}
- const numDecimals = v.includes(".") ? v.split(".")[1].length : 0;
- return clamped(num).toFixed(numDecimals);
+ return formatFloat(clamped(num), isRawNumber ? v2.includes(".") ? v2.split(".")[1].length : 0 : countDecimalPlaces(v2));
});
input.node().value = vals.join(";");
change()();
var url = field.urlFormat.replace(/{value}/, encodeURIComponent(value));
window.open(url, "_blank");
}
- }).merge(outlinkButton);
+ }).classed("disabled", () => !validIdentifierValueForLink()).merge(outlinkButton);
} else if (field.type === "url") {
input.attr("type", "text");
outlinkButton = wrap2.selectAll(".foreign-id-permalink").data([0]);
}, 100));
wrap2.selectAll("input.colour-selector").attr("value", colour);
var chooserButton = wrap2.selectAll(".colour-preview").data([colour]);
- chooserButton = chooserButton.enter().append("div").attr("class", "form-field-button colour-preview").append("div").style("background-color", (d) => d).attr("class", "colour-box");
+ chooserButton = chooserButton.enter().append("div").attr("class", "form-field-button colour-preview").append("div").style("background-color", (d2) => d2).attr("class", "colour-box");
if (colour === "") {
chooserButton = chooserButton.call(svgIcon("#iD-icon-edit"));
}
if (field.type === "url" && value) {
try {
return new URL(value).href;
- } catch (e) {
+ } catch (e3) {
return null;
}
}
if (field.type === "identifier" && field.pattern) {
- return value && value.match(new RegExp(field.pattern))[0];
+ return value && value.match(new RegExp(field.pattern))?.[0];
}
return null;
}
}
return num;
}
+ function getVals(tags) {
+ if (field.keys) {
+ const multiSelection = context.selectedIDs();
+ tags = multiSelection.length > 1 ? context.selectedIDs().map((id2) => context.graph().entity(id2)).map((entity) => entity.tags) : [tags];
+ return tags.map((tags2) => new Set(field.keys.reduce((acc, key) => acc.concat(tags2[key]), []).filter(Boolean))).map((vals) => vals.size === 0 ? /* @__PURE__ */ new Set([void 0]) : vals).reduce((a2, b2) => /* @__PURE__ */ new Set([...a2, ...b2]));
+ } else {
+ return new Set([].concat(tags[field.key]));
+ }
+ }
function change(onInput) {
return function() {
- var t = {};
+ var t2 = {};
var val = utilGetSetValue(input);
if (!onInput)
val = context.cleanTagValue(val);
- if (!val && Array.isArray(_tags[field.key]))
+ if (!val && getVals(_tags).size > 1)
return;
- if (!onInput) {
- if (field.type === "number" && val) {
- var vals = val.split(";");
- vals = vals.map(function(v) {
- var num = Number(v);
- return isFinite(num) ? clamped(num) : v.trim();
- });
- val = vals.join(";");
- }
- utilGetSetValue(input, val);
+ var displayVal = val;
+ if (field.type === "number" && val) {
+ var numbers2 = val.split(";");
+ numbers2 = numbers2.map(function(v2) {
+ if (likelyRawNumberFormat.test(v2)) {
+ return v2;
+ }
+ var num = parseLocaleFloat(v2);
+ const fractionDigits = countDecimalPlaces(v2);
+ return isFinite(num) ? clamped(num).toFixed(fractionDigits) : v2;
+ });
+ val = numbers2.join(";");
+ }
+ if (!onInput)
+ utilGetSetValue(input, displayVal);
+ t2[field.key] = val || void 0;
+ if (field.keys) {
+ dispatch14.call("change", this, (tags) => {
+ if (field.keys.some((key) => tags[key])) {
+ field.keys.filter((key) => tags[key]).forEach((key) => {
+ tags[key] = val || void 0;
+ });
+ } else {
+ tags[field.key] = val || void 0;
+ }
+ return tags;
+ }, onInput);
+ } else {
+ dispatch14.call("change", this, t2, onInput);
}
- t[field.key] = val || void 0;
- dispatch10.call("change", this, t, onInput);
};
}
- i2.entityIDs = function(val) {
+ i3.entityIDs = function(val) {
if (!arguments.length)
return _entityIDs;
_entityIDs = val;
- return i2;
+ return i3;
};
- i2.tags = function(tags) {
+ i3.tags = function(tags) {
_tags = tags;
- var isMixed = Array.isArray(tags[field.key]);
- utilGetSetValue(input, !isMixed && tags[field.key] ? tags[field.key] : "").attr("title", isMixed ? tags[field.key].filter(Boolean).join("\n") : void 0).attr("placeholder", isMixed ? _t("inspector.multiple_values") : field.placeholder() || _t("inspector.unknown")).classed("mixed", isMixed);
+ const vals = getVals(tags);
+ const isMixed = vals.size > 1;
+ var val = vals.size === 1 ? [...vals][0] ?? "" : "";
+ var shouldUpdate;
+ if (field.type === "number" && val) {
+ var numbers2 = val.split(";");
+ var oriNumbers = utilGetSetValue(input).split(";");
+ if (numbers2.length !== oriNumbers.length)
+ shouldUpdate = true;
+ numbers2 = numbers2.map(function(v2) {
+ v2 = v2.trim();
+ var num = Number(v2);
+ if (!isFinite(num) || v2 === "")
+ return v2;
+ const fractionDigits = v2.includes(".") ? v2.split(".")[1].length : 0;
+ return formatFloat(num, fractionDigits);
+ });
+ val = numbers2.join(";");
+ shouldUpdate = (inputValue, setValue) => {
+ const inputNums = inputValue.split(";").map(
+ (setVal) => likelyRawNumberFormat.test(setVal) ? parseFloat(setVal) : parseLocaleFloat(setVal)
+ );
+ const setNums = setValue.split(";").map(parseLocaleFloat);
+ return !isEqual_default(inputNums, setNums);
+ };
+ }
+ utilGetSetValue(input, val, shouldUpdate).attr("title", isMixed ? [...vals].join("\n") : void 0).attr("placeholder", isMixed ? _t("inspector.multiple_values") : field.placeholder() || _t("inspector.unknown")).classed("mixed", isMixed);
if (field.type === "number") {
const buttons = wrap2.selectAll(".increment, .decrement");
if (isMixed) {
buttons.attr("disabled", "disabled").classed("disabled", true);
} else {
var raw_vals = tags[field.key] || "0";
- const canIncDec = raw_vals.split(";").some((val) => isFinite(Number(val)) || isDirectionField && cardinal[val.trim().toLowerCase()]);
+ const canIncDec = raw_vals.split(";").some((val2) => isFinite(Number(val2)) || isDirectionField && cardinal[val2.trim().toLowerCase()]);
buttons.attr("disabled", canIncDec ? null : "disabled").classed("disabled", !canIncDec);
}
}
_lengthIndicator.update(tags[field.key]);
}
};
- i2.focus = function() {
+ i3.focus = function() {
var node = input.node();
if (node)
node.focus();
function combinedEntityExtent() {
return _entityIDs && _entityIDs.length && utilTotalExtent(_entityIDs, context.graph());
}
- return utilRebind(i2, dispatch10, "on");
+ return utilRebind(i3, dispatch14, "on");
}
// modules/ui/fields/access.js
function uiFieldAccess(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var items = select_default2(null);
var _tags;
function access(selection2) {
var list = wrap2.selectAll("ul").data([0]);
list = list.enter().append("ul").attr("class", "rows").merge(list);
items = list.selectAll("li").data(field.keys);
- var enter = items.enter().append("li").attr("class", function(d) {
- return "labeled-input preset-access-" + d;
+ var enter = items.enter().append("li").attr("class", function(d2) {
+ return "labeled-input preset-access-" + d2;
});
- enter.append("span").attr("class", "label preset-label-access").attr("for", function(d) {
- return "preset-input-access-" + d;
- }).html(function(d) {
- return field.t.html("types." + d);
+ enter.append("span").attr("class", "label preset-label-access").attr("for", function(d2) {
+ return "preset-input-access-" + d2;
+ }).html(function(d2) {
+ return field.t.html("types." + d2);
});
- enter.append("div").attr("class", "preset-input-access-wrap").append("input").attr("type", "text").attr("class", function(d) {
- return "preset-input-access preset-input-access-" + d;
- }).call(utilNoAuto).each(function(d) {
+ enter.append("div").attr("class", "preset-input-access-wrap").append("input").attr("type", "text").attr("class", function(d2) {
+ return "preset-input-access preset-input-access-" + d2;
+ }).call(utilNoAuto).each(function(d2) {
select_default2(this).call(
- uiCombobox(context, "access-" + d).data(access.options(d))
+ uiCombobox(context, "access-" + d2).data(access.options(d2))
);
});
items = items.merge(enter);
wrap2.selectAll(".preset-input-access").on("change", change).on("blur", change);
}
- function change(d3_event, d) {
+ function change(d3_event, d2) {
var tag = {};
var value = context.cleanTagValue(utilGetSetValue(select_default2(this)));
- if (!value && typeof _tags[d] !== "string")
+ if (!value && typeof _tags[d2] !== "string")
return;
- tag[d] = value || void 0;
- dispatch10.call("change", this, tag);
+ tag[d2] = value || void 0;
+ dispatch14.call("change", this, tag);
}
access.options = function(type2) {
var options2 = [
"unknown"
];
if (type2 === "access") {
- options2 = options2.filter((v) => v !== "yes" && v !== "designated");
+ options2 = options2.filter((v2) => v2 !== "yes" && v2 !== "designated");
}
if (type2 === "bicycle") {
options2.splice(options2.length - 4, 0, "dismount");
};
access.tags = function(tags) {
_tags = tags;
- utilGetSetValue(items.selectAll(".preset-input-access"), function(d) {
- return typeof tags[d] === "string" ? tags[d] : "";
- }).classed("mixed", function(d) {
- return tags[d] && Array.isArray(tags[d]);
- }).attr("title", function(d) {
- return tags[d] && Array.isArray(tags[d]) && tags[d].filter(Boolean).join("\n");
- }).attr("placeholder", function(d) {
- if (tags[d] && Array.isArray(tags[d])) {
+ utilGetSetValue(items.selectAll(".preset-input-access"), function(d2) {
+ return typeof tags[d2] === "string" ? tags[d2] : "";
+ }).classed("mixed", function(d2) {
+ return tags[d2] && Array.isArray(tags[d2]);
+ }).attr("title", function(d2) {
+ return tags[d2] && Array.isArray(tags[d2]) && tags[d2].filter(Boolean).join("\n");
+ }).attr("placeholder", function(d2) {
+ if (tags[d2] && Array.isArray(tags[d2])) {
return _t("inspector.multiple_values");
}
- if (d === "bicycle" || d === "motor_vehicle") {
+ if (d2 === "bicycle" || d2 === "motor_vehicle") {
if (tags.vehicle && typeof tags.vehicle === "string") {
return tags.vehicle;
}
}
function getPlaceholdersByTag(key, placeholdersByKey) {
if (typeof tags[key] === "string") {
- if (placeholdersByKey[tags[key]] && placeholdersByKey[tags[key]][d]) {
- return placeholdersByKey[tags[key]][d];
+ if (placeholdersByKey[tags[key]] && placeholdersByKey[tags[key]][d2]) {
+ return placeholdersByKey[tags[key]][d2];
}
} else {
var impliedAccesses = tags[key].filter(Boolean).map(function(val) {
- return placeholdersByKey[val] && placeholdersByKey[val][d];
+ return placeholdersByKey[val] && placeholdersByKey[val][d2];
}).filter(Boolean);
if (impliedAccesses.length === tags[key].length && new Set(impliedAccesses).size === 1) {
return impliedAccesses[0];
}
}
}
- if (d === "access" && !tags.barrier) {
+ if (d2 === "access" && !tags.barrier) {
return "yes";
}
return field.placeholder();
access.focus = function() {
items.selectAll(".preset-input-access").node().focus();
};
- return utilRebind(access, dispatch10, "on");
+ return utilRebind(access, dispatch14, "on");
}
// modules/ui/fields/address.js
function uiFieldAddress(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var _selection = select_default2(null);
var _wrap = select_default2(null);
var addrField = _mainPresetIndex.field("address");
["city", "postcode"]
]
}];
- _mainFileFetcher.get("address_formats").then(function(d) {
- _addressFormats = d;
+ _mainFileFetcher.get("address_formats").then(function(d2) {
+ _addressFormats = d2;
if (!_selection.empty()) {
_selection.call(address);
}
}).catch(function() {
});
- function getNearStreets() {
+ function getNear(isAddressable, type2, searchRadius, resultProp) {
var extent = combinedEntityExtent();
- var l = extent.center();
- var box = geoExtent(l).padByMeters(200);
- var streets = context.history().intersects(box).filter(isAddressable).map(function(d) {
- var loc = context.projection([
- (extent[0][0] + extent[1][0]) / 2,
- (extent[0][1] + extent[1][1]) / 2
- ]);
- var choice = geoChooseEdge(context.graph().childNodes(d), loc, context.projection);
+ var l2 = extent.center();
+ var box = geoExtent(l2).padByMeters(searchRadius);
+ var features = context.history().intersects(box).filter(isAddressable).map((d2) => {
+ let dist = geoSphericalDistance(d2.extent(context.graph()).center(), l2);
+ if (d2.geometry(context.graph()) === "line") {
+ var loc = context.projection([
+ (extent[0][0] + extent[1][0]) / 2,
+ (extent[0][1] + extent[1][1]) / 2
+ ]);
+ var choice = geoChooseEdge(context.graph().childNodes(d2), loc, context.projection);
+ dist = geoSphericalDistance(choice.loc, l2);
+ }
+ const value = resultProp && d2.tags[resultProp] ? d2.tags[resultProp] : d2.tags.name;
+ let title = value;
+ if (type2 === "street") {
+ title = `${addrField.t("placeholders.street")}: ${title}`;
+ } else if (type2 === "place") {
+ title = `${addrField.t("placeholders.place")}: ${title}`;
+ }
return {
- title: d.tags.name,
- value: d.tags.name,
- dist: choice.distance
+ title,
+ value,
+ dist,
+ type: type2,
+ klass: `address-${type2}`
};
- }).sort(function(a, b) {
- return a.dist - b.dist;
+ }).sort(function(a2, b2) {
+ return a2.dist - b2.dist;
});
- return utilArrayUniqBy(streets, "value");
- function isAddressable(d) {
- return d.tags.highway && d.tags.name && d.type === "way";
+ return utilArrayUniqBy(features, "value");
+ }
+ function getNearStreets() {
+ function isAddressable(d2) {
+ return d2.tags.highway && d2.tags.name && d2.type === "way";
}
+ return getNear(isAddressable, "street", 200);
+ }
+ function getNearPlaces() {
+ function isAddressable(d2) {
+ if (d2.tags.name) {
+ if (d2.tags.place)
+ return true;
+ if (d2.tags.boundary === "administrative" && d2.tags.admin_level > 8)
+ return true;
+ }
+ return false;
+ }
+ return getNear(isAddressable, "place", 200);
}
function getNearCities() {
- var extent = combinedEntityExtent();
- var l = extent.center();
- var box = geoExtent(l).padByMeters(200);
- var cities = context.history().intersects(box).filter(isAddressable).map(function(d) {
- return {
- title: d.tags["addr:city"] || d.tags.name,
- value: d.tags["addr:city"] || d.tags.name,
- dist: geoSphericalDistance(d.extent(context.graph()).center(), l)
- };
- }).sort(function(a, b) {
- return a.dist - b.dist;
- });
- return utilArrayUniqBy(cities, "value");
- function isAddressable(d) {
- if (d.tags.name) {
- if (d.tags.admin_level === "8" && d.tags.boundary === "administrative")
+ function isAddressable(d2) {
+ if (d2.tags.name) {
+ if (d2.tags.boundary === "administrative" && d2.tags.admin_level === "8")
return true;
- if (d.tags.border_type === "city")
+ if (d2.tags.border_type === "city")
return true;
- if (d.tags.place === "city" || d.tags.place === "town" || d.tags.place === "village")
+ if (d2.tags.place === "city" || d2.tags.place === "town" || d2.tags.place === "village")
return true;
}
- if (d.tags["addr:city"])
+ if (d2.tags[`${field.key}:city`])
return true;
return false;
}
+ return getNear(isAddressable, "city", 200, `${field.key}:city`);
+ }
+ function getNearPostcodes() {
+ return [...new Set([].concat(getNearValues("postcode")).concat(getNear((d2) => d2.tags.postal_code, "postcode", 200, "postal_code")))];
}
function getNearValues(key) {
- var extent = combinedEntityExtent();
- var l = extent.center();
- var box = geoExtent(l).padByMeters(200);
- var results = context.history().intersects(box).filter(function hasTag(d) {
- return _entityIDs.indexOf(d.id) === -1 && d.tags[key];
- }).map(function(d) {
- return {
- title: d.tags[key],
- value: d.tags[key],
- dist: geoSphericalDistance(d.extent(context.graph()).center(), l)
- };
- }).sort(function(a, b) {
- return a.dist - b.dist;
- });
- return utilArrayUniqBy(results, "value");
+ const tagKey = `${field.key}:${key}`;
+ function hasTag(d2) {
+ return _entityIDs.indexOf(d2.id) === -1 && d2.tags[tagKey];
+ }
+ return getNear(hasTag, key, 200, tagKey);
}
function updateForCountryCode() {
if (!_countryCode)
return;
var addressFormat;
- for (var i2 = 0; i2 < _addressFormats.length; i2++) {
- var format2 = _addressFormats[i2];
+ for (var i3 = 0; i3 < _addressFormats.length; i3++) {
+ var format2 = _addressFormats[i3];
if (!format2.countryCodes) {
addressFormat = format2;
} else if (format2.countryCodes.indexOf(_countryCode) !== -1) {
"quarter",
"state",
"street",
+ "street+place",
"subdistrict",
"suburb"
];
var widths = addressFormat.widths || {
- housenumber: 1 / 3,
- street: 2 / 3,
+ housenumber: 1 / 5,
+ unit: 1 / 5,
+ street: 1 / 2,
+ place: 1 / 2,
city: 2 / 3,
state: 1 / 4,
postcode: 1 / 3
};
- function row(r) {
- var total = r.reduce(function(sum, key) {
+ function row(r2) {
+ var total = r2.reduce(function(sum, key) {
return sum + (widths[key] || 0.5);
}, 0);
- return r.map(function(key) {
+ return r2.map(function(key) {
return {
id: key,
width: (widths[key] || 0.5) / total
};
});
}
- var rows = _wrap.selectAll(".addr-row").data(addressFormat.format, function(d) {
- return d.toString();
+ var rows = _wrap.selectAll(".addr-row").data(addressFormat.format, function(d2) {
+ return d2.toString();
});
rows.exit().remove();
- rows.enter().append("div").attr("class", "addr-row").selectAll("input").data(row).enter().append("input").property("type", "text").call(updatePlaceholder).attr("class", function(d) {
- return "addr-" + d.id;
- }).call(utilNoAuto).each(addDropdown).style("width", function(d) {
- return d.width * 100 + "%";
+ rows.enter().append("div").attr("class", "addr-row").selectAll("input").data(row).enter().append("input").property("type", "text").call(updatePlaceholder).attr("class", function(d2) {
+ return "addr-" + d2.id;
+ }).call(utilNoAuto).each(addDropdown).style("width", function(d2) {
+ return d2.width * 100 + "%";
});
- function addDropdown(d) {
- if (dropdowns.indexOf(d.id) === -1)
+ function addDropdown(d2) {
+ if (dropdowns.indexOf(d2.id) === -1)
return;
- var nearValues = d.id === "street" ? getNearStreets : d.id === "city" ? getNearCities : getNearValues;
+ var nearValues;
+ switch (d2.id) {
+ case "street":
+ nearValues = getNearStreets;
+ break;
+ case "place":
+ nearValues = getNearPlaces;
+ break;
+ case "street+place":
+ nearValues = () => [].concat(getNearStreets()).concat(getNearPlaces());
+ d2.isAutoStreetPlace = true;
+ d2.id = _tags[`${field.key}:place`] ? "place" : "street";
+ break;
+ case "city":
+ nearValues = getNearCities;
+ break;
+ case "postcode":
+ nearValues = getNearPostcodes;
+ break;
+ default:
+ nearValues = getNearValues;
+ }
select_default2(this).call(
- uiCombobox(context, "address-" + d.id).minItems(1).caseSensitive(true).fetcher(function(value, callback) {
- callback(nearValues("addr:" + d.id));
+ uiCombobox(context, `address-${d2.isAutoStreetPlace ? "street-place" : d2.id}`).minItems(1).caseSensitive(true).fetcher(function(typedValue, callback) {
+ typedValue = typedValue.toLowerCase();
+ callback(nearValues(d2.id).filter((v2) => v2.value.toLowerCase().indexOf(typedValue) !== -1));
+ }).on("accept", function(selected) {
+ if (d2.isAutoStreetPlace) {
+ d2.id = selected ? selected.type : "street";
+ }
})
);
}
}
function change(onInput) {
return function() {
- var tags = {};
- _wrap.selectAll("input").each(function(subfield) {
- var key = field.key + ":" + subfield.id;
- var value = this.value;
- if (!onInput)
- value = context.cleanTagValue(value);
- if (Array.isArray(_tags[key]) && !value)
- return;
- tags[key] = value || void 0;
- });
- dispatch10.call("change", this, tags, onInput);
+ setTimeout(() => {
+ var tags = {};
+ _wrap.selectAll("input").each(function(subfield) {
+ var key = field.key + ":" + subfield.id;
+ var value = this.value;
+ if (!onInput)
+ value = context.cleanTagValue(value);
+ if (Array.isArray(_tags[key]) && !value)
+ return;
+ if (subfield.isAutoStreetPlace) {
+ if (subfield.id === "street") {
+ tags[`${field.key}:place`] = void 0;
+ } else if (subfield.id === "place") {
+ tags[`${field.key}:street`] = void 0;
+ }
+ }
+ tags[key] = value || void 0;
+ });
+ Object.keys(tags).filter((k2) => tags[k2]).forEach((k2) => _tags[k2] = tags[k2]);
+ dispatch14.call("change", this, tags, onInput);
+ }, 0);
};
}
function updatePlaceholder(inputSelection) {
if (_tags && Array.isArray(_tags[field.key + ":" + subfield.id])) {
return _t("inspector.multiple_values");
}
- if (_countryCode) {
- var localkey = subfield.id + "!" + _countryCode;
- var tkey = addrField.hasTextForStringId("placeholders." + localkey) ? localkey : subfield.id;
- return addrField.t("placeholders." + tkey);
+ if (subfield.isAutoStreetPlace) {
+ return `${getLocalPlaceholder("street")} / ${getLocalPlaceholder("place")}`;
}
+ return getLocalPlaceholder(subfield.id);
});
}
+ function getLocalPlaceholder(key) {
+ if (_countryCode) {
+ var localkey = key + "!" + _countryCode;
+ var tkey = addrField.hasTextForStringId("placeholders." + localkey) ? localkey : key;
+ return addrField.t("placeholders." + tkey);
+ }
+ }
function updateTags(tags) {
- utilGetSetValue(_wrap.selectAll("input"), function(subfield) {
- var val = tags[field.key + ":" + subfield.id];
+ utilGetSetValue(_wrap.selectAll("input"), (subfield) => {
+ var val;
+ if (subfield.isAutoStreetPlace) {
+ const streetKey = `${field.key}:street`;
+ const placeKey = `${field.key}:place`;
+ if (tags[streetKey] !== void 0 || tags[placeKey] === void 0) {
+ val = tags[streetKey];
+ subfield.id = "street";
+ } else {
+ val = tags[placeKey];
+ subfield.id = "place";
+ }
+ } else {
+ val = tags[`${field.key}:${subfield.id}`];
+ }
return typeof val === "string" ? val : "";
}).attr("title", function(subfield) {
var val = tags[field.key + ":" + subfield.id];
if (node)
node.focus();
};
- return utilRebind(address, dispatch10, "on");
+ return utilRebind(address, dispatch14, "on");
}
// modules/ui/fields/directional_combo.js
function uiFieldDirectionalCombo(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var items = select_default2(null);
var wrap2 = select_default2(null);
var _tags;
};
}
function directionalCombo(selection2) {
- function stripcolon(s) {
- return s.replace(":", "");
+ function stripcolon(s2) {
+ return s2.replace(":", "");
}
wrap2 = selection2.selectAll(".form-field-input-wrap").data([0]);
wrap2 = wrap2.enter().append("div").attr("class", "form-field-input-wrap form-field-input-" + field.type).merge(wrap2);
var div = wrap2.selectAll("ul").data([0]);
div = div.enter().append("ul").attr("class", "rows").merge(div);
items = div.selectAll("li").data(field.keys);
- var enter = items.enter().append("li").attr("class", function(d) {
- return "labeled-input preset-directionalcombo-" + stripcolon(d);
+ var enter = items.enter().append("li").attr("class", function(d2) {
+ return "labeled-input preset-directionalcombo-" + stripcolon(d2);
});
- enter.append("span").attr("class", "label preset-label-directionalcombo").attr("for", function(d) {
- return "preset-input-directionalcombo-" + stripcolon(d);
- }).html(function(d) {
- return field.t.html("types." + d);
+ enter.append("span").attr("class", "label preset-label-directionalcombo").attr("for", function(d2) {
+ return "preset-input-directionalcombo-" + stripcolon(d2);
+ }).html(function(d2) {
+ return field.t.html("types." + d2);
});
enter.append("div").attr("class", "preset-input-directionalcombo-wrap form-field-input-wrap").each(function(key) {
const subField = {
key
};
const combo = uiFieldCombo(subField, context);
- combo.on("change", (t) => change(key, t[key]));
+ combo.on("change", (t2) => change(key, t2[key]));
_combos[key] = combo;
select_default2(this).call(combo);
});
function change(key, newValue) {
const commonKey = field.key;
const otherKey = key === field.keys[0] ? field.keys[1] : field.keys[0];
- dispatch10.call("change", this, (tags) => {
+ dispatch14.call("change", this, (tags) => {
const otherValue = tags[otherKey] || tags[commonKey];
if (newValue === otherValue) {
tags[commonKey] = newValue;
if (node)
node.focus();
};
- return utilRebind(directionalCombo, dispatch10, "on");
+ return utilRebind(directionalCombo, dispatch14, "on");
}
// modules/ui/fields/lanes.js
function uiFieldLanes(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var LANE_WIDTH = 40;
var LANE_HEIGHT = 200;
var _entityIDs = [];
var wrap2 = selection2.selectAll(".form-field-input-wrap").data([0]);
wrap2 = wrap2.enter().append("div").attr("class", "form-field-input-wrap form-field-input-" + field.type).merge(wrap2);
var surface = wrap2.selectAll(".surface").data([0]);
- var d = utilGetDimensions(wrap2);
- var freeSpace = d[0] - lanesData.lanes.length * LANE_WIDTH * 1.5 + LANE_WIDTH * 0.5;
- surface = surface.enter().append("svg").attr("width", d[0]).attr("height", 300).attr("class", "surface").merge(surface);
+ var d2 = utilGetDimensions(wrap2);
+ var freeSpace = d2[0] - lanesData.lanes.length * LANE_WIDTH * 1.5 + LANE_WIDTH * 0.5;
+ surface = surface.enter().append("svg").attr("width", d2[0]).attr("height", 300).attr("class", "surface").merge(surface);
var lanesSelection = surface.selectAll(".lanes").data([0]);
lanesSelection = lanesSelection.enter().append("g").attr("class", "lanes").merge(lanesSelection);
lanesSelection.attr("transform", function() {
enter.append("g").attr("class", "bothways").append("text").attr("y", 40).attr("x", 14).text("\u25B2\u25BC");
enter.append("g").attr("class", "backward").append("text").attr("y", 40).attr("x", 14).text("\u25BC");
lane = lane.merge(enter);
- lane.attr("transform", function(d2) {
- return "translate(" + LANE_WIDTH * d2.index * 1.5 + ", 0)";
+ lane.attr("transform", function(d4) {
+ return "translate(" + LANE_WIDTH * d4.index * 1.5 + ", 0)";
});
- lane.select(".forward").style("visibility", function(d2) {
- return d2.direction === "forward" ? "visible" : "hidden";
+ lane.select(".forward").style("visibility", function(d4) {
+ return d4.direction === "forward" ? "visible" : "hidden";
});
- lane.select(".bothways").style("visibility", function(d2) {
- return d2.direction === "bothways" ? "visible" : "hidden";
+ lane.select(".bothways").style("visibility", function(d4) {
+ return d4.direction === "bothways" ? "visible" : "hidden";
});
- lane.select(".backward").style("visibility", function(d2) {
- return d2.direction === "backward" ? "visible" : "hidden";
+ lane.select(".backward").style("visibility", function(d4) {
+ return d4.direction === "backward" ? "visible" : "hidden";
});
}
lanes.entityIDs = function(val) {
};
lanes.off = function() {
};
- return utilRebind(lanes, dispatch10, "on");
+ return utilRebind(lanes, dispatch14, "on");
}
uiFieldLanes.supportsMultiselection = false;
// modules/ui/fields/localized.js
var _languagesArray = [];
function uiFieldLocalized(field, context) {
- var dispatch10 = dispatch_default("change", "input");
+ var dispatch14 = dispatch_default("change", "input");
var wikipedia = services.wikipedia;
var input = select_default2(null);
var localizedInputs = select_default2(null);
_mainFileFetcher.get("languages").then(loadLanguagesArray).catch(function() {
});
var _territoryLanguages = {};
- _mainFileFetcher.get("territory_languages").then(function(d) {
- _territoryLanguages = d;
+ _mainFileFetcher.get("territory_languages").then(function(d2) {
+ _territoryLanguages = d2;
}).catch(function() {
});
var langCombo = uiCombobox(context, "localized-lang").fetcher(fetchLanguages).minItems(0);
var preset = _mainPresetIndex.match(entity, context.graph());
if (preset) {
var isSuggestion = preset.suggestion;
- var fields = preset.fields();
- var showsBrandField = fields.some(function(d) {
- return d.id === "brand";
+ var fields = preset.fields(entity.extent(context.graph()).center());
+ var showsBrandField = fields.some(function(d2) {
+ return d2.id === "brand";
});
- var showsOperatorField = fields.some(function(d) {
- return d.id === "operator";
+ var showsOperatorField = fields.some(function(d2) {
+ return d2.id === "operator";
});
var setsName = preset.addTags.name;
var setsBrandWikidata = preset.addTags["brand:wikidata"];
return item2.lang;
});
var existingLangs = new Set(existingLangsOrdered.filter(Boolean));
- for (var k in tags) {
- var m = k.match(/^(.*):([a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-[A-Z]{2})?)$/);
- if (m && m[1] === field.key && m[2]) {
- var item = { lang: m[2], value: tags[k] };
+ for (var k2 in tags) {
+ var m2 = k2.match(/^(.*):([a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-[A-Z]{2})?)$/);
+ if (m2 && m2[1] === field.key && m2[2]) {
+ var item = { lang: m2[2], value: tags[k2] };
if (existingLangs.has(item.lang)) {
_multilingual[existingLangsOrdered.indexOf(item.lang)].value = item.value;
existingLangs.delete(item.lang);
val = context.cleanTagValue(val);
if (!val && Array.isArray(_tags[field.key]))
return;
- var t = {};
- t[field.key] = val || void 0;
- dispatch10.call("change", this, t, onInput);
+ var t2 = {};
+ t2[field.key] = val || void 0;
+ dispatch14.call("change", this, t2, onInput);
};
}
}
function key(lang) {
return field.key + ":" + lang;
}
- function changeLang(d3_event, d) {
+ function changeLang(d3_event, d2) {
var tags = {};
var lang = utilGetSetValue(select_default2(this)).toLowerCase();
- var language = _languagesArray.find(function(d2) {
- return d2.label.toLowerCase() === lang || d2.localName && d2.localName.toLowerCase() === lang || d2.nativeName && d2.nativeName.toLowerCase() === lang;
+ var language = _languagesArray.find(function(d4) {
+ return d4.label.toLowerCase() === lang || d4.localName && d4.localName.toLowerCase() === lang || d4.nativeName && d4.nativeName.toLowerCase() === lang;
});
if (language)
lang = language.code;
- if (d.lang && d.lang !== lang) {
- tags[key(d.lang)] = void 0;
+ if (d2.lang && d2.lang !== lang) {
+ tags[key(d2.lang)] = void 0;
}
var newKey = lang && context.cleanTagKey(key(lang));
var value = utilGetSetValue(select_default2(this.parentNode).selectAll(".localized-value"));
if (newKey && value) {
tags[newKey] = value;
- } else if (newKey && _wikiTitles && _wikiTitles[d.lang]) {
- tags[newKey] = _wikiTitles[d.lang];
+ } else if (newKey && _wikiTitles && _wikiTitles[d2.lang]) {
+ tags[newKey] = _wikiTitles[d2.lang];
}
- d.lang = lang;
- dispatch10.call("change", this, tags);
+ d2.lang = lang;
+ dispatch14.call("change", this, tags);
}
- function changeValue(d3_event, d) {
- if (!d.lang)
+ function changeValue(d3_event, d2) {
+ if (!d2.lang)
return;
var value = context.cleanTagValue(utilGetSetValue(select_default2(this))) || void 0;
- if (!value && Array.isArray(d.value))
+ if (!value && Array.isArray(d2.value))
return;
- var t = {};
- t[key(d.lang)] = value;
- d.value = value;
- dispatch10.call("change", this, t);
+ var t2 = {};
+ t2[key(d2.lang)] = value;
+ d2.value = value;
+ dispatch14.call("change", this, t2);
}
function fetchLanguages(value, cb) {
- var v = value.toLowerCase();
+ var v2 = value.toLowerCase();
var langCodes = [_mainLocalizer.localeCode(), _mainLocalizer.languageCode()];
if (_countryCode && _territoryLanguages[_countryCode]) {
langCodes = langCodes.concat(_territoryLanguages[_countryCode]);
langItems.push(langItem);
});
langItems = utilArrayUniq(langItems.concat(_languagesArray));
- cb(langItems.filter(function(d) {
- return d.label.toLowerCase().indexOf(v) >= 0 || d.localName && d.localName.toLowerCase().indexOf(v) >= 0 || d.nativeName && d.nativeName.toLowerCase().indexOf(v) >= 0 || d.code.toLowerCase().indexOf(v) >= 0;
- }).map(function(d) {
- return { value: d.label };
+ cb(langItems.filter(function(d2) {
+ return d2.label.toLowerCase().indexOf(v2) >= 0 || d2.localName && d2.localName.toLowerCase().indexOf(v2) >= 0 || d2.nativeName && d2.nativeName.toLowerCase().indexOf(v2) >= 0 || d2.code.toLowerCase().indexOf(v2) >= 0;
+ }).map(function(d2) {
+ return { value: d2.label };
}));
}
function renderMultilingual(selection2) {
- var entries = selection2.selectAll("div.entry").data(_multilingual, function(d) {
- return d.lang;
+ var entries = selection2.selectAll("div.entry").data(_multilingual, function(d2) {
+ return d2.lang;
});
entries.exit().style("top", "0").style("max-height", "240px").transition().duration(200).style("opacity", "0").style("max-height", "0px").remove();
- var entriesEnter = entries.enter().append("div").attr("class", "entry").each(function(_, index) {
+ var entriesEnter = entries.enter().append("div").attr("class", "entry").each(function(_2, index) {
var wrap2 = select_default2(this);
var domId = utilUniqueDomId(index);
var label = wrap2.append("label").attr("class", "field-label").attr("for", domId);
var text2 = label.append("span").attr("class", "label-text");
text2.append("span").attr("class", "label-textvalue").call(_t.append("translate.localized_translation_label"));
text2.append("span").attr("class", "label-textannotation");
- label.append("button").attr("class", "remove-icon-multilingual").attr("title", _t("icons.remove")).on("click", function(d3_event, d) {
+ label.append("button").attr("class", "remove-icon-multilingual").attr("title", _t("icons.remove")).on("click", function(d3_event, d2) {
if (field.locked())
return;
d3_event.preventDefault();
- _multilingual.splice(_multilingual.indexOf(d), 1);
- var langKey = d.lang && key(d.lang);
+ _multilingual.splice(_multilingual.indexOf(d2), 1);
+ var langKey = d2.lang && key(d2.lang);
if (langKey && langKey in _tags) {
delete _tags[langKey];
- var t = {};
- t[langKey] = void 0;
- dispatch10.call("change", this, t);
+ var t2 = {};
+ t2[langKey] = void 0;
+ dispatch14.call("change", this, t2);
return;
}
renderMultilingual(selection2);
entries = entries.merge(entriesEnter);
entries.order();
entries.classed("present", true);
- utilGetSetValue(entries.select(".localized-lang"), function(d) {
+ utilGetSetValue(entries.select(".localized-lang"), function(d2) {
var langItem = _languagesArray.find(function(item) {
- return item.code === d.lang;
+ return item.code === d2.lang;
});
if (langItem)
return langItem.label;
- return d.lang;
+ return d2.lang;
});
- utilGetSetValue(entries.select(".localized-value"), function(d) {
- return typeof d.value === "string" ? d.value : "";
- }).attr("title", function(d) {
- return Array.isArray(d.value) ? d.value.filter(Boolean).join("\n") : null;
- }).attr("placeholder", function(d) {
- return Array.isArray(d.value) ? _t("inspector.multiple_values") : _t("translate.localized_translation_name");
- }).classed("mixed", function(d) {
- return Array.isArray(d.value);
+ utilGetSetValue(entries.select(".localized-value"), function(d2) {
+ return typeof d2.value === "string" ? d2.value : "";
+ }).attr("title", function(d2) {
+ return Array.isArray(d2.value) ? d2.value.filter(Boolean).join("\n") : null;
+ }).attr("placeholder", function(d2) {
+ return Array.isArray(d2.value) ? _t("inspector.multiple_values") : _t("translate.localized_translation_name");
+ }).classed("mixed", function(d2) {
+ return Array.isArray(d2.value);
});
}
localized.tags = function(tags) {
_wikiTitles = {};
var wm = tags.wikipedia.match(/([^:]+):(.+)/);
if (wm && wm[0] && wm[1]) {
- wikipedia.translations(wm[1], wm[2], function(err, d) {
- if (err || !d)
+ wikipedia.translations(wm[1], wm[2], function(err, d2) {
+ if (err || !d2)
return;
- _wikiTitles = d;
+ _wikiTitles = d2;
});
}
}
function combinedEntityExtent() {
return _entityIDs && _entityIDs.length && utilTotalExtent(_entityIDs, context.graph());
}
- return utilRebind(localized, dispatch10, "on");
+ return utilRebind(localized, dispatch14, "on");
}
// modules/ui/fields/roadheight.js
function uiFieldRoadheight(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var primaryUnitInput = select_default2(null);
var primaryInput = select_default2(null);
var secondaryInput = select_default2(null);
var _entityIDs = [];
var _tags;
var _isImperial;
+ var formatFloat = _mainLocalizer.floatFormatter(_mainLocalizer.languageCode());
+ var parseLocaleFloat = _mainLocalizer.floatParser(_mainLocalizer.languageCode());
var primaryUnits = [
{
value: "m",
return;
if (!primaryValue && !secondaryValue) {
tag[field.key] = void 0;
- } else if (isNaN(primaryValue) || isNaN(secondaryValue) || !_isImperial) {
- tag[field.key] = context.cleanTagValue(primaryValue);
} else {
- if (primaryValue !== "") {
- primaryValue = context.cleanTagValue(primaryValue + "'");
- }
- if (secondaryValue !== "") {
- secondaryValue = context.cleanTagValue(secondaryValue + '"');
+ var rawPrimaryValue = likelyRawNumberFormat.test(primaryValue) ? parseFloat(primaryValue) : parseLocaleFloat(primaryValue);
+ if (isNaN(rawPrimaryValue))
+ rawPrimaryValue = primaryValue;
+ var rawSecondaryValue = likelyRawNumberFormat.test(secondaryValue) ? parseFloat(secondaryValue) : parseLocaleFloat(secondaryValue);
+ if (isNaN(rawSecondaryValue))
+ rawSecondaryValue = secondaryValue;
+ if (isNaN(rawPrimaryValue) || isNaN(rawSecondaryValue) || !_isImperial) {
+ tag[field.key] = context.cleanTagValue(rawPrimaryValue);
+ } else {
+ if (rawPrimaryValue !== "") {
+ rawPrimaryValue = rawPrimaryValue + "'";
+ }
+ if (rawSecondaryValue !== "") {
+ rawSecondaryValue = rawSecondaryValue + '"';
+ }
+ tag[field.key] = context.cleanTagValue(rawPrimaryValue + rawSecondaryValue);
}
- tag[field.key] = primaryValue + secondaryValue;
}
- dispatch10.call("change", this, tag);
+ dispatch14.call("change", this, tag);
}
roadheight.tags = function(tags) {
_tags = tags;
if (primaryValue && (primaryValue.indexOf("'") >= 0 || primaryValue.indexOf('"') >= 0)) {
secondaryValue = primaryValue.match(/(-?[\d.]+)"/);
if (secondaryValue !== null) {
- secondaryValue = secondaryValue[1];
+ secondaryValue = formatFloat(parseFloat(secondaryValue[1]));
}
primaryValue = primaryValue.match(/(-?[\d.]+)'/);
if (primaryValue !== null) {
- primaryValue = primaryValue[1];
+ primaryValue = formatFloat(parseFloat(primaryValue[1]));
}
_isImperial = true;
} else if (primaryValue) {
+ var rawValue = primaryValue;
+ primaryValue = parseFloat(rawValue);
+ if (isNaN(primaryValue)) {
+ primaryValue = rawValue;
+ } else {
+ primaryValue = formatFloat(primaryValue);
+ }
_isImperial = false;
}
}
setUnitSuggestions();
+ var inchesPlaceholder = formatFloat(0);
utilGetSetValue(primaryInput, typeof primaryValue === "string" ? primaryValue : "").attr("title", isMixed ? primaryValue.filter(Boolean).join("\n") : null).attr("placeholder", isMixed ? _t("inspector.multiple_values") : _t("inspector.unknown")).classed("mixed", isMixed);
- utilGetSetValue(secondaryInput, typeof secondaryValue === "string" ? secondaryValue : "").attr("placeholder", isMixed ? _t("inspector.multiple_values") : _isImperial ? "0" : null).classed("mixed", isMixed).classed("disabled", !_isImperial).attr("readonly", _isImperial ? null : "readonly");
+ utilGetSetValue(secondaryInput, typeof secondaryValue === "string" ? secondaryValue : "").attr("placeholder", isMixed ? _t("inspector.multiple_values") : _isImperial ? inchesPlaceholder : null).classed("mixed", isMixed).classed("disabled", !_isImperial).attr("readonly", _isImperial ? null : "readonly");
secondaryUnitInput.attr("value", _isImperial ? _t("inspector.roadheight.inch") : null);
};
roadheight.focus = function() {
function combinedEntityExtent() {
return _entityIDs && _entityIDs.length && utilTotalExtent(_entityIDs, context.graph());
}
- return utilRebind(roadheight, dispatch10, "on");
+ return utilRebind(roadheight, dispatch14, "on");
}
// modules/ui/fields/roadspeed.js
function uiFieldRoadspeed(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var unitInput = select_default2(null);
var input = select_default2(null);
var _entityIDs = [];
var _tags;
var _isImperial;
+ var formatFloat = _mainLocalizer.floatFormatter(_mainLocalizer.languageCode());
+ var parseLocaleFloat = _mainLocalizer.floatParser(_mainLocalizer.languageCode());
var speedCombo = uiCombobox(context, "roadspeed");
var unitCombo = uiCombobox(context, "roadspeed-unit").data(["km/h", "mph"].map(comboValues));
var metricValues = [20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120];
speedCombo.data((_isImperial ? imperialValues : metricValues).map(comboValues));
utilGetSetValue(unitInput, _isImperial ? "mph" : "km/h");
}
- function comboValues(d) {
+ function comboValues(d2) {
return {
- value: d.toString(),
- title: d.toString()
+ value: formatFloat(d2),
+ title: formatFloat(d2)
};
}
function change() {
return;
if (!value) {
tag[field.key] = void 0;
- } else if (isNaN(value) || !_isImperial) {
- tag[field.key] = context.cleanTagValue(value);
} else {
- tag[field.key] = context.cleanTagValue(value + " mph");
+ var rawValue = likelyRawNumberFormat.test(value) ? parseFloat(value) : parseLocaleFloat(value);
+ if (isNaN(rawValue))
+ rawValue = value;
+ if (isNaN(rawValue) || !_isImperial) {
+ tag[field.key] = context.cleanTagValue(rawValue);
+ } else {
+ tag[field.key] = context.cleanTagValue(rawValue + " mph");
+ }
}
- dispatch10.call("change", this, tag);
+ dispatch14.call("change", this, tag);
}
roadspeed.tags = function(tags) {
_tags = tags;
- var value = tags[field.key];
+ var rawValue = tags[field.key];
+ var value = rawValue;
var isMixed = Array.isArray(value);
if (!isMixed) {
- if (value && value.indexOf("mph") >= 0) {
- value = parseInt(value, 10).toString();
+ if (rawValue && rawValue.indexOf("mph") >= 0) {
_isImperial = true;
- } else if (value) {
+ } else if (rawValue) {
_isImperial = false;
}
+ value = parseInt(value, 10);
+ if (isNaN(value)) {
+ value = rawValue;
+ } else {
+ value = formatFloat(value);
+ }
}
setUnitSuggestions();
utilGetSetValue(input, typeof value === "string" ? value : "").attr("title", isMixed ? value.filter(Boolean).join("\n") : null).attr("placeholder", isMixed ? _t("inspector.multiple_values") : field.placeholder()).classed("mixed", isMixed);
function combinedEntityExtent() {
return _entityIDs && _entityIDs.length && utilTotalExtent(_entityIDs, context.graph());
}
- return utilRebind(roadspeed, dispatch10, "on");
+ return utilRebind(roadspeed, dispatch14, "on");
}
// modules/ui/fields/radio.js
function uiFieldRadio(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var placeholder = select_default2(null);
var wrap2 = select_default2(null);
var labels = select_default2(null);
labels = wrap2.selectAll("label").data(radioData);
enter = labels.enter().append("label");
var stringsField = field.resolveReference("stringsCrossReference");
- enter.append("input").attr("type", "radio").attr("name", field.id).attr("value", function(d) {
- return stringsField.t("options." + d, { "default": d });
+ enter.append("input").attr("type", "radio").attr("name", field.id).attr("value", function(d2) {
+ return stringsField.t("options." + d2, { "default": d2 });
}).attr("checked", false);
- enter.append("span").each(function(d) {
- stringsField.t.append("options." + d, { "default": d })(select_default2(this));
+ enter.append("span").each(function(d2) {
+ stringsField.t.append("options." + d2, { "default": d2 })(select_default2(this));
});
labels = labels.merge(enter);
radios = labels.selectAll("input").on("change", changeRadio);
} else {
typeField = null;
}
- var typeItem = list.selectAll(".structure-type-item").data(typeField ? [typeField] : [], function(d) {
- return d.id;
+ var typeItem = list.selectAll(".structure-type-item").data(typeField ? [typeField] : [], function(d2) {
+ return d2.id;
});
typeItem.exit().remove();
var typeEnter = typeItem.enter().insert("li", ":first-child").attr("class", "labeled-input structure-type-item");
field.keys = utilArrayUnion(field.keys, ["layer"]);
} else {
layerField = null;
- field.keys = field.keys.filter(function(k) {
- return k !== "layer";
+ field.keys = field.keys.filter(function(k2) {
+ return k2 !== "layer";
});
}
var layerItem = list.selectAll(".structure-layer-item").data(layerField ? [layerField] : []);
layerItem.selectAll(".structure-input-layer-wrap").call(layerField.render);
}
}
- function changeType(t, onInput) {
+ function changeType(t2, onInput) {
var key = selectedKey();
if (!key)
return;
- var val = t[key];
+ var val = t2[key];
if (val !== "no") {
_oldType[key] = val;
}
if (field.type === "structureRadio") {
if (val === "no" || key !== "bridge" && key !== "tunnel" || key === "tunnel" && val === "building_passage") {
- t.layer = void 0;
+ t2.layer = void 0;
}
- if (t.layer === void 0) {
+ if (t2.layer === void 0) {
if (key === "bridge" && val !== "no") {
- t.layer = "1";
+ t2.layer = "1";
}
if (key === "tunnel" && val !== "no" && val !== "building_passage") {
- t.layer = "-1";
+ t2.layer = "-1";
}
}
}
- dispatch10.call("change", this, t, onInput);
+ dispatch14.call("change", this, t2, onInput);
}
- function changeLayer(t, onInput) {
- if (t.layer === "0") {
- t.layer = void 0;
+ function changeLayer(t2, onInput) {
+ if (t2.layer === "0") {
+ t2.layer = void 0;
}
- dispatch10.call("change", this, t, onInput);
+ dispatch14.call("change", this, t2, onInput);
}
function changeRadio() {
- var t = {};
+ var t2 = {};
var activeKey;
if (field.key) {
- t[field.key] = void 0;
+ t2[field.key] = void 0;
}
- radios.each(function(d) {
+ radios.each(function(d2) {
var active = select_default2(this).property("checked");
if (active)
- activeKey = d;
+ activeKey = d2;
if (field.key) {
if (active)
- t[field.key] = d;
+ t2[field.key] = d2;
} else {
var val = _oldType[activeKey] || "yes";
- t[d] = active ? val : void 0;
+ t2[d2] = active ? val : void 0;
}
});
if (field.type === "structureRadio") {
if (activeKey === "bridge") {
- t.layer = "1";
- } else if (activeKey === "tunnel" && t.tunnel !== "building_passage") {
- t.layer = "-1";
+ t2.layer = "1";
+ } else if (activeKey === "tunnel" && t2.tunnel !== "building_passage") {
+ t2.layer = "-1";
} else {
- t.layer = void 0;
+ t2.layer = void 0;
}
}
- dispatch10.call("change", this, t);
+ dispatch14.call("change", this, t2);
}
radio.tags = function(tags) {
- function isOptionChecked(d) {
+ function isOptionChecked(d2) {
if (field.key) {
- return tags[field.key] === d;
+ return tags[field.key] === d2;
}
- return !!(typeof tags[d] === "string" && tags[d].toLowerCase() !== "no");
+ return !!(typeof tags[d2] === "string" && tags[d2].toLowerCase() !== "no");
}
- function isMixed(d) {
+ function isMixed(d2) {
if (field.key) {
- return Array.isArray(tags[field.key]) && tags[field.key].includes(d);
+ return Array.isArray(tags[field.key]) && tags[field.key].includes(d2);
}
- return Array.isArray(tags[d]);
+ return Array.isArray(tags[d2]);
}
- radios.property("checked", function(d) {
- return isOptionChecked(d) && (field.key || field.options.filter(isOptionChecked).length === 1);
+ radios.property("checked", function(d2) {
+ return isOptionChecked(d2) && (field.key || field.options.filter(isOptionChecked).length === 1);
});
- labels.classed("active", function(d) {
+ labels.classed("active", function(d2) {
if (field.key) {
- return Array.isArray(tags[field.key]) && tags[field.key].includes(d) || tags[field.key] === d;
+ return Array.isArray(tags[field.key]) && tags[field.key].includes(d2) || tags[field.key] === d2;
}
- return Array.isArray(tags[d]) && tags[d].some((v) => typeof v === "string" && v.toLowerCase() !== "no") || !!(typeof tags[d] === "string" && tags[d].toLowerCase() !== "no");
- }).classed("mixed", isMixed).attr("title", function(d) {
- return isMixed(d) ? _t("inspector.unshared_value_tooltip") : null;
+ return Array.isArray(tags[d2]) && tags[d2].some((v2) => typeof v2 === "string" && v2.toLowerCase() !== "no") || !!(typeof tags[d2] === "string" && tags[d2].toLowerCase() !== "no");
+ }).classed("mixed", isMixed).attr("title", function(d2) {
+ return isMixed(d2) ? _t("inspector.unshared_value_tooltip") : null;
});
var selection2 = radios.filter(function() {
return this.checked;
radio.isAllowed = function() {
return _entityIDs.length === 1;
};
- return utilRebind(radio, dispatch10, "on");
+ return utilRebind(radio, dispatch14, "on");
}
// modules/ui/fields/restrictions.js
function uiFieldRestrictions(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var breathe = behaviorBreathe(context);
corePreferences("turn-restriction-via-way", null);
var storedViaWay = corePreferences("turn-restriction-via-way0");
var storedDistance = corePreferences("turn-restriction-distance");
var _maxViaWay = storedViaWay !== null ? +storedViaWay : 0;
var _maxDistance = storedDistance ? +storedDistance : 30;
- var _initialized2 = false;
+ var _initialized3 = false;
var _parent = select_default2(null);
var _container = select_default2(null);
var _oldTurns;
var filter2 = utilFunctor(true);
var projection2 = geoRawMercator();
var sdims = utilGetDimensions(context.container().select(".sidebar"));
- var d = [sdims[0] - 50, 370];
- var c = geoVecScale(d, 0.5);
- var z = 22;
- projection2.scale(geoZoomToScale(z));
+ var d2 = [sdims[0] - 50, 370];
+ var c2 = geoVecScale(d2, 0.5);
+ var z2 = 22;
+ projection2.scale(geoZoomToScale(z2));
var extent = geoExtent();
- for (var i2 = 0; i2 < _intersection.vertices.length; i2++) {
- extent._extend(_intersection.vertices[i2].extent());
+ for (var i3 = 0; i3 < _intersection.vertices.length; i3++) {
+ extent._extend(_intersection.vertices[i3].extent());
}
var padTop = 35;
if (_intersection.vertices.length > 1) {
- var hPadding = Math.min(160, Math.max(110, d[0] * 0.4));
+ var hPadding = Math.min(160, Math.max(110, d2[0] * 0.4));
var vPadding = 160;
var tl = projection2([extent[0][0], extent[1][1]]);
var br = projection2([extent[1][0], extent[0][1]]);
- var hFactor = (br[0] - tl[0]) / (d[0] - hPadding);
- var vFactor = (br[1] - tl[1]) / (d[1] - vPadding - padTop);
+ var hFactor = (br[0] - tl[0]) / (d2[0] - hPadding);
+ var vFactor = (br[1] - tl[1]) / (d2[1] - vPadding - padTop);
var hZoomDiff = Math.log(Math.abs(hFactor)) / Math.LN2;
var vZoomDiff = Math.log(Math.abs(vFactor)) / Math.LN2;
- z = z - Math.max(hZoomDiff, vZoomDiff);
- projection2.scale(geoZoomToScale(z));
+ z2 = z2 - Math.max(hZoomDiff, vZoomDiff);
+ projection2.scale(geoZoomToScale(z2));
}
var extentCenter = projection2(extent.center());
extentCenter[1] = extentCenter[1] - padTop / 2;
- projection2.translate(geoVecSubtract(c, extentCenter)).clipExtent([[0, 0], d]);
- var drawLayers = svgLayers(projection2, context).only(["osm", "touch"]).dimensions(d);
+ projection2.translate(geoVecSubtract(c2, extentCenter)).clipExtent([[0, 0], d2]);
+ var drawLayers = svgLayers(projection2, context).only(["osm", "touch"]).dimensions(d2);
var drawVertices = svgVertices(projection2, context);
var drawLines = svgLines(projection2, context);
var drawTurns = svgTurns(projection2, context);
selection2.call(drawLayers);
var surface = selection2.selectAll(".surface").classed("tr", true);
if (firstTime) {
- _initialized2 = true;
+ _initialized3 = true;
surface.call(breathe);
}
if (_fromWayID && !vgraph.hasEntity(_fromWayID)) {
_fromWayID = null;
_oldTurns = null;
}
- surface.call(utilSetDimensions, d).call(drawVertices, vgraph, _intersection.vertices, filter2, extent, z).call(drawLines, vgraph, _intersection.ways, filter2).call(drawTurns, vgraph, _intersection.turns(_fromWayID, _maxViaWay));
+ surface.call(utilSetDimensions, d2).call(drawVertices, vgraph, _intersection.vertices, filter2, extent, z2).call(drawLines, vgraph, _intersection.ways, filter2).call(drawTurns, vgraph, _intersection.turns(_fromWayID, _maxViaWay));
surface.on("click.restrictions", click).on("mouseover.restrictions", mouseover);
surface.selectAll(".selected").classed("selected", false);
surface.selectAll(".related").classed("related", false);
_oldTurns = null;
redraw();
} else if (datum2 instanceof osmTurn) {
- var actions, extraActions, turns, i3;
+ var actions, extraActions, turns, i4;
var restrictionType = osmInferRestriction(vgraph, datum2, projection2);
if (datum2.restrictionID && !datum2.direct) {
return;
turns = _intersection.turns(_fromWayID, 2);
extraActions = [];
_oldTurns = [];
- for (i3 = 0; i3 < turns.length; i3++) {
- var turn = turns[i3];
+ for (i4 = 0; i4 < turns.length; i4++) {
+ var turn = turns[i4];
if (seen[turn.restrictionID])
continue;
if (turn.direct && turn.path[1] === datum2.path[1]) {
- seen[turns[i3].restrictionID] = true;
+ seen[turns[i4].restrictionID] = true;
turn.restrictionType = osmInferRestriction(vgraph, turn, projection2);
_oldTurns.push(turn);
extraActions.push(actionUnrestrictTurn(turn));
} else if (datum2.restrictionID) {
turns = _oldTurns || [];
extraActions = [];
- for (i3 = 0; i3 < turns.length; i3++) {
- if (turns[i3].key !== datum2.key) {
- extraActions.push(actionRestrictTurn(turns[i3], turns[i3].restrictionType));
+ for (i4 = 0; i4 < turns.length; i4++) {
+ if (turns[i4].key !== datum2.key) {
+ extraActions.push(actionRestrictTurn(turns[i4], turns[i4].restrictionType));
}
}
_oldTurns = null;
]);
}
context.perform.apply(context, actions);
- var s = surface.selectAll("." + datum2.key);
- datum2 = s.empty() ? null : s.datum();
+ var s2 = surface.selectAll("." + datum2.key);
+ datum2 = s2.empty() ? null : s2.datum();
updateHints(datum2);
} else {
_fromWayID = null;
surface.selectAll("." + wayID).classed("related", true);
if (wayID) {
var turns = _intersection.turns(wayID, _maxViaWay);
- for (var i3 = 0; i3 < turns.length; i3++) {
- var turn = turns[i3];
+ for (var i4 = 0; i4 < turns.length; i4++) {
+ var turn = turns[i4];
var ids = [turn.to.way];
var klass = turn.no ? "restrict" : turn.only ? "only" : "allow";
if (turn.only || turns.length === 1) {
function updateHints(datum2) {
var help = _container.selectAll(".restriction-help").html("");
var placeholders = {};
- ["from", "via", "to"].forEach(function(k) {
- placeholders[k] = { html: '<span class="qualifier">' + _t("restriction.help." + k) + "</span>" };
+ ["from", "via", "to"].forEach(function(k2) {
+ placeholders[k2] = { html: '<span class="qualifier">' + _t("restriction.help." + k2) + "</span>" };
});
var entity = datum2 && datum2.properties && datum2.properties.entity;
if (entity) {
}));
if (datum2.via.ways && datum2.via.ways.length) {
var names = [];
- for (var i3 = 0; i3 < datum2.via.ways.length; i3++) {
+ for (var i4 = 0; i4 < datum2.via.ways.length; i4++) {
var prev = names[names.length - 1];
- var curr = displayName(datum2.via.ways[i3], vgraph);
+ var curr = displayName(datum2.via.ways[i4], vgraph);
if (!prev || curr !== prev) {
names.push(curr);
}
restrictions.focus = function() {
};
restrictions.off = function(selection2) {
- if (!_initialized2)
+ if (!_initialized3)
return;
selection2.selectAll(".surface").call(breathe.off).on("click.restrictions", null).on("mouseover.restrictions", null);
select_default2(window).on("resize.restrictions", null);
};
- return utilRebind(restrictions, dispatch10, "on");
+ return utilRebind(restrictions, dispatch14, "on");
}
uiFieldRestrictions.supportsMultiselection = false;
// modules/ui/fields/textarea.js
function uiFieldTextarea(field, context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var input = select_default2(null);
var _lengthIndicator = uiLengthIndicator(context.maxCharsForTagValue()).silent(field.usage === "changeset" && field.key === "comment");
var _tags;
val = context.cleanTagValue(val);
if (!val && Array.isArray(_tags[field.key]))
return;
- var t = {};
- t[field.key] = val || void 0;
- dispatch10.call("change", this, t, onInput);
+ var t2 = {};
+ t2[field.key] = val || void 0;
+ dispatch14.call("change", this, t2, onInput);
};
}
}
textarea.focus = function() {
input.node().focus();
};
- return utilRebind(textarea, dispatch10, "on");
+ return utilRebind(textarea, dispatch14, "on");
}
// modules/ui/fields/wikidata.js
function uiFieldWikidata(field, context) {
var wikidata = services.wikidata;
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var _selection = select_default2(null);
var _searchInput = select_default2(null);
var _qid = null;
}).on("blur", function() {
setLabelForEntity();
}).call(combobox.fetcher(fetchWikidataItems));
- combobox.on("accept", function(d) {
- if (d) {
- _qid = d.id;
+ combobox.on("accept", function(d2) {
+ if (d2) {
+ _qid = d2.id;
change();
}
}).on("cancel", function() {
_searchInput = searchRow.select("input");
var wikidataProperties = ["description", "identifier"];
var items = list.selectAll("li.labeled-input").data(wikidataProperties);
- var enter = items.enter().append("li").attr("class", function(d) {
- return "labeled-input preset-wikidata-" + d;
+ var enter = items.enter().append("li").attr("class", function(d2) {
+ return "labeled-input preset-wikidata-" + d2;
});
- enter.append("span").attr("class", "label").html(function(d) {
- return _t.html("wikidata." + d);
+ enter.append("span").attr("class", "label").html(function(d2) {
+ return _t.html("wikidata." + d2);
});
enter.append("input").attr("type", "text").call(utilNoAuto).classed("disabled", "true").attr("readonly", "true");
enter.append("button").attr("class", "form-field-button").attr("title", _t("icons.copy")).call(svgIcon("#iD-operation-copy")).on("click", function(d3_event) {
document.execCommand("copy");
});
}
- function fetchWikidataItems(q, callback) {
- if (!q && _hintKey) {
- for (var i2 in _entityIDs) {
- var entity = context.hasEntity(_entityIDs[i2]);
+ function fetchWikidataItems(q2, callback) {
+ if (!q2 && _hintKey) {
+ for (var i3 in _entityIDs) {
+ var entity = context.hasEntity(_entityIDs[i3]);
if (entity.tags[_hintKey]) {
- q = entity.tags[_hintKey];
+ q2 = entity.tags[_hintKey];
break;
}
}
}
- wikidata.itemsForSearchQuery(q, function(err, data) {
- if (err)
+ wikidata.itemsForSearchQuery(q2, function(err, data) {
+ if (err) {
+ if (err !== "No query")
+ console.error(err);
return;
+ }
var result = data.map(function(item) {
return {
id: item.id,
function change() {
var syncTags = {};
syncTags[field.key] = _qid;
- dispatch10.call("change", this, syncTags);
+ dispatch14.call("change", this, syncTags);
var initGraph = context.graph();
var initEntityIDs = _entityIDs;
wikidata.entityByQID(_qid, function(err, entity) {
var newWikipediaValue;
if (_wikipediaKey) {
var foundPreferred;
- for (var i2 in langs) {
- var lang = langs[i2];
+ for (var i3 in langs) {
+ var lang = langs[i3];
var siteID = lang.replace("-", "_") + "wiki";
if (entity.sitelinks[siteID]) {
foundPreferred = true;
if (langKeys.length === 0)
return "";
var langs = wikidata.languagesToQuery();
- for (var i2 in langs) {
- var lang = langs[i2];
+ for (var i3 in langs) {
+ var lang = langs[i3];
var valueObj = propObj[lang];
if (valueObj && valueObj.value && valueObj.value.length > 0)
return valueObj.value;
wiki.focus = function() {
_searchInput.node().focus();
};
- return utilRebind(wiki, dispatch10, "on");
+ return utilRebind(wiki, dispatch14, "on");
}
// modules/ui/fields/wikipedia.js
function uiFieldWikipedia(field, context) {
- const dispatch10 = dispatch_default("change");
+ const dispatch14 = dispatch_default("change");
const wikipedia = services.wikipedia;
const wikidata = services.wikidata;
let _langInput = select_default2(null);
let _entityIDs;
let _tags;
let _dataWikipedia = [];
- _mainFileFetcher.get("wmf_sitematrix").then((d) => {
- _dataWikipedia = d;
+ _mainFileFetcher.get("wmf_sitematrix").then((d2) => {
+ _dataWikipedia = d2;
if (_tags)
updateForTags(_tags);
}).catch(() => {
});
const langCombo = uiCombobox(context, "wikipedia-lang").fetcher((value, callback) => {
- const v = value.toLowerCase();
+ const v2 = value.toLowerCase();
callback(
- _dataWikipedia.filter((d) => {
- return d[0].toLowerCase().indexOf(v) >= 0 || d[1].toLowerCase().indexOf(v) >= 0 || d[2].toLowerCase().indexOf(v) >= 0;
- }).map((d) => ({ value: d[1] }))
+ _dataWikipedia.filter((d2) => {
+ return d2[0].toLowerCase().indexOf(v2) >= 0 || d2[1].toLowerCase().indexOf(v2) >= 0 || d2[2].toLowerCase().indexOf(v2) >= 0;
+ }).map((d2) => ({ value: d2[1] }))
);
});
const titleCombo = uiCombobox(context, "wikipedia-title").fetcher((value, callback) => {
if (!value) {
value = "";
- for (let i2 in _entityIDs) {
- let entity = context.hasEntity(_entityIDs[i2]);
+ for (let i3 in _entityIDs) {
+ let entity = context.hasEntity(_entityIDs[i3]);
if (entity.tags.name) {
value = entity.tags.name;
break;
}
const searchfn = value.length > 7 ? wikipedia.search : wikipedia.suggestions;
searchfn(language()[2], value, (query, data) => {
- callback(data.map((d) => ({ value: d })));
+ callback(data.map((d2) => ({ value: d2 })));
});
});
function wiki(selection2) {
}
function defaultLanguageInfo(skipEnglishFallback) {
const langCode = _mainLocalizer.languageCode().toLowerCase();
- for (let i2 in _dataWikipedia) {
- let d = _dataWikipedia[i2];
- if (d[2] === langCode)
- return d;
+ for (let i3 in _dataWikipedia) {
+ let d2 = _dataWikipedia[i3];
+ if (d2[2] === langCode)
+ return d2;
}
return skipEnglishFallback ? ["", "", ""] : ["English", "English", "en"];
}
function language(skipEnglishFallback) {
const value = utilGetSetValue(_langInput).toLowerCase();
- for (let i2 in _dataWikipedia) {
- let d = _dataWikipedia[i2];
- if (d[0].toLowerCase() === value || d[1].toLowerCase() === value || d[2] === value)
- return d;
+ for (let i3 in _dataWikipedia) {
+ let d2 = _dataWikipedia[i3];
+ if (d2[0].toLowerCase() === value || d2[1].toLowerCase() === value || d2[2] === value)
+ return d2;
}
return defaultLanguageInfo(skipEnglishFallback);
}
}
function change(skipWikidata) {
let value = utilGetSetValue(_titleInput);
- const m = value.match(/https?:\/\/([-a-z]+)\.wikipedia\.org\/(?:wiki|\1-[-a-z]+)\/([^#]+)(?:#(.+))?/);
- const langInfo = m && _dataWikipedia.find((d) => m[1] === d[2]);
+ const m2 = value.match(/https?:\/\/([-a-z]+)\.wikipedia\.org\/(?:wiki|\1-[-a-z]+)\/([^#]+)(?:#(.+))?/);
+ const langInfo = m2 && _dataWikipedia.find((d2) => m2[1] === d2[2]);
let syncTags = {};
if (langInfo) {
const nativeLangName = langInfo[1];
- value = decodeURIComponent(m[2]).replace(/_/g, " ");
- if (m[3]) {
+ value = decodeURIComponent(m2[2]).replace(/_/g, " ");
+ if (m2[3]) {
let anchor;
- anchor = decodeURIComponent(m[3]);
+ anchor = decodeURIComponent(m2[3]);
value += "#" + anchor.replace(/_/g, " ");
}
value = value.slice(0, 1).toUpperCase() + value.slice(1);
} else {
syncTags.wikipedia = void 0;
}
- dispatch10.call("change", this, syncTags);
+ dispatch14.call("change", this, syncTags);
if (skipWikidata || !value || !language()[2])
return;
const initGraph = context.graph();
};
function updateForTags(tags) {
const value = typeof tags[field.key] === "string" ? tags[field.key] : "";
- const m = value.match(/([^:]+):([^#]+)(?:#(.+))?/);
- const tagLang = m && m[1];
- const tagArticleTitle = m && m[2];
- let anchor = m && m[3];
- const tagLangInfo = tagLang && _dataWikipedia.find((d) => tagLang === d[2]);
+ const m2 = value.match(/([^:]+):([^#]+)(?:#(.+))?/);
+ const tagLang = m2 && m2[1];
+ const tagArticleTitle = m2 && m2[2];
+ let anchor = m2 && m2[3];
+ const tagLangInfo = tagLang && _dataWikipedia.find((d2) => tagLang === d2[2]);
if (tagLangInfo) {
const nativeLangName = tagLangInfo[1];
utilGetSetValue(_langInput, nativeLangName);
if (anchor) {
try {
anchor = encodeURIComponent(anchor.replace(/ /g, "_")).replace(/%/g, ".");
- } catch (e) {
+ } catch (e3) {
anchor = anchor.replace(/ /g, "_");
}
}
wiki.focus = () => {
_titleInput.node().focus();
};
- return utilRebind(wiki, dispatch10, "on");
+ return utilRebind(wiki, dispatch14, "on");
}
uiFieldWikipedia.supportsMultiselection = false;
revert: true,
info: true
}, options2);
- var dispatch10 = dispatch_default("change", "revert");
+ var dispatch14 = dispatch_default("change", "revert");
var field = Object.assign({}, presetField2);
field.domId = utilUniqueDomId("form-field-" + field.safeid);
var _show = options2.show;
createField();
}
function createField() {
- field.impl = uiFields[field.type](field, context).on("change", function(t, onInput) {
- dispatch10.call("change", field, t, onInput);
+ field.impl = uiFields[field.type](field, context).on("change", function(t2, onInput) {
+ dispatch14.call("change", field, t2, onInput);
});
if (entityIDs) {
field.entityIDs = entityIDs;
}
}
function allKeys() {
- let keys = field.keys || [field.key];
+ let keys2 = field.keys || [field.key];
if (field.type === "directionalCombo" && field.key) {
- keys = keys.concat(field.key);
+ keys2 = keys2.concat(field.key);
}
- return keys;
+ return keys2;
}
function isModified() {
if (!entityIDs || !entityIDs.length)
return _tags[key] !== void 0;
});
}
- function revert(d3_event, d) {
+ function revert(d3_event, d2) {
d3_event.stopPropagation();
d3_event.preventDefault();
if (!entityIDs || _locked)
return;
- dispatch10.call("revert", d, allKeys());
+ dispatch14.call("revert", d2, allKeys());
}
- function remove2(d3_event, d) {
+ function remove2(d3_event, d2) {
d3_event.stopPropagation();
d3_event.preventDefault();
if (_locked)
return;
- var t = {};
+ var t2 = {};
allKeys().forEach(function(key) {
- t[key] = void 0;
+ t2[key] = void 0;
});
- dispatch10.call("change", d, t);
+ dispatch14.call("change", d2, t2);
}
field.render = function(selection2) {
var container = selection2.selectAll(".form-field").data([field]);
- var enter = container.enter().append("div").attr("class", function(d) {
- return "form-field form-field-" + d.safeid;
+ var enter = container.enter().append("div").attr("class", function(d2) {
+ return "form-field form-field-" + d2.safeid;
}).classed("nowrap", !options2.wrap);
if (options2.wrap) {
- var labelEnter = enter.append("label").attr("class", "field-label").attr("for", function(d) {
- return d.domId;
+ var labelEnter = enter.append("label").attr("class", "field-label").attr("for", function(d2) {
+ return d2.domId;
});
var textEnter = labelEnter.append("span").attr("class", "label-text");
- textEnter.append("span").attr("class", "label-textvalue").each(function(d) {
- d.label()(select_default2(this));
+ textEnter.append("span").attr("class", "label-textvalue").each(function(d2) {
+ d2.label()(select_default2(this));
});
textEnter.append("span").attr("class", "label-textannotation");
if (options2.remove) {
container = container.merge(enter);
container.select(".field-label > .remove-icon").on("click", remove2);
container.select(".field-label > .modified-icon").on("click", revert);
- container.each(function(d) {
+ container.each(function(d2) {
var selection3 = select_default2(this);
- if (!d.impl) {
+ if (!d2.impl) {
createField();
}
var reference, help;
help = uiFieldHelp(context, "restrictions");
}
if (options2.wrap && options2.info) {
- var referenceKey = d.key || "";
- if (d.type === "multiCombo") {
+ var referenceKey = d2.key || "";
+ if (d2.type === "multiCombo") {
referenceKey = referenceKey.replace(/:$/, "");
}
- reference = uiTagReference(d.reference || { key: referenceKey }, context);
+ var referenceOptions = d2.reference || {
+ key: referenceKey,
+ value: _tags[referenceKey]
+ };
+ reference = uiTagReference(referenceOptions, context);
if (_state === "hover") {
reference.showing(false);
}
}
- selection3.call(d.impl);
+ selection3.call(d2.impl);
if (help) {
selection3.call(help.body).select(".field-label").call(help.button);
}
if (reference) {
selection3.call(reference.body).select(".field-label").call(reference.button);
}
- d.impl.tags(_tags);
+ d2.impl.tags(_tags);
});
container.classed("locked", _locked).classed("modified", isModified()).classed("present", tagsContainFieldKey());
var annotation = container.selectAll(".field-label .label-textannotation");
createField();
}
if (field.default && field.key && _tags[field.key] !== field.default) {
- var t = {};
- t[field.key] = field.default;
- dispatch10.call("change", this, t);
+ var t2 = {};
+ t2[field.key] = field.default;
+ dispatch14.call("change", this, t2);
}
};
field.isShown = function() {
field.impl.focus();
}
};
- return utilRebind(field, dispatch10, "on");
+ return utilRebind(field, dispatch14, "on");
}
// modules/ui/form_fields.js
});
var container = selection2.selectAll(".form-fields-container").data([0]);
container = container.enter().append("div").attr("class", "form-fields-container " + (_klass || "")).merge(container);
- var fields = container.selectAll(".wrap-form-field").data(shown, function(d) {
- return d.id + (d.entityIDs ? d.entityIDs.join() : "");
+ var fields = container.selectAll(".wrap-form-field").data(shown, function(d2) {
+ return d2.id + (d2.entityIDs ? d2.entityIDs.join() : "");
});
fields.exit().remove();
- var enter = fields.enter().append("div").attr("class", function(d) {
- return "wrap-form-field wrap-form-field-" + d.safeid;
+ var enter = fields.enter().append("div").attr("class", function(d2) {
+ return "wrap-form-field wrap-form-field-" + d2.safeid;
});
fields = fields.merge(enter);
- fields.order().each(function(d) {
- select_default2(this).call(d.render);
+ fields.order().each(function(d2) {
+ select_default2(this).call(d2.render);
});
var titles = [];
var moreFields = notShown.map(function(field) {
input.exit().remove();
input = input.enter().append("input").attr("class", "value").attr("type", "text").attr("placeholder", placeholder).call(utilNoAuto).merge(input);
input.call(utilGetSetValue, "").call(
- moreCombo.data(moreFields).on("accept", function(d) {
- if (!d)
+ moreCombo.data(moreFields).on("accept", function(d2) {
+ if (!d2)
return;
- var field = d.field;
+ var field = d2.field;
field.show();
selection2.call(formFields);
field.focus();
// modules/ui/changeset_editor.js
function uiChangesetEditor(context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var formFields = uiFormFields(context);
var commentCombo = uiCombobox(context, "comment").caseSensitive(true);
var _fieldsArr;
uiField(context, presets.field("hashtags"), null, { show: false, revert: false })
];
_fieldsArr.forEach(function(field) {
- field.on("change", function(t, onInput) {
- dispatch10.call("change", field, void 0, t, onInput);
+ field.on("change", function(t2, onInput) {
+ dispatch14.call("change", field, void 0, t2, onInput);
});
});
}
msg: _t.append("commit.changeset_comment_length_warning", { maxChars })
});
}
- var commentWarning = selection2.select(".form-field-comment").selectAll(".comment-warning").data(warnings, (d) => d.id);
+ var commentWarning = selection2.select(".form-field-comment").selectAll(".comment-warning").data(warnings, (d2) => d2.id);
commentWarning.exit().transition().duration(200).style("opacity", 0).remove();
var commentEnter = commentWarning.enter().insert("div", ".comment-warning").attr("class", "comment-warning field-warning").style("opacity", 0);
commentEnter.call(svgIcon("#iD-icon-alert", "inline")).append("span");
commentEnter.transition().duration(200).style("opacity", 1);
- commentWarning.merge(commentEnter).selectAll("div > span").text("").each(function(d) {
+ commentWarning.merge(commentEnter).selectAll("div > span").text("").each(function(d2) {
let selection3 = select_default2(this);
- if (d.link) {
- selection3 = selection3.append("a").attr("target", "_blank").attr("href", d.link);
+ if (d2.link) {
+ selection3 = selection3.append("a").attr("target", "_blank").attr("href", d2.link);
}
- selection3.call(d.msg);
+ selection3.call(d2.msg);
});
}
- changesetEditor.tags = function(_) {
+ changesetEditor.tags = function(_2) {
if (!arguments.length)
return _tags;
- _tags = _;
+ _tags = _2;
return changesetEditor;
};
- changesetEditor.changesetID = function(_) {
+ changesetEditor.changesetID = function(_2) {
if (!arguments.length)
return _changesetID;
- if (_changesetID === _)
+ if (_changesetID === _2)
return changesetEditor;
- _changesetID = _;
+ _changesetID = _2;
_fieldsArr = null;
return changesetEditor;
};
- return utilRebind(changesetEditor, dispatch10, "on");
+ return utilRebind(changesetEditor, dispatch14, "on");
}
// modules/ui/commit.js
// modules/ui/sections/changes.js
function uiSectionChanges(context) {
var _discardTags = {};
- _mainFileFetcher.get("discarded").then(function(d) {
- _discardTags = d;
+ _mainFileFetcher.get("discarded").then(function(d2) {
+ _discardTags = d2;
}).catch(function() {
});
var section = uiSection("changes-list", context).label(function() {
var items = container.select("ul").selectAll("li").data(summary);
var itemsEnter = items.enter().append("li").attr("class", "change-item");
var buttons = itemsEnter.append("button").on("mouseover", mouseover).on("mouseout", mouseout).on("click", click);
- buttons.each(function(d) {
- select_default2(this).call(svgIcon("#iD-icon-" + d.entity.geometry(d.graph), "pre-text " + d.changeType));
+ buttons.each(function(d2) {
+ select_default2(this).call(svgIcon("#iD-icon-" + d2.entity.geometry(d2.graph), "pre-text " + d2.changeType));
});
- buttons.append("span").attr("class", "change-type").html(function(d) {
- return _t.html("commit." + d.changeType) + " ";
+ buttons.append("span").attr("class", "change-type").html(function(d2) {
+ return _t.html("commit." + d2.changeType) + " ";
});
- buttons.append("strong").attr("class", "entity-type").text(function(d) {
- var matched = _mainPresetIndex.match(d.entity, d.graph);
- return matched && matched.name() || utilDisplayType(d.entity.id);
+ buttons.append("strong").attr("class", "entity-type").text(function(d2) {
+ var matched = _mainPresetIndex.match(d2.entity, d2.graph);
+ return matched && matched.name() || utilDisplayType(d2.entity.id);
});
- buttons.append("span").attr("class", "entity-name").text(function(d) {
- var name = utilDisplayName(d.entity) || "", string = "";
+ buttons.append("span").attr("class", "entity-name").text(function(d2) {
+ var name = utilDisplayName(d2.entity) || "", string = "";
if (name !== "") {
string += ":";
}
var linkEnter = container.selectAll(".download-changes").data([0]).enter().append("a").attr("class", "download-changes");
linkEnter.attr("href", window.URL.createObjectURL(blob)).attr("download", fileName);
linkEnter.call(svgIcon("#iD-icon-load", "inline")).append("span").call(_t.append("commit.download_changes"));
- function mouseover(d) {
- if (d.entity) {
+ function mouseover(d2) {
+ if (d2.entity) {
context.surface().selectAll(
- utilEntityOrMemberSelector([d.entity.id], context.graph())
+ utilEntityOrMemberSelector([d2.entity.id], context.graph())
).classed("hover", true);
}
}
containerEnter.append("h3").call(severity === "warning" ? _t.append("commit.warnings") : _t.append("commit.errors"));
containerEnter.append("ul").attr("class", "changeset-list");
container = containerEnter.merge(container);
- var items = container.select("ul").selectAll("li").data(issues, function(d) {
- return d.key;
+ var items = container.select("ul").selectAll("li").data(issues, function(d2) {
+ return d2.key;
});
items.exit().remove();
var itemsEnter = items.enter().append("li").attr("class", issueItem);
- var buttons = itemsEnter.append("button").on("mouseover", function(d3_event, d) {
- if (d.entityIds) {
+ var buttons = itemsEnter.append("button").on("mouseover", function(d3_event, d2) {
+ if (d2.entityIds) {
context.surface().selectAll(
utilEntityOrMemberSelector(
- d.entityIds,
+ d2.entityIds,
context.graph()
)
).classed("hover", true);
}
}).on("mouseout", function() {
context.surface().selectAll(".hover").classed("hover", false);
- }).on("click", function(d3_event, d) {
- context.validator().focusIssue(d);
+ }).on("click", function(d3_event, d2) {
+ context.validator().focusIssue(d2);
});
buttons.call(svgIcon("#iD-icon-alert", "pre-text"));
buttons.append("strong").attr("class", "issue-message");
- buttons.filter(function(d) {
- return d.tooltip;
+ buttons.filter(function(d2) {
+ return d2.tooltip;
}).call(
- uiTooltip().title(function(d) {
- return d.tooltip;
+ uiTooltip().title(function(d2) {
+ return d2.tooltip;
}).placement("top")
);
items = itemsEnter.merge(items);
- items.selectAll(".issue-message").text("").each(function(d) {
- return d.message(context)(select_default2(this));
+ items.selectAll(".issue-message").text("").each(function(d2) {
+ return d2.message(context)(select_default2(this));
});
}
}
];
var hashtagRegex = /(#[^\u2000-\u206F\u2E00-\u2E7F\s\\'!"#$%()*,.\/:;<=>?@\[\]^`{|}~]+)/g;
function uiCommit(context) {
- var dispatch10 = dispatch_default("cancel");
+ var dispatch14 = dispatch_default("cancel");
var _userDetails2;
var _selection;
var changesetEditor = uiChangesetEditor(context).on("change", changeTags);
var headerTitle = header.enter().append("div").attr("class", "header fillL");
headerTitle.append("div").append("h2").call(_t.append("commit.title"));
headerTitle.append("button").attr("class", "close").attr("title", _t("icons.close")).on("click", function() {
- dispatch10.call("cancel", this);
+ dispatch14.call("cancel", this);
}).call(svgIcon("#iD-icon-close"));
var body = selection2.selectAll(".body").data([0]);
body = body.enter().append("div").attr("class", "body").merge(body);
var uploadBlockerTooltipText = getUploadBlockerMessage();
buttonSection = buttonSection.merge(buttonEnter);
buttonSection.selectAll(".cancel-button").on("click.cancel", function() {
- dispatch10.call("cancel", this);
+ dispatch14.call("cancel", this);
});
buttonSection.selectAll(".save-button").classed("disabled", uploadBlockerTooltipText !== null).on("click.save", function() {
if (!select_default2(this).classed("disabled")) {
}
return null;
}
- function changeTags(_, changed, onInput) {
+ function changeTags(_2, changed, onInput) {
if (changed.hasOwnProperty("comment")) {
if (changed.comment === void 0) {
changed.comment = "";
return matches || [];
}
function hashtagHashtags() {
- var matches = (tags.hashtags || "").split(/[,;\s]+/).map(function(s) {
- if (s[0] !== "#") {
- s = "#" + s;
+ var matches = (tags.hashtags || "").split(/[,;\s]+/).map(function(s2) {
+ if (s2[0] !== "#") {
+ s2 = "#" + s2;
}
- var matched = s.match(hashtagRegex);
+ var matched = s2.match(hashtagRegex);
return matched && matched[0];
}).filter(Boolean);
return matches || [];
}
function updateChangeset(changed, onInput) {
var tags = Object.assign({}, context.changeset.tags);
- Object.keys(changed).forEach(function(k) {
- var v = changed[k];
- k = context.cleanTagKey(k);
- if (readOnlyTags.indexOf(k) !== -1)
+ Object.keys(changed).forEach(function(k2) {
+ var v2 = changed[k2];
+ k2 = context.cleanTagKey(k2);
+ if (readOnlyTags.indexOf(k2) !== -1)
return;
- if (v === void 0) {
- delete tags[k];
+ if (v2 === void 0) {
+ delete tags[k2];
} else if (onInput) {
- tags[k] = v;
+ tags[k2] = v2;
} else {
- tags[k] = context.cleanTagValue(v);
+ tags[k2] = context.cleanTagValue(v2);
}
});
if (!onInput) {
var changesetsCount = parseInt(_userDetails2.changesets_count, 10) + 1;
tags.changesets_count = String(changesetsCount);
if (changesetsCount <= 100) {
- var s;
- s = corePreferences("walkthrough_completed");
- if (s) {
- tags["ideditor:walkthrough_completed"] = s;
+ var s2;
+ s2 = corePreferences("walkthrough_completed");
+ if (s2) {
+ tags["ideditor:walkthrough_completed"] = s2;
}
- s = corePreferences("walkthrough_progress");
- if (s) {
- tags["ideditor:walkthrough_progress"] = s;
+ s2 = corePreferences("walkthrough_progress");
+ if (s2) {
+ tags["ideditor:walkthrough_progress"] = s2;
}
- s = corePreferences("walkthrough_started");
- if (s) {
- tags["ideditor:walkthrough_started"] = s;
+ s2 = corePreferences("walkthrough_started");
+ if (s2) {
+ tags["ideditor:walkthrough_started"] = s2;
}
}
} else {
commit.reset = function() {
context.changeset = null;
};
- return utilRebind(commit, dispatch10, "on");
+ return utilRebind(commit, dispatch14, "on");
}
// modules/ui/confirm.js
// modules/ui/conflicts.js
function uiConflicts(context) {
- var dispatch10 = dispatch_default("cancel", "save");
+ var dispatch14 = dispatch_default("cancel", "save");
var keybinding = utilKeybinding("conflicts");
var _origChanges;
var _conflictList;
}
function tryAgain() {
keybindingOff();
- dispatch10.call("save");
+ dispatch14.call("save");
}
function cancel() {
keybindingOff();
- dispatch10.call("cancel");
+ dispatch14.call("cancel");
}
function conflicts(selection2) {
keybindingOn();
conflict.exit().remove();
var conflictEnter = conflict.enter().append("div").attr("class", "conflict");
conflictEnter.append("h4").attr("class", "conflict-count").call(_t.append("save.conflict.count", { num: index + 1, total: _conflictList.length }));
- conflictEnter.append("a").attr("class", "conflict-description").attr("href", "#").text(function(d) {
- return d.name;
- }).on("click", function(d3_event, d) {
+ conflictEnter.append("a").attr("class", "conflict-description").attr("href", "#").text(function(d2) {
+ return d2.name;
+ }).on("click", function(d3_event, d2) {
d3_event.preventDefault();
- zoomToEntity(d.id);
+ zoomToEntity(d2.id);
});
var details = conflictEnter.append("div").attr("class", "conflict-detail-container");
- details.append("ul").attr("class", "conflict-detail-list").selectAll("li").data(function(d) {
- return d.details || [];
- }).enter().append("li").attr("class", "conflict-detail-item").html(function(d) {
- return d;
+ details.append("ul").attr("class", "conflict-detail-list").selectAll("li").data(function(d2) {
+ return d2.details || [];
+ }).enter().append("li").attr("class", "conflict-detail-item").html(function(d2) {
+ return d2;
});
details.append("div").attr("class", "conflict-choices").call(addChoices);
- details.append("div").attr("class", "conflict-nav-buttons joined cf").selectAll("button").data(["previous", "next"]).enter().append("button").attr("class", "conflict-nav-button action col6").attr("disabled", function(d, i2) {
- return i2 === 0 && index === 0 || i2 === 1 && index === _conflictList.length - 1 || null;
- }).on("click", function(d3_event, d) {
+ details.append("div").attr("class", "conflict-nav-buttons joined cf").selectAll("button").data(["previous", "next"]).enter().append("button").attr("class", "conflict-nav-button action col6").attr("disabled", function(d2, i3) {
+ return i3 === 0 && index === 0 || i3 === 1 && index === _conflictList.length - 1 || null;
+ }).on("click", function(d3_event, d2) {
d3_event.preventDefault();
var container = parent.selectAll(".conflict-container");
- var sign2 = d === "previous" ? -1 : 1;
+ var sign2 = d2 === "previous" ? -1 : 1;
container.selectAll(".conflict").remove();
container.call(showConflict, index + sign2);
- }).each(function(d) {
- _t.append("save.conflict." + d)(select_default2(this));
+ }).each(function(d2) {
+ _t.append("save.conflict." + d2)(select_default2(this));
});
}
function addChoices(selection2) {
- var choices = selection2.append("ul").attr("class", "layer-list").selectAll("li").data(function(d) {
- return d.choices || [];
+ var choices = selection2.append("ul").attr("class", "layer-list").selectAll("li").data(function(d2) {
+ return d2.choices || [];
});
var choicesEnter = choices.enter().append("li").attr("class", "layer");
var labelEnter = choicesEnter.append("label");
- labelEnter.append("input").attr("type", "radio").attr("name", function(d) {
- return d.id;
- }).on("change", function(d3_event, d) {
+ labelEnter.append("input").attr("type", "radio").attr("name", function(d2) {
+ return d2.id;
+ }).on("change", function(d3_event, d2) {
var ul = this.parentNode.parentNode.parentNode;
- ul.__data__.chosen = d.id;
- choose(d3_event, ul, d);
+ ul.__data__.chosen = d2.id;
+ choose(d3_event, ul, d2);
});
- labelEnter.append("span").text(function(d) {
- return d.text;
+ labelEnter.append("span").text(function(d2) {
+ return d2.text;
});
- choicesEnter.merge(choices).each(function(d) {
+ choicesEnter.merge(choices).each(function(d2) {
var ul = this.parentNode;
- if (ul.__data__.chosen === d.id) {
- choose(null, ul, d);
+ if (ul.__data__.chosen === d2.id) {
+ choose(null, ul, d2);
}
});
}
function choose(d3_event, ul, datum2) {
if (d3_event)
d3_event.preventDefault();
- select_default2(ul).selectAll("li").classed("active", function(d) {
- return d === datum2;
- }).selectAll("input").property("checked", function(d) {
- return d === datum2;
+ select_default2(ul).selectAll("li").classed("active", function(d2) {
+ return d2 === datum2;
+ }).selectAll("input").property("checked", function(d2) {
+ return d2 === datum2;
});
var extent = geoExtent();
var entity;
context.surface().selectAll(utilEntityOrMemberSelector([entity.id], context.graph())).classed("hover", true);
}
}
- conflicts.conflictList = function(_) {
+ conflicts.conflictList = function(_2) {
if (!arguments.length)
return _conflictList;
- _conflictList = _;
+ _conflictList = _2;
return conflicts;
};
- conflicts.origChanges = function(_) {
+ conflicts.origChanges = function(_2) {
if (!arguments.length)
return _origChanges;
- _origChanges = _;
+ _origChanges = _2;
return conflicts;
};
conflicts.shownEntityIds = function() {
}
return [];
};
- return utilRebind(conflicts, dispatch10, "on");
+ return utilRebind(conflicts, dispatch14, "on");
}
// modules/ui/entity_editor.js
}
function makeActiveIssue(issueID) {
_activeIssueID = issueID;
- section.selection().selectAll(".issue-container").classed("active", function(d) {
- return d.id === _activeIssueID;
+ section.selection().selectAll(".issue-container").classed("active", function(d2) {
+ return d2.id === _activeIssueID;
});
}
function renderDisclosureContent(selection2) {
selection2.classed("grouped-items-area", true);
_activeIssueID = _issues.length > 0 ? _issues[0].id : null;
- var containers = selection2.selectAll(".issue-container").data(_issues, function(d) {
- return d.key;
+ var containers = selection2.selectAll(".issue-container").data(_issues, function(d2) {
+ return d2.key;
});
containers.exit().remove();
var containersEnter = containers.enter().append("div").attr("class", "issue-container");
- var itemsEnter = containersEnter.append("div").attr("class", function(d) {
- return "issue severity-" + d.severity;
- }).on("mouseover.highlight", function(d3_event, d) {
- var ids = d.entityIds.filter(function(e) {
- return _entityIDs.indexOf(e) === -1;
+ var itemsEnter = containersEnter.append("div").attr("class", function(d2) {
+ return "issue severity-" + d2.severity;
+ }).on("mouseover.highlight", function(d3_event, d2) {
+ var ids = d2.entityIds.filter(function(e3) {
+ return _entityIDs.indexOf(e3) === -1;
});
utilHighlightEntities(ids, true, context);
- }).on("mouseout.highlight", function(d3_event, d) {
- var ids = d.entityIds.filter(function(e) {
- return _entityIDs.indexOf(e) === -1;
+ }).on("mouseout.highlight", function(d3_event, d2) {
+ var ids = d2.entityIds.filter(function(e3) {
+ return _entityIDs.indexOf(e3) === -1;
});
utilHighlightEntities(ids, false, context);
});
var labelsEnter = itemsEnter.append("div").attr("class", "issue-label");
- var textEnter = labelsEnter.append("button").attr("class", "issue-text").on("click", function(d3_event, d) {
- makeActiveIssue(d.id);
- var extent = d.extent(context.graph());
+ var textEnter = labelsEnter.append("button").attr("class", "issue-text").on("click", function(d3_event, d2) {
+ makeActiveIssue(d2.id);
+ var extent = d2.extent(context.graph());
if (extent) {
var setZoom = Math.max(context.map().zoom(), 19);
context.map().unobscuredCenterZoomEase(extent.center(), setZoom);
}
});
- textEnter.each(function(d) {
- var iconName = "#iD-icon-" + (d.severity === "warning" ? "alert" : "error");
+ textEnter.each(function(d2) {
+ var iconName = "#iD-icon-" + (d2.severity === "warning" ? "alert" : "error");
select_default2(this).call(svgIcon(iconName, "issue-icon"));
});
textEnter.append("span").attr("class", "issue-message");
}
});
itemsEnter.append("ul").attr("class", "issue-fix-list");
- containersEnter.append("div").attr("class", "issue-info" + (_expanded ? " expanded" : "")).style("max-height", _expanded ? null : "0").style("opacity", _expanded ? "1" : "0").each(function(d) {
- if (typeof d.reference === "function") {
- select_default2(this).call(d.reference);
+ containersEnter.append("div").attr("class", "issue-info" + (_expanded ? " expanded" : "")).style("max-height", _expanded ? null : "0").style("opacity", _expanded ? "1" : "0").each(function(d2) {
+ if (typeof d2.reference === "function") {
+ select_default2(this).call(d2.reference);
} else {
select_default2(this).call(_t.append("inspector.no_documentation_key"));
}
});
- containers = containers.merge(containersEnter).classed("active", function(d) {
- return d.id === _activeIssueID;
+ containers = containers.merge(containersEnter).classed("active", function(d2) {
+ return d2.id === _activeIssueID;
});
- containers.selectAll(".issue-message").text("").each(function(d) {
- return d.message(context)(select_default2(this));
+ containers.selectAll(".issue-message").text("").each(function(d2) {
+ return d2.message(context)(select_default2(this));
});
var fixLists = containers.selectAll(".issue-fix-list");
- var fixes = fixLists.selectAll(".issue-fix-item").data(function(d) {
- return d.fixes ? d.fixes(context) : [];
+ var fixes = fixLists.selectAll(".issue-fix-item").data(function(d2) {
+ return d2.fixes ? d2.fixes(context) : [];
}, function(fix) {
return fix.id;
});
fixes.exit().remove();
var fixesEnter = fixes.enter().append("li").attr("class", "issue-fix-item");
- var buttons = fixesEnter.append("button").on("click", function(d3_event, d) {
- if (select_default2(this).attr("disabled") || !d.onClick)
+ var buttons = fixesEnter.append("button").on("click", function(d3_event, d2) {
+ if (select_default2(this).attr("disabled") || !d2.onClick)
return;
- if (d.issue.dateLastRanFix && /* @__PURE__ */ new Date() - d.issue.dateLastRanFix < 1e3)
+ if (d2.issue.dateLastRanFix && /* @__PURE__ */ new Date() - d2.issue.dateLastRanFix < 1e3)
return;
- d.issue.dateLastRanFix = /* @__PURE__ */ new Date();
- utilHighlightEntities(d.issue.entityIds.concat(d.entityIds), false, context);
+ d2.issue.dateLastRanFix = /* @__PURE__ */ new Date();
+ utilHighlightEntities(d2.issue.entityIds.concat(d2.entityIds), false, context);
new Promise(function(resolve, reject) {
- d.onClick(context, resolve, reject);
- if (d.onClick.length <= 1) {
+ d2.onClick(context, resolve, reject);
+ if (d2.onClick.length <= 1) {
resolve();
}
}).then(function() {
context.validator().validate();
});
- }).on("mouseover.highlight", function(d3_event, d) {
- utilHighlightEntities(d.entityIds, true, context);
- }).on("mouseout.highlight", function(d3_event, d) {
- utilHighlightEntities(d.entityIds, false, context);
+ }).on("mouseover.highlight", function(d3_event, d2) {
+ utilHighlightEntities(d2.entityIds, true, context);
+ }).on("mouseout.highlight", function(d3_event, d2) {
+ utilHighlightEntities(d2.entityIds, false, context);
});
- buttons.each(function(d) {
- var iconName = d.icon || "iD-icon-wrench";
+ buttons.each(function(d2) {
+ var iconName = d2.icon || "iD-icon-wrench";
if (iconName.startsWith("maki")) {
iconName += "-15";
}
select_default2(this).call(svgIcon("#" + iconName, "fix-icon"));
});
- buttons.append("span").attr("class", "fix-message").each(function(d) {
- return d.title(select_default2(this));
+ buttons.append("span").attr("class", "fix-message").each(function(d2) {
+ return d2.title(select_default2(this));
});
- fixesEnter.merge(fixes).selectAll("button").classed("actionable", function(d) {
- return d.onClick;
- }).attr("disabled", function(d) {
- return d.onClick ? null : "true";
- }).attr("title", function(d) {
- if (d.disabledReason) {
- return d.disabledReason;
+ fixesEnter.merge(fixes).selectAll("button").classed("actionable", function(d2) {
+ return d2.onClick;
+ }).attr("disabled", function(d2) {
+ return d2.onClick ? null : "true";
+ }).attr("title", function(d2) {
+ if (d2.disabledReason) {
+ return d2.disabledReason;
}
return null;
});
function presetIcon(selection2) {
selection2.each(render);
}
- function getIcon(p, geom) {
- if (p.isFallback && p.isFallback())
- return geom === "vertex" ? "" : "iD-icon-" + p.id;
- if (p.icon)
- return p.icon;
+ function getIcon(p2, geom) {
+ if (p2.isFallback && p2.isFallback())
+ return geom === "vertex" ? "" : "iD-icon-" + p2.id;
+ if (p2.icon)
+ return p2.icon;
if (geom === "line")
return "iD-other-line";
if (geom === "vertex")
let pointBorder = container.selectAll(".preset-icon-point-border").data(drawPoint ? [0] : []);
pointBorder.exit().remove();
let pointBorderEnter = pointBorder.enter();
- const w = 40;
- const h = 40;
- pointBorderEnter.append("svg").attr("class", "preset-icon-fill preset-icon-point-border").attr("width", w).attr("height", h).attr("viewBox", `0 0 ${w} ${h}`).append("path").attr("transform", "translate(11.5, 8)").attr("d", "M 17,8 C 17,13 11,21 8.5,23.5 C 6,21 0,13 0,8 C 0,4 4,-0.5 8.5,-0.5 C 13,-0.5 17,4 17,8 z");
+ const w2 = 40;
+ const h2 = 40;
+ pointBorderEnter.append("svg").attr("class", "preset-icon-fill preset-icon-point-border").attr("width", w2).attr("height", h2).attr("viewBox", `0 0 ${w2} ${h2}`).append("path").attr("transform", "translate(11.5, 8)").attr("d", "M 17,8 C 17,13 11,21 8.5,23.5 C 6,21 0,13 0,8 C 0,4 4,-0.5 8.5,-0.5 C 13,-0.5 17,4 17,8 z");
pointBorder = pointBorderEnter.merge(pointBorder);
}
function renderCategoryBorder(container, category) {
let categoryBorder = container.selectAll(".preset-icon-category-border").data(category ? [0] : []);
categoryBorder.exit().remove();
let categoryBorderEnter = categoryBorder.enter();
- const d = 60;
- let svgEnter = categoryBorderEnter.append("svg").attr("class", "preset-icon-fill preset-icon-category-border").attr("width", d).attr("height", d).attr("viewBox", `0 0 ${d} ${d}`);
+ const d2 = 60;
+ let svgEnter = categoryBorderEnter.append("svg").attr("class", "preset-icon-fill preset-icon-category-border").attr("width", d2).attr("height", d2).attr("viewBox", `0 0 ${d2} ${d2}`);
svgEnter.append("path").attr("class", "area").attr("d", "M9.5,7.5 L25.5,7.5 L28.5,12.5 L49.5,12.5 C51.709139,12.5 53.5,14.290861 53.5,16.5 L53.5,43.5 C53.5,45.709139 51.709139,47.5 49.5,47.5 L10.5,47.5 C8.290861,47.5 6.5,45.709139 6.5,43.5 L6.5,12.5 L9.5,7.5 Z");
categoryBorder = categoryBorderEnter.merge(categoryBorder);
if (category) {
let vertexFill = container.selectAll(".preset-icon-fill-vertex").data(drawVertex ? [0] : []);
vertexFill.exit().remove();
let vertexFillEnter = vertexFill.enter();
- const w = 60;
- const h = 60;
- const d = 40;
- vertexFillEnter.append("svg").attr("class", "preset-icon-fill preset-icon-fill-vertex").attr("width", w).attr("height", h).attr("viewBox", `0 0 ${w} ${h}`).append("circle").attr("cx", w / 2).attr("cy", h / 2).attr("r", d / 2);
+ const w2 = 60;
+ const h2 = 60;
+ const d2 = 40;
+ vertexFillEnter.append("svg").attr("class", "preset-icon-fill preset-icon-fill-vertex").attr("width", w2).attr("height", h2).attr("viewBox", `0 0 ${w2} ${h2}`).append("circle").attr("cx", w2 / 2).attr("cy", h2 / 2).attr("r", d2 / 2);
vertexFill = vertexFillEnter.merge(vertexFill);
}
function renderSquareFill(container, drawArea, tagClasses) {
let fill = container.selectAll(".preset-icon-fill-area").data(drawArea ? [0] : []);
fill.exit().remove();
let fillEnter = fill.enter();
- const d = 60;
- const w = d;
- const h = d;
- const l = d * 2 / 3;
- const c1 = (w - l) / 2;
- const c2 = c1 + l;
- fillEnter = fillEnter.append("svg").attr("class", "preset-icon-fill preset-icon-fill-area").attr("width", w).attr("height", h).attr("viewBox", `0 0 ${w} ${h}`);
+ const d2 = 60;
+ const w2 = d2;
+ const h2 = d2;
+ const l2 = d2 * 2 / 3;
+ const c1 = (w2 - l2) / 2;
+ const c2 = c1 + l2;
+ fillEnter = fillEnter.append("svg").attr("class", "preset-icon-fill preset-icon-fill-area").attr("width", w2).attr("height", h2).attr("viewBox", `0 0 ${w2} ${h2}`);
["fill", "stroke"].forEach((klass) => {
fillEnter.append("path").attr("d", `M${c1} ${c1} L${c1} ${c2} L${c2} ${c2} L${c2} ${c1} Z`).attr("class", `area ${klass}`);
});
fillEnter.append("circle").attr("class", "vertex").attr("cx", point2[0]).attr("cy", point2[1]).attr("r", rVertex);
});
const rMidpoint = 1.25;
- [[c1, w / 2], [c2, w / 2], [h / 2, c1], [h / 2, c2]].forEach((point2) => {
+ [[c1, w2 / 2], [c2, w2 / 2], [h2 / 2, c1], [h2 / 2, c2]].forEach((point2) => {
fillEnter.append("circle").attr("class", "midpoint").attr("cx", point2[0]).attr("cy", point2[1]).attr("r", rMidpoint);
});
fill = fillEnter.merge(fill);
let line = container.selectAll(".preset-icon-line").data(drawLine ? [0] : []);
line.exit().remove();
let lineEnter = line.enter();
- const d = 60;
- const w = d;
- const h = d;
- const y = Math.round(d * 0.72);
- const l = Math.round(d * 0.6);
- const r = 2.5;
- const x12 = (w - l) / 2;
- const x2 = x12 + l;
- lineEnter = lineEnter.append("svg").attr("class", "preset-icon-line").attr("width", w).attr("height", h).attr("viewBox", `0 0 ${w} ${h}`);
+ const d2 = 60;
+ const w2 = d2;
+ const h2 = d2;
+ const y2 = Math.round(d2 * 0.72);
+ const l2 = Math.round(d2 * 0.6);
+ const r2 = 2.5;
+ const x12 = (w2 - l2) / 2;
+ const x2 = x12 + l2;
+ lineEnter = lineEnter.append("svg").attr("class", "preset-icon-line").attr("width", w2).attr("height", h2).attr("viewBox", `0 0 ${w2} ${h2}`);
["casing", "stroke"].forEach((klass) => {
- lineEnter.append("path").attr("d", `M${x12} ${y} L${x2} ${y}`).attr("class", `line ${klass}`);
+ lineEnter.append("path").attr("d", `M${x12} ${y2} L${x2} ${y2}`).attr("class", `line ${klass}`);
});
- [[x12 - 1, y], [x2 + 1, y]].forEach((point2) => {
- lineEnter.append("circle").attr("class", "vertex").attr("cx", point2[0]).attr("cy", point2[1]).attr("r", r);
+ [[x12 - 1, y2], [x2 + 1, y2]].forEach((point2) => {
+ lineEnter.append("circle").attr("class", "vertex").attr("cx", point2[0]).attr("cy", point2[1]).attr("r", r2);
});
line = lineEnter.merge(line);
line.selectAll("path.stroke").attr("class", `line stroke ${tagClasses}`);
line.selectAll("path.casing").attr("class", `line casing ${tagClasses}`);
}
- function renderRoute(container, drawRoute, p) {
+ function renderRoute(container, drawRoute, p2) {
let route = container.selectAll(".preset-icon-route").data(drawRoute ? [0] : []);
route.exit().remove();
let routeEnter = route.enter();
- const d = 60;
- const w = d;
- const h = d;
- const y12 = Math.round(d * 0.8);
- const y2 = Math.round(d * 0.68);
- const l = Math.round(d * 0.6);
- const r = 2;
- const x12 = (w - l) / 2;
- const x2 = x12 + l / 3;
- const x3 = x2 + l / 3;
- const x4 = x3 + l / 3;
- routeEnter = routeEnter.append("svg").attr("class", "preset-icon-route").attr("width", w).attr("height", h).attr("viewBox", `0 0 ${w} ${h}`);
+ const d2 = 60;
+ const w2 = d2;
+ const h2 = d2;
+ const y12 = Math.round(d2 * 0.8);
+ const y2 = Math.round(d2 * 0.68);
+ const l2 = Math.round(d2 * 0.6);
+ const r2 = 2;
+ const x12 = (w2 - l2) / 2;
+ const x2 = x12 + l2 / 3;
+ const x3 = x2 + l2 / 3;
+ const x4 = x3 + l2 / 3;
+ routeEnter = routeEnter.append("svg").attr("class", "preset-icon-route").attr("width", w2).attr("height", h2).attr("viewBox", `0 0 ${w2} ${h2}`);
["casing", "stroke"].forEach((klass) => {
routeEnter.append("path").attr("d", `M${x12} ${y12} L${x2} ${y2}`).attr("class", `segment0 line ${klass}`);
routeEnter.append("path").attr("d", `M${x2} ${y2} L${x3} ${y12}`).attr("class", `segment1 line ${klass}`);
routeEnter.append("path").attr("d", `M${x3} ${y12} L${x4} ${y2}`).attr("class", `segment2 line ${klass}`);
});
[[x12, y12], [x2, y2], [x3, y12], [x4, y2]].forEach((point2) => {
- routeEnter.append("circle").attr("class", "vertex").attr("cx", point2[0]).attr("cy", point2[1]).attr("r", r);
+ routeEnter.append("circle").attr("class", "vertex").attr("cx", point2[0]).attr("cy", point2[1]).attr("r", r2);
});
route = routeEnter.merge(route);
if (drawRoute) {
- let routeType = p.tags.type === "waterway" ? "waterway" : p.tags.route;
+ let routeType = p2.tags.type === "waterway" ? "waterway" : p2.tags.route;
const segmentPresetIDs = routeSegments[routeType];
- for (let i2 in segmentPresetIDs) {
- const segmentPreset = _mainPresetIndex.item(segmentPresetIDs[i2]);
+ for (let i3 in segmentPresetIDs) {
+ const segmentPreset = _mainPresetIndex.item(segmentPresetIDs[i3]);
const segmentTagClasses = svgTagClasses().getClassesString(segmentPreset.tags, "");
- route.selectAll(`path.stroke.segment${i2}`).attr("class", `segment${i2} line stroke ${segmentTagClasses}`);
- route.selectAll(`path.casing.segment${i2}`).attr("class", `segment${i2} line casing ${segmentTagClasses}`);
+ route.selectAll(`path.stroke.segment${i3}`).attr("class", `segment${i3} line stroke ${segmentTagClasses}`);
+ route.selectAll(`path.casing.segment${i3}`).attr("class", `segment${i3} line casing ${segmentTagClasses}`);
}
}
}
waterway: ["waterway/stream", "waterway/stream", "waterway/stream"]
};
function render() {
- let p = _preset.apply(this, arguments);
+ let p2 = _preset.apply(this, arguments);
let geom = _geometry ? _geometry.apply(this, arguments) : null;
- if (geom === "relation" && p.tags && (p.tags.type === "route" && p.tags.route && routeSegments[p.tags.route] || p.tags.type === "waterway")) {
+ if (geom === "relation" && p2.tags && (p2.tags.type === "route" && p2.tags.route && routeSegments[p2.tags.route] || p2.tags.type === "waterway")) {
geom = "route";
}
const showThirdPartyIcons = corePreferences("preferences.privacy.thirdpartyicons") || "true";
- const isFallback = p.isFallback && p.isFallback();
- const imageURL = showThirdPartyIcons === "true" && p.imageURL;
- const picon = getIcon(p, geom);
- const isCategory = !p.setTags;
+ const isFallback = p2.isFallback && p2.isFallback();
+ const imageURL = showThirdPartyIcons === "true" && p2.imageURL;
+ const picon = getIcon(p2, geom);
+ const isCategory = !p2.setTags;
const drawPoint = false;
const drawVertex = picon !== null && geom === "vertex";
const drawLine = picon && geom === "line" && !isFallback && !isCategory;
const drawArea = picon && geom === "area" && !isFallback && !isCategory;
const drawRoute = picon && geom === "route";
const isFramed = drawVertex || drawArea || drawLine || drawRoute || isCategory;
- let tags = !isCategory ? p.setTags({}, geom) : {};
- for (let k in tags) {
- if (tags[k] === "*") {
- tags[k] = "yes";
+ let tags = !isCategory ? p2.setTags({}, geom) : {};
+ for (let k2 in tags) {
+ if (tags[k2] === "*") {
+ tags[k2] = "yes";
}
}
let tagClasses = svgTagClasses().getClassesString(tags, "");
let container = selection2.selectAll(".preset-icon-container").data([0]);
container = container.enter().append("div").attr("class", "preset-icon-container").merge(container);
container.classed("showing-img", !!imageURL).classed("fallback", isFallback);
- renderCategoryBorder(container, isCategory && p);
+ renderCategoryBorder(container, isCategory && p2);
renderPointBorder(container, drawPoint);
renderCircleFill(container, drawVertex);
renderSquareFill(container, drawArea, tagClasses);
renderLine(container, drawLine, tagClasses);
- renderRoute(container, drawRoute, p);
+ renderRoute(container, drawRoute, p2);
renderSvgIcon(container, picon, geom, isFramed, isCategory, tagClasses);
renderImageIcon(container, imageURL);
}
// modules/ui/sections/feature_type.js
function uiSectionFeatureType(context) {
- var dispatch10 = dispatch_default("choose");
+ var dispatch14 = dispatch_default("choose");
var _entityIDs = [];
var _presets = [];
var _tagReference;
tagReferenceBodyWrap.style("display", _presets.length === 1 ? null : "none").call(_tagReference.body);
}
selection2.selectAll(".preset-reset").on("click", function() {
- dispatch10.call("choose", this, _presets);
+ dispatch14.call("choose", this, _presets);
}).on("pointerdown pointerup mousedown mouseup", function(d3_event) {
d3_event.preventDefault();
d3_event.stopPropagation();
_presets[0].subtitleLabel()
].filter(Boolean) : [_t.append("inspector.multiple_types")];
var label = selection2.select(".label-inner");
- var nameparts = label.selectAll(".namepart").data(names, (d) => d.stringId);
+ var nameparts = label.selectAll(".namepart").data(names, (d2) => d2.stringId);
nameparts.exit().remove();
- nameparts.enter().append("div").attr("class", "namepart").text("").each(function(d) {
- d(select_default2(this));
+ nameparts.enter().append("div").attr("class", "namepart").text("").each(function(d2) {
+ d2(select_default2(this));
});
}
section.entityIDs = function(val) {
};
function entityGeometries() {
var counts = {};
- for (var i2 in _entityIDs) {
- var geometry = context.graph().geometry(_entityIDs[i2]);
+ for (var i3 in _entityIDs) {
+ var geometry = context.graph().geometry(_entityIDs[i3]);
if (!counts[geometry])
counts[geometry] = 0;
counts[geometry] += 1;
return counts[geom2] - counts[geom1];
});
}
- return utilRebind(section, dispatch10, "on");
+ return utilRebind(section, dispatch14, "on");
}
// modules/ui/sections/preset_fields.js
function uiSectionPresetFields(context) {
var section = uiSection("preset-fields", context).label(() => _t.append("inspector.fields")).disclosureContent(renderDisclosureContent);
- var dispatch10 = dispatch_default("change", "revert");
+ var dispatch14 = dispatch_default("change", "revert");
var formFields = uiFormFields(context);
var _state;
var _fieldsArr;
geoms[graph.entity(entityID).geometry(graph)] = true;
return geoms;
}, {}));
+ const loc = _entityIDs.reduce(function(extent, entityID) {
+ var entity = context.graph().entity(entityID);
+ return extent.extend(entity.extent(context.graph()));
+ }, geoExtent()).center();
var presetsManager = _mainPresetIndex;
var allFields = [];
var allMoreFields = [];
var sharedTotalFields;
_presets.forEach(function(preset) {
- var fields = preset.fields();
- var moreFields = preset.moreFields();
+ var fields = preset.fields(loc);
+ var moreFields = preset.moreFields(loc);
allFields = utilArrayUnion(allFields, fields);
allMoreFields = utilArrayUnion(allMoreFields, moreFields);
if (!sharedTotalFields) {
}
});
_fieldsArr.forEach(function(field) {
- field.on("change", function(t, onInput) {
- dispatch10.call("change", field, _entityIDs, t, onInput);
- }).on("revert", function(keys) {
- dispatch10.call("revert", field, keys);
+ field.on("change", function(t2, onInput) {
+ dispatch14.call("change", field, _entityIDs, t2, onInput);
+ }).on("revert", function(keys2) {
+ dispatch14.call("revert", field, keys2);
});
});
}
}
return section;
};
- return utilRebind(section, dispatch10, "on");
+ return utilRebind(section, dispatch14, "on");
}
// modules/ui/sections/raw_member_editor.js
var entity = context.hasEntity(_entityIDs[0]);
if (!entity)
return "";
- var gt = entity.members.length > _maxMembers ? ">" : "";
- var count = gt + entity.members.slice(0, _maxMembers).length;
+ var gt2 = entity.members.length > _maxMembers ? ">" : "";
+ var count = gt2 + entity.members.slice(0, _maxMembers).length;
return _t.append("inspector.title_count", { title: _t("inspector.members"), count });
}).disclosureContent(renderDisclosureContent);
var taginfo = services.taginfo;
var _entityIDs;
var _maxMembers = 1e3;
- function downloadMember(d3_event, d) {
+ function downloadMember(d3_event, d2) {
d3_event.preventDefault();
select_default2(this.parentNode).classed("tag-reference-loading", true);
- context.loadEntity(d.id, function() {
+ context.loadEntity(d2.id, function() {
section.reRender();
});
}
- function zoomToMember(d3_event, d) {
+ function zoomToMember(d3_event, d2) {
d3_event.preventDefault();
- var entity = context.entity(d.id);
+ var entity = context.entity(d2.id);
context.map().zoomToEase(entity);
- utilHighlightEntities([d.id], true, context);
+ utilHighlightEntities([d2.id], true, context);
}
- function selectMember(d3_event, d) {
+ function selectMember(d3_event, d2) {
d3_event.preventDefault();
- utilHighlightEntities([d.id], false, context);
- var entity = context.entity(d.id);
+ utilHighlightEntities([d2.id], false, context);
+ var entity = context.entity(d2.id);
var mapExtent = context.map().extent();
if (!entity.intersects(mapExtent, context.graph())) {
context.map().zoomToEase(entity);
}
- context.enter(modeSelect(context, [d.id]));
+ context.enter(modeSelect(context, [d2.id]));
}
- function changeRole(d3_event, d) {
- var oldRole = d.role;
+ function changeRole(d3_event, d2) {
+ var oldRole = d2.role;
var newRole = context.cleanRelationRole(select_default2(this).property("value"));
if (oldRole !== newRole) {
- var member = { id: d.id, type: d.type, role: newRole };
+ var member = { id: d2.id, type: d2.type, role: newRole };
context.perform(
- actionChangeMember(d.relation.id, member, d.index),
+ actionChangeMember(d2.relation.id, member, d2.index),
_t("operations.change_role.annotation", {
n: 1
})
context.validator().validate();
}
}
- function deleteMember(d3_event, d) {
- utilHighlightEntities([d.id], false, context);
+ function deleteMember(d3_event, d2) {
+ utilHighlightEntities([d2.id], false, context);
context.perform(
- actionDeleteMember(d.relation.id, d.index),
+ actionDeleteMember(d2.relation.id, d2.index),
_t("operations.delete_member.annotation", {
n: 1
})
);
- if (!context.hasEntity(d.relation.id)) {
+ if (!context.hasEntity(d2.relation.id)) {
context.enter(modeBrowse(context));
} else {
context.validator().validate();
});
var list = selection2.selectAll(".member-list").data([0]);
list = list.enter().append("ul").attr("class", "member-list").merge(list);
- var items = list.selectAll("li").data(memberships, function(d) {
- return osmEntity.key(d.relation) + "," + d.index + "," + (d.member ? osmEntity.key(d.member) : "incomplete");
+ var items = list.selectAll("li").data(memberships, function(d2) {
+ return osmEntity.key(d2.relation) + "," + d2.index + "," + (d2.member ? osmEntity.key(d2.member) : "incomplete");
});
items.exit().each(unbind).remove();
- var itemsEnter = items.enter().append("li").attr("class", "member-row form-field").classed("member-incomplete", function(d) {
- return !d.member;
+ var itemsEnter = items.enter().append("li").attr("class", "member-row form-field").classed("member-incomplete", function(d2) {
+ return !d2.member;
});
- itemsEnter.each(function(d) {
+ itemsEnter.each(function(d2) {
var item = select_default2(this);
- var label = item.append("label").attr("class", "field-label").attr("for", d.domId);
- if (d.member) {
+ var label = item.append("label").attr("class", "field-label").attr("for", d2.domId);
+ if (d2.member) {
item.on("mouseover", function() {
- utilHighlightEntities([d.id], true, context);
+ utilHighlightEntities([d2.id], true, context);
}).on("mouseout", function() {
- utilHighlightEntities([d.id], false, context);
+ utilHighlightEntities([d2.id], false, context);
});
var labelLink = label.append("span").attr("class", "label-text").append("a").attr("href", "#").on("click", selectMember);
- labelLink.append("span").attr("class", "member-entity-type").text(function(d2) {
- var matched = _mainPresetIndex.match(d2.member, context.graph());
- return matched && matched.name() || utilDisplayType(d2.member.id);
+ labelLink.append("span").attr("class", "member-entity-type").text(function(d4) {
+ var matched = _mainPresetIndex.match(d4.member, context.graph());
+ return matched && matched.name() || utilDisplayType(d4.member.id);
});
- labelLink.append("span").attr("class", "member-entity-name").text(function(d2) {
- return utilDisplayName(d2.member);
+ labelLink.append("span").attr("class", "member-entity-name").text(function(d4) {
+ return utilDisplayName(d4.member);
});
label.append("button").attr("title", _t("icons.remove")).attr("class", "remove member-delete").call(svgIcon("#iD-operation-delete"));
label.append("button").attr("class", "member-zoom").attr("title", _t("icons.zoom_to")).call(svgIcon("#iD-icon-framed-dot", "monochrome")).on("click", zoomToMember);
} else {
var labelText = label.append("span").attr("class", "label-text");
- labelText.append("span").attr("class", "member-entity-type").call(_t.append("inspector." + d.type, { id: d.id }));
- labelText.append("span").attr("class", "member-entity-name").call(_t.append("inspector.incomplete", { id: d.id }));
+ labelText.append("span").attr("class", "member-entity-type").call(_t.append("inspector." + d2.type, { id: d2.id }));
+ labelText.append("span").attr("class", "member-entity-name").call(_t.append("inspector.incomplete", { id: d2.id }));
label.append("button").attr("class", "member-download").attr("title", _t("icons.download")).call(svgIcon("#iD-icon-load")).on("click", downloadMember);
}
});
var wrapEnter = itemsEnter.append("div").attr("class", "form-field-input-wrap form-field-input-member");
- wrapEnter.append("input").attr("class", "member-role").attr("id", function(d) {
- return d.domId;
+ wrapEnter.append("input").attr("class", "member-role").attr("id", function(d2) {
+ return d2.domId;
}).property("type", "text").attr("placeholder", _t("inspector.role")).call(utilNoAuto);
if (taginfo) {
wrapEnter.each(bindTypeahead);
}
items = items.merge(itemsEnter).order();
- items.select("input.member-role").property("value", function(d) {
- return d.role;
+ items.select("input.member-role").property("value", function(d2) {
+ return d2.role;
}).on("blur", changeRole).on("change", changeRole);
items.select("button.member-delete").on("click", deleteMember);
var dragOrigin, targetIndex;
};
targetIndex = null;
}).on("drag", function(d3_event) {
- var x = d3_event.x - dragOrigin.x, y = d3_event.y - dragOrigin.y;
+ var x2 = d3_event.x - dragOrigin.x, y2 = d3_event.y - dragOrigin.y;
if (!select_default2(this).classed("dragging") && // don't display drag until dragging beyond a distance threshold
- Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) <= 5)
+ Math.sqrt(Math.pow(x2, 2) + Math.pow(y2, 2)) <= 5)
return;
var index = items.nodes().indexOf(this);
select_default2(this).classed("dragging", true);
selection2.selectAll("li.member-row").style("transform", function(d2, index2) {
var node = select_default2(this).node();
if (index === index2) {
- return "translate(" + x + "px, " + y + "px)";
+ return "translate(" + x2 + "px, " + y2 + "px)";
} else if (index2 > index && d3_event.y > node.offsetTop) {
if (targetIndex === null || index2 > targetIndex) {
targetIndex = index2;
}
return null;
});
- }).on("end", function(d3_event, d) {
+ }).on("end", function(d3_event, d2) {
if (!select_default2(this).classed("dragging"))
return;
var index = items.nodes().indexOf(this);
selection2.selectAll("li.member-row").style("transform", null);
if (targetIndex !== null) {
context.perform(
- actionMoveMember(d.relation.id, index, targetIndex),
+ actionMoveMember(d2.relation.id, index, targetIndex),
_t("operations.reorder_members.annotation")
);
context.validator().validate();
}
})
);
- function bindTypeahead(d) {
+ function bindTypeahead(d2) {
var row = select_default2(this);
var role = row.selectAll("input.member-role");
var origValue = role.property("value");
function sort(value, data) {
var sameletter = [];
var other = [];
- for (var i2 = 0; i2 < data.length; i2++) {
- if (data[i2].value.substring(0, value.length) === value) {
- sameletter.push(data[i2]);
+ for (var i3 = 0; i3 < data.length; i3++) {
+ if (data[i3].value.substring(0, value.length) === value) {
+ sameletter.push(data[i3]);
} else {
- other.push(data[i2]);
+ other.push(data[i3]);
}
}
return sameletter.concat(other);
role.call(
uiCombobox(context, "member-role").fetcher(function(role2, callback) {
var geometry;
- if (d.member) {
- geometry = context.graph().geometry(d.member.id);
- } else if (d.type === "relation") {
+ if (d2.member) {
+ geometry = context.graph().geometry(d2.member.id);
+ } else if (d2.type === "relation") {
geometry = "relation";
- } else if (d.type === "way") {
+ } else if (d2.type === "way") {
geometry = "line";
} else {
geometry = "point";
// modules/actions/delete_members.js
function actionDeleteMembers(relationId, memberIndexes) {
return function(graph) {
- memberIndexes.sort((a, b) => b - a);
- for (var i2 in memberIndexes) {
- graph = actionDeleteMember(relationId, memberIndexes[i2])(graph);
+ memberIndexes.sort((a2, b2) => b2 - a2);
+ for (var i3 in memberIndexes) {
+ graph = actionDeleteMember(relationId, memberIndexes[i3])(graph);
}
return graph;
};
return _entityIDs && _entityIDs.length;
}).label(function() {
var parents = getSharedParentRelations();
- var gt = parents.length > _maxMemberships ? ">" : "";
- var count = gt + parents.slice(0, _maxMemberships).length;
+ var gt2 = parents.length > _maxMemberships ? ">" : "";
+ var count = gt2 + parents.slice(0, _maxMemberships).length;
return _t.append("inspector.title_count", { title: _t("inspector.relations"), count });
}).disclosureContent(renderDisclosureContent);
var taginfo = services.taginfo;
- var nearbyCombo = uiCombobox(context, "parent-relation").minItems(1).fetcher(fetchNearbyRelations).itemsMouseEnter(function(d3_event, d) {
- if (d.relation)
- utilHighlightEntities([d.relation.id], true, context);
- }).itemsMouseLeave(function(d3_event, d) {
- if (d.relation)
- utilHighlightEntities([d.relation.id], false, context);
+ var nearbyCombo = uiCombobox(context, "parent-relation").minItems(1).fetcher(fetchNearbyRelations).itemsMouseEnter(function(d3_event, d2) {
+ if (d2.relation)
+ utilHighlightEntities([d2.relation.id], true, context);
+ }).itemsMouseLeave(function(d3_event, d2) {
+ if (d2.relation)
+ utilHighlightEntities([d2.relation.id], false, context);
});
var _inChange = false;
var _entityIDs = [];
var _maxMemberships = 1e3;
function getSharedParentRelations() {
var parents = [];
- for (var i2 = 0; i2 < _entityIDs.length; i2++) {
- var entity = context.graph().hasEntity(_entityIDs[i2]);
+ for (var i3 = 0; i3 < _entityIDs.length; i3++) {
+ var entity = context.graph().hasEntity(_entityIDs[i3]);
if (!entity)
continue;
- if (i2 === 0) {
+ if (i3 === 0) {
parents = context.graph().parentRelations(entity);
} else {
parents = utilArrayIntersection(parents, context.graph().parentRelations(entity));
var memberships = [];
var relations = getSharedParentRelations().slice(0, _maxMemberships);
var isMultiselect = _entityIDs.length > 1;
- var i2, relation, membership, index, member, indexedMember;
- for (i2 = 0; i2 < relations.length; i2++) {
- relation = relations[i2];
+ var i3, relation, membership, index, member, indexedMember;
+ for (i3 = 0; i3 < relations.length; i3++) {
+ relation = relations[i3];
membership = {
relation,
members: [],
});
return memberships;
}
- function selectRelation(d3_event, d) {
+ function selectRelation(d3_event, d2) {
d3_event.preventDefault();
- utilHighlightEntities([d.relation.id], false, context);
- context.enter(modeSelect(context, [d.relation.id]));
+ utilHighlightEntities([d2.relation.id], false, context);
+ context.enter(modeSelect(context, [d2.relation.id]));
}
- function zoomToRelation(d3_event, d) {
+ function zoomToRelation(d3_event, d2) {
d3_event.preventDefault();
- var entity = context.entity(d.relation.id);
+ var entity = context.entity(d2.relation.id);
context.map().zoomToEase(entity);
- utilHighlightEntities([d.relation.id], true, context);
+ utilHighlightEntities([d2.relation.id], true, context);
}
- function changeRole(d3_event, d) {
- if (d === 0)
+ function changeRole(d3_event, d2) {
+ if (d2 === 0)
return;
if (_inChange)
return;
var newRole = context.cleanRelationRole(select_default2(this).property("value"));
- if (!newRole.trim() && typeof d.role !== "string")
+ if (!newRole.trim() && typeof d2.role !== "string")
return;
- var membersToUpdate = d.members.filter(function(member) {
+ var membersToUpdate = d2.members.filter(function(member) {
return member.role !== newRole;
});
if (membersToUpdate.length) {
membersToUpdate.forEach(function(member) {
var newMember = Object.assign({}, member, { role: newRole });
delete newMember.index;
- graph = actionChangeMember(d.relation.id, newMember, member.index)(graph);
+ graph = actionChangeMember(d2.relation.id, newMember, member.index)(graph);
});
return graph;
},
}
_inChange = false;
}
- function addMembership(d, role) {
+ function addMembership(d2, role) {
this.blur();
_showBlank = false;
function actionAddMembers(relationId, ids, role2) {
return function(graph) {
- for (var i2 in ids) {
- var member = { id: ids[i2], type: graph.entity(ids[i2]).type, role: role2 };
+ for (var i3 in ids) {
+ var member = { id: ids[i3], type: graph.entity(ids[i3]).type, role: role2 };
graph = actionAddMember(relationId, member)(graph);
}
return graph;
};
}
- if (d.relation) {
+ if (d2.relation) {
context.perform(
- actionAddMembers(d.relation.id, _entityIDs, role),
+ actionAddMembers(d2.relation.id, _entityIDs, role),
_t("operations.add_member.annotation", {
n: _entityIDs.length
})
context.enter(modeSelect(context, [relation.id]).newFeature(true));
}
}
- function deleteMembership(d3_event, d) {
+ function deleteMembership(d3_event, d2) {
this.blur();
- if (d === 0)
+ if (d2 === 0)
return;
- utilHighlightEntities([d.relation.id], false, context);
- var indexes = d.members.map(function(member) {
+ utilHighlightEntities([d2.relation.id], false, context);
+ var indexes = d2.members.map(function(member) {
return member.index;
});
context.perform(
- actionDeleteMembers(d.relation.id, indexes),
+ actionDeleteMembers(d2.relation.id, indexes),
_t("operations.delete_member.annotation", {
n: _entityIDs.length
})
);
context.validator().validate();
}
- function fetchNearbyRelations(q, callback) {
+ function fetchNearbyRelations(q2, callback) {
var newRelation = {
relation: null,
value: _t("inspector.new_relation"),
var entityName = utilDisplayName(entity) || "";
return presetName + " " + entityName;
}
- var explicitRelation = q && context.hasEntity(q.toLowerCase());
+ var explicitRelation = q2 && context.hasEntity(q2.toLowerCase());
if (explicitRelation && explicitRelation.type === "relation" && explicitRelation.id !== entityID) {
result.push({
relation: explicitRelation,
if (entity.type !== "relation" || entity.id === entityID)
return;
var value = baseDisplayLabel(entity);
- if (q && (value + " " + entity.id).toLowerCase().indexOf(q.toLowerCase()) === -1)
+ if (q2 && (value + " " + entity.id).toLowerCase().indexOf(q2.toLowerCase()) === -1)
return;
result.push({ relation: entity, value });
});
- result.sort(function(a, b) {
- return osmRelation.creationOrder(a.relation, b.relation);
+ result.sort(function(a2, b2) {
+ return osmRelation.creationOrder(a2.relation, b2.relation);
});
- var dupeGroups = Object.values(utilArrayGroupBy(result, "value")).filter(function(v) {
- return v.length > 1;
+ var dupeGroups = Object.values(utilArrayGroupBy(result, "value")).filter(function(v2) {
+ return v2.length > 1;
});
dupeGroups.forEach(function(group) {
group.forEach(function(obj) {
var memberships = getMemberships();
var list = selection2.selectAll(".member-list").data([0]);
list = list.enter().append("ul").attr("class", "member-list").merge(list);
- var items = list.selectAll("li.member-row-normal").data(memberships, function(d) {
- return d.hash;
+ var items = list.selectAll("li.member-row-normal").data(memberships, function(d2) {
+ return d2.hash;
});
items.exit().each(unbind).remove();
var itemsEnter = items.enter().append("li").attr("class", "member-row member-row-normal form-field");
- itemsEnter.on("mouseover", function(d3_event, d) {
- utilHighlightEntities([d.relation.id], true, context);
- }).on("mouseout", function(d3_event, d) {
- utilHighlightEntities([d.relation.id], false, context);
+ itemsEnter.on("mouseover", function(d3_event, d2) {
+ utilHighlightEntities([d2.relation.id], true, context);
+ }).on("mouseout", function(d3_event, d2) {
+ utilHighlightEntities([d2.relation.id], false, context);
});
- var labelEnter = itemsEnter.append("label").attr("class", "field-label").attr("for", function(d) {
- return d.domId;
+ var labelEnter = itemsEnter.append("label").attr("class", "field-label").attr("for", function(d2) {
+ return d2.domId;
});
var labelLink = labelEnter.append("span").attr("class", "label-text").append("a").attr("href", "#").on("click", selectRelation);
- labelLink.append("span").attr("class", "member-entity-type").text(function(d) {
- var matched = _mainPresetIndex.match(d.relation, context.graph());
+ labelLink.append("span").attr("class", "member-entity-type").text(function(d2) {
+ var matched = _mainPresetIndex.match(d2.relation, context.graph());
return matched && matched.name() || _t.html("inspector.relation");
});
- labelLink.append("span").attr("class", "member-entity-name").text(function(d) {
- return utilDisplayName(d.relation);
+ labelLink.append("span").attr("class", "member-entity-name").text(function(d2) {
+ return utilDisplayName(d2.relation);
});
labelEnter.append("button").attr("class", "remove member-delete").attr("title", _t("icons.remove")).call(svgIcon("#iD-operation-delete")).on("click", deleteMembership);
labelEnter.append("button").attr("class", "member-zoom").attr("title", _t("icons.zoom_to")).call(svgIcon("#iD-icon-framed-dot", "monochrome")).on("click", zoomToRelation);
var wrapEnter = itemsEnter.append("div").attr("class", "form-field-input-wrap form-field-input-member");
- wrapEnter.append("input").attr("class", "member-role").attr("id", function(d) {
- return d.domId;
- }).property("type", "text").property("value", function(d) {
- return typeof d.role === "string" ? d.role : "";
- }).attr("title", function(d) {
- return Array.isArray(d.role) ? d.role.filter(Boolean).join("\n") : d.role;
- }).attr("placeholder", function(d) {
- return Array.isArray(d.role) ? _t("inspector.multiple_roles") : _t("inspector.role");
- }).classed("mixed", function(d) {
- return Array.isArray(d.role);
+ wrapEnter.append("input").attr("class", "member-role").attr("id", function(d2) {
+ return d2.domId;
+ }).property("type", "text").property("value", function(d2) {
+ return typeof d2.role === "string" ? d2.role : "";
+ }).attr("title", function(d2) {
+ return Array.isArray(d2.role) ? d2.role.filter(Boolean).join("\n") : d2.role;
+ }).attr("placeholder", function(d2) {
+ return Array.isArray(d2.role) ? _t("inspector.multiple_roles") : _t("inspector.role");
+ }).classed("mixed", function(d2) {
+ return Array.isArray(d2.role);
}).call(utilNoAuto).on("blur", changeRole).on("change", changeRole);
if (taginfo) {
wrapEnter.each(bindTypeahead);
section.reRender();
list.selectAll(".member-entity-input").node().focus();
});
- function acceptEntity(d) {
- if (!d) {
+ function acceptEntity(d2) {
+ if (!d2) {
cancelEntity();
return;
}
- if (d.relation)
- utilHighlightEntities([d.relation.id], false, context);
+ if (d2.relation)
+ utilHighlightEntities([d2.relation.id], false, context);
var role = context.cleanRelationRole(list.selectAll(".member-row-new .member-role").property("value"));
- addMembership(d, role);
+ addMembership(d2, role);
}
function cancelEntity() {
var input = newMembership.selectAll(".member-entity-input");
input.property("value", "");
context.surface().selectAll(".highlighted").classed("highlighted", false);
}
- function bindTypeahead(d) {
+ function bindTypeahead(d2) {
var row = select_default2(this);
var role = row.selectAll("input.member-role");
var origValue = role.property("value");
function sort(value, data) {
var sameletter = [];
var other = [];
- for (var i2 = 0; i2 < data.length; i2++) {
- if (data[i2].value.substring(0, value.length) === value) {
- sameletter.push(data[i2]);
+ for (var i3 = 0; i3 < data.length; i3++) {
+ if (data[i3].value.substring(0, value.length) === value) {
+ sameletter.push(data[i3]);
} else {
- other.push(data[i2]);
+ other.push(data[i3]);
}
}
return sameletter.concat(other);
}
role.call(
uiCombobox(context, "member-role").fetcher(function(role2, callback) {
- var rtype = d.relation.tags.type;
+ var rtype = d2.relation.tags.type;
taginfo.roles({
debounce: true,
rtype: rtype || "",
}).filter(Boolean);
var items = list.selectAll(".feature-list-item").data(entities, osmEntity.key);
items.exit().remove();
- var enter = items.enter().append("li").attr("class", "feature-list-item").each(function(d) {
+ var enter = items.enter().append("li").attr("class", "feature-list-item").each(function(d2) {
select_default2(this).on("mouseover", function() {
- utilHighlightEntities([d.id], true, context);
+ utilHighlightEntities([d2.id], true, context);
}).on("mouseout", function() {
- utilHighlightEntities([d.id], false, context);
+ utilHighlightEntities([d2.id], false, context);
});
});
var label = enter.append("button").attr("class", "label").on("click", selectEntity);
items.selectAll(".entity-type").text(function(entity) {
return _mainPresetIndex.match(entity, context.graph()).name();
});
- items.selectAll(".entity-name").text(function(d) {
- var entity = context.entity(d.id);
+ items.selectAll(".entity-name").text(function(d2) {
+ var entity = context.entity(d2.id);
return utilDisplayName(entity);
});
}
// modules/ui/entity_editor.js
function uiEntityEditor(context) {
- var dispatch10 = dispatch_default("choose");
+ var dispatch14 = dispatch_default("choose");
var _state = "select";
var _coalesceChanges = false;
var _modified = false;
header = header.merge(headerEnter);
header.selectAll("h2").text("").call(_entityIDs.length === 1 ? _t.append("inspector.edit") : _t.append("inspector.edit_features"));
header.selectAll(".preset-reset").on("click", function() {
- dispatch10.call("choose", this, _activePresets);
+ dispatch14.call("choose", this, _activePresets);
});
var body = selection2.selectAll(".inspector-body").data([0]);
var bodyEnter = body.enter().append("div").attr("class", "entity-editor inspector-body sep-top");
_sections = [
uiSectionSelectionList(context),
uiSectionFeatureType(context).on("choose", function(presets) {
- dispatch10.call("choose", this, presets);
+ dispatch14.call("choose", this, presets);
}),
uiSectionEntityIssues(context),
uiSectionPresetFields(context).on("change", changeTags).on("revert", revertTags),
}
function changeTags(entityIDs, changed, onInput) {
var actions = [];
- for (var i2 in entityIDs) {
- var entityID = entityIDs[i2];
+ for (var i3 in entityIDs) {
+ var entityID = entityIDs[i3];
var entity = context.entity(entityID);
var tags = Object.assign({}, entity.tags);
if (typeof changed === "function") {
tags = changed(tags);
} else {
- for (var k in changed) {
- if (!k)
+ for (var k2 in changed) {
+ if (!k2)
continue;
- var v = changed[k];
- if (typeof v === "object") {
- tags[k] = tags[v.oldKey];
- } else if (v !== void 0 || tags.hasOwnProperty(k)) {
- tags[k] = v;
+ var v2 = changed[k2];
+ if (typeof v2 === "object") {
+ tags[k2] = tags[v2.oldKey];
+ } else if (v2 !== void 0 || tags.hasOwnProperty(k2)) {
+ tags[k2] = v2;
}
}
}
context.validator().validate();
}
}
- function revertTags(keys) {
+ function revertTags(keys2) {
var actions = [];
- for (var i2 in _entityIDs) {
- var entityID = _entityIDs[i2];
+ for (var i3 in _entityIDs) {
+ var entityID = _entityIDs[i3];
var original = context.graph().base().entities[entityID];
var changed = {};
- for (var j2 in keys) {
- var key = keys[j2];
+ for (var j3 in keys2) {
+ var key = keys2[j3];
changed[key] = original ? original.tags[key] : void 0;
}
var entity = context.entity(entityID);
var tags = Object.assign({}, entity.tags);
- for (var k in changed) {
- if (!k)
+ for (var k2 in changed) {
+ if (!k2)
continue;
- var v = changed[k];
- if (v !== void 0 || tags.hasOwnProperty(k)) {
- tags[k] = v;
+ var v2 = changed[k2];
+ if (v2 !== void 0 || tags.hasOwnProperty(k2)) {
+ tags[k2] = v2;
}
}
tags = utilCleanTags(tags);
function loadActivePresets(isForNewSelection) {
var graph = context.graph();
var counts = {};
- for (var i2 in _entityIDs) {
- var entity = graph.hasEntity(_entityIDs[i2]);
+ for (var i3 in _entityIDs) {
+ var entity = graph.hasEntity(_entityIDs[i3]);
if (!entity)
return;
var match = _mainPresetIndex.match(entity, graph);
}
return entityEditor;
};
- return utilRebind(entityEditor, dispatch10, "on");
+ return utilRebind(entityEditor, dispatch14, "on");
}
// modules/ui/feature_list.js
}
}
function keypress(d3_event) {
- var q = search.property("value"), items = list.selectAll(".feature-list-item");
+ var q2 = search.property("value"), items = list.selectAll(".feature-list-item");
if (d3_event.keyCode === 13 && // ↩ Return
- q.length && items.size()) {
+ q2.length && items.size()) {
click(d3_event, items.datum());
}
}
search.property("value", "");
drawList();
}
- function mapDrawn(e) {
- if (e.full) {
+ function mapDrawn(e3) {
+ if (e3.full) {
drawList();
}
}
var result = [];
var graph = context.graph();
var visibleCenter = context.map().extent().center();
- var q = search.property("value").toLowerCase();
- if (!q)
+ var q2 = search.property("value").toLowerCase();
+ if (!q2)
return result;
- var locationMatch = sexagesimal.pair(q.toUpperCase()) || q.match(/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)$/);
+ var locationMatch = sexagesimal.pair(q2.toUpperCase()) || q2.match(/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)$/);
if (locationMatch) {
var loc = [Number(locationMatch[0]), Number(locationMatch[1])];
result.push({
location: loc
});
}
- var idMatch = !locationMatch && q.match(/(?:^|\W)(node|way|relation|[nwr])\W?0*([1-9]\d*)(?:\W|$)/i);
+ var idMatch = !locationMatch && q2.match(/(?:^|\W)(node|way|relation|[nwr])\W{0,2}0*([1-9]\d*)(?:\W|$)/i);
if (idMatch) {
var elemType = idMatch[1].charAt(0);
var elemId = idMatch[2];
if (!entity)
continue;
var name = utilDisplayName(entity) || "";
- if (name.toLowerCase().indexOf(q) < 0)
+ if (name.toLowerCase().indexOf(q2) < 0)
continue;
var matched = _mainPresetIndex.match(entity, graph);
var type2 = matched && matched.name() || utilDisplayType(entity.id);
if (localResults.length > 100)
break;
}
- localResults = localResults.sort(function byDistance(a, b) {
- return a.distance - b.distance;
+ localResults = localResults.sort(function byDistance(a2, b2) {
+ return a2.distance - b2.distance;
});
result = result.concat(localResults);
- (_geocodeResults || []).forEach(function(d) {
- if (d.osm_type && d.osm_id) {
- var id3 = osmEntity.id.fromOSM(d.osm_type, d.osm_id);
+ (_geocodeResults || []).forEach(function(d2) {
+ if (d2.osm_type && d2.osm_id) {
+ var id3 = osmEntity.id.fromOSM(d2.osm_type, d2.osm_id);
var tags = {};
- tags[d.class] = d.type;
- var attrs = { id: id3, type: d.osm_type, tags };
- if (d.osm_type === "way") {
+ tags[d2.class] = d2.type;
+ var attrs = { id: id3, type: d2.osm_type, tags };
+ if (d2.osm_type === "way") {
attrs.nodes = ["a", "a"];
}
var tempEntity = osmEntity(attrs);
id: tempEntity.id,
geometry: tempEntity.geometry(tempGraph),
type: type3,
- name: d.display_name,
+ name: d2.display_name,
extent: new geoExtent(
- [Number(d.boundingbox[3]), Number(d.boundingbox[0])],
- [Number(d.boundingbox[2]), Number(d.boundingbox[1])]
+ [Number(d2.boundingbox[3]), Number(d2.boundingbox[0])],
+ [Number(d2.boundingbox[2]), Number(d2.boundingbox[1])]
)
});
}
});
- if (q.match(/^[0-9]+$/)) {
+ if (q2.match(/^[0-9]+$/)) {
result.push({
- id: "n" + q,
+ id: "n" + q2,
geometry: "point",
type: _t("inspector.node"),
- name: q
+ name: q2
});
result.push({
- id: "w" + q,
+ id: "w" + q2,
geometry: "line",
type: _t("inspector.way"),
- name: q
+ name: q2
});
result.push({
- id: "r" + q,
+ id: "r" + q2,
geometry: "relation",
type: _t("inspector.relation"),
- name: q
+ name: q2
});
}
return result;
list.selectAll(".no-results-item").style("display", value.length && !results.length ? "block" : "none");
list.selectAll(".geocode-item").style("display", value && _geocodeResults === void 0 ? "block" : "none");
list.selectAll(".feature-list-item").data([-1]).remove();
- var items = list.selectAll(".feature-list-item").data(results, function(d) {
- return d.id;
+ var items = list.selectAll(".feature-list-item").data(results, function(d2) {
+ return d2.id;
});
var enter = items.enter().insert("button", ".geocode-item").attr("class", "feature-list-item").on("mouseover", mouseover).on("mouseout", mouseout).on("click", click);
var label = enter.append("div").attr("class", "label");
- label.each(function(d) {
- select_default2(this).call(svgIcon("#iD-icon-" + d.geometry, "pre-text"));
+ label.each(function(d2) {
+ select_default2(this).call(svgIcon("#iD-icon-" + d2.geometry, "pre-text"));
});
- label.append("span").attr("class", "entity-type").text(function(d) {
- return d.type;
+ label.append("span").attr("class", "entity-type").text(function(d2) {
+ return d2.type;
});
- label.append("span").attr("class", "entity-name").text(function(d) {
- return d.name;
+ label.append("span").attr("class", "entity-name").text(function(d2) {
+ return d2.name;
});
enter.style("opacity", 0).transition().style("opacity", 1);
items.order();
items.exit().remove();
}
- function mouseover(d3_event, d) {
- if (d.id === -1)
+ function mouseover(d3_event, d2) {
+ if (d2.id === -1)
return;
- utilHighlightEntities([d.id], true, context);
+ utilHighlightEntities([d2.id], true, context);
}
- function mouseout(d3_event, d) {
- if (d.id === -1)
+ function mouseout(d3_event, d2) {
+ if (d2.id === -1)
return;
- utilHighlightEntities([d.id], false, context);
+ utilHighlightEntities([d2.id], false, context);
}
- function click(d3_event, d) {
+ function click(d3_event, d2) {
d3_event.preventDefault();
- if (d.location) {
- context.map().centerZoomEase([d.location[1], d.location[0]], 19);
- } else if (d.entity) {
- utilHighlightEntities([d.id], false, context);
- context.enter(modeSelect(context, [d.entity.id]));
- context.map().zoomToEase(d.entity);
+ if (d2.location) {
+ context.map().centerZoomEase([d2.location[1], d2.location[0]], 19);
+ } else if (d2.entity) {
+ utilHighlightEntities([d2.id], false, context);
+ context.enter(modeSelect(context, [d2.entity.id]));
+ context.map().zoomToEase(d2.entity);
} else {
- context.zoomToEntity(d.id);
+ context.zoomToEntity(d2.id);
}
}
function geocoderSearch() {
function issueComments(selection2) {
let comments = selection2.selectAll(".comments-container").data([0]);
comments = comments.enter().append("div").attr("class", "comments-container").merge(comments);
- services.improveOSM.getComments(_qaItem).then((d) => {
- if (!d.comments)
+ services.improveOSM.getComments(_qaItem).then((d2) => {
+ if (!d2.comments)
return;
- const commentEnter = comments.selectAll(".comment").data(d.comments).enter().append("div").attr("class", "comment");
+ const commentEnter = comments.selectAll(".comment").data(d2.comments).enter().append("div").attr("class", "comment");
commentEnter.append("div").attr("class", "comment-avatar").call(svgIcon("#iD-icon-avatar", "comment-avatar-icon"));
const mainEnter = commentEnter.append("div").attr("class", "comment-main");
const metadataEnter = mainEnter.append("div").attr("class", "comment-metadata");
- metadataEnter.append("div").attr("class", "comment-author").each(function(d2) {
+ metadataEnter.append("div").attr("class", "comment-author").each(function(d4) {
const osm = services.osm;
let selection3 = select_default2(this);
- if (osm && d2.username) {
- selection3 = selection3.append("a").attr("class", "comment-author-link").attr("href", osm.userURL(d2.username)).attr("target", "_blank");
+ if (osm && d4.username) {
+ selection3 = selection3.append("a").attr("class", "comment-author-link").attr("href", osm.userURL(d4.username)).attr("target", "_blank");
}
- selection3.text((d4) => d4.username);
+ selection3.text((d5) => d5.username);
});
- metadataEnter.append("div").attr("class", "comment-date").html((d2) => _t.html("note.status.commented", { when: localeDateString2(d2.timestamp) }));
- mainEnter.append("div").attr("class", "comment-text").append("p").text((d2) => d2.text);
+ metadataEnter.append("div").attr("class", "comment-date").html((d4) => _t.html("note.status.commented", { when: localeDateString2(d4.timestamp) }));
+ mainEnter.append("div").attr("class", "comment-text").append("p").text((d4) => d4.text);
}).catch((err) => {
console.log(err);
});
}
- function localeDateString2(s) {
- if (!s)
+ function localeDateString2(s2) {
+ if (!s2)
return null;
const options2 = { day: "numeric", month: "short", year: "numeric" };
- const d = new Date(s * 1e3);
- if (isNaN(d.getTime()))
+ const d2 = new Date(s2 * 1e3);
+ if (isNaN(d2.getTime()))
return null;
- return d.toLocaleDateString(_mainLocalizer.localeCode(), options2);
+ return d2.toLocaleDateString(_mainLocalizer.localeCode(), options2);
}
issueComments.issue = function(val) {
if (!arguments.length)
// modules/ui/improveOSM_details.js
function uiImproveOsmDetails(context) {
let _qaItem;
- function issueDetail(d) {
- if (d.desc)
- return d.desc;
- const issueKey = d.issueKey;
- d.replacements = d.replacements || {};
- d.replacements.default = { html: _t.html("inspector.unknown") };
- return _t.html(`QA.improveOSM.error_types.${issueKey}.description`, d.replacements);
+ function issueDetail(d2) {
+ if (d2.desc)
+ return d2.desc;
+ const issueKey = d2.issueKey;
+ d2.replacements = d2.replacements || {};
+ d2.replacements.default = { html: _t.html("inspector.unknown") };
+ return _t.html(`QA.improveOSM.error_types.${issueKey}.description`, d2.replacements);
}
function improveOsmDetails(selection2) {
const details = selection2.selectAll(".error-details").data(
_qaItem ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
details.exit().remove();
const detailsEnter = details.enter().append("div").attr("class", "error-details qa-details-container");
context.loadEntity(entityID, (err, result) => {
if (err)
return;
- const entity2 = result.data.find((e) => e.id === entityID);
+ const entity2 = result.data.find((e3) => e3.id === entityID);
if (entity2)
context.enter(modeSelect(context, [entityID]));
});
// modules/ui/improveOSM_header.js
function uiImproveOsmHeader() {
let _qaItem;
- function issueTitle(d) {
- const issueKey = d.issueKey;
- d.replacements = d.replacements || {};
- d.replacements.default = { html: _t.html("inspector.unknown") };
- return _t.html(`QA.improveOSM.error_types.${issueKey}.title`, d.replacements);
+ function issueTitle(d2) {
+ const issueKey = d2.issueKey;
+ d2.replacements = d2.replacements || {};
+ d2.replacements.default = { html: _t.html("inspector.unknown") };
+ return _t.html(`QA.improveOSM.error_types.${issueKey}.title`, d2.replacements);
}
function improveOsmHeader(selection2) {
const header = selection2.selectAll(".qa-header").data(
_qaItem ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
header.exit().remove();
const headerEnter = header.enter().append("div").attr("class", "qa-header");
- const svgEnter = headerEnter.append("div").attr("class", "qa-header-icon").classed("new", (d) => d.id < 0).append("svg").attr("width", "20px").attr("height", "30px").attr("viewbox", "0 0 20 30").attr("class", (d) => `preset-icon-28 qaItem ${d.service} itemId-${d.id} itemType-${d.itemType}`);
+ const svgEnter = headerEnter.append("div").attr("class", "qa-header-icon").classed("new", (d2) => d2.id < 0).append("svg").attr("width", "20px").attr("height", "30px").attr("viewbox", "0 0 20 30").attr("class", (d2) => `preset-icon-28 qaItem ${d2.service} itemId-${d2.id} itemType-${d2.itemType}`);
svgEnter.append("polygon").attr("fill", "currentColor").attr("class", "qaItem-fill").attr("points", "16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6");
- svgEnter.append("use").attr("class", "icon-annotation").attr("width", "12px").attr("height", "12px").attr("transform", "translate(4, 5.5)").attr("xlink:href", (d) => d.icon ? "#" + d.icon : "");
+ svgEnter.append("use").attr("class", "icon-annotation").attr("width", "12px").attr("height", "12px").attr("transform", "translate(4, 5.5)").attr("xlink:href", (d2) => d2.icon ? "#" + d2.icon : "");
headerEnter.append("div").attr("class", "qa-header-label").html(issueTitle);
}
improveOsmHeader.issue = function(val) {
// modules/ui/improveOSM_editor.js
function uiImproveOsmEditor(context) {
- const dispatch10 = dispatch_default("change");
+ const dispatch14 = dispatch_default("change");
const qaDetails = uiImproveOsmDetails(context);
const qaComments = uiImproveOsmComments(context);
const qaHeader = uiImproveOsmHeader(context);
const isShown = _qaItem && (isSelected || _qaItem.newComment || _qaItem.comment);
let saveSection = selection2.selectAll(".qa-save").data(
isShown ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
saveSection.exit().remove();
const saveSectionEnter = saveSection.enter().append("div").attr("class", "qa-save save-section cf");
saveSectionEnter.append("h4").attr("class", ".qa-save-header").call(_t.append("note.newComment"));
- saveSectionEnter.append("textarea").attr("class", "new-comment-input").attr("placeholder", _t("QA.keepRight.comment_placeholder")).attr("maxlength", 1e3).property("value", (d) => d.newComment).call(utilNoAuto).on("input", changeInput).on("blur", changeInput);
+ saveSectionEnter.append("textarea").attr("class", "new-comment-input").attr("placeholder", _t("QA.keepRight.comment_placeholder")).attr("maxlength", 1e3).property("value", (d2) => d2.newComment).call(utilNoAuto).on("input", changeInput).on("blur", changeInput);
saveSection = saveSectionEnter.merge(saveSection).call(qaSaveButtons);
function changeInput() {
const input = select_default2(this);
}
function qaSaveButtons(selection2) {
const isSelected = _qaItem && _qaItem.id === context.selectedErrorID();
- let buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_qaItem] : [], (d) => d.status + d.id);
+ let buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_qaItem] : [], (d2) => d2.status + d2.id);
buttonSection.exit().remove();
const buttonEnter = buttonSection.enter().append("div").attr("class", "buttons");
buttonEnter.append("button").attr("class", "button comment-button action").call(_t.append("QA.keepRight.save_comment"));
buttonEnter.append("button").attr("class", "button close-button action");
buttonEnter.append("button").attr("class", "button ignore-button action");
buttonSection = buttonSection.merge(buttonEnter);
- buttonSection.select(".comment-button").attr("disabled", (d) => d.newComment ? null : true).on("click.comment", function(d3_event, d) {
+ buttonSection.select(".comment-button").attr("disabled", (d2) => d2.newComment ? null : true).on("click.comment", function(d3_event, d2) {
this.blur();
const qaService = services.improveOSM;
if (qaService) {
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
- buttonSection.select(".close-button").html((d) => {
- const andComment = d.newComment ? "_comment" : "";
+ buttonSection.select(".close-button").html((d2) => {
+ const andComment = d2.newComment ? "_comment" : "";
return _t.html(`QA.keepRight.close${andComment}`);
- }).on("click.close", function(d3_event, d) {
+ }).on("click.close", function(d3_event, d2) {
this.blur();
const qaService = services.improveOSM;
if (qaService) {
- d.newStatus = "SOLVED";
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ d2.newStatus = "SOLVED";
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
- buttonSection.select(".ignore-button").html((d) => {
- const andComment = d.newComment ? "_comment" : "";
+ buttonSection.select(".ignore-button").html((d2) => {
+ const andComment = d2.newComment ? "_comment" : "";
return _t.html(`QA.keepRight.ignore${andComment}`);
- }).on("click.ignore", function(d3_event, d) {
+ }).on("click.ignore", function(d3_event, d2) {
this.blur();
const qaService = services.improveOSM;
if (qaService) {
- d.newStatus = "INVALID";
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ d2.newStatus = "INVALID";
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
}
_qaItem = val;
return improveOsmEditor;
};
- return utilRebind(improveOsmEditor, dispatch10, "on");
+ return utilRebind(improveOsmEditor, dispatch14, "on");
}
// modules/ui/preset_list.js
function uiPresetList(context) {
- var dispatch10 = dispatch_default("cancel", "choose");
+ var dispatch14 = dispatch_default("cancel", "choose");
var _entityIDs;
var _currLoc;
var _currentPresets;
var message = messagewrap.append("h2").call(_t.append("inspector.choose"));
var direction = _mainLocalizer.textDirection() === "rtl" ? "backward" : "forward";
messagewrap.append("button").attr("class", "preset-choose").attr("title", _entityIDs.length === 1 ? _t("inspector.edit") : _t("inspector.edit_features")).on("click", function() {
- dispatch10.call("cancel", this);
+ dispatch14.call("cancel", this);
}).call(svgIcon(`#iD-icon-${direction}`));
function initialKeydown(d3_event) {
if (search.property("value").length === 0 && (d3_event.keyCode === utilKeybinding.keyCodes["\u232B"] || d3_event.keyCode === utilKeybinding.keyCodes["\u2326"])) {
var value = search.property("value");
if (d3_event.keyCode === 13 && // ↩ Return
value.length) {
- list.selectAll(".preset-list-item:first-child").each(function(d) {
- d.choose.call(this);
+ list.selectAll(".preset-list-item:first-child").each(function(d2) {
+ d2.choose.call(this);
});
}
}
}
return collection2;
}, []);
- var items = list.selectAll(".preset-list-item").data(collection, function(d) {
- return d.preset.id;
+ var items = list.selectAll(".preset-list-item").data(collection, function(d2) {
+ return d2.preset.id;
});
items.order();
items.exit().remove();
preset.nameLabel(),
preset.subtitleLabel()
].filter(Boolean);
- label.selectAll(".namepart").data(nameparts, (d) => d.stringId).enter().append("div").attr("class", "namepart").text("").each(function(d) {
- d(select_default2(this));
+ label.selectAll(".namepart").data(nameparts, (d2) => d2.stringId).enter().append("div").attr("class", "namepart").text("").each(function(d2) {
+ d2(select_default2(this));
});
wrap2.call(item.reference.button);
selection2.call(item.reference.body);
}
context.perform(
function(graph) {
- for (var i2 in _entityIDs) {
- var entityID = _entityIDs[i2];
+ for (var i3 in _entityIDs) {
+ var entityID = _entityIDs[i3];
var oldPreset = _mainPresetIndex.match(graph.entity(entityID), graph);
graph = actionChangePreset(entityID, oldPreset, preset)(graph);
}
_t("operations.change_tags.annotation")
);
context.validator().validate();
- dispatch10.call("choose", this, preset);
+ dispatch14.call("choose", this, preset);
};
item.help = function(d3_event) {
d3_event.stopPropagation();
button.call(uiTooltip().destroyAny);
button.each(function(item, index) {
var hiddenPresetFeaturesId;
- for (var i2 in geometries) {
- hiddenPresetFeaturesId = context.features().isHiddenPreset(item.preset, geometries[i2]);
+ for (var i3 in geometries) {
+ hiddenPresetFeaturesId = context.features().isHiddenPreset(item.preset, geometries[i3]);
if (hiddenPresetFeaturesId)
break;
}
};
function entityGeometries() {
var counts = {};
- for (var i2 in _entityIDs) {
- var entityID = _entityIDs[i2];
+ for (var i3 in _entityIDs) {
+ var entityID = _entityIDs[i3];
var entity = context.entity(entityID);
var geometry = entity.geometry(context.graph());
if (geometry === "vertex" && entity.isOnAddressLine(context.graph())) {
return counts[geom2] - counts[geom1];
});
}
- return utilRebind(presetList, dispatch10, "on");
+ return utilRebind(presetList, dispatch14, "on");
}
// modules/ui/view_on_osm.js
url = context.connection().noteURL(_what);
}
var data = !_what || _what.isNew() ? [] : [_what];
- var link2 = selection2.selectAll(".view-on-osm").data(data, function(d) {
- return d.id;
+ var link2 = selection2.selectAll(".view-on-osm").data(data, function(d2) {
+ return d2.id;
});
link2.exit().remove();
var linkEnter = link2.enter().append("a").attr("class", "view-on-osm").attr("target", "_blank").attr("href", url).call(svgIcon("#iD-icon-out-link", "inline"));
linkEnter.append("span").call(_t.append("inspector.view_on_osm"));
}
- viewOnOSM.what = function(_) {
+ viewOnOSM.what = function(_2) {
if (!arguments.length)
return _what;
- _what = _;
+ _what = _2;
return viewOnOSM;
};
return viewOnOSM;
// modules/ui/keepRight_details.js
function uiKeepRightDetails(context) {
let _qaItem;
- function issueDetail(d) {
- const { itemType, parentIssueType } = d;
+ function issueDetail(d2) {
+ const { itemType, parentIssueType } = d2;
const unknown = { html: _t.html("inspector.unknown") };
- let replacements = d.replacements || {};
+ let replacements = d2.replacements || {};
replacements.default = unknown;
if (_mainLocalizer.hasTextForStringId(`QA.keepRight.errorTypes.${itemType}.title`)) {
return _t.html(`QA.keepRight.errorTypes.${itemType}.description`, replacements);
function keepRightDetails(selection2) {
const details = selection2.selectAll(".error-details").data(
_qaItem ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
details.exit().remove();
const detailsEnter = details.enter().append("div").attr("class", "error-details qa-details-container");
context.loadEntity(entityID, (err, result) => {
if (err)
return;
- const entity2 = result.data.find((e) => e.id === entityID);
+ const entity2 = result.data.find((e3) => e3.id === entityID);
if (entity2)
context.enter(modeSelect(context, [entityID]));
});
// modules/ui/keepRight_header.js
function uiKeepRightHeader() {
let _qaItem;
- function issueTitle(d) {
- const { itemType, parentIssueType } = d;
+ function issueTitle(d2) {
+ const { itemType, parentIssueType } = d2;
const unknown = _t.html("inspector.unknown");
- let replacements = d.replacements || {};
+ let replacements = d2.replacements || {};
replacements.default = { html: unknown };
if (_mainLocalizer.hasTextForStringId(`QA.keepRight.errorTypes.${itemType}.title`)) {
return _t.html(`QA.keepRight.errorTypes.${itemType}.title`, replacements);
function keepRightHeader(selection2) {
const header = selection2.selectAll(".qa-header").data(
_qaItem ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
header.exit().remove();
const headerEnter = header.enter().append("div").attr("class", "qa-header");
- const iconEnter = headerEnter.append("div").attr("class", "qa-header-icon").classed("new", (d) => d.id < 0);
- iconEnter.append("div").attr("class", (d) => `preset-icon-28 qaItem ${d.service} itemId-${d.id} itemType-${d.parentIssueType}`).call(svgIcon("#iD-icon-bolt", "qaItem-fill"));
+ const iconEnter = headerEnter.append("div").attr("class", "qa-header-icon").classed("new", (d2) => d2.id < 0);
+ iconEnter.append("div").attr("class", (d2) => `preset-icon-28 qaItem ${d2.service} itemId-${d2.id} itemType-${d2.parentIssueType}`).call(svgIcon("#iD-icon-bolt", "qaItem-fill"));
headerEnter.append("div").attr("class", "qa-header-label").html(issueTitle);
}
keepRightHeader.issue = function(val) {
}
const link2 = selection2.selectAll(".view-on-keepRight").data(url ? [url] : []);
link2.exit().remove();
- const linkEnter = link2.enter().append("a").attr("class", "view-on-keepRight").attr("target", "_blank").attr("rel", "noopener").attr("href", (d) => d).call(svgIcon("#iD-icon-out-link", "inline"));
+ const linkEnter = link2.enter().append("a").attr("class", "view-on-keepRight").attr("target", "_blank").attr("rel", "noopener").attr("href", (d2) => d2).call(svgIcon("#iD-icon-out-link", "inline"));
linkEnter.append("span").call(_t.append("inspector.view_on_keepRight"));
}
viewOnKeepRight.what = function(val) {
// modules/ui/keepRight_editor.js
function uiKeepRightEditor(context) {
- const dispatch10 = dispatch_default("change");
+ const dispatch14 = dispatch_default("change");
const qaDetails = uiKeepRightDetails(context);
const qaHeader = uiKeepRightHeader(context);
let _qaItem;
const isShown = _qaItem && (isSelected || _qaItem.newComment || _qaItem.comment);
let saveSection = selection2.selectAll(".qa-save").data(
isShown ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
saveSection.exit().remove();
const saveSectionEnter = saveSection.enter().append("div").attr("class", "qa-save save-section cf");
saveSectionEnter.append("h4").attr("class", ".qa-save-header").call(_t.append("QA.keepRight.comment"));
- saveSectionEnter.append("textarea").attr("class", "new-comment-input").attr("placeholder", _t("QA.keepRight.comment_placeholder")).attr("maxlength", 1e3).property("value", (d) => d.newComment || d.comment).call(utilNoAuto).on("input", changeInput).on("blur", changeInput);
+ saveSectionEnter.append("textarea").attr("class", "new-comment-input").attr("placeholder", _t("QA.keepRight.comment_placeholder")).attr("maxlength", 1e3).property("value", (d2) => d2.newComment || d2.comment).call(utilNoAuto).on("input", changeInput).on("blur", changeInput);
saveSection = saveSectionEnter.merge(saveSection).call(qaSaveButtons);
function changeInput() {
const input = select_default2(this);
}
function qaSaveButtons(selection2) {
const isSelected = _qaItem && _qaItem.id === context.selectedErrorID();
- let buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_qaItem] : [], (d) => d.status + d.id);
+ let buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_qaItem] : [], (d2) => d2.status + d2.id);
buttonSection.exit().remove();
const buttonEnter = buttonSection.enter().append("div").attr("class", "buttons");
buttonEnter.append("button").attr("class", "button comment-button action").call(_t.append("QA.keepRight.save_comment"));
buttonEnter.append("button").attr("class", "button close-button action");
buttonEnter.append("button").attr("class", "button ignore-button action");
buttonSection = buttonSection.merge(buttonEnter);
- buttonSection.select(".comment-button").attr("disabled", (d) => d.newComment ? null : true).on("click.comment", function(d3_event, d) {
+ buttonSection.select(".comment-button").attr("disabled", (d2) => d2.newComment ? null : true).on("click.comment", function(d3_event, d2) {
this.blur();
const qaService = services.keepRight;
if (qaService) {
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
- buttonSection.select(".close-button").html((d) => {
- const andComment = d.newComment ? "_comment" : "";
+ buttonSection.select(".close-button").html((d2) => {
+ const andComment = d2.newComment ? "_comment" : "";
return _t.html(`QA.keepRight.close${andComment}`);
- }).on("click.close", function(d3_event, d) {
+ }).on("click.close", function(d3_event, d2) {
this.blur();
const qaService = services.keepRight;
if (qaService) {
- d.newStatus = "ignore_t";
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ d2.newStatus = "ignore_t";
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
- buttonSection.select(".ignore-button").html((d) => {
- const andComment = d.newComment ? "_comment" : "";
+ buttonSection.select(".ignore-button").html((d2) => {
+ const andComment = d2.newComment ? "_comment" : "";
return _t.html(`QA.keepRight.ignore${andComment}`);
- }).on("click.ignore", function(d3_event, d) {
+ }).on("click.ignore", function(d3_event, d2) {
this.blur();
const qaService = services.keepRight;
if (qaService) {
- d.newStatus = "ignore";
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ d2.newStatus = "ignore";
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
}
_qaItem = val;
return keepRightEditor;
};
- return utilRebind(keepRightEditor, dispatch10, "on");
+ return utilRebind(keepRightEditor, dispatch14, "on");
}
// modules/ui/lasso.js
}
function draw() {
if (polygon2) {
- polygon2.data([lasso.coordinates]).attr("d", function(d) {
- return "M" + d.join(" L") + " Z";
+ polygon2.data([lasso.coordinates]).attr("d", function(d2) {
+ return "M" + d2.join(" L") + " Z";
});
}
}
return extent.extend(geoExtent(point2));
}, geoExtent());
};
- lasso.p = function(_) {
+ lasso.p = function(_2) {
if (!arguments.length)
return lasso;
- lasso.coordinates.push(_);
+ lasso.coordinates.push(_2);
draw();
return lasso;
};
var comments = selection2.selectAll(".comments-container").data([0]);
comments = comments.enter().append("div").attr("class", "comments-container").merge(comments);
var commentEnter = comments.selectAll(".comment").data(_note.comments).enter().append("div").attr("class", "comment");
- commentEnter.append("div").attr("class", function(d) {
- return "comment-avatar user-" + d.uid;
+ commentEnter.append("div").attr("class", function(d2) {
+ return "comment-avatar user-" + d2.uid;
}).call(svgIcon("#iD-icon-avatar", "comment-avatar-icon"));
var mainEnter = commentEnter.append("div").attr("class", "comment-main");
var metadataEnter = mainEnter.append("div").attr("class", "comment-metadata");
- metadataEnter.append("div").attr("class", "comment-author").each(function(d) {
+ metadataEnter.append("div").attr("class", "comment-author").each(function(d2) {
var selection3 = select_default2(this);
var osm = services.osm;
- if (osm && d.user) {
- selection3 = selection3.append("a").attr("class", "comment-author-link").attr("href", osm.userURL(d.user)).attr("target", "_blank");
+ if (osm && d2.user) {
+ selection3 = selection3.append("a").attr("class", "comment-author-link").attr("href", osm.userURL(d2.user)).attr("target", "_blank");
}
- if (d.user) {
- selection3.text(d.user);
+ if (d2.user) {
+ selection3.text(d2.user);
} else {
selection3.call(_t.append("note.anonymous"));
}
});
- metadataEnter.append("div").attr("class", "comment-date").html(function(d) {
- return _t.html("note.status." + d.action, { when: localeDateString2(d.date) });
+ metadataEnter.append("div").attr("class", "comment-date").html(function(d2) {
+ return _t.html("note.status." + d2.action, { when: localeDateString2(d2.date) });
});
- mainEnter.append("div").attr("class", "comment-text").html(function(d) {
- return d.html;
+ mainEnter.append("div").attr("class", "comment-text").html(function(d2) {
+ return d2.html;
}).selectAll("a").attr("rel", "noopener nofollow").attr("target", "_blank");
comments.call(replaceAvatars);
}
if (showThirdPartyIcons !== "true" || !osm)
return;
var uids = {};
- _note.comments.forEach(function(d) {
- if (d.uid)
- uids[d.uid] = true;
+ _note.comments.forEach(function(d2) {
+ if (d2.uid)
+ uids[d2.uid] = true;
});
Object.keys(uids).forEach(function(uid) {
osm.loadUser(uid, function(err, user) {
});
});
}
- function localeDateString2(s) {
- if (!s)
+ function localeDateString2(s2) {
+ if (!s2)
return null;
var options2 = { day: "numeric", month: "short", year: "numeric" };
- s = s.replace(/-/g, "/");
- var d = new Date(s);
- if (isNaN(d.getTime()))
+ s2 = s2.replace(/-/g, "/");
+ var d2 = new Date(s2);
+ if (isNaN(d2.getTime()))
return null;
- return d.toLocaleDateString(_mainLocalizer.localeCode(), options2);
+ return d2.toLocaleDateString(_mainLocalizer.localeCode(), options2);
}
noteComments.note = function(val) {
if (!arguments.length)
function noteHeader(selection2) {
var header = selection2.selectAll(".note-header").data(
_note ? [_note] : [],
- function(d) {
- return d.status + d.id;
+ function(d2) {
+ return d2.status + d2.id;
}
);
header.exit().remove();
var headerEnter = header.enter().append("div").attr("class", "note-header");
- var iconEnter = headerEnter.append("div").attr("class", function(d) {
- return "note-header-icon " + d.status;
- }).classed("new", function(d) {
- return d.id < 0;
+ var iconEnter = headerEnter.append("div").attr("class", function(d2) {
+ return "note-header-icon " + d2.status;
+ }).classed("new", function(d2) {
+ return d2.id < 0;
});
iconEnter.append("div").attr("class", "preset-icon-28").call(svgIcon("#iD-icon-note", "note-fill"));
- iconEnter.each(function(d) {
+ iconEnter.each(function(d2) {
var statusIcon;
- if (d.id < 0) {
+ if (d2.id < 0) {
statusIcon = "#iD-icon-plus";
- } else if (d.status === "open") {
+ } else if (d2.status === "open") {
statusIcon = "#iD-icon-close";
} else {
statusIcon = "#iD-icon-apply";
}
iconEnter.append("div").attr("class", "note-icon-annotation").attr("title", _t("icons.close")).call(svgIcon(statusIcon, "icon-annotation"));
});
- headerEnter.append("div").attr("class", "note-header-label").html(function(d) {
+ headerEnter.append("div").attr("class", "note-header-label").html(function(d2) {
if (_note.isNew()) {
return _t.html("note.new");
}
- return _t.html("note.note") + " " + d.id + " " + (d.status === "closed" ? _t.html("note.closed") : "");
+ return _t.html("note.note") + " " + d2.id + " " + (d2.status === "closed" ? _t.html("note.closed") : "");
});
}
noteHeader.note = function(val) {
}
var link2 = selection2.selectAll(".note-report").data(url ? [url] : []);
link2.exit().remove();
- var linkEnter = link2.enter().append("a").attr("class", "note-report").attr("target", "_blank").attr("href", function(d) {
- return d;
+ var linkEnter = link2.enter().append("a").attr("class", "note-report").attr("target", "_blank").attr("href", function(d2) {
+ return d2;
}).call(svgIcon("#iD-icon-out-link", "inline"));
linkEnter.append("span").call(_t.append("note.report"));
}
// modules/ui/note_editor.js
function uiNoteEditor(context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var noteComments = uiNoteComments(context);
var noteHeader = uiNoteHeader();
var _note;
}
function noteSaveSection(selection2) {
var isSelected = _note && _note.id === context.selectedNoteID();
- var noteSave = selection2.selectAll(".note-save").data(isSelected ? [_note] : [], function(d) {
- return d.status + d.id;
+ var noteSave = selection2.selectAll(".note-save").data(isSelected ? [_note] : [], function(d2) {
+ return d2.status + d2.id;
});
noteSave.exit().remove();
var noteSaveEnter = noteSave.enter().append("div").attr("class", "note-save save-section cf");
noteSaveEnter.append("h4").attr("class", ".note-save-header").html(function() {
return _note.isNew() ? _t.html("note.newDescription") : _t.html("note.newComment");
});
- var commentTextarea = noteSaveEnter.append("textarea").attr("class", "new-comment-input").attr("placeholder", _t("note.inputPlaceholder")).attr("maxlength", 1e3).property("value", function(d) {
- return d.newComment;
+ var commentTextarea = noteSaveEnter.append("textarea").attr("class", "new-comment-input").attr("placeholder", _t("note.inputPlaceholder")).attr("maxlength", 1e3).property("value", function(d2) {
+ return d2.newComment;
}).call(utilNoAuto).on("keydown.note-input", keydown).on("input.note-input", changeInput).on("blur.note-input", changeInput);
if (!commentTextarea.empty() && _newNote) {
commentTextarea.node().focus();
var osm = services.osm;
var hasAuth = osm && osm.authenticated();
var isSelected = _note && _note.id === context.selectedNoteID();
- var buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_note] : [], function(d) {
- return d.status + d.id;
+ var buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_note] : [], function(d2) {
+ return d2.status + d2.id;
});
buttonSection.exit().remove();
var buttonEnter = buttonSection.enter().append("div").attr("class", "buttons");
buttonSection = buttonSection.merge(buttonEnter);
buttonSection.select(".cancel-button").on("click.cancel", clickCancel);
buttonSection.select(".save-button").attr("disabled", isSaveDisabled).on("click.save", clickSave);
- buttonSection.select(".status-button").attr("disabled", hasAuth ? null : true).html(function(d) {
- var action = d.status === "open" ? "close" : "open";
- var andComment = d.newComment ? "_comment" : "";
+ buttonSection.select(".status-button").attr("disabled", hasAuth ? null : true).html(function(d2) {
+ var action = d2.status === "open" ? "close" : "open";
+ var andComment = d2.newComment ? "_comment" : "";
return _t.html("note." + action + andComment);
}).on("click.status", clickStatus);
buttonSection.select(".comment-button").attr("disabled", isSaveDisabled).on("click.comment", clickComment);
- function isSaveDisabled(d) {
- return hasAuth && d.status === "open" && d.newComment ? null : true;
+ function isSaveDisabled(d2) {
+ return hasAuth && d2.status === "open" && d2.newComment ? null : true;
}
}
- function clickCancel(d3_event, d) {
+ function clickCancel(d3_event, d2) {
this.blur();
var osm = services.osm;
if (osm) {
- osm.removeNote(d);
+ osm.removeNote(d2);
}
context.enter(modeBrowse(context));
- dispatch10.call("change");
+ dispatch14.call("change");
}
- function clickSave(d3_event, d) {
+ function clickSave(d3_event, d2) {
this.blur();
var osm = services.osm;
if (osm) {
- osm.postNoteCreate(d, function(err, note) {
- dispatch10.call("change", note);
+ osm.postNoteCreate(d2, function(err, note) {
+ dispatch14.call("change", note);
});
}
}
- function clickStatus(d3_event, d) {
+ function clickStatus(d3_event, d2) {
this.blur();
var osm = services.osm;
if (osm) {
- var setStatus = d.status === "open" ? "closed" : "open";
- osm.postNoteUpdate(d, setStatus, function(err, note) {
- dispatch10.call("change", note);
+ var setStatus = d2.status === "open" ? "closed" : "open";
+ osm.postNoteUpdate(d2, setStatus, function(err, note) {
+ dispatch14.call("change", note);
});
}
}
- function clickComment(d3_event, d) {
+ function clickComment(d3_event, d2) {
this.blur();
var osm = services.osm;
if (osm) {
- osm.postNoteUpdate(d, d.status, function(err, note) {
- dispatch10.call("change", note);
+ osm.postNoteUpdate(d2, d2.status, function(err, note) {
+ dispatch14.call("change", note);
});
}
}
_newNote = val;
return noteEditor;
};
- return utilRebind(noteEditor, dispatch10, "on");
+ return utilRebind(noteEditor, dispatch14, "on");
}
// modules/ui/source_switch.js
function uiSourceSwitch(context) {
- var keys;
+ var keys2;
function click(d3_event) {
d3_event.preventDefault();
var osm = context.connection();
context.history().clearSaved();
context.flush();
select_default2(this).html(isLive ? _t.html("source_switch.live") : _t.html("source_switch.dev")).classed("live", isLive).classed("chip", isLive);
- osm.switch(isLive ? keys[0] : keys[1]);
+ osm.switch(isLive ? keys2[0] : keys2[1]);
}
var sourceSwitch = function(selection2) {
selection2.append("a").attr("href", "#").call(_t.append("source_switch.live")).attr("class", "live chip").on("click", click);
};
- sourceSwitch.keys = function(_) {
+ sourceSwitch.keys = function(_2) {
if (!arguments.length)
- return keys;
- keys = _;
+ return keys2;
+ keys2 = _2;
return sourceSwitch;
};
return sourceSwitch;
let thirdPartyIconsEnter = selection2.select(".privacy-options-list").selectAll(".privacy-third-party-icons-item").data([corePreferences("preferences.privacy.thirdpartyicons") || "true"]).enter().append("li").attr("class", "privacy-third-party-icons-item").append("label").call(
uiTooltip().title(() => _t.append("preferences.privacy.third_party_icons.tooltip")).placement("bottom")
);
- thirdPartyIconsEnter.append("input").attr("type", "checkbox").on("change", (d3_event, d) => {
+ thirdPartyIconsEnter.append("input").attr("type", "checkbox").on("change", (d3_event, d2) => {
d3_event.preventDefault();
- corePreferences("preferences.privacy.thirdpartyicons", d === "true" ? "false" : "true");
+ corePreferences("preferences.privacy.thirdpartyicons", d2 === "true" ? "false" : "true");
});
thirdPartyIconsEnter.append("span").call(_t.append("preferences.privacy.third_party_icons.description"));
- selection2.selectAll(".privacy-third-party-icons-item").classed("active", (d) => d === "true").select("input").property("checked", (d) => d === "true");
+ selection2.selectAll(".privacy-third-party-icons-item").classed("active", (d2) => d2 === "true").select("input").property("checked", (d2) => d2 === "true");
selection2.selectAll(".privacy-link").data([0]).enter().append("div").attr("class", "privacy-link").append("a").attr("target", "_blank").call(svgIcon("#iD-icon-out-link", "inline")).attr("href", "https://github.com/openstreetmap/iD/blob/release/PRIVACY.md").append("span").call(_t.append("preferences.privacy.privacy_link"));
}
corePreferences.onChange("preferences.privacy.thirdpartyicons", section.reRender);
}
// node_modules/osm-community-index/lib/simplify.js
- var import_diacritics3 = __toESM(require_diacritics(), 1);
- function simplify2(str2) {
+ var import_diacritics2 = __toESM(require_diacritics(), 1);
+ function simplify(str2) {
if (typeof str2 !== "string")
return "";
- return import_diacritics3.default.remove(
- str2.replace(/&/g, "and").replace(/İ/ig, "i").replace(/[\s\-=_!"#%'*{},.\/:;?\(\)\[\]@\\$\^*+<>«»~`’\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u200b-\u200f\u2016\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18\u2e19\u2e1b\u2e1e\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\ufeff\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g, "").toLowerCase()
+ return import_diacritics2.default.remove(
+ str2.replace(/&/g, "and").replace(/(İ|i̇)/ig, "i").replace(/[\s\-=_!"#%'*{},.\/:;?\(\)\[\]@\\$\^*+<>«»~`’\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2000-\u206f\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e7f\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\ufeff\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g, "").toLowerCase()
);
}
// node_modules/osm-community-index/lib/resolve_strings.js
- function resolveStrings(item, defaults2, localizerFn) {
+ function resolveStrings(item, defaults, localizerFn) {
let itemStrings = Object.assign({}, item.strings);
- let defaultStrings = Object.assign({}, defaults2[item.type]);
+ let defaultStrings = Object.assign({}, defaults[item.type]);
const anyToken = new RegExp(/(\{\w+\})/, "gi");
if (localizerFn) {
if (itemStrings.community) {
- const communityID = simplify2(itemStrings.community);
+ const communityID = simplify(itemStrings.community);
itemStrings.community = localizerFn(`_communities.${communityID}`);
}
["name", "description", "extendedDescription"].forEach((prop) => {
resolved.descriptionHTML = resolve(itemStrings.description || defaultStrings.description, true);
resolved.extendedDescriptionHTML = resolve(itemStrings.extendedDescription || defaultStrings.extendedDescription, true);
return resolved;
- function resolve(s, addLinks) {
- if (!s)
+ function resolve(s2, addLinks) {
+ if (!s2)
return void 0;
- let result = s;
+ let result = s2;
for (let key in replacements) {
const token = `{${key}}`;
const regex = new RegExp(token, "g");
var _oci = null;
function uiSuccess(context) {
const MAXEVENTS = 2;
- const dispatch10 = dispatch_default("cancel");
+ const dispatch14 = dispatch_default("cancel");
let _changeset2;
let _location;
ensureOSMCommunityIndex();
function success(selection2) {
let header = selection2.append("div").attr("class", "header fillL");
header.append("h2").call(_t.append("success.just_edited"));
- header.append("button").attr("class", "close").attr("title", _t("icons.close")).on("click", () => dispatch10.call("cancel")).call(svgIcon("#iD-icon-close"));
+ header.append("button").attr("class", "close").attr("title", _t("icons.close")).on("click", () => dispatch14.call("cancel")).call(svgIcon("#iD-icon-close"));
let body = selection2.append("div").attr("class", "body save-success fillL");
let summary = body.append("div").attr("class", "save-summary");
summary.append("h3").call(_t.append("success.thank_you" + (_location ? "_location" : ""), { where: _location }));
resource
});
});
- communities.sort((a, b) => a.area - b.area || b.order - a.order);
- body.call(showCommunityLinks, communities.map((c) => c.resource));
+ communities.sort((a2, b2) => a2.area - b2.area || b2.order - a2.order);
+ body.call(showCommunityLinks, communities.map((c2) => c2.resource));
});
}
function showCommunityLinks(selection2, resources) {
let table = communityLinks.append("table").attr("class", "community-table");
let row = table.selectAll(".community-row").data(resources);
let rowEnter = row.enter().append("tr").attr("class", "community-row");
- rowEnter.append("td").attr("class", "cell-icon community-icon").append("a").attr("target", "_blank").attr("href", (d) => d.resolved.url).append("svg").attr("class", "logo-small").append("use").attr("xlink:href", (d) => `#community-${d.type}`);
+ rowEnter.append("td").attr("class", "cell-icon community-icon").append("a").attr("target", "_blank").attr("href", (d2) => d2.resolved.url).append("svg").attr("class", "logo-small").append("use").attr("xlink:href", (d2) => `#community-${d2.type}`);
let communityDetail = rowEnter.append("td").attr("class", "cell-detail community-detail");
communityDetail.each(showCommunityDetails);
communityLinks.append("div").attr("class", "community-missing").call(_t.append("success.missing")).append("a").attr("class", "link-out").attr("target", "_blank").call(svgIcon("#iD-icon-out-link", "inline")).attr("href", "https://github.com/osmlab/osm-community-index/issues").append("span").call(_t.append("success.tell_us"));
}
- function showCommunityDetails(d) {
+ function showCommunityDetails(d2) {
let selection2 = select_default2(this);
- let communityID = d.id;
- selection2.append("div").attr("class", "community-name").html(d.resolved.nameHTML);
- selection2.append("div").attr("class", "community-description").html(d.resolved.descriptionHTML);
- if (d.resolved.extendedDescriptionHTML || d.languageCodes && d.languageCodes.length) {
+ let communityID = d2.id;
+ selection2.append("div").attr("class", "community-name").html(d2.resolved.nameHTML);
+ selection2.append("div").attr("class", "community-description").html(d2.resolved.descriptionHTML);
+ if (d2.resolved.extendedDescriptionHTML || d2.languageCodes && d2.languageCodes.length) {
selection2.append("div").call(
- uiDisclosure(context, `community-more-${d.id}`, false).expanded(false).updatePreference(false).label(() => _t.append("success.more")).content(showMore)
+ uiDisclosure(context, `community-more-${d2.id}`, false).expanded(false).updatePreference(false).label(() => _t.append("success.more")).content(showMore)
);
}
- let nextEvents = (d.events || []).map((event) => {
+ let nextEvents = (d2.events || []).map((event) => {
event.date = parseEventDate(event.when);
return event;
}).filter((event) => {
- const t = event.date.getTime();
+ const t2 = event.date.getTime();
const now3 = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);
- return !isNaN(t) && t >= now3;
- }).sort((a, b) => {
- return a.date < b.date ? -1 : a.date > b.date ? 1 : 0;
+ return !isNaN(t2) && t2 >= now3;
+ }).sort((a2, b2) => {
+ return a2.date < b2.date ? -1 : a2.date > b2.date ? 1 : 0;
}).slice(0, MAXEVENTS);
if (nextEvents.length) {
selection2.append("div").call(
- uiDisclosure(context, `community-events-${d.id}`, false).expanded(false).updatePreference(false).label(_t.html("success.events")).content(showNextEvents)
+ uiDisclosure(context, `community-events-${d2.id}`, false).expanded(false).updatePreference(false).label(_t.html("success.events")).content(showNextEvents)
).select(".hide-toggle").append("span").attr("class", "badge-text").text(nextEvents.length);
}
function showMore(selection3) {
let more = selection3.selectAll(".community-more").data([0]);
let moreEnter = more.enter().append("div").attr("class", "community-more");
- if (d.resolved.extendedDescriptionHTML) {
- moreEnter.append("div").attr("class", "community-extended-description").html(d.resolved.extendedDescriptionHTML);
+ if (d2.resolved.extendedDescriptionHTML) {
+ moreEnter.append("div").attr("class", "community-extended-description").html(d2.resolved.extendedDescriptionHTML);
}
- if (d.languageCodes && d.languageCodes.length) {
- const languageList = d.languageCodes.map((code) => _mainLocalizer.languageName(code)).join(", ");
+ if (d2.languageCodes && d2.languageCodes.length) {
+ const languageList = d2.languageCodes.map((code) => _mainLocalizer.languageName(code)).join(", ");
moreEnter.append("div").attr("class", "community-languages").call(_t.append("success.languages", { languages: languageList }));
}
}
let events = selection3.append("div").attr("class", "community-events");
let item = events.selectAll(".community-event").data(nextEvents);
let itemEnter = item.enter().append("div").attr("class", "community-event");
- itemEnter.append("div").attr("class", "community-event-name").append("a").attr("target", "_blank").attr("href", (d2) => d2.url).text((d2) => {
- let name = d2.name;
- if (d2.i18n && d2.id) {
- name = _t(`community.${communityID}.events.${d2.id}.name`, { default: name });
+ itemEnter.append("div").attr("class", "community-event-name").append("a").attr("target", "_blank").attr("href", (d4) => d4.url).text((d4) => {
+ let name = d4.name;
+ if (d4.i18n && d4.id) {
+ name = _t(`community.${communityID}.events.${d4.id}.name`, { default: name });
}
return name;
});
- itemEnter.append("div").attr("class", "community-event-when").text((d2) => {
+ itemEnter.append("div").attr("class", "community-event-when").text((d4) => {
let options2 = { weekday: "short", day: "numeric", month: "short", year: "numeric" };
- if (d2.date.getHours() || d2.date.getMinutes()) {
+ if (d4.date.getHours() || d4.date.getMinutes()) {
options2.hour = "numeric";
options2.minute = "numeric";
}
- return d2.date.toLocaleString(_mainLocalizer.localeCode(), options2);
+ return d4.date.toLocaleString(_mainLocalizer.localeCode(), options2);
});
- itemEnter.append("div").attr("class", "community-event-where").text((d2) => {
- let where = d2.where;
- if (d2.i18n && d2.id) {
- where = _t(`community.${communityID}.events.${d2.id}.where`, { default: where });
+ itemEnter.append("div").attr("class", "community-event-where").text((d4) => {
+ let where = d4.where;
+ if (d4.i18n && d4.id) {
+ where = _t(`community.${communityID}.events.${d4.id}.where`, { default: where });
}
return where;
});
- itemEnter.append("div").attr("class", "community-event-description").text((d2) => {
- let description = d2.description;
- if (d2.i18n && d2.id) {
- description = _t(`community.${communityID}.events.${d2.id}.description`, { default: description });
+ itemEnter.append("div").attr("class", "community-event-description").text((d4) => {
+ let description = d4.description;
+ if (d4.i18n && d4.id) {
+ description = _t(`community.${communityID}.events.${d4.id}.description`, { default: description });
}
return description;
});
_location = val;
return success;
};
- return utilRebind(success, dispatch10, "on");
+ return utilRebind(success, dispatch14, "on");
}
// modules/ui/version.js
context.map().zoomOutFurther();
}
return function(selection2) {
- var tooltipBehavior = uiTooltip().placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left").title(function(d) {
- if (d.disabled()) {
- return d.disabledTitle;
+ var tooltipBehavior = uiTooltip().placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left").title(function(d2) {
+ if (d2.disabled()) {
+ return d2.disabledTitle;
}
- return d.title;
- }).keys(function(d) {
- return [d.key];
+ return d2.title;
+ }).keys(function(d2) {
+ return [d2.key];
});
var lastPointerUpType;
- var buttons = selection2.selectAll("button").data(zooms).enter().append("button").attr("class", function(d) {
- return d.id;
+ var buttons = selection2.selectAll("button").data(zooms).enter().append("button").attr("class", function(d2) {
+ return d2.id;
}).on("pointerup.editor", function(d3_event) {
lastPointerUpType = d3_event.pointerType;
- }).on("click.editor", function(d3_event, d) {
- if (!d.disabled()) {
- d.action(d3_event);
+ }).on("click.editor", function(d3_event, d2) {
+ if (!d2.disabled()) {
+ d2.action(d3_event);
} else if (lastPointerUpType === "touch" || lastPointerUpType === "pen") {
- context.ui().flash.duration(2e3).iconName("#" + d.icon).iconClass("disabled").label(d.disabledTitle)();
+ context.ui().flash.duration(2e3).iconName("#" + d2.icon).iconClass("disabled").label(d2.disabledTitle)();
}
lastPointerUpType = null;
}).call(tooltipBehavior);
- buttons.each(function(d) {
- select_default2(this).call(svgIcon("#" + d.icon, "light"));
+ buttons.each(function(d2) {
+ select_default2(this).call(svgIcon("#" + d2.icon, "light"));
});
utilKeybinding.plusKeys.forEach(function(key) {
context.keybinding().on([key], zoomIn);
context.keybinding().on([uiCmd("\u2325" + key)], zoomOutFurther);
});
function updateButtonStates() {
- buttons.classed("disabled", function(d) {
- return d.disabled();
+ buttons.classed("disabled", function(d2) {
+ return d2.disabled();
}).each(function() {
var selection3 = select_default2(this);
if (!selection3.select(".tooltip.in").empty()) {
// modules/ui/sections/raw_tag_editor.js
function uiSectionRawTagEditor(id2, context) {
var section = uiSection(id2, context).classes("raw-tag-editor").label(function() {
- var count = Object.keys(_tags).filter(function(d) {
- return d;
+ var count = Object.keys(_tags).filter(function(d2) {
+ return d2;
}).length;
return _t.append("inspector.title_count", { title: _t("inspector.tags"), count });
}).expandedByDefault(false).disclosureContent(renderDisclosureContent);
var taginfo = services.taginfo;
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
var availableViews = [
{ id: "list", icon: "#fas-th-list" },
{ id: "text", icon: "#fas-i-cursor" }
];
+ let _discardTags = {};
+ _mainFileFetcher.get("discarded").then((d2) => {
+ _discardTags = d2;
+ }).catch(() => {
+ });
var _tagView = corePreferences("raw-tag-editor-view") || "list";
var _readOnlyTags = [];
var _orderedKeys = [];
});
var all = Object.keys(_tags).sort();
var missingKeys = utilArrayDifference(all, _orderedKeys);
- for (var i2 in missingKeys) {
- _orderedKeys.push(missingKeys[i2]);
+ for (var i3 in missingKeys) {
+ _orderedKeys.push(missingKeys[i3]);
}
- var rowData = _orderedKeys.map(function(key, i3) {
- return { index: i3, key, value: _tags[key] };
+ var rowData = _orderedKeys.map(function(key, i4) {
+ return { index: i4, key, value: _tags[key] };
});
if (!rowData.length || _showBlank) {
_showBlank = false;
var options2 = wrap2.selectAll(".raw-tag-options").data([0]);
options2.exit().remove();
var optionsEnter = options2.enter().insert("div", ":first-child").attr("class", "raw-tag-options").attr("role", "tablist");
- var optionEnter = optionsEnter.selectAll(".raw-tag-option").data(availableViews, function(d) {
- return d.id;
+ var optionEnter = optionsEnter.selectAll(".raw-tag-option").data(availableViews, function(d2) {
+ return d2.id;
}).enter();
- optionEnter.append("button").attr("class", function(d) {
- return "raw-tag-option raw-tag-option-" + d.id + (_tagView === d.id ? " selected" : "");
- }).attr("aria-selected", function(d) {
- return _tagView === d.id;
- }).attr("role", "tab").attr("title", function(d) {
- return _t("icons." + d.id);
- }).on("click", function(d3_event, d) {
- _tagView = d.id;
- corePreferences("raw-tag-editor-view", d.id);
+ optionEnter.append("button").attr("class", function(d2) {
+ return "raw-tag-option raw-tag-option-" + d2.id + (_tagView === d2.id ? " selected" : "");
+ }).attr("aria-selected", function(d2) {
+ return _tagView === d2.id;
+ }).attr("role", "tab").attr("title", function(d2) {
+ return _t("icons." + d2.id);
+ }).on("click", function(d3_event, d2) {
+ _tagView = d2.id;
+ corePreferences("raw-tag-editor-view", d2.id);
wrap2.selectAll(".raw-tag-option").classed("selected", function(datum2) {
- return datum2 === d;
+ return datum2 === d2;
}).attr("aria-selected", function(datum2) {
- return datum2 === d;
+ return datum2 === d2;
});
- wrap2.selectAll(".tag-text").classed("hide", d.id !== "text").each(setTextareaHeight);
- wrap2.selectAll(".tag-list, .add-row").classed("hide", d.id !== "list");
- }).each(function(d) {
- select_default2(this).call(svgIcon(d.icon));
+ wrap2.selectAll(".tag-text").classed("hide", d2.id !== "text").each(setTextareaHeight);
+ wrap2.selectAll(".tag-list, .add-row").classed("hide", d2.id !== "list");
+ }).each(function(d2) {
+ select_default2(this).call(svgIcon(d2.icon));
});
var textData = rowsToText(rowData);
var textarea = wrap2.selectAll(".tag-text").data([0]);
addRowEnter.append("button").attr("class", "add-tag").attr("aria-label", _t("inspector.add_to_tag")).call(svgIcon("#iD-icon-plus", "light")).call(uiTooltip().title(() => _t.append("inspector.add_to_tag")).placement(_mainLocalizer.textDirection() === "ltr" ? "right" : "left")).on("click", addTag);
addRowEnter.append("div").attr("class", "space-value");
addRowEnter.append("div").attr("class", "space-buttons");
- var items = list.selectAll(".tag-row").data(rowData, function(d) {
- return d.key;
+ var items = list.selectAll(".tag-row").data(rowData, function(d2) {
+ return d2.key;
});
items.exit().each(unbind).remove();
var itemsEnter = items.enter().append("li").attr("class", "tag-row").classed("readonly", isReadOnly);
innerWrap.append("div").attr("class", "key-wrap").append("input").property("type", "text").attr("class", "key").call(utilNoAuto).on("focus", interacted).on("blur", keyChange).on("change", keyChange);
innerWrap.append("div").attr("class", "value-wrap").append("input").property("type", "text").attr("class", "value").call(utilNoAuto).on("focus", interacted).on("blur", valueChange).on("change", valueChange).on("keydown.push-more", pushMore);
innerWrap.append("button").attr("class", "form-field-button remove").attr("title", _t("icons.remove")).call(svgIcon("#iD-operation-delete"));
- items = items.merge(itemsEnter).sort(function(a, b) {
- return a.index - b.index;
+ items = items.merge(itemsEnter).sort(function(a2, b2) {
+ return a2.index - b2.index;
});
- items.each(function(d) {
+ items.each(function(d2) {
var row = select_default2(this);
var key = row.select("input.key");
var value = row.select("input.value");
if (_entityIDs && taginfo && _state !== "hover") {
bindTypeahead(key, value);
}
- var referenceOptions = { key: d.key };
- if (typeof d.value === "string") {
- referenceOptions.value = d.value;
+ var referenceOptions = { key: d2.key };
+ if (typeof d2.value === "string") {
+ referenceOptions.value = d2.value;
}
var reference = uiTagReference(referenceOptions, context);
if (_state === "hover") {
row.call(reference.body);
row.select("button.remove");
});
- items.selectAll("input.key").attr("title", function(d) {
- return d.key;
- }).call(utilGetSetValue, function(d) {
- return d.key;
- }).attr("readonly", function(d) {
- return isReadOnly(d) || null;
- });
- items.selectAll("input.value").attr("title", function(d) {
- return Array.isArray(d.value) ? d.value.filter(Boolean).join("\n") : d.value;
- }).classed("mixed", function(d) {
- return Array.isArray(d.value);
- }).attr("placeholder", function(d) {
- return typeof d.value === "string" ? null : _t("inspector.multiple_values");
- }).call(utilGetSetValue, function(d) {
- return typeof d.value === "string" ? d.value : "";
- }).attr("readonly", function(d) {
- return isReadOnly(d) || null;
- });
- items.selectAll("button.remove").on(("PointerEvent" in window ? "pointer" : "mouse") + "down", removeTag);
- }
- function isReadOnly(d) {
- for (var i2 = 0; i2 < _readOnlyTags.length; i2++) {
- if (d.key.match(_readOnlyTags[i2]) !== null) {
+ items.selectAll("input.key").attr("title", function(d2) {
+ return d2.key;
+ }).call(utilGetSetValue, function(d2) {
+ return d2.key;
+ }).attr("readonly", function(d2) {
+ return isReadOnly(d2) || null;
+ });
+ items.selectAll("input.value").attr("title", function(d2) {
+ return Array.isArray(d2.value) ? d2.value.filter(Boolean).join("\n") : d2.value;
+ }).classed("mixed", function(d2) {
+ return Array.isArray(d2.value);
+ }).attr("placeholder", function(d2) {
+ return typeof d2.value === "string" ? null : _t("inspector.multiple_values");
+ }).call(utilGetSetValue, function(d2) {
+ return typeof d2.value === "string" ? d2.value : "";
+ }).attr("readonly", function(d2) {
+ return isReadOnly(d2) || null;
+ });
+ items.selectAll("button.remove").on(
+ ("PointerEvent" in window ? "pointer" : "mouse") + "down",
+ // 'click' fires too late - #5878
+ (d3_event, d2) => {
+ if (d3_event.button !== 0)
+ return;
+ removeTag(d3_event, d2);
+ }
+ );
+ }
+ function isReadOnly(d2) {
+ for (var i3 = 0; i3 < _readOnlyTags.length; i3++) {
+ if (d2.key.match(_readOnlyTags[i3]) !== null) {
return true;
}
}
var lineHeight = 20;
selection2.style("height", lineCount * lineHeight + "px");
}
- function stringify3(s) {
- return JSON.stringify(s).slice(1, -1);
+ function stringify3(s2) {
+ return JSON.stringify(s2).slice(1, -1);
}
- function unstringify(s) {
+ function unstringify(s2) {
var leading = "";
var trailing = "";
- if (s.length < 1 || s.charAt(0) !== '"') {
+ if (s2.length < 1 || s2.charAt(0) !== '"') {
leading = '"';
}
- if (s.length < 2 || s.charAt(s.length - 1) !== '"' || s.charAt(s.length - 1) === '"' && s.charAt(s.length - 2) === "\\") {
+ if (s2.length < 2 || s2.charAt(s2.length - 1) !== '"' || s2.charAt(s2.length - 1) === '"' && s2.charAt(s2.length - 2) === "\\") {
trailing = '"';
}
- return JSON.parse(leading + s + trailing);
+ return JSON.parse(leading + s2 + trailing);
}
function rowsToText(rows) {
var str2 = rows.filter(function(row) {
var newText = this.value.trim();
var newTags = {};
newText.split("\n").forEach(function(row) {
- var m = row.match(/^\s*([^=]+)=(.*)$/);
- if (m !== null) {
- var k = context.cleanTagKey(unstringify(m[1].trim()));
- var v = context.cleanTagValue(unstringify(m[2].trim()));
- newTags[k] = v;
+ var m2 = row.match(/^\s*([^=]+)=(.*)$/);
+ if (m2 !== null) {
+ var k2 = context.cleanTagKey(unstringify(m2[1].trim()));
+ var v2 = context.cleanTagValue(unstringify(m2[2].trim()));
+ newTags[k2] = v2;
}
});
var tagDiff = utilTagDiff(_tags, newTags);
query: value2
}, function(err, data) {
if (!err) {
- var filtered = data.filter(function(d) {
- return _tags[d.value] === void 0;
- });
+ const filtered = data.filter((d2) => _tags[d2.value] === void 0).filter((d2) => !(d2.value in _discardTags)).filter((d2) => d2.value.toLowerCase().includes(value2.toLowerCase()));
callback(sort(value2, filtered));
}
});
geometry,
query: value2
}, function(err, data) {
- if (!err)
- callback(sort(value2, data));
+ if (!err) {
+ const filtered = data.filter((d2) => d2.value.toLowerCase().includes(value2.toLowerCase()));
+ callback(sort(value2, filtered));
+ }
});
- }));
+ }).caseSensitive(allowUpperCaseTagValues.test(utilGetSetValue(key))));
function sort(value2, data) {
var sameletter = [];
var other = [];
- for (var i2 = 0; i2 < data.length; i2++) {
- if (data[i2].value.substring(0, value2.length) === value2) {
- sameletter.push(data[i2]);
+ for (var i3 = 0; i3 < data.length; i3++) {
+ if (data[i3].value.substring(0, value2.length) === value2) {
+ sameletter.push(data[i3]);
} else {
- other.push(data[i2]);
+ other.push(data[i3]);
}
}
return sameletter.concat(other);
row.selectAll("input.key").call(uiCombobox.off, context);
row.selectAll("input.value").call(uiCombobox.off, context);
}
- function keyChange(d3_event, d) {
+ function keyChange(d3_event, d2) {
if (select_default2(this).attr("readonly"))
return;
- var kOld = d.key;
+ var kOld = d2.key;
if (_pendingChange && _pendingChange.hasOwnProperty(kOld) && _pendingChange[kOld] === void 0)
return;
var kNew = context.cleanTagKey(this.value.trim());
}
if (kNew && kNew !== kOld && _tags[kNew] !== void 0) {
this.value = kOld;
- section.selection().selectAll(".tag-list input.value").each(function(d2) {
- if (d2.key === kNew) {
+ section.selection().selectAll(".tag-list input.value").each(function(d4) {
+ if (d4.key === kNew) {
var input = select_default2(this).node();
input.focus();
input.select();
var existingKeyIndex = _orderedKeys.indexOf(kOld);
if (existingKeyIndex !== -1)
_orderedKeys[existingKeyIndex] = kNew;
- d.key = kNew;
+ d2.key = kNew;
this.value = kNew;
scheduleChange();
}
- function valueChange(d3_event, d) {
- if (isReadOnly(d))
+ function valueChange(d3_event, d2) {
+ if (isReadOnly(d2))
return;
- if (typeof d.value !== "string" && !this.value)
+ if (typeof d2.value !== "string" && !this.value)
return;
- if (_pendingChange && _pendingChange.hasOwnProperty(d.key) && _pendingChange[d.key] === void 0)
+ if (_pendingChange && _pendingChange.hasOwnProperty(d2.key) && _pendingChange[d2.key] === void 0)
return;
_pendingChange = _pendingChange || {};
- _pendingChange[d.key] = context.cleanTagValue(this.value);
+ _pendingChange[d2.key] = context.cleanTagValue(this.value);
scheduleChange();
}
- function removeTag(d3_event, d) {
- if (isReadOnly(d))
+ function removeTag(d3_event, d2) {
+ if (isReadOnly(d2))
return;
- if (d.key === "") {
+ if (d2.key === "") {
_showBlank = false;
section.reRender();
} else {
_orderedKeys = _orderedKeys.filter(function(key) {
- return key !== d.key;
+ return key !== d2.key;
});
_pendingChange = _pendingChange || {};
- _pendingChange[d.key] = void 0;
+ _pendingChange[d2.key] = void 0;
scheduleChange();
}
}
window.setTimeout(function() {
if (!_pendingChange)
return;
- dispatch10.call("change", this, entityIDs, _pendingChange);
+ dispatch14.call("change", this, entityIDs, _pendingChange);
_pendingChange = null;
}, 10);
}
_readOnlyTags = val;
return section;
};
- return utilRebind(section, dispatch10, "on");
+ return utilRebind(section, dispatch14, "on");
}
// modules/ui/data_editor.js
// modules/ui/osmose_details.js
function uiOsmoseDetails(context) {
let _qaItem;
- function issueString(d, type2) {
- if (!d)
+ function issueString(d2, type2) {
+ if (!d2)
return "";
- const s = services.osmose.getStrings(d.itemType);
- return type2 in s ? s[type2] : "";
+ const s2 = services.osmose.getStrings(d2.itemType);
+ return type2 in s2 ? s2[type2] : "";
}
function osmoseDetails(selection2) {
const details = selection2.selectAll(".error-details").data(
_qaItem ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
details.exit().remove();
const detailsEnter = details.enter().append("div").attr("class", "error-details qa-details-container");
if (issueString(_qaItem, "detail")) {
const div = detailsEnter.append("div").attr("class", "qa-details-subsection");
div.append("h4").call(_t.append("QA.keepRight.detail_description"));
- div.append("p").attr("class", "qa-details-description-text").html((d) => issueString(d, "detail")).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
+ div.append("p").attr("class", "qa-details-description-text").html((d2) => issueString(d2, "detail")).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
}
const detailsDiv = detailsEnter.append("div").attr("class", "qa-details-subsection");
const elemsDiv = detailsEnter.append("div").attr("class", "qa-details-subsection");
if (issueString(_qaItem, "fix")) {
const div = detailsEnter.append("div").attr("class", "qa-details-subsection");
div.append("h4").call(_t.append("QA.osmose.fix_title"));
- div.append("p").html((d) => issueString(d, "fix")).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
+ div.append("p").html((d2) => issueString(d2, "fix")).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
}
if (issueString(_qaItem, "trap")) {
const div = detailsEnter.append("div").attr("class", "qa-details-subsection");
div.append("h4").call(_t.append("QA.osmose.trap_title"));
- div.append("p").html((d) => issueString(d, "trap")).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
+ div.append("p").html((d2) => issueString(d2, "trap")).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
}
const thisItem = _qaItem;
- services.osmose.loadIssueDetail(_qaItem).then((d) => {
- if (!d.elems || d.elems.length === 0)
+ services.osmose.loadIssueDetail(_qaItem).then((d2) => {
+ if (!d2.elems || d2.elems.length === 0)
return;
if (context.selectedErrorID() !== thisItem.id && context.container().selectAll(`.qaItem.osmose.hover.itemId-${thisItem.id}`).empty())
return;
- if (d.detail) {
+ if (d2.detail) {
detailsDiv.append("h4").call(_t.append("QA.osmose.detail_title"));
- detailsDiv.append("p").html((d2) => d2.detail).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
+ detailsDiv.append("p").html((d4) => d4.detail).selectAll("a").attr("rel", "noopener").attr("target", "_blank");
}
elemsDiv.append("h4").call(_t.append("QA.osmose.elems_title"));
- elemsDiv.append("ul").selectAll("li").data(d.elems).enter().append("li").append("a").attr("href", "#").attr("class", "error_entity_link").text((d2) => d2).each(function() {
+ elemsDiv.append("ul").selectAll("li").data(d2.elems).enter().append("li").append("a").attr("href", "#").attr("class", "error_entity_link").text((d4) => d4).each(function() {
const link2 = select_default2(this);
const entityID = this.textContent;
const entity = context.hasEntity(entityID);
if (!osmlayer.enabled()) {
osmlayer.enabled(true);
}
- context.map().centerZoom(d.loc, 20);
+ context.map().centerZoom(d2.loc, 20);
if (entity) {
context.enter(modeSelect(context, [entityID]));
} else {
context.loadEntity(entityID, (err, result) => {
if (err)
return;
- const entity2 = result.data.find((e) => e.id === entityID);
+ const entity2 = result.data.find((e3) => e3.id === entityID);
if (entity2)
context.enter(modeSelect(context, [entityID]));
});
}
}
});
- context.features().forceVisible(d.elems);
+ context.features().forceVisible(d2.elems);
context.map().pan([0, 0]);
}).catch((err) => {
console.log(err);
// modules/ui/osmose_header.js
function uiOsmoseHeader() {
let _qaItem;
- function issueTitle(d) {
+ function issueTitle(d2) {
const unknown = _t("inspector.unknown");
- if (!d)
+ if (!d2)
return unknown;
- const s = services.osmose.getStrings(d.itemType);
- return "title" in s ? s.title : unknown;
+ const s2 = services.osmose.getStrings(d2.itemType);
+ return "title" in s2 ? s2.title : unknown;
}
function osmoseHeader(selection2) {
const header = selection2.selectAll(".qa-header").data(
_qaItem ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
header.exit().remove();
const headerEnter = header.enter().append("div").attr("class", "qa-header");
- const svgEnter = headerEnter.append("div").attr("class", "qa-header-icon").classed("new", (d) => d.id < 0).append("svg").attr("width", "20px").attr("height", "30px").attr("viewbox", "0 0 20 30").attr("class", (d) => `preset-icon-28 qaItem ${d.service} itemId-${d.id} itemType-${d.itemType}`);
- svgEnter.append("polygon").attr("fill", (d) => services.osmose.getColor(d.item)).attr("class", "qaItem-fill").attr("points", "16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6");
- svgEnter.append("use").attr("class", "icon-annotation").attr("width", "12px").attr("height", "12px").attr("transform", "translate(4, 5.5)").attr("xlink:href", (d) => d.icon ? "#" + d.icon : "");
+ const svgEnter = headerEnter.append("div").attr("class", "qa-header-icon").classed("new", (d2) => d2.id < 0).append("svg").attr("width", "20px").attr("height", "30px").attr("viewbox", "0 0 20 30").attr("class", (d2) => `preset-icon-28 qaItem ${d2.service} itemId-${d2.id} itemType-${d2.itemType}`);
+ svgEnter.append("polygon").attr("fill", (d2) => services.osmose.getColor(d2.item)).attr("class", "qaItem-fill").attr("points", "16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6");
+ svgEnter.append("use").attr("class", "icon-annotation").attr("width", "12px").attr("height", "12px").attr("transform", "translate(4, 5.5)").attr("xlink:href", (d2) => d2.icon ? "#" + d2.icon : "");
headerEnter.append("div").attr("class", "qa-header-label").text(issueTitle);
}
osmoseHeader.issue = function(val) {
}
const link2 = selection2.selectAll(".view-on-osmose").data(url ? [url] : []);
link2.exit().remove();
- const linkEnter = link2.enter().append("a").attr("class", "view-on-osmose").attr("target", "_blank").attr("rel", "noopener").attr("href", (d) => d).call(svgIcon("#iD-icon-out-link", "inline"));
+ const linkEnter = link2.enter().append("a").attr("class", "view-on-osmose").attr("target", "_blank").attr("rel", "noopener").attr("href", (d2) => d2).call(svgIcon("#iD-icon-out-link", "inline"));
linkEnter.append("span").call(_t.append("inspector.view_on_osmose"));
}
viewOnOsmose.what = function(val) {
// modules/ui/osmose_editor.js
function uiOsmoseEditor(context) {
- const dispatch10 = dispatch_default("change");
+ const dispatch14 = dispatch_default("change");
const qaDetails = uiOsmoseDetails(context);
const qaHeader = uiOsmoseHeader(context);
let _qaItem;
const isShown = _qaItem && isSelected;
let saveSection = selection2.selectAll(".qa-save").data(
isShown ? [_qaItem] : [],
- (d) => `${d.id}-${d.status || 0}`
+ (d2) => `${d2.id}-${d2.status || 0}`
);
saveSection.exit().remove();
const saveSectionEnter = saveSection.enter().append("div").attr("class", "qa-save save-section cf");
}
function qaSaveButtons(selection2) {
const isSelected = _qaItem && _qaItem.id === context.selectedErrorID();
- let buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_qaItem] : [], (d) => d.status + d.id);
+ let buttonSection = selection2.selectAll(".buttons").data(isSelected ? [_qaItem] : [], (d2) => d2.status + d2.id);
buttonSection.exit().remove();
const buttonEnter = buttonSection.enter().append("div").attr("class", "buttons");
buttonEnter.append("button").attr("class", "button close-button action");
buttonEnter.append("button").attr("class", "button ignore-button action");
buttonSection = buttonSection.merge(buttonEnter);
- buttonSection.select(".close-button").call(_t.append("QA.keepRight.close")).on("click.close", function(d3_event, d) {
+ buttonSection.select(".close-button").call(_t.append("QA.keepRight.close")).on("click.close", function(d3_event, d2) {
this.blur();
const qaService = services.osmose;
if (qaService) {
- d.newStatus = "done";
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ d2.newStatus = "done";
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
- buttonSection.select(".ignore-button").call(_t.append("QA.keepRight.ignore")).on("click.ignore", function(d3_event, d) {
+ buttonSection.select(".ignore-button").call(_t.append("QA.keepRight.ignore")).on("click.ignore", function(d3_event, d2) {
this.blur();
const qaService = services.osmose;
if (qaService) {
- d.newStatus = "false";
- qaService.postUpdate(d, (err, item) => dispatch10.call("change", item));
+ d2.newStatus = "false";
+ qaService.postUpdate(d2, (err, item) => dispatch14.call("change", item));
}
});
}
_qaItem = val;
return osmoseEditor;
};
- return utilRebind(osmoseEditor, dispatch10, "on");
+ return utilRebind(osmoseEditor, dispatch14, "on");
}
// modules/ui/sidebar.js
var isRTL = _mainLocalizer.textDirection() === "rtl";
var scaleX = isRTL ? 0 : 1;
var xMarginProperty = isRTL ? "margin-right" : "margin-left";
- var x = containerLocGetter(d3_event)[0] - dragOffset;
- sidebarWidth = isRTL ? containerWidth - x : x;
+ var x2 = containerLocGetter(d3_event)[0] - dragOffset;
+ sidebarWidth = isRTL ? containerWidth - x2 : x2;
var isCollapsed = selection2.classed("collapsed");
var shouldCollapse = sidebarWidth < minWidth;
selection2.classed("collapsed", shouldCollapse);
} else {
errEditor = improveOsmEditor;
}
- context.container().selectAll(".qaItem." + datum2.service).classed("hover", function(d) {
- return d.id === datum2.id;
+ context.container().selectAll(".qaItem." + datum2.service).classed("hover", function(d2) {
+ return d2.id === datum2.id;
});
sidebar.show(errEditor.error(datum2));
selection2.selectAll(".sidebar-component").classed("inspector-hover", true);
selection2.classed("collapsed", isCollapsing);
}
selection2.transition().style(xMarginProperty, endMargin + "px").tween("panner", function() {
- var i2 = number_default(startMargin, endMargin);
- return function(t) {
- var dx = lastMargin - Math.round(i2(t));
+ var i3 = number_default(startMargin, endMargin);
+ return function(t2) {
+ var dx = lastMargin - Math.round(i3(t2));
lastMargin = lastMargin - dx;
context.ui().onResize(moveMap ? void 0 : [dx * scaleX, 0]);
};
function modeAddArea(context, mode) {
mode.id = "add-area";
var behavior = behaviorAddWay(context).on("start", start2).on("startFromWay", startFromWay).on("startFromNode", startFromNode);
- var defaultTags = { area: "yes" };
- if (mode.preset)
- defaultTags = mode.preset.setTags(defaultTags, "area");
+ function defaultTags(loc) {
+ var defaultTags2 = { area: "yes" };
+ if (mode.preset)
+ defaultTags2 = mode.preset.setTags(defaultTags2, "area", false, loc);
+ return defaultTags2;
+ }
function actionClose(wayId) {
return function(graph) {
return graph.replace(graph.entity(wayId).close());
function start2(loc) {
var startGraph = context.graph();
var node = osmNode({ loc });
- var way = osmWay({ tags: defaultTags });
+ var way = osmWay({ tags: defaultTags(loc) });
context.perform(
actionAddEntity(node),
actionAddEntity(way),
function startFromWay(loc, edge) {
var startGraph = context.graph();
var node = osmNode({ loc });
- var way = osmWay({ tags: defaultTags });
+ var way = osmWay({ tags: defaultTags(loc) });
context.perform(
actionAddEntity(node),
actionAddEntity(way),
}
function startFromNode(node) {
var startGraph = context.graph();
- var way = osmWay({ tags: defaultTags });
+ var way = osmWay({ tags: defaultTags(node.loc) });
context.perform(
actionAddEntity(way),
actionAddVertex(way.id, node.id),
function modeAddLine(context, mode) {
mode.id = "add-line";
var behavior = behaviorAddWay(context).on("start", start2).on("startFromWay", startFromWay).on("startFromNode", startFromNode);
- var defaultTags = {};
- if (mode.preset)
- defaultTags = mode.preset.setTags(defaultTags, "line");
+ function defaultTags(loc) {
+ var defaultTags2 = {};
+ if (mode.preset)
+ defaultTags2 = mode.preset.setTags(defaultTags2, "line", false, loc);
+ return defaultTags2;
+ }
function start2(loc) {
var startGraph = context.graph();
var node = osmNode({ loc });
- var way = osmWay({ tags: defaultTags });
+ var way = osmWay({ tags: defaultTags(loc) });
context.perform(
actionAddEntity(node),
actionAddEntity(way),
function startFromWay(loc, edge) {
var startGraph = context.graph();
var node = osmNode({ loc });
- var way = osmWay({ tags: defaultTags });
+ var way = osmWay({ tags: defaultTags(loc) });
context.perform(
actionAddEntity(node),
actionAddEntity(way),
}
function startFromNode(node) {
var startGraph = context.graph();
- var way = osmWay({ tags: defaultTags });
+ var way = osmWay({ tags: defaultTags(node.loc) });
context.perform(
actionAddEntity(way),
actionAddVertex(way.id, node.id)
function modeAddPoint(context, mode) {
mode.id = "add-point";
var behavior = behaviorDraw(context).on("click", add).on("clickWay", addWay).on("clickNode", addNode).on("cancel", cancel).on("finish", cancel);
- var defaultTags = {};
- if (mode.preset)
- defaultTags = mode.preset.setTags(defaultTags, "point");
+ function defaultTags(loc) {
+ var defaultTags2 = {};
+ if (mode.preset)
+ defaultTags2 = mode.preset.setTags(defaultTags2, "point", false, loc);
+ return defaultTags2;
+ }
function add(loc) {
- var node = osmNode({ loc, tags: defaultTags });
+ var node = osmNode({ loc, tags: defaultTags(loc) });
context.perform(
actionAddEntity(node),
_t("operations.add.annotation.point")
enterSelectMode(node);
}
function addWay(loc, edge) {
- var node = osmNode({ tags: defaultTags });
+ var node = osmNode({ tags: defaultTags(loc) });
context.perform(
actionAddMidpoint({ loc, edge }, node),
_t("operations.add.annotation.vertex")
);
}
function addNode(node) {
- if (Object.keys(defaultTags).length === 0) {
+ const _defaultTags = defaultTags(node.loc);
+ if (Object.keys(_defaultTags).length === 0) {
enterSelectMode(node);
return;
}
var tags = Object.assign({}, node.tags);
- for (var key in defaultTags) {
- tags[key] = defaultTags[key];
+ for (var key in _defaultTags) {
+ tags[key] = _defaultTags[key];
}
context.perform(
actionChangeTags(node.id, tags),
var message = selection2.select(".modal-section.message-text");
var items = message.selectAll(".error-container").data(data);
var enter = items.enter().append("div").attr("class", "error-container");
- enter.append("a").attr("class", "error-description").attr("href", "#").classed("hide-toggle", true).text(function(d) {
- return d.msg || _t("save.unknown_error_details");
+ enter.append("a").attr("class", "error-description").attr("href", "#").classed("hide-toggle", true).text(function(d2) {
+ return d2.msg || _t("save.unknown_error_details");
}).on("click", function(d3_event) {
d3_event.preventDefault();
var error = select_default2(this);
error.classed("expanded", !exp2);
});
var details = enter.append("div").attr("class", "error-detail-container").style("display", "none");
- details.append("ul").attr("class", "error-detail-list").selectAll("li").data(function(d) {
- return d.details || [];
- }).enter().append("li").attr("class", "error-detail-item").text(function(d) {
- return d;
+ details.append("ul").attr("class", "error-detail-list").selectAll("li").data(function(d2) {
+ return d2.details || [];
+ }).enter().append("li").attr("class", "error-detail-item").text(function(d2) {
+ return d2;
});
items.exit().remove();
}
context.on("enter.modes", update);
update();
function update() {
- var buttons = wrap2.selectAll("button.add-button").data(modes, function(d) {
- return d.id;
+ var buttons = wrap2.selectAll("button.add-button").data(modes, function(d2) {
+ return d2.id;
});
buttons.exit().remove();
- var buttonsEnter = buttons.enter().append("button").attr("class", function(d) {
- return d.id + " add-button bar-button";
- }).on("click.mode-buttons", function(d3_event, d) {
- if (!enabled(d))
+ var buttonsEnter = buttons.enter().append("button").attr("class", function(d2) {
+ return d2.id + " add-button bar-button";
+ }).on("click.mode-buttons", function(d3_event, d2) {
+ if (!enabled(d2))
return;
var currMode = context.mode().id;
if (/^draw/.test(currMode))
return;
- if (d.id === currMode) {
+ if (d2.id === currMode) {
context.enter(modeBrowse(context));
} else {
- context.enter(d);
+ context.enter(d2);
}
}).call(
- uiTooltip().placement("bottom").title(function(d) {
- return d.description;
- }).keys(function(d) {
- return [d.key];
+ uiTooltip().placement("bottom").title(function(d2) {
+ return d2.description;
+ }).keys(function(d2) {
+ return [d2.key];
}).scrollContainer(context.container().select(".top-toolbar"))
);
- buttonsEnter.each(function(d) {
- select_default2(this).call(svgIcon("#iD-icon-" + d.button));
+ buttonsEnter.each(function(d2) {
+ select_default2(this).call(svgIcon("#iD-icon-" + d2.button));
});
buttonsEnter.append("span").attr("class", "label").text("").each(function(mode) {
mode.title(select_default2(this));
if (buttons.enter().size() || buttons.exit().size()) {
context.ui().checkOverflow(".top-toolbar", true);
}
- buttons = buttons.merge(buttonsEnter).attr("aria-disabled", function(d) {
- return !enabled(d);
- }).classed("disabled", function(d) {
- return !enabled(d);
- }).attr("aria-pressed", function(d) {
- return context.mode() && context.mode().button === d.button;
- }).classed("active", function(d) {
- return context.mode() && context.mode().button === d.button;
+ buttons = buttons.merge(buttonsEnter).attr("aria-disabled", function(d2) {
+ return !enabled(d2);
+ }).classed("disabled", function(d2) {
+ return !enabled(d2);
+ }).attr("aria-pressed", function(d2) {
+ return context.mode() && context.mode().button === d2.button;
+ }).classed("active", function(d2) {
+ return context.mode() && context.mode().button === d2.button;
});
}
};
function update() {
var showNotes = notesEnabled();
var data = showNotes ? [mode] : [];
- var buttons = selection2.selectAll("button.add-button").data(data, function(d) {
- return d.id;
+ var buttons = selection2.selectAll("button.add-button").data(data, function(d2) {
+ return d2.id;
});
buttons.exit().remove();
- var buttonsEnter = buttons.enter().append("button").attr("class", function(d) {
- return d.id + " add-button bar-button";
- }).on("click.notes", function(d3_event, d) {
+ var buttonsEnter = buttons.enter().append("button").attr("class", function(d2) {
+ return d2.id + " add-button bar-button";
+ }).on("click.notes", function(d3_event, d2) {
if (!enabled())
return;
var currMode = context.mode().id;
if (/^draw/.test(currMode))
return;
- if (d.id === currMode) {
+ if (d2.id === currMode) {
context.enter(modeBrowse(context));
} else {
- context.enter(d);
+ context.enter(d2);
}
}).call(
- uiTooltip().placement("bottom").title(function(d) {
- return d.description;
- }).keys(function(d) {
- return [d.key];
+ uiTooltip().placement("bottom").title(function(d2) {
+ return d2.description;
+ }).keys(function(d2) {
+ return [d2.key];
}).scrollContainer(context.container().select(".top-toolbar"))
);
- buttonsEnter.each(function(d) {
- select_default2(this).call(svgIcon(d.icon || "#iD-icon-" + d.button));
+ buttonsEnter.each(function(d2) {
+ select_default2(this).call(svgIcon(d2.icon || "#iD-icon-" + d2.button));
});
if (buttons.enter().size() || buttons.exit().size()) {
context.ui().checkOverflow(".top-toolbar", true);
return !enabled();
}).attr("aria-disabled", function() {
return !enabled();
- }).classed("active", function(d) {
- return context.mode() && context.mode().button === d.button;
- }).attr("aria-pressed", function(d) {
- return context.mode() && context.mode().button === d.button;
+ }).classed("active", function(d2) {
+ return context.mode() && context.mode().button === d2.button;
+ }).attr("aria-pressed", function(d2) {
+ return context.mode() && context.mode().button === d2.button;
});
}
};
);
}
tool.render = function(selection2) {
- var tooltipBehavior = uiTooltip().placement("bottom").title(function(d) {
- return d.annotation() ? _t.append(d.id + ".tooltip", { action: d.annotation() }) : _t.append(d.id + ".nothing");
- }).keys(function(d) {
- return [d.cmd];
+ var tooltipBehavior = uiTooltip().placement("bottom").title(function(d2) {
+ return d2.annotation() ? _t.append(d2.id + ".tooltip", { action: d2.annotation() }) : _t.append(d2.id + ".nothing");
+ }).keys(function(d2) {
+ return [d2.cmd];
}).scrollContainer(context.container().select(".top-toolbar"));
var lastPointerUpType;
- var buttons = selection2.selectAll("button").data(commands).enter().append("button").attr("class", function(d) {
- return "disabled " + d.id + "-button bar-button";
+ var buttons = selection2.selectAll("button").data(commands).enter().append("button").attr("class", function(d2) {
+ return "disabled " + d2.id + "-button bar-button";
}).on("pointerup", function(d3_event) {
lastPointerUpType = d3_event.pointerType;
- }).on("click", function(d3_event, d) {
+ }).on("click", function(d3_event, d2) {
d3_event.preventDefault();
- var annotation = d.annotation();
+ var annotation = d2.annotation();
if (editable() && annotation) {
- d.action();
+ d2.action();
}
if (editable() && (lastPointerUpType === "touch" || lastPointerUpType === "pen")) {
- var label = annotation ? _t.append(d.id + ".tooltip", { action: annotation }) : _t.append(d.id + ".nothing");
- context.ui().flash.duration(2e3).iconName("#" + d.icon).iconClass(annotation ? "" : "disabled").label(label)();
+ var label = annotation ? _t.append(d2.id + ".tooltip", { action: annotation }) : _t.append(d2.id + ".nothing");
+ context.ui().flash.duration(2e3).iconName("#" + d2.icon).iconClass(annotation ? "" : "disabled").label(label)();
}
lastPointerUpType = null;
}).call(tooltipBehavior);
- buttons.each(function(d) {
- select_default2(this).call(svgIcon("#" + d.icon));
+ buttons.each(function(d2) {
+ select_default2(this).call(svgIcon("#" + d2.icon));
});
context.keybinding().on(commands[0].cmd, function(d3_event) {
d3_event.preventDefault();
});
context.on("enter.undo_redo", update);
function update() {
- buttons.classed("disabled", function(d) {
- return !editable() || !d.annotation();
+ buttons.classed("disabled", function(d2) {
+ return !editable() || !d2.annotation();
}).each(function() {
var selection3 = select_default2(this);
if (!selection3.select(".tooltip.in").empty()) {
tools = tools.concat([notes, "spacer"]);
}
tools = tools.concat([undoRedo, save]);
- var toolbarItems = bar.selectAll(".toolbar-item").data(tools, function(d) {
- return d.id || d;
+ var toolbarItems = bar.selectAll(".toolbar-item").data(tools, function(d2) {
+ return d2.id || d2;
});
- toolbarItems.exit().each(function(d) {
- if (d.uninstall) {
- d.uninstall();
+ toolbarItems.exit().each(function(d2) {
+ if (d2.uninstall) {
+ d2.uninstall();
}
}).remove();
- var itemsEnter = toolbarItems.enter().append("div").attr("class", function(d) {
- var classes = "toolbar-item " + (d.id || d).replace("_", "-");
- if (d.klass)
- classes += " " + d.klass;
+ var itemsEnter = toolbarItems.enter().append("div").attr("class", function(d2) {
+ var classes = "toolbar-item " + (d2.id || d2).replace("_", "-");
+ if (d2.klass)
+ classes += " " + d2.klass;
return classes;
});
- var actionableItems = itemsEnter.filter(function(d) {
- return d !== "spacer";
+ var actionableItems = itemsEnter.filter(function(d2) {
+ return d2 !== "spacer";
});
- actionableItems.append("div").attr("class", "item-content").each(function(d) {
- select_default2(this).call(d.render, bar);
+ actionableItems.append("div").attr("class", "item-content").each(function(d2) {
+ select_default2(this).call(d2.render, bar);
});
- actionableItems.append("div").attr("class", "item-label").each(function(d) {
- d.label(select_default2(this));
+ actionableItems.append("div").attr("class", "item-label").each(function(d2) {
+ d2.label(select_default2(this));
});
}
}
saturation: 1,
sharpness: 1
};
- function clamp3(x, min3, max3) {
- return Math.max(min3, Math.min(x, max3));
+ function clamp3(x2, min3, max3) {
+ return Math.max(min3, Math.min(x2, max3));
}
- function updateValue(d, val) {
+ function updateValue(d2, val) {
val = clamp3(val, _minVal, _maxVal);
- _options[d] = val;
- context.background()[d](val);
- if (d === "brightness") {
+ _options[d2] = val;
+ context.background()[d2](val);
+ if (d2 === "brightness") {
corePreferences("background-opacity", val);
}
section.reRender();
function renderDisclosureContent(selection2) {
var container = selection2.selectAll(".display-options-container").data([0]);
var containerEnter = container.enter().append("div").attr("class", "display-options-container controls-list");
- var slidersEnter = containerEnter.selectAll(".display-control").data(_sliders).enter().append("label").attr("class", function(d) {
- return "display-control display-control-" + d;
+ var slidersEnter = containerEnter.selectAll(".display-control").data(_sliders).enter().append("label").attr("class", function(d2) {
+ return "display-control display-control-" + d2;
});
- slidersEnter.html(function(d) {
- return _t.html("background." + d);
- }).append("span").attr("class", function(d) {
- return "display-option-value display-option-value-" + d;
+ slidersEnter.html(function(d2) {
+ return _t.html("background." + d2);
+ }).append("span").attr("class", function(d2) {
+ return "display-option-value display-option-value-" + d2;
});
var sildersControlEnter = slidersEnter.append("div").attr("class", "control-wrap");
- sildersControlEnter.append("input").attr("class", function(d) {
- return "display-option-input display-option-input-" + d;
- }).attr("type", "range").attr("min", _minVal).attr("max", _maxVal).attr("step", "0.05").on("input", function(d3_event, d) {
+ sildersControlEnter.append("input").attr("class", function(d2) {
+ return "display-option-input display-option-input-" + d2;
+ }).attr("type", "range").attr("min", _minVal).attr("max", _maxVal).attr("step", "0.05").on("input", function(d3_event, d2) {
var val = select_default2(this).property("value");
if (!val && d3_event && d3_event.target) {
val = d3_event.target.value;
}
- updateValue(d, val);
+ updateValue(d2, val);
});
- sildersControlEnter.append("button").attr("title", function(d) {
- return `${_t("background.reset")} ${_t("background." + d)}`;
- }).attr("class", function(d) {
- return "display-option-reset display-option-reset-" + d;
- }).on("click", function(d3_event, d) {
+ sildersControlEnter.append("button").attr("title", function(d2) {
+ return `${_t("background.reset")} ${_t("background." + d2)}`;
+ }).attr("class", function(d2) {
+ return "display-option-reset display-option-reset-" + d2;
+ }).on("click", function(d3_event, d2) {
if (d3_event.button !== 0)
return;
- updateValue(d, 1);
+ updateValue(d2, 1);
}).call(svgIcon("#iD-icon-" + (_mainLocalizer.textDirection() === "rtl" ? "redo" : "undo")));
containerEnter.append("a").attr("class", "display-option-resetlink").attr("role", "button").attr("href", "#").call(_t.append("background.reset_all")).on("click", function(d3_event) {
d3_event.preventDefault();
- for (var i2 = 0; i2 < _sliders.length; i2++) {
- updateValue(_sliders[i2], 1);
+ for (var i3 = 0; i3 < _sliders.length; i3++) {
+ updateValue(_sliders[i3], 1);
}
});
container = containerEnter.merge(container);
- container.selectAll(".display-option-input").property("value", function(d) {
- return _options[d];
+ container.selectAll(".display-option-input").property("value", function(d2) {
+ return _options[d2];
});
- container.selectAll(".display-option-value").text(function(d) {
- return Math.floor(_options[d] * 100) + "%";
+ container.selectAll(".display-option-value").text(function(d2) {
+ return Math.floor(_options[d2] * 100) + "%";
});
- container.selectAll(".display-option-reset").classed("disabled", function(d) {
- return _options[d] === 1;
+ container.selectAll(".display-option-reset").classed("disabled", function(d2) {
+ return _options[d2] === 1;
});
if (containerEnter.size() && _options.brightness !== 1) {
context.background().brightness(_options.brightness);
// modules/ui/settings/custom_background.js
function uiSettingsCustomBackground() {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
function render(selection2) {
var _origSettings = {
template: corePreferences("background-custom-template")
corePreferences("background-custom-template", _currSettings.template);
this.blur();
modal.close();
- dispatch10.call("change", this, _currSettings);
+ dispatch14.call("change", this, _currSettings);
}
}
- return utilRebind(render, dispatch10, "on");
+ return utilRebind(render, dispatch14, "on");
}
// modules/ui/sections/background_list.js
});
locPanelLabelEnter.append("span").call(_t.append("background.location_panel.description"));
selection2.selectAll(".imagery-faq").data([0]).enter().append("div").attr("class", "imagery-faq").append("a").attr("target", "_blank").call(svgIcon("#iD-icon-out-link", "inline")).attr("href", "https://github.com/openstreetmap/iD/blob/develop/FAQ.md#how-can-i-report-an-issue-with-background-imagery").append("span").call(_t.append("background.imagery_problem_faq"));
- _backgroundList.call(drawListItems, "radio", function(d3_event, d) {
- chooseBackground(d);
- }, function(d) {
- return !d.isHidden() && !d.overlay;
+ _backgroundList.call(drawListItems, "radio", function(d3_event, d2) {
+ chooseBackground(d2);
+ }, function(d2) {
+ return !d2.isHidden() && !d2.overlay;
});
}
function setTooltips(selection2) {
- selection2.each(function(d, i2, nodes) {
+ selection2.each(function(d2, i3, nodes) {
var item = select_default2(this).select("label");
var span = item.select("span");
- var placement = i2 < nodes.length / 2 ? "bottom" : "top";
- var hasDescription = d.hasDescription();
+ var placement = i3 < nodes.length / 2 ? "bottom" : "top";
+ var hasDescription = d2.hasDescription();
var isOverflowing = span.property("clientWidth") !== span.property("scrollWidth");
item.call(uiTooltip().destroyAny);
- if (d.id === previousBackgroundID()) {
+ if (d2.id === previousBackgroundID()) {
item.call(
uiTooltip().placement(placement).title(() => _t.append("background.switch")).keys([uiCmd("\u2318" + _t("background.key"))])
);
} else if (hasDescription || isOverflowing) {
item.call(
- uiTooltip().placement(placement).title(() => hasDescription ? d.description() : d.label())
+ uiTooltip().placement(placement).title(() => hasDescription ? d2.description() : d2.label())
);
}
});
}
function drawListItems(layerList, type2, change, filter2) {
- var sources = context.background().sources(context.map().extent(), context.map().zoom(), true).filter(filter2).sort(function(a, b) {
- return a.best() && !b.best() ? -1 : b.best() && !a.best() ? 1 : descending(a.area(), b.area()) || ascending(a.name(), b.name()) || 0;
+ var sources = context.background().sources(context.map().extent(), context.map().zoom(), true).filter(filter2).sort(function(a2, b2) {
+ return a2.best() && !b2.best() ? -1 : b2.best() && !a2.best() ? 1 : descending(a2.area(), b2.area()) || ascending(a2.name(), b2.name()) || 0;
});
- var layerLinks = layerList.selectAll("li").data(sources, function(d, i2) {
- return d.id + "---" + i2;
+ var layerLinks = layerList.selectAll("li").data(sources, function(d2, i3) {
+ return d2.id + "---" + i3;
});
layerLinks.exit().remove();
- var enter = layerLinks.enter().append("li").classed("layer-custom", function(d) {
- return d.id === "custom";
- }).classed("best", function(d) {
- return d.best();
+ var enter = layerLinks.enter().append("li").classed("layer-custom", function(d2) {
+ return d2.id === "custom";
+ }).classed("best", function(d2) {
+ return d2.best();
});
var label = enter.append("label");
- label.append("input").attr("type", type2).attr("name", "background-layer").attr("value", function(d) {
- return d.id;
+ label.append("input").attr("type", type2).attr("name", "background-layer").attr("value", function(d2) {
+ return d2.id;
}).on("change", change);
- label.append("span").each(function(d) {
- d.label()(select_default2(this));
+ label.append("span").each(function(d2) {
+ d2.label()(select_default2(this));
});
- enter.filter(function(d) {
- return d.id === "custom";
+ enter.filter(function(d2) {
+ return d2.id === "custom";
}).append("button").attr("class", "layer-browse").call(
uiTooltip().title(() => _t.append("settings.custom_background.tooltip")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
).on("click", function(d3_event) {
d3_event.preventDefault();
editCustom();
}).call(svgIcon("#iD-icon-more"));
- enter.filter(function(d) {
- return d.best();
+ enter.filter(function(d2) {
+ return d2.best();
}).append("div").attr("class", "best").call(
uiTooltip().title(() => _t.append("background.best_imagery")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
).append("span").text("\u2605");
layerList.call(updateLayerSelections);
}
function updateLayerSelections(selection2) {
- function active(d) {
- return context.background().showsLayer(d);
+ function active(d2) {
+ return context.background().showsLayer(d2);
}
- selection2.selectAll("li").classed("active", active).classed("switch", function(d) {
- return d.id === previousBackgroundID();
+ selection2.selectAll("li").classed("active", active).classed("switch", function(d2) {
+ return d2.id === previousBackgroundID();
}).call(setTooltips).selectAll("input").property("checked", active);
}
- function chooseBackground(d) {
- if (d.id === "custom" && !d.template()) {
+ function chooseBackground(d2) {
+ if (d2.id === "custom" && !d2.template()) {
return editCustom();
}
var previousBackground = context.background().baseLayerSource();
corePreferences("background-last-used-toggle", previousBackground.id);
- corePreferences("background-last-used", d.id);
- context.background().baseLayerSource(d);
+ corePreferences("background-last-used", d2.id);
+ context.background().baseLayerSource(d2);
}
- function customChanged(d) {
- if (d && d.template) {
- _customSource.template(d.template);
+ function customChanged(d2) {
+ if (d2 && d2.template) {
+ _customSource.template(d2.template);
chooseBackground(_customSource);
} else {
_customSource.template("");
];
function updateValue() {
var meters = geoOffsetToMeters(context.background().offset());
- var x = +meters[0].toFixed(2);
- var y = +meters[1].toFixed(2);
- context.container().selectAll(".nudge-inner-rect").select("input").classed("error", false).property("value", x + ", " + y);
+ var x2 = +meters[0].toFixed(2);
+ var y2 = +meters[1].toFixed(2);
+ context.container().selectAll(".nudge-inner-rect").select("input").classed("error", false).property("value", x2 + ", " + y2);
context.container().selectAll(".nudge-reset").classed("disabled", function() {
- return x === 0 && y === 0;
+ return x2 === 0 && y2 === 0;
});
}
function resetOffset() {
context.background().offset([0, 0]);
updateValue();
}
- function nudge(d) {
- context.background().nudge(d, context.map().zoom());
+ function nudge(d2) {
+ context.background().nudge(d2, context.map().zoom());
updateValue();
}
function inputOffset() {
var input = select_default2(this);
- var d = input.node().value;
- if (d === "")
+ var d2 = input.node().value;
+ if (d2 === "")
return resetOffset();
- d = d.replace(/;/g, ",").split(",").map(function(n2) {
- return !isNaN(n2) && n2;
+ d2 = d2.replace(/;/g, ",").split(",").map(function(n3) {
+ return !isNaN(n3) && n3;
});
- if (d.length !== 2 || !d[0] || !d[1]) {
+ if (d2.length !== 2 || !d2[0] || !d2[1]) {
input.classed("error", true);
return;
}
- context.background().offset(geoMetersToOffset(d));
+ context.background().offset(geoMetersToOffset(d2));
updateValue();
}
function dragOffset(d3_event) {
if (pointerId !== (d3_event2.pointerId || "mouse"))
return;
var latest = [d3_event2.clientX, d3_event2.clientY];
- var d = [
+ var d2 = [
-(origin[0] - latest[0]) / 4,
-(origin[1] - latest[1]) / 4
];
origin = latest;
- nudge(d);
+ nudge(d2);
}
function pointerup(d3_event2) {
if (pointerId !== (d3_event2.pointerId || "mouse"))
var nudgeWrapEnter = containerEnter.append("div").attr("class", "nudge-controls-wrap");
var nudgeEnter = nudgeWrapEnter.append("div").attr("class", "nudge-outer-rect").on(_pointerPrefix + "down", dragOffset);
nudgeEnter.append("div").attr("class", "nudge-inner-rect").append("input").attr("type", "text").attr("aria-label", _t("background.offset_label")).on("change", inputOffset);
- nudgeWrapEnter.append("div").selectAll("button").data(_directions).enter().append("button").attr("title", function(d) {
- return _t(`background.nudge.${d[0]}`);
- }).attr("class", function(d) {
- return d[0] + " nudge";
- }).on("click", function(d3_event, d) {
- nudge(d[1]);
+ nudgeWrapEnter.append("div").selectAll("button").data(_directions).enter().append("button").attr("title", function(d2) {
+ return _t(`background.nudge.${d2[0]}`);
+ }).attr("class", function(d2) {
+ return d2[0] + " nudge";
+ }).on("click", function(d3_event, d2) {
+ nudge(d2[1]);
});
nudgeWrapEnter.append("button").attr("title", _t("background.reset")).attr("class", "nudge-reset disabled").on("click", function(d3_event) {
d3_event.preventDefault();
var section = uiSection("overlay-list", context).label(() => _t.append("background.overlays")).disclosureContent(renderDisclosureContent);
var _overlayList = select_default2(null);
function setTooltips(selection2) {
- selection2.each(function(d, i2, nodes) {
+ selection2.each(function(d2, i3, nodes) {
var item = select_default2(this).select("label");
var span = item.select("span");
- var placement = i2 < nodes.length / 2 ? "bottom" : "top";
- var description = d.description();
+ var placement = i3 < nodes.length / 2 ? "bottom" : "top";
+ var description = d2.description();
var isOverflowing = span.property("clientWidth") !== span.property("scrollWidth");
item.call(uiTooltip().destroyAny);
if (description || isOverflowing) {
item.call(
- uiTooltip().placement(placement).title(() => description || d.name())
+ uiTooltip().placement(placement).title(() => description || d2.name())
);
}
});
}
function updateLayerSelections(selection2) {
- function active(d) {
- return context.background().showsLayer(d);
+ function active(d2) {
+ return context.background().showsLayer(d2);
}
selection2.selectAll("li").classed("active", active).call(setTooltips).selectAll("input").property("checked", active);
}
- function chooseOverlay(d3_event, d) {
+ function chooseOverlay(d3_event, d2) {
d3_event.preventDefault();
- context.background().toggleOverlayLayer(d);
+ context.background().toggleOverlayLayer(d2);
_overlayList.call(updateLayerSelections);
document.activeElement.blur();
}
function drawListItems(layerList, type2, change, filter2) {
var sources = context.background().sources(context.map().extent(), context.map().zoom(), true).filter(filter2);
- var layerLinks = layerList.selectAll("li").data(sources, function(d) {
- return d.name();
+ var layerLinks = layerList.selectAll("li").data(sources, function(d2) {
+ return d2.name();
});
layerLinks.exit().remove();
var enter = layerLinks.enter().append("li");
var label = enter.append("label");
label.append("input").attr("type", type2).attr("name", "layers").on("change", change);
- label.append("span").each(function(d) {
- d.label()(select_default2(this));
+ label.append("span").each(function(d2) {
+ d2.label()(select_default2(this));
});
layerList.selectAll("li").sort(sortSources);
layerList.call(updateLayerSelections);
- function sortSources(a, b) {
- return a.best() && !b.best() ? -1 : b.best() && !a.best() ? 1 : descending(a.area(), b.area()) || ascending(a.name(), b.name()) || 0;
+ function sortSources(a2, b2) {
+ return a2.best() && !b2.best() ? -1 : b2.best() && !a2.best() ? 1 : descending(a2.area(), b2.area()) || ascending(a2.name(), b2.name()) || 0;
}
}
function renderDisclosureContent(selection2) {
var container = selection2.selectAll(".layer-overlay-list").data([0]);
_overlayList = container.enter().append("ul").attr("class", "layer-list layer-overlay-list").attr("dir", "auto").merge(container);
- _overlayList.call(drawListItems, "checkbox", chooseOverlay, function(d) {
- return !d.isHidden() && d.overlay;
+ _overlayList.call(drawListItems, "checkbox", chooseOverlay, function(d2) {
+ return !d2.isHidden() && d2.overlay;
});
}
context.map().on(
});
var helpPane = uiPane("help", context).key(_t("help.key")).label(_t.append("help.title")).description(_t.append("help.title")).iconName("iD-icon-help");
helpPane.renderContent = function(content) {
- function clickHelp(d, i2) {
+ function clickHelp(d2, i3) {
var rtl = _mainLocalizer.textDirection() === "rtl";
content.property("scrollTop", 0);
- helpPane.selection().select(".pane-heading h2").html(d.title);
- body.html(d.content);
+ helpPane.selection().select(".pane-heading h2").html(d2.title);
+ body.html(d2.content);
body.selectAll("a").attr("target", "_blank");
- menuItems.classed("selected", function(m) {
- return m.title === d.title;
+ menuItems.classed("selected", function(m2) {
+ return m2.title === d2.title;
});
nav.html("");
if (rtl) {
nav.call(drawPrevious).call(drawNext);
}
function drawNext(selection2) {
- if (i2 < docs.length - 1) {
+ if (i3 < docs.length - 1) {
var nextLink = selection2.append("a").attr("href", "#").attr("class", "next").on("click", function(d3_event) {
d3_event.preventDefault();
- clickHelp(docs[i2 + 1], i2 + 1);
+ clickHelp(docs[i3 + 1], i3 + 1);
});
- nextLink.append("span").html(docs[i2 + 1].title).call(svgIcon(rtl ? "#iD-icon-backward" : "#iD-icon-forward", "inline"));
+ nextLink.append("span").html(docs[i3 + 1].title).call(svgIcon(rtl ? "#iD-icon-backward" : "#iD-icon-forward", "inline"));
}
}
function drawPrevious(selection2) {
- if (i2 > 0) {
+ if (i3 > 0) {
var prevLink = selection2.append("a").attr("href", "#").attr("class", "previous").on("click", function(d3_event) {
d3_event.preventDefault();
- clickHelp(docs[i2 - 1], i2 - 1);
+ clickHelp(docs[i3 - 1], i3 - 1);
});
- prevLink.call(svgIcon(rtl ? "#iD-icon-forward" : "#iD-icon-backward", "inline")).append("span").html(docs[i2 - 1].title);
+ prevLink.call(svgIcon(rtl ? "#iD-icon-forward" : "#iD-icon-backward", "inline")).append("span").html(docs[i3 - 1].title);
}
}
}
context.container().call(context.ui().shortcuts, true);
}
var toc = content.append("ul").attr("class", "toc");
- var menuItems = toc.selectAll("li").data(docs).enter().append("li").append("a").attr("role", "button").attr("href", "#").html(function(d) {
- return d.title;
- }).on("click", function(d3_event, d) {
+ var menuItems = toc.selectAll("li").data(docs).enter().append("li").append("a").attr("role", "button").attr("href", "#").html(function(d2) {
+ return d2.title;
+ }).on("click", function(d3_event, d2) {
d3_event.preventDefault();
- clickHelp(d, docs.indexOf(d));
+ clickHelp(d2, docs.indexOf(d2));
});
var shortcuts = toc.append("li").attr("class", "shortcuts").call(
uiTooltip().title(() => _t.append("shortcuts.tooltip")).keys(["?"]).placement("top")
var extent = issue.extent(graph);
var dist = extent ? geoSphericalDistance(center, extent.center()) : 0;
return Object.assign(issue, { dist });
- }).sort(function byDistance(a, b) {
- return a.dist - b.dist;
+ }).sort(function byDistance(a2, b2) {
+ return a2.dist - b2.dist;
});
issues = issues.slice(0, 1e3);
selection2.call(drawIssuesList, issues);
function drawIssuesList(selection2, issues) {
var list = selection2.selectAll(".issues-list").data([0]);
list = list.enter().append("ul").attr("class", "layer-list issues-list " + severity + "s-list").merge(list);
- var items = list.selectAll("li").data(issues, function(d) {
- return d.key;
+ var items = list.selectAll("li").data(issues, function(d2) {
+ return d2.key;
});
items.exit().remove();
- var itemsEnter = items.enter().append("li").attr("class", function(d) {
- return "issue severity-" + d.severity;
+ var itemsEnter = items.enter().append("li").attr("class", function(d2) {
+ return "issue severity-" + d2.severity;
});
- var labelsEnter = itemsEnter.append("button").attr("class", "issue-label").on("click", function(d3_event, d) {
- context.validator().focusIssue(d);
- }).on("mouseover", function(d3_event, d) {
- utilHighlightEntities(d.entityIds, true, context);
- }).on("mouseout", function(d3_event, d) {
- utilHighlightEntities(d.entityIds, false, context);
+ var labelsEnter = itemsEnter.append("button").attr("class", "issue-label").on("click", function(d3_event, d2) {
+ context.validator().focusIssue(d2);
+ }).on("mouseover", function(d3_event, d2) {
+ utilHighlightEntities(d2.entityIds, true, context);
+ }).on("mouseout", function(d3_event, d2) {
+ utilHighlightEntities(d2.entityIds, false, context);
});
var textEnter = labelsEnter.append("span").attr("class", "issue-text");
- textEnter.append("span").attr("class", "issue-icon").each(function(d) {
- var iconName = "#iD-icon-" + (d.severity === "warning" ? "alert" : "error");
+ textEnter.append("span").attr("class", "issue-icon").each(function(d2) {
+ var iconName = "#iD-icon-" + (d2.severity === "warning" ? "alert" : "error");
select_default2(this).call(svgIcon(iconName));
});
textEnter.append("span").attr("class", "issue-message");
items = items.merge(itemsEnter).order();
- items.selectAll(".issue-message").text("").each(function(d) {
- return d.message(context)(select_default2(this));
+ items.selectAll(".issue-message").text("").each(function(d2) {
+ return d2.message(context)(select_default2(this));
});
}
context.validator().on("validated.uiSectionValidationIssues" + id2, function() {
{ key: "what", values: ["edited", "all"] },
{ key: "where", values: ["visible", "all"] }
];
- var options2 = container.selectAll(".issues-option").data(data, function(d) {
- return d.key;
+ var options2 = container.selectAll(".issues-option").data(data, function(d2) {
+ return d2.key;
});
- var optionsEnter = options2.enter().append("div").attr("class", function(d) {
- return "issues-option issues-option-" + d.key;
+ var optionsEnter = options2.enter().append("div").attr("class", function(d2) {
+ return "issues-option issues-option-" + d2.key;
});
- optionsEnter.append("div").attr("class", "issues-option-title").html(function(d) {
- return _t.html("issues.options." + d.key + ".title");
+ optionsEnter.append("div").attr("class", "issues-option-title").html(function(d2) {
+ return _t.html("issues.options." + d2.key + ".title");
});
- var valuesEnter = optionsEnter.selectAll("label").data(function(d) {
- return d.values.map(function(val) {
- return { value: val, key: d.key };
+ var valuesEnter = optionsEnter.selectAll("label").data(function(d2) {
+ return d2.values.map(function(val) {
+ return { value: val, key: d2.key };
});
}).enter().append("label");
- valuesEnter.append("input").attr("type", "radio").attr("name", function(d) {
- return "issues-option-" + d.key;
- }).attr("value", function(d) {
- return d.value;
- }).property("checked", function(d) {
- return getOptions()[d.key] === d.value;
- }).on("change", function(d3_event, d) {
- updateOptionValue(d3_event, d.key, d.value);
+ valuesEnter.append("input").attr("type", "radio").attr("name", function(d2) {
+ return "issues-option-" + d2.key;
+ }).attr("value", function(d2) {
+ return d2.value;
+ }).property("checked", function(d2) {
+ return getOptions()[d2.key] === d2.value;
+ }).on("change", function(d3_event, d2) {
+ updateOptionValue(d3_event, d2.key, d2.value);
});
- valuesEnter.append("span").html(function(d) {
- return _t.html("issues.options." + d.key + "." + d.value);
+ valuesEnter.append("span").html(function(d2) {
+ return _t.html("issues.options." + d2.key + "." + d2.value);
});
}
function getOptions() {
// 'all', 'visible'
};
}
- function updateOptionValue(d3_event, d, val) {
+ function updateOptionValue(d3_event, d2, val) {
if (!val && d3_event && d3_event.target) {
val = d3_event.target.value;
}
- corePreferences("validate-" + d, val);
+ corePreferences("validate-" + d2, val);
context.validator().validate();
}
return section;
var enter = items.enter().append("li");
if (name === "rule") {
enter.call(
- uiTooltip().title(function(d) {
- return _t.append("issues." + d + ".tip");
+ uiTooltip().title(function(d2) {
+ return _t.append("issues." + d2 + ".tip");
}).placement("top")
);
}
var label = enter.append("label");
label.append("input").attr("type", type2).attr("name", name).on("change", change);
- label.append("span").html(function(d) {
+ label.append("span").html(function(d2) {
var params = {};
- if (d === "unsquare_way") {
+ if (d2 === "unsquare_way") {
params.val = { html: '<span class="square-degrees"></span>' };
}
- return _t.html("issues." + d + ".title", params);
+ return _t.html("issues." + d2 + ".title", params);
});
items = items.merge(enter);
items.classed("active", active).selectAll("input").property("checked", active).property("indeterminate", false);
corePreferences("validate-square-degrees", degStr);
context.validator().revalidateUnsquare();
}
- function isRuleEnabled(d) {
- return context.validator().isRuleEnabled(d);
+ function isRuleEnabled(d2) {
+ return context.validator().isRuleEnabled(d2);
}
- function toggleRule(d3_event, d) {
- context.validator().toggleRule(d);
+ function toggleRule(d3_event, d2) {
+ context.validator().toggleRule(d2);
}
context.validator().on("validated.uiSectionValidationRules", function() {
window.requestIdleCallback(section.reRender);
// modules/ui/settings/custom_data.js
function uiSettingsCustomData(context) {
- var dispatch10 = dispatch_default("change");
+ var dispatch14 = dispatch_default("change");
function render(selection2) {
var dataLayer = context.layers().layer("data");
var _origSettings = {
url: corePreferences("settings-custom-data-url")
};
var _currSettings = {
- fileList: dataLayer && dataLayer.fileList() || null,
- url: corePreferences("settings-custom-data-url")
+ fileList: dataLayer && dataLayer.fileList() || null
+ // url: prefs('settings-custom-data-url')
};
var modal = uiConfirm(selection2).okButton();
modal.classed("settings-modal settings-custom-data", true);
corePreferences("settings-custom-data-url", _currSettings.url);
this.blur();
modal.close();
- dispatch10.call("change", this, _currSettings);
+ dispatch14.call("change", this, _currSettings);
+ }
+ }
+ return utilRebind(render, dispatch14, "on");
+ }
+
+ // modules/ui/sections/data_layers.js
+ function uiSectionDataLayers(context) {
+ var settingsCustomData = uiSettingsCustomData(context).on("change", customChanged);
+ var layers = context.layers();
+ var section = uiSection("data-layers", context).label(() => _t.append("map_data.data_layers")).disclosureContent(renderDisclosureContent);
+ function renderDisclosureContent(selection2) {
+ var container = selection2.selectAll(".data-layer-container").data([0]);
+ container.enter().append("div").attr("class", "data-layer-container").merge(container).call(drawOsmItems).call(drawQAItems).call(drawCustomDataItems).call(drawVectorItems).call(drawPanelItems);
+ }
+ function showsLayer(which) {
+ var layer = layers.layer(which);
+ if (layer) {
+ return layer.enabled();
+ }
+ return false;
+ }
+ function setLayer(which, enabled) {
+ var mode = context.mode();
+ if (mode && /^draw/.test(mode.id))
+ return;
+ var layer = layers.layer(which);
+ if (layer) {
+ layer.enabled(enabled);
+ if (!enabled && (which === "osm" || which === "notes")) {
+ context.enter(modeBrowse(context));
+ }
+ }
+ }
+ function toggleLayer(which) {
+ setLayer(which, !showsLayer(which));
+ }
+ function drawOsmItems(selection2) {
+ var osmKeys = ["osm", "notes"];
+ var osmLayers = layers.all().filter(function(obj) {
+ return osmKeys.indexOf(obj.id) !== -1;
+ });
+ var ul = selection2.selectAll(".layer-list-osm").data([0]);
+ ul = ul.enter().append("ul").attr("class", "layer-list layer-list-osm").merge(ul);
+ var li = ul.selectAll(".list-item").data(osmLayers);
+ li.exit().remove();
+ var liEnter = li.enter().append("li").attr("class", function(d2) {
+ return "list-item list-item-" + d2.id;
+ });
+ var labelEnter = liEnter.append("label").each(function(d2) {
+ if (d2.id === "osm") {
+ select_default2(this).call(
+ uiTooltip().title(() => _t.append("map_data.layers." + d2.id + ".tooltip")).keys([uiCmd("\u2325" + _t("area_fill.wireframe.key"))]).placement("bottom")
+ );
+ } else {
+ select_default2(this).call(
+ uiTooltip().title(() => _t.append("map_data.layers." + d2.id + ".tooltip")).placement("bottom")
+ );
+ }
+ });
+ labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d2) {
+ toggleLayer(d2.id);
+ });
+ labelEnter.append("span").html(function(d2) {
+ return _t.html("map_data.layers." + d2.id + ".title");
+ });
+ li.merge(liEnter).classed("active", function(d2) {
+ return d2.layer.enabled();
+ }).selectAll("input").property("checked", function(d2) {
+ return d2.layer.enabled();
+ });
+ }
+ function drawQAItems(selection2) {
+ var qaKeys = ["keepRight", "improveOSM", "osmose"];
+ var qaLayers = layers.all().filter(function(obj) {
+ return qaKeys.indexOf(obj.id) !== -1;
+ });
+ var ul = selection2.selectAll(".layer-list-qa").data([0]);
+ ul = ul.enter().append("ul").attr("class", "layer-list layer-list-qa").merge(ul);
+ var li = ul.selectAll(".list-item").data(qaLayers);
+ li.exit().remove();
+ var liEnter = li.enter().append("li").attr("class", function(d2) {
+ return "list-item list-item-" + d2.id;
+ });
+ var labelEnter = liEnter.append("label").each(function(d2) {
+ select_default2(this).call(
+ uiTooltip().title(() => _t.append("map_data.layers." + d2.id + ".tooltip")).placement("bottom")
+ );
+ });
+ labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d2) {
+ toggleLayer(d2.id);
+ });
+ labelEnter.append("span").each(function(d2) {
+ _t.append("map_data.layers." + d2.id + ".title")(select_default2(this));
+ });
+ li.merge(liEnter).classed("active", function(d2) {
+ return d2.layer.enabled();
+ }).selectAll("input").property("checked", function(d2) {
+ return d2.layer.enabled();
+ });
+ }
+ function drawVectorItems(selection2) {
+ var dataLayer = layers.layer("data");
+ var vtData = [
+ {
+ name: "Detroit Neighborhoods/Parks",
+ src: "neighborhoods-parks",
+ tooltip: "Neighborhood boundaries and parks as compiled by City of Detroit in concert with community groups.",
+ template: "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmur6x34562qp9iv1u3ksf-54hev,jonahadkins.cjksmqxdx33jj2wp90xd9x2md-4e5y2/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"
+ },
+ {
+ name: "Detroit Composite POIs",
+ src: "composite-poi",
+ tooltip: "Fire Inspections, Business Licenses, and other public location data collated from the City of Detroit.",
+ template: "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmm6a02sli31myxhsr7zf3-2sw8h/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"
+ },
+ {
+ name: "Detroit All-The-Places POIs",
+ src: "alltheplaces-poi",
+ tooltip: "Public domain business location data created by web scrapers.",
+ template: "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmswgk340g2vo06p1w9w0j-8fjjc/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"
+ }
+ ];
+ var detroit = geoExtent([-83.5, 42.1], [-82.8, 42.5]);
+ var showVectorItems = context.map().zoom() > 9 && detroit.contains(context.map().center());
+ var container = selection2.selectAll(".vectortile-container").data(showVectorItems ? [0] : []);
+ container.exit().remove();
+ var containerEnter = container.enter().append("div").attr("class", "vectortile-container");
+ containerEnter.append("h4").attr("class", "vectortile-header").text("Detroit Vector Tiles (Beta)");
+ containerEnter.append("ul").attr("class", "layer-list layer-list-vectortile");
+ containerEnter.append("div").attr("class", "vectortile-footer").append("a").attr("target", "_blank").call(svgIcon("#iD-icon-out-link", "inline")).attr("href", "https://github.com/osmus/detroit-mapping-challenge").append("span").text("About these layers");
+ container = container.merge(containerEnter);
+ var ul = container.selectAll(".layer-list-vectortile");
+ var li = ul.selectAll(".list-item").data(vtData);
+ li.exit().remove();
+ var liEnter = li.enter().append("li").attr("class", function(d2) {
+ return "list-item list-item-" + d2.src;
+ });
+ var labelEnter = liEnter.append("label").each(function(d2) {
+ select_default2(this).call(
+ uiTooltip().title(d2.tooltip).placement("top")
+ );
+ });
+ labelEnter.append("input").attr("type", "radio").attr("name", "vectortile").on("change", selectVTLayer);
+ labelEnter.append("span").text(function(d2) {
+ return d2.name;
+ });
+ li.merge(liEnter).classed("active", isVTLayerSelected).selectAll("input").property("checked", isVTLayerSelected);
+ function isVTLayerSelected(d2) {
+ return dataLayer && dataLayer.template() === d2.template;
+ }
+ function selectVTLayer(d3_event, d2) {
+ corePreferences("settings-custom-data-url", d2.template);
+ if (dataLayer) {
+ dataLayer.template(d2.template, d2.src);
+ dataLayer.enabled(true);
+ }
+ }
+ }
+ function drawCustomDataItems(selection2) {
+ var dataLayer = layers.layer("data");
+ var hasData = dataLayer && dataLayer.hasData();
+ var showsData = hasData && dataLayer.enabled();
+ var ul = selection2.selectAll(".layer-list-data").data(dataLayer ? [0] : []);
+ ul.exit().remove();
+ var ulEnter = ul.enter().append("ul").attr("class", "layer-list layer-list-data");
+ var liEnter = ulEnter.append("li").attr("class", "list-item-data");
+ var labelEnter = liEnter.append("label").call(
+ uiTooltip().title(() => _t.append("map_data.layers.custom.tooltip")).placement("top")
+ );
+ labelEnter.append("input").attr("type", "checkbox").on("change", function() {
+ toggleLayer("data");
+ });
+ labelEnter.append("span").call(_t.append("map_data.layers.custom.title"));
+ liEnter.append("button").attr("class", "open-data-options").call(
+ uiTooltip().title(() => _t.append("settings.custom_data.tooltip")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
+ ).on("click", function(d3_event) {
+ d3_event.preventDefault();
+ editCustom();
+ }).call(svgIcon("#iD-icon-more"));
+ liEnter.append("button").attr("class", "zoom-to-data").call(
+ uiTooltip().title(() => _t.append("map_data.layers.custom.zoom")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
+ ).on("click", function(d3_event) {
+ if (select_default2(this).classed("disabled"))
+ return;
+ d3_event.preventDefault();
+ d3_event.stopPropagation();
+ dataLayer.fitZoom();
+ }).call(svgIcon("#iD-icon-framed-dot", "monochrome"));
+ ul = ul.merge(ulEnter);
+ ul.selectAll(".list-item-data").classed("active", showsData).selectAll("label").classed("deemphasize", !hasData).selectAll("input").property("disabled", !hasData).property("checked", showsData);
+ ul.selectAll("button.zoom-to-data").classed("disabled", !hasData);
+ }
+ function editCustom() {
+ context.container().call(settingsCustomData);
+ }
+ function customChanged(d2) {
+ var dataLayer = layers.layer("data");
+ if (d2 && d2.url) {
+ dataLayer.url(d2.url);
+ } else if (d2 && d2.fileList) {
+ dataLayer.fileList(d2.fileList);
+ }
+ }
+ function drawPanelItems(selection2) {
+ var panelsListEnter = selection2.selectAll(".md-extras-list").data([0]).enter().append("ul").attr("class", "layer-list md-extras-list");
+ var historyPanelLabelEnter = panelsListEnter.append("li").attr("class", "history-panel-toggle-item").append("label").call(
+ uiTooltip().title(() => _t.append("map_data.history_panel.tooltip")).keys([uiCmd("\u2318\u21E7" + _t("info_panels.history.key"))]).placement("top")
+ );
+ historyPanelLabelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event) {
+ d3_event.preventDefault();
+ context.ui().info.toggle("history");
+ });
+ historyPanelLabelEnter.append("span").call(_t.append("map_data.history_panel.title"));
+ var measurementPanelLabelEnter = panelsListEnter.append("li").attr("class", "measurement-panel-toggle-item").append("label").call(
+ uiTooltip().title(() => _t.append("map_data.measurement_panel.tooltip")).keys([uiCmd("\u2318\u21E7" + _t("info_panels.measurement.key"))]).placement("top")
+ );
+ measurementPanelLabelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event) {
+ d3_event.preventDefault();
+ context.ui().info.toggle("measurement");
+ });
+ measurementPanelLabelEnter.append("span").call(_t.append("map_data.measurement_panel.title"));
+ }
+ context.layers().on("change.uiSectionDataLayers", section.reRender);
+ context.map().on(
+ "move.uiSectionDataLayers",
+ debounce_default(function() {
+ window.requestIdleCallback(section.reRender);
+ }, 1e3)
+ );
+ return section;
+ }
+
+ // modules/ui/sections/map_features.js
+ function uiSectionMapFeatures(context) {
+ var _features = context.features().keys();
+ var section = uiSection("map-features", context).label(() => _t.append("map_data.map_features")).disclosureContent(renderDisclosureContent).expandedByDefault(false);
+ function renderDisclosureContent(selection2) {
+ var container = selection2.selectAll(".layer-feature-list-container").data([0]);
+ var containerEnter = container.enter().append("div").attr("class", "layer-feature-list-container");
+ containerEnter.append("ul").attr("class", "layer-list layer-feature-list");
+ var footer = containerEnter.append("div").attr("class", "feature-list-links section-footer");
+ footer.append("a").attr("class", "feature-list-link").attr("role", "button").attr("href", "#").call(_t.append("issues.disable_all")).on("click", function(d3_event) {
+ d3_event.preventDefault();
+ context.features().disableAll();
+ });
+ footer.append("a").attr("class", "feature-list-link").attr("role", "button").attr("href", "#").call(_t.append("issues.enable_all")).on("click", function(d3_event) {
+ d3_event.preventDefault();
+ context.features().enableAll();
+ });
+ container = container.merge(containerEnter);
+ container.selectAll(".layer-feature-list").call(drawListItems, _features, "checkbox", "feature", clickFeature, showsFeature);
+ }
+ function drawListItems(selection2, data, type2, name, change, active) {
+ var items = selection2.selectAll("li").data(data);
+ items.exit().remove();
+ var enter = items.enter().append("li").call(
+ uiTooltip().title(function(d2) {
+ var tip = _t.append(name + "." + d2 + ".tooltip");
+ if (autoHiddenFeature(d2)) {
+ var msg = showsLayer("osm") ? _t.append("map_data.autohidden") : _t.append("map_data.osmhidden");
+ return (selection3) => {
+ selection3.call(tip);
+ selection3.append("div").call(msg);
+ };
+ }
+ return tip;
+ }).placement("top")
+ );
+ var label = enter.append("label");
+ label.append("input").attr("type", type2).attr("name", name).on("change", change);
+ label.append("span").html(function(d2) {
+ return _t.html(name + "." + d2 + ".description");
+ });
+ items = items.merge(enter);
+ items.classed("active", active).selectAll("input").property("checked", active).property("indeterminate", autoHiddenFeature);
+ }
+ function autoHiddenFeature(d2) {
+ return context.features().autoHidden(d2);
+ }
+ function showsFeature(d2) {
+ return context.features().enabled(d2);
+ }
+ function clickFeature(d3_event, d2) {
+ context.features().toggle(d2);
+ }
+ function showsLayer(id2) {
+ var layer = context.layers().layer(id2);
+ return layer && layer.enabled();
+ }
+ context.features().on("change.map_features", section.reRender);
+ return section;
+ }
+
+ // modules/ui/sections/map_style_options.js
+ function uiSectionMapStyleOptions(context) {
+ var section = uiSection("fill-area", context).label(() => _t.append("map_data.style_options")).disclosureContent(renderDisclosureContent).expandedByDefault(false);
+ function renderDisclosureContent(selection2) {
+ var container = selection2.selectAll(".layer-fill-list").data([0]);
+ container.enter().append("ul").attr("class", "layer-list layer-fill-list").merge(container).call(drawListItems, context.map().areaFillOptions, "radio", "area_fill", setFill, isActiveFill);
+ var container2 = selection2.selectAll(".layer-visual-diff-list").data([0]);
+ container2.enter().append("ul").attr("class", "layer-list layer-visual-diff-list").merge(container2).call(drawListItems, ["highlight_edits"], "checkbox", "visual_diff", toggleHighlightEdited, function() {
+ return context.surface().classed("highlight-edited");
+ });
+ }
+ function drawListItems(selection2, data, type2, name, change, active) {
+ var items = selection2.selectAll("li").data(data);
+ items.exit().remove();
+ var enter = items.enter().append("li").call(
+ uiTooltip().title(function(d2) {
+ return _t.append(name + "." + d2 + ".tooltip");
+ }).keys(function(d2) {
+ var key = d2 === "wireframe" ? _t("area_fill.wireframe.key") : null;
+ if (d2 === "highlight_edits")
+ key = _t("map_data.highlight_edits.key");
+ return key ? [key] : null;
+ }).placement("top")
+ );
+ var label = enter.append("label");
+ label.append("input").attr("type", type2).attr("name", name).on("change", change);
+ label.append("span").html(function(d2) {
+ return _t.html(name + "." + d2 + ".description");
+ });
+ items = items.merge(enter);
+ items.classed("active", active).selectAll("input").property("checked", active).property("indeterminate", false);
+ }
+ function isActiveFill(d2) {
+ return context.map().activeAreaFill() === d2;
+ }
+ function toggleHighlightEdited(d3_event) {
+ d3_event.preventDefault();
+ context.map().toggleHighlightEdited();
+ }
+ function setFill(d3_event, d2) {
+ context.map().activeAreaFill(d2);
+ }
+ context.map().on("changeHighlighting.ui_style, changeAreaFill.ui_style", section.reRender);
+ return section;
+ }
+
+ // modules/ui/settings/local_photos.js
+ function uiSettingsLocalPhotos(context) {
+ var dispatch14 = dispatch_default("change");
+ var photoLayer = context.layers().layer("local-photos");
+ var modal;
+ function render(selection2) {
+ modal = uiConfirm(selection2).okButton();
+ modal.classed("settings-modal settings-local-photos", true);
+ modal.select(".modal-section.header").append("h3").call(_t.append("local_photos.header"));
+ modal.select(".modal-section.message-text").append("div").classed("local-photos", true);
+ var instructionsSection = modal.select(".modal-section.message-text .local-photos").append("div").classed("instructions", true);
+ instructionsSection.append("p").classed("instructions-local-photos", true).call(_t.append("local_photos.file.instructions"));
+ instructionsSection.append("input").classed("field-file", true).attr("type", "file").attr("multiple", "multiple").attr("accept", ".jpg,.jpeg,.png,image/png,image/jpeg").style("visibility", "hidden").attr("id", "local-photo-files").on("change", function(d3_event) {
+ var files = d3_event.target.files;
+ if (files && files.length) {
+ photoList.select("ul").append("li").classed("placeholder", true).append("div");
+ dispatch14.call("change", this, files);
+ }
+ d3_event.target.value = null;
+ });
+ instructionsSection.append("label").attr("for", "local-photo-files").classed("button", true).call(_t.append("local_photos.file.label"));
+ const photoList = modal.select(".modal-section.message-text .local-photos").append("div").append("div").classed("list-local-photos", true);
+ photoList.append("ul");
+ updatePhotoList(photoList.select("ul"));
+ context.layers().on("change", () => updatePhotoList(photoList.select("ul")));
+ }
+ function updatePhotoList(container) {
+ function locationUnavailable(d2) {
+ return !(isArray_default(d2.loc) && isNumber_default(d2.loc[0]) && isNumber_default(d2.loc[1]));
+ }
+ container.selectAll("li.placeholder").remove();
+ let selection2 = container.selectAll("li").data(photoLayer.getPhotos() ?? [], (d2) => d2.id);
+ selection2.exit().remove();
+ const selectionEnter = selection2.enter().append("li");
+ selectionEnter.append("span").classed("filename", true);
+ selectionEnter.append("button").classed("form-field-button zoom-to-data", true).attr("title", _t("local_photos.zoom_single")).call(svgIcon("#iD-icon-framed-dot"));
+ selectionEnter.append("button").classed("form-field-button no-geolocation", true).call(svgIcon("#iD-icon-alert")).call(
+ uiTooltip().title(() => _t.append("local_photos.no_geolocation.tooltip")).placement("left")
+ );
+ selectionEnter.append("button").classed("form-field-button remove", true).attr("title", _t("icons.remove")).call(svgIcon("#iD-operation-delete"));
+ selection2 = selection2.merge(selectionEnter);
+ selection2.classed("invalid", locationUnavailable);
+ selection2.select("span.filename").text((d2) => d2.name).attr("title", (d2) => d2.name);
+ selection2.select("span.filename").on("click", (d3_event, d2) => {
+ photoLayer.openPhoto(d3_event, d2, false);
+ });
+ selection2.select("button.zoom-to-data").on("click", (d3_event, d2) => {
+ photoLayer.openPhoto(d3_event, d2, true);
+ });
+ selection2.select("button.remove").on("click", (d3_event, d2) => {
+ photoLayer.removePhoto(d2.id);
+ updatePhotoList(container);
+ });
+ }
+ return utilRebind(render, dispatch14, "on");
+ }
+
+ // modules/ui/sections/photo_overlays.js
+ function uiSectionPhotoOverlays(context) {
+ var settingsLocalPhotos = uiSettingsLocalPhotos(context).on("change", localPhotosChanged);
+ var layers = context.layers();
+ var section = uiSection("photo-overlays", context).label(() => _t.append("photo_overlays.title")).disclosureContent(renderDisclosureContent).expandedByDefault(false);
+ function renderDisclosureContent(selection2) {
+ var container = selection2.selectAll(".photo-overlay-container").data([0]);
+ container.enter().append("div").attr("class", "photo-overlay-container").merge(container).call(drawPhotoItems).call(drawPhotoTypeItems).call(drawDateFilter).call(drawUsernameFilter).call(drawLocalPhotos);
+ }
+ function drawPhotoItems(selection2) {
+ var photoKeys = context.photos().overlayLayerIDs();
+ var photoLayers = layers.all().filter(function(obj) {
+ return photoKeys.indexOf(obj.id) !== -1;
+ });
+ var data = photoLayers.filter(function(obj) {
+ if (!obj.layer.supported())
+ return false;
+ if (layerEnabled(obj))
+ return true;
+ if (typeof obj.layer.validHere === "function") {
+ return obj.layer.validHere(context.map().extent(), context.map().zoom());
+ }
+ return true;
+ });
+ function layerSupported(d2) {
+ return d2.layer && d2.layer.supported();
+ }
+ function layerEnabled(d2) {
+ return layerSupported(d2) && d2.layer.enabled();
+ }
+ function layerRendered(d2) {
+ return d2.layer.rendered?.(context.map().zoom()) ?? true;
+ }
+ var ul = selection2.selectAll(".layer-list-photos").data([0]);
+ ul = ul.enter().append("ul").attr("class", "layer-list layer-list-photos").merge(ul);
+ var li = ul.selectAll(".list-item-photos").data(data);
+ li.exit().remove();
+ var liEnter = li.enter().append("li").attr("class", function(d2) {
+ var classes = "list-item-photos list-item-" + d2.id;
+ if (d2.id === "mapillary-signs" || d2.id === "mapillary-map-features") {
+ classes += " indented";
+ }
+ return classes;
+ });
+ var labelEnter = liEnter.append("label").each(function(d2) {
+ var titleID;
+ if (d2.id === "mapillary-signs")
+ titleID = "mapillary.signs.tooltip";
+ else if (d2.id === "mapillary")
+ titleID = "mapillary_images.tooltip";
+ else if (d2.id === "kartaview")
+ titleID = "kartaview_images.tooltip";
+ else
+ titleID = d2.id.replace(/-/g, "_") + ".tooltip";
+ select_default2(this).call(
+ uiTooltip().title(() => {
+ if (!layerRendered(d2)) {
+ return _t.append("street_side.minzoom_tooltip");
+ } else {
+ return _t.append(titleID);
+ }
+ }).placement("top")
+ );
+ });
+ labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d2) {
+ toggleLayer(d2.id);
+ });
+ labelEnter.append("span").html(function(d2) {
+ var id2 = d2.id;
+ if (id2 === "mapillary-signs")
+ id2 = "photo_overlays.traffic_signs";
+ return _t.html(id2.replace(/-/g, "_") + ".title");
+ });
+ li.merge(liEnter).classed("active", layerEnabled).selectAll("input").property("disabled", (d2) => !layerRendered(d2)).property("checked", layerEnabled);
+ }
+ function drawPhotoTypeItems(selection2) {
+ var data = context.photos().allPhotoTypes();
+ function typeEnabled(d2) {
+ return context.photos().showsPhotoType(d2);
+ }
+ var ul = selection2.selectAll(".layer-list-photo-types").data([0]);
+ ul.exit().remove();
+ ul = ul.enter().append("ul").attr("class", "layer-list layer-list-photo-types").merge(ul);
+ var li = ul.selectAll(".list-item-photo-types").data(context.photos().shouldFilterByPhotoType() ? data : []);
+ li.exit().remove();
+ var liEnter = li.enter().append("li").attr("class", function(d2) {
+ return "list-item-photo-types list-item-" + d2;
+ });
+ var labelEnter = liEnter.append("label").each(function(d2) {
+ select_default2(this).call(
+ uiTooltip().title(() => _t.append("photo_overlays.photo_type." + d2 + ".tooltip")).placement("top")
+ );
+ });
+ labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d2) {
+ context.photos().togglePhotoType(d2);
+ });
+ labelEnter.append("span").html(function(d2) {
+ return _t.html("photo_overlays.photo_type." + d2 + ".title");
+ });
+ li.merge(liEnter).classed("active", typeEnabled).selectAll("input").property("checked", typeEnabled);
+ }
+ function drawDateFilter(selection2) {
+ var data = context.photos().dateFilters();
+ function filterEnabled(d2) {
+ return context.photos().dateFilterValue(d2);
+ }
+ var ul = selection2.selectAll(".layer-list-date-filter").data([0]);
+ ul.exit().remove();
+ ul = ul.enter().append("ul").attr("class", "layer-list layer-list-date-filter").merge(ul);
+ var li = ul.selectAll(".list-item-date-filter").data(context.photos().shouldFilterByDate() ? data : []);
+ li.exit().remove();
+ var liEnter = li.enter().append("li").attr("class", "list-item-date-filter");
+ var labelEnter = liEnter.append("label").each(function(d2) {
+ select_default2(this).call(
+ uiTooltip().title(() => _t.append("photo_overlays.date_filter." + d2 + ".tooltip")).placement("top")
+ );
+ });
+ labelEnter.append("span").each(function(d2) {
+ _t.append("photo_overlays.date_filter." + d2 + ".title")(select_default2(this));
+ });
+ labelEnter.append("input").attr("type", "date").attr("class", "list-item-input").attr("placeholder", _t("units.year_month_day")).call(utilNoAuto).each(function(d2) {
+ utilGetSetValue(select_default2(this), context.photos().dateFilterValue(d2) || "");
+ }).on("change", function(d3_event, d2) {
+ var value = utilGetSetValue(select_default2(this)).trim();
+ context.photos().setDateFilter(d2, value, true);
+ li.selectAll("input").each(function(d4) {
+ utilGetSetValue(select_default2(this), context.photos().dateFilterValue(d4) || "");
+ });
+ });
+ li = li.merge(liEnter).classed("active", filterEnabled);
+ }
+ function drawUsernameFilter(selection2) {
+ function filterEnabled() {
+ return context.photos().usernames();
+ }
+ var ul = selection2.selectAll(".layer-list-username-filter").data([0]);
+ ul.exit().remove();
+ ul = ul.enter().append("ul").attr("class", "layer-list layer-list-username-filter").merge(ul);
+ var li = ul.selectAll(".list-item-username-filter").data(context.photos().shouldFilterByUsername() ? ["username-filter"] : []);
+ li.exit().remove();
+ var liEnter = li.enter().append("li").attr("class", "list-item-username-filter");
+ var labelEnter = liEnter.append("label").each(function() {
+ select_default2(this).call(
+ uiTooltip().title(() => _t.append("photo_overlays.username_filter.tooltip")).placement("top")
+ );
+ });
+ labelEnter.append("span").call(_t.append("photo_overlays.username_filter.title"));
+ labelEnter.append("input").attr("type", "text").attr("class", "list-item-input").call(utilNoAuto).property("value", usernameValue).on("change", function() {
+ var value = select_default2(this).property("value");
+ context.photos().setUsernameFilter(value, true);
+ select_default2(this).property("value", usernameValue);
+ });
+ li.merge(liEnter).classed("active", filterEnabled);
+ function usernameValue() {
+ var usernames = context.photos().usernames();
+ if (usernames)
+ return usernames.join("; ");
+ return usernames;
}
}
- return utilRebind(render, dispatch10, "on");
- }
-
- // modules/ui/sections/data_layers.js
- function uiSectionDataLayers(context) {
- var settingsCustomData = uiSettingsCustomData(context).on("change", customChanged);
- var layers = context.layers();
- var section = uiSection("data-layers", context).label(() => _t.append("map_data.data_layers")).disclosureContent(renderDisclosureContent);
- function renderDisclosureContent(selection2) {
- var container = selection2.selectAll(".data-layer-container").data([0]);
- container.enter().append("div").attr("class", "data-layer-container").merge(container).call(drawOsmItems).call(drawQAItems).call(drawCustomDataItems).call(drawVectorItems).call(drawPanelItems);
+ function toggleLayer(which) {
+ setLayer(which, !showsLayer(which));
}
function showsLayer(which) {
var layer = layers.layer(which);
return false;
}
function setLayer(which, enabled) {
- var mode = context.mode();
- if (mode && /^draw/.test(mode.id))
- return;
var layer = layers.layer(which);
if (layer) {
layer.enabled(enabled);
- if (!enabled && (which === "osm" || which === "notes")) {
- context.enter(modeBrowse(context));
- }
}
}
- function toggleLayer(which) {
- setLayer(which, !showsLayer(which));
+ function drawLocalPhotos(selection2) {
+ var photoLayer = layers.layer("local-photos");
+ var hasData = photoLayer && photoLayer.hasData();
+ var showsData = hasData && photoLayer.enabled();
+ var ul = selection2.selectAll(".layer-list-local-photos").data(photoLayer ? [0] : []);
+ ul.exit().remove();
+ var ulEnter = ul.enter().append("ul").attr("class", "layer-list layer-list-local-photos");
+ var localPhotosEnter = ulEnter.append("li").attr("class", "list-item-local-photos");
+ var localPhotosLabelEnter = localPhotosEnter.append("label").call(uiTooltip().title(() => _t.append("local_photos.tooltip")));
+ localPhotosLabelEnter.append("input").attr("type", "checkbox").on("change", function() {
+ toggleLayer("local-photos");
+ });
+ localPhotosLabelEnter.call(_t.append("local_photos.header"));
+ localPhotosEnter.append("button").attr("class", "open-data-options").call(
+ uiTooltip().title(() => _t.append("local_photos.tooltip_edit")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
+ ).on("click", function(d3_event) {
+ d3_event.preventDefault();
+ editLocalPhotos();
+ }).call(svgIcon("#iD-icon-more"));
+ localPhotosEnter.append("button").attr("class", "zoom-to-data").call(
+ uiTooltip().title(() => _t.append("local_photos.zoom")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
+ ).on("click", function(d3_event) {
+ if (select_default2(this).classed("disabled"))
+ return;
+ d3_event.preventDefault();
+ d3_event.stopPropagation();
+ photoLayer.fitZoom();
+ }).call(svgIcon("#iD-icon-framed-dot", "monochrome"));
+ ul = ul.merge(ulEnter);
+ ul.selectAll(".list-item-local-photos").classed("active", showsData).selectAll("label").classed("deemphasize", !hasData).selectAll("input").property("disabled", !hasData).property("checked", showsData);
+ ul.selectAll("button.zoom-to-data").classed("disabled", !hasData);
}
- function drawOsmItems(selection2) {
- var osmKeys = ["osm", "notes"];
- var osmLayers = layers.all().filter(function(obj) {
- return osmKeys.indexOf(obj.id) !== -1;
+ function editLocalPhotos() {
+ context.container().call(settingsLocalPhotos);
+ }
+ function localPhotosChanged(d2) {
+ var localPhotosLayer = layers.layer("local-photos");
+ localPhotosLayer.fileList(d2);
+ }
+ context.layers().on("change.uiSectionPhotoOverlays", section.reRender);
+ context.photos().on("change.uiSectionPhotoOverlays", section.reRender);
+ context.map().on(
+ "move.photo_overlays",
+ debounce_default(function() {
+ window.requestIdleCallback(section.reRender);
+ }, 1e3)
+ );
+ return section;
+ }
+
+ // modules/ui/panes/map_data.js
+ function uiPaneMapData(context) {
+ var mapDataPane = uiPane("map-data", context).key(_t("map_data.key")).label(_t.append("map_data.title")).description(_t.append("map_data.description")).iconName("iD-icon-data").sections([
+ uiSectionDataLayers(context),
+ uiSectionPhotoOverlays(context),
+ uiSectionMapStyleOptions(context),
+ uiSectionMapFeatures(context)
+ ]);
+ return mapDataPane;
+ }
+
+ // modules/ui/panes/preferences.js
+ function uiPanePreferences(context) {
+ let preferencesPane = uiPane("preferences", context).key(_t("preferences.key")).label(_t.append("preferences.title")).description(_t.append("preferences.description")).iconName("fas-user-cog").sections([
+ uiSectionPrivacy(context)
+ ]);
+ return preferencesPane;
+ }
+
+ // modules/ui/init.js
+ function uiInit(context) {
+ var _initCounter = 0;
+ var _needWidth = {};
+ var _lastPointerType;
+ function render(container) {
+ container.on("click.ui", function(d3_event) {
+ if (d3_event.button !== 0)
+ return;
+ if (!d3_event.composedPath)
+ return;
+ var isOkayTarget = d3_event.composedPath().some(function(node) {
+ return node.nodeType === 1 && // clicking <input> focuses it and/or changes a value
+ (node.nodeName === "INPUT" || // clicking <label> affects its <input> by default
+ node.nodeName === "LABEL" || // clicking <a> opens a hyperlink by default
+ node.nodeName === "A");
+ });
+ if (isOkayTarget)
+ return;
+ d3_event.preventDefault();
});
- var ul = selection2.selectAll(".layer-list-osm").data([0]);
- ul = ul.enter().append("ul").attr("class", "layer-list layer-list-osm").merge(ul);
- var li = ul.selectAll(".list-item").data(osmLayers);
- li.exit().remove();
- var liEnter = li.enter().append("li").attr("class", function(d) {
- return "list-item list-item-" + d.id;
+ var detected = utilDetect();
+ if ("GestureEvent" in window && // Listening for gesture events on iOS 13.4+ breaks double-tapping,
+ // but we only need to do this on desktop Safari anyway. – #7694
+ !detected.isMobileWebKit) {
+ container.on("gesturestart.ui gesturechange.ui gestureend.ui", function(d3_event) {
+ d3_event.preventDefault();
+ });
+ }
+ if ("PointerEvent" in window) {
+ select_default2(window).on("pointerdown.ui pointerup.ui", function(d3_event) {
+ var pointerType = d3_event.pointerType || "mouse";
+ if (_lastPointerType !== pointerType) {
+ _lastPointerType = pointerType;
+ container.attr("pointer", pointerType);
+ }
+ }, true);
+ } else {
+ _lastPointerType = "mouse";
+ container.attr("pointer", "mouse");
+ }
+ container.attr("lang", _mainLocalizer.localeCode()).attr("dir", _mainLocalizer.textDirection());
+ container.call(uiFullScreen(context));
+ var map2 = context.map();
+ map2.redrawEnable(false);
+ map2.on("hitMinZoom.ui", function() {
+ ui.flash.iconName("#iD-icon-no").label(_t.append("cannot_zoom"))();
});
- var labelEnter = liEnter.append("label").each(function(d) {
- if (d.id === "osm") {
- select_default2(this).call(
- uiTooltip().title(() => _t.append("map_data.layers." + d.id + ".tooltip")).keys([uiCmd("\u2325" + _t("area_fill.wireframe.key"))]).placement("bottom")
- );
- } else {
- select_default2(this).call(
- uiTooltip().title(() => _t.append("map_data.layers." + d.id + ".tooltip")).placement("bottom")
- );
+ container.append("svg").attr("id", "ideditor-defs").call(ui.svgDefs);
+ container.append("div").attr("class", "sidebar").call(ui.sidebar);
+ var content = container.append("div").attr("class", "main-content active");
+ content.append("div").attr("class", "top-toolbar-wrap").append("div").attr("class", "top-toolbar fillD").call(uiTopToolbar(context));
+ content.append("div").attr("class", "main-map").attr("dir", "ltr").call(map2);
+ var overMap = content.append("div").attr("class", "over-map");
+ overMap.append("div").attr("class", "select-trap").text("t");
+ overMap.call(uiMapInMap(context)).call(uiNotice(context));
+ overMap.append("div").attr("class", "spinner").call(uiSpinner(context));
+ var controlsWrap = overMap.append("div").attr("class", "map-controls-wrap");
+ var controls = controlsWrap.append("div").attr("class", "map-controls");
+ controls.append("div").attr("class", "map-control zoombuttons").call(uiZoom(context));
+ controls.append("div").attr("class", "map-control zoom-to-selection-control").call(uiZoomToSelection(context));
+ controls.append("div").attr("class", "map-control geolocate-control").call(uiGeolocate(context));
+ controlsWrap.on("wheel.mapControls", function(d3_event) {
+ if (!d3_event.deltaX) {
+ controlsWrap.node().scrollTop += d3_event.deltaY;
}
});
- labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d) {
- toggleLayer(d.id);
- });
- labelEnter.append("span").html(function(d) {
- return _t.html("map_data.layers." + d.id + ".title");
- });
- li.merge(liEnter).classed("active", function(d) {
- return d.layer.enabled();
- }).selectAll("input").property("checked", function(d) {
- return d.layer.enabled();
- });
- }
- function drawQAItems(selection2) {
- var qaKeys = ["keepRight", "improveOSM", "osmose"];
- var qaLayers = layers.all().filter(function(obj) {
- return qaKeys.indexOf(obj.id) !== -1;
- });
- var ul = selection2.selectAll(".layer-list-qa").data([0]);
- ul = ul.enter().append("ul").attr("class", "layer-list layer-list-qa").merge(ul);
- var li = ul.selectAll(".list-item").data(qaLayers);
- li.exit().remove();
- var liEnter = li.enter().append("li").attr("class", function(d) {
- return "list-item list-item-" + d.id;
+ var panes = overMap.append("div").attr("class", "map-panes");
+ var uiPanes = [
+ uiPaneBackground(context),
+ uiPaneMapData(context),
+ uiPaneIssues(context),
+ uiPanePreferences(context),
+ uiPaneHelp(context)
+ ];
+ uiPanes.forEach(function(pane) {
+ controls.append("div").attr("class", "map-control map-pane-control " + pane.id + "-control").call(pane.renderToggleButton);
+ panes.call(pane.renderPane);
});
- var labelEnter = liEnter.append("label").each(function(d) {
- select_default2(this).call(
- uiTooltip().title(() => _t.append("map_data.layers." + d.id + ".tooltip")).placement("bottom")
+ ui.info = uiInfo(context);
+ overMap.call(ui.info);
+ overMap.append("div").attr("class", "photoviewer").classed("al", true).classed("hide", true).call(ui.photoviewer);
+ overMap.append("div").attr("class", "attribution-wrap").attr("dir", "ltr").call(uiAttribution(context));
+ var about = content.append("div").attr("class", "map-footer");
+ about.append("div").attr("class", "api-status").call(uiStatus(context));
+ var footer = about.append("div").attr("class", "map-footer-bar fillD");
+ footer.append("div").attr("class", "flash-wrap footer-hide");
+ var footerWrap = footer.append("div").attr("class", "main-footer-wrap footer-show");
+ footerWrap.append("div").attr("class", "scale-block").call(uiScale(context));
+ var aboutList = footerWrap.append("div").attr("class", "info-block").append("ul").attr("class", "map-footer-list");
+ aboutList.append("li").attr("class", "user-list").call(uiContributors(context));
+ var apiConnections = context.connection().apiConnections();
+ if (apiConnections && apiConnections.length > 1) {
+ aboutList.append("li").attr("class", "source-switch").call(
+ uiSourceSwitch(context).keys(apiConnections)
);
+ }
+ aboutList.append("li").attr("class", "issues-info").call(uiIssuesInfo(context));
+ aboutList.append("li").attr("class", "feature-warning").call(uiFeatureInfo(context));
+ var issueLinks = aboutList.append("li");
+ issueLinks.append("a").attr("target", "_blank").attr("href", "https://github.com/openstreetmap/iD/issues").attr("aria-label", _t("report_a_bug")).call(svgIcon("#iD-icon-bug", "light")).call(uiTooltip().title(() => _t.append("report_a_bug")).placement("top"));
+ issueLinks.append("a").attr("target", "_blank").attr("href", "https://github.com/openstreetmap/iD/blob/develop/CONTRIBUTING.md#translating").attr("aria-label", _t("help_translate")).call(svgIcon("#iD-icon-translate", "light")).call(uiTooltip().title(() => _t.append("help_translate")).placement("top"));
+ aboutList.append("li").attr("class", "version").call(uiVersion(context));
+ if (!context.embed()) {
+ aboutList.call(uiAccount(context));
+ }
+ ui.onResize();
+ map2.redrawEnable(true);
+ ui.hash = behaviorHash(context);
+ ui.hash();
+ if (!ui.hash.hadLocation) {
+ map2.centerZoom([0, 0], 2);
+ }
+ window.onbeforeunload = function() {
+ return context.save();
+ };
+ window.onunload = function() {
+ context.history().unlock();
+ };
+ select_default2(window).on("resize.editor", function() {
+ ui.onResize();
});
- labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d) {
- toggleLayer(d.id);
+ var panPixels = 80;
+ context.keybinding().on("\u232B", function(d3_event) {
+ d3_event.preventDefault();
+ }).on([_t("sidebar.key"), "`", "\xB2", "@"], ui.sidebar.toggle).on("\u2190", pan([panPixels, 0])).on("\u2191", pan([0, panPixels])).on("\u2192", pan([-panPixels, 0])).on("\u2193", pan([0, -panPixels])).on(uiCmd("\u2325\u2190"), pan([map2.dimensions()[0], 0])).on(uiCmd("\u2325\u2191"), pan([0, map2.dimensions()[1]])).on(uiCmd("\u2325\u2192"), pan([-map2.dimensions()[0], 0])).on(uiCmd("\u2325\u2193"), pan([0, -map2.dimensions()[1]])).on(uiCmd("\u2318" + _t("background.key")), function quickSwitch(d3_event) {
+ if (d3_event) {
+ d3_event.stopImmediatePropagation();
+ d3_event.preventDefault();
+ }
+ var previousBackground = context.background().findSource(corePreferences("background-last-used-toggle"));
+ if (previousBackground) {
+ var currentBackground = context.background().baseLayerSource();
+ corePreferences("background-last-used-toggle", currentBackground.id);
+ corePreferences("background-last-used", previousBackground.id);
+ context.background().baseLayerSource(previousBackground);
+ }
+ }).on(_t("area_fill.wireframe.key"), function toggleWireframe(d3_event) {
+ d3_event.preventDefault();
+ d3_event.stopPropagation();
+ context.map().toggleWireframe();
+ }).on(uiCmd("\u2325" + _t("area_fill.wireframe.key")), function toggleOsmData(d3_event) {
+ d3_event.preventDefault();
+ d3_event.stopPropagation();
+ var mode = context.mode();
+ if (mode && /^draw/.test(mode.id))
+ return;
+ var layer = context.layers().layer("osm");
+ if (layer) {
+ layer.enabled(!layer.enabled());
+ if (!layer.enabled()) {
+ context.enter(modeBrowse(context));
+ }
+ }
+ }).on(_t("map_data.highlight_edits.key"), function toggleHighlightEdited(d3_event) {
+ d3_event.preventDefault();
+ context.map().toggleHighlightEdited();
});
- labelEnter.append("span").each(function(d) {
- _t.append("map_data.layers." + d.id + ".title")(select_default2(this));
+ context.on("enter.editor", function(entered) {
+ container.classed("mode-" + entered.id, true);
+ }).on("exit.editor", function(exited) {
+ container.classed("mode-" + exited.id, false);
});
- li.merge(liEnter).classed("active", function(d) {
- return d.layer.enabled();
- }).selectAll("input").property("checked", function(d) {
- return d.layer.enabled();
+ context.enter(modeBrowse(context));
+ if (!_initCounter++) {
+ if (!ui.hash.startWalkthrough) {
+ context.container().call(uiSplash(context)).call(uiRestore(context));
+ }
+ context.container().call(ui.shortcuts);
+ }
+ var osm = context.connection();
+ var auth = uiLoading(context).message(_t.html("loading_auth")).blocking(true);
+ if (osm && auth) {
+ osm.on("authLoading.ui", function() {
+ context.container().call(auth);
+ }).on("authDone.ui", function() {
+ auth.close();
+ });
+ }
+ _initCounter++;
+ if (ui.hash.startWalkthrough) {
+ ui.hash.startWalkthrough = false;
+ context.container().call(uiIntro(context));
+ }
+ function pan(d2) {
+ return function(d3_event) {
+ if (d3_event.shiftKey)
+ return;
+ if (context.container().select(".combobox").size())
+ return;
+ d3_event.preventDefault();
+ context.map().pan(d2, 100);
+ };
+ }
+ }
+ let ui = {};
+ let _loadPromise;
+ ui.ensureLoaded = () => {
+ if (_loadPromise)
+ return _loadPromise;
+ return _loadPromise = Promise.all([
+ // must have strings and presets before loading the UI
+ _mainLocalizer.ensureLoaded(),
+ _mainPresetIndex.ensureLoaded()
+ ]).then(() => {
+ if (!context.container().empty())
+ render(context.container());
+ }).catch((err) => console.error(err));
+ };
+ ui.restart = function() {
+ context.keybinding().clear();
+ _loadPromise = null;
+ context.container().selectAll("*").remove();
+ ui.ensureLoaded();
+ };
+ ui.lastPointerType = function() {
+ return _lastPointerType;
+ };
+ ui.svgDefs = svgDefs(context);
+ ui.flash = uiFlash(context);
+ ui.sidebar = uiSidebar(context);
+ ui.photoviewer = uiPhotoviewer(context);
+ ui.shortcuts = uiShortcuts(context);
+ ui.onResize = function(withPan) {
+ var map2 = context.map();
+ var mapDimensions = utilGetDimensions(context.container().select(".main-content"), true);
+ utilGetDimensions(context.container().select(".sidebar"), true);
+ if (withPan !== void 0) {
+ map2.redrawEnable(false);
+ map2.pan(withPan);
+ map2.redrawEnable(true);
+ }
+ map2.dimensions(mapDimensions);
+ ui.photoviewer.onMapResize();
+ ui.checkOverflow(".top-toolbar");
+ ui.checkOverflow(".map-footer-bar");
+ var resizeWindowEvent = document.createEvent("Event");
+ resizeWindowEvent.initEvent("resizeWindow", true, true);
+ document.dispatchEvent(resizeWindowEvent);
+ };
+ ui.checkOverflow = function(selector, reset) {
+ if (reset) {
+ delete _needWidth[selector];
+ }
+ var selection2 = context.container().select(selector);
+ if (selection2.empty())
+ return;
+ var scrollWidth = selection2.property("scrollWidth");
+ var clientWidth = selection2.property("clientWidth");
+ var needed = _needWidth[selector] || scrollWidth;
+ if (scrollWidth > clientWidth) {
+ selection2.classed("narrow", true);
+ if (!_needWidth[selector]) {
+ _needWidth[selector] = scrollWidth;
+ }
+ } else if (scrollWidth >= needed) {
+ selection2.classed("narrow", false);
+ }
+ };
+ ui.togglePanes = function(showPane) {
+ var hidePanes = context.container().selectAll(".map-pane.shown");
+ var side = _mainLocalizer.textDirection() === "ltr" ? "right" : "left";
+ hidePanes.classed("shown", false).classed("hide", true);
+ context.container().selectAll(".map-pane-control button").classed("active", false);
+ if (showPane) {
+ hidePanes.classed("shown", false).classed("hide", true).style(side, "-500px");
+ context.container().selectAll("." + showPane.attr("pane") + "-control button").classed("active", true);
+ showPane.classed("shown", true).classed("hide", false);
+ if (hidePanes.empty()) {
+ showPane.style(side, "-500px").transition().duration(200).style(side, "0px");
+ } else {
+ showPane.style(side, "0px");
+ }
+ } else {
+ hidePanes.classed("shown", true).classed("hide", false).style(side, "0px").transition().duration(200).style(side, "-500px").on("end", function() {
+ select_default2(this).classed("shown", false).classed("hide", true);
+ });
+ }
+ };
+ var _editMenu = uiEditMenu(context);
+ ui.editMenu = function() {
+ return _editMenu;
+ };
+ ui.showEditMenu = function(anchorPoint, triggerType, operations) {
+ ui.closeEditMenu();
+ if (!operations && context.mode().operations)
+ operations = context.mode().operations();
+ if (!operations || !operations.length)
+ return;
+ if (!context.map().editableDataEnabled())
+ return;
+ var surfaceNode = context.surface().node();
+ if (surfaceNode.focus) {
+ surfaceNode.focus();
+ }
+ operations.forEach(function(operation) {
+ if (operation.point)
+ operation.point(anchorPoint);
});
+ _editMenu.anchorLoc(anchorPoint).triggerType(triggerType).operations(operations);
+ context.map().supersurface.call(_editMenu);
+ };
+ ui.closeEditMenu = function() {
+ context.map().supersurface.select(".edit-menu").remove();
+ };
+ var _saveLoading = select_default2(null);
+ context.uploader().on("saveStarted.ui", function() {
+ _saveLoading = uiLoading(context).message(_t.html("save.uploading")).blocking(true);
+ context.container().call(_saveLoading);
+ }).on("saveEnded.ui", function() {
+ _saveLoading.close();
+ _saveLoading = select_default2(null);
+ });
+ marked.use({
+ mangle: false,
+ headerIds: false
+ });
+ return ui;
+ }
+
+ // modules/core/context.js
+ function coreContext() {
+ const dispatch14 = dispatch_default("enter", "exit", "change");
+ let context = utilRebind({}, dispatch14, "on");
+ let _deferred2 = /* @__PURE__ */ new Set();
+ context.version = package_default.version;
+ context.privacyVersion = "20201202";
+ context.initialHashParams = window.location.hash ? utilStringQs(window.location.hash) : {};
+ context.changeset = null;
+ let _defaultChangesetComment = context.initialHashParams.comment;
+ let _defaultChangesetSource = context.initialHashParams.source;
+ let _defaultChangesetHashtags = context.initialHashParams.hashtags;
+ context.defaultChangesetComment = function(val) {
+ if (!arguments.length)
+ return _defaultChangesetComment;
+ _defaultChangesetComment = val;
+ return context;
+ };
+ context.defaultChangesetSource = function(val) {
+ if (!arguments.length)
+ return _defaultChangesetSource;
+ _defaultChangesetSource = val;
+ return context;
+ };
+ context.defaultChangesetHashtags = function(val) {
+ if (!arguments.length)
+ return _defaultChangesetHashtags;
+ _defaultChangesetHashtags = val;
+ return context;
+ };
+ let _setsDocumentTitle = true;
+ context.setsDocumentTitle = function(val) {
+ if (!arguments.length)
+ return _setsDocumentTitle;
+ _setsDocumentTitle = val;
+ return context;
+ };
+ let _documentTitleBase = document.title;
+ context.documentTitleBase = function(val) {
+ if (!arguments.length)
+ return _documentTitleBase;
+ _documentTitleBase = val;
+ return context;
+ };
+ let _ui;
+ context.ui = () => _ui;
+ context.lastPointerType = () => _ui.lastPointerType();
+ let _keybinding = utilKeybinding("context");
+ context.keybinding = () => _keybinding;
+ select_default2(document).call(_keybinding);
+ let _connection = services.osm;
+ let _history;
+ let _validator;
+ let _uploader;
+ context.connection = () => _connection;
+ context.history = () => _history;
+ context.validator = () => _validator;
+ context.uploader = () => _uploader;
+ context.preauth = (options2) => {
+ if (_connection) {
+ _connection.switch(options2);
+ }
+ return context;
+ };
+ context.locale = function(locale2) {
+ if (!arguments.length)
+ return _mainLocalizer.localeCode();
+ _mainLocalizer.preferredLocaleCodes(locale2);
+ return context;
+ };
+ function afterLoad(cid, callback) {
+ return (err, result) => {
+ if (err) {
+ if (err.status === 400 || err.status === 401 || err.status === 403) {
+ if (_connection) {
+ _connection.logout();
+ }
+ }
+ if (typeof callback === "function") {
+ callback(err);
+ }
+ return;
+ } else if (_connection && _connection.getConnectionId() !== cid) {
+ if (typeof callback === "function") {
+ callback({ message: "Connection Switched", status: -1 });
+ }
+ return;
+ } else {
+ _history.merge(result.data, result.extent);
+ if (typeof callback === "function") {
+ callback(err, result);
+ }
+ return;
+ }
+ };
}
- function drawVectorItems(selection2) {
- var dataLayer = layers.layer("data");
- var vtData = [
- {
- name: "Detroit Neighborhoods/Parks",
- src: "neighborhoods-parks",
- tooltip: "Neighborhood boundaries and parks as compiled by City of Detroit in concert with community groups.",
- template: "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmur6x34562qp9iv1u3ksf-54hev,jonahadkins.cjksmqxdx33jj2wp90xd9x2md-4e5y2/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"
- },
- {
- name: "Detroit Composite POIs",
- src: "composite-poi",
- tooltip: "Fire Inspections, Business Licenses, and other public location data collated from the City of Detroit.",
- template: "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmm6a02sli31myxhsr7zf3-2sw8h/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"
- },
- {
- name: "Detroit All-The-Places POIs",
- src: "alltheplaces-poi",
- tooltip: "Public domain business location data created by web scrapers.",
- template: "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/jonahadkins.cjksmswgk340g2vo06p1w9w0j-8fjjc/{z}/{x}/{y}.vector.pbf?access_token=pk.eyJ1Ijoiam9uYWhhZGtpbnMiLCJhIjoiRlVVVkx3VSJ9.9sdVEK_B_VkEXPjssU5MqA"
+ context.loadTiles = (projection2, callback) => {
+ const handle = window.requestIdleCallback(() => {
+ _deferred2.delete(handle);
+ if (_connection && context.editableDataEnabled()) {
+ const cid = _connection.getConnectionId();
+ _connection.loadTiles(projection2, afterLoad(cid, callback));
}
- ];
- var detroit = geoExtent([-83.5, 42.1], [-82.8, 42.5]);
- var showVectorItems = context.map().zoom() > 9 && detroit.contains(context.map().center());
- var container = selection2.selectAll(".vectortile-container").data(showVectorItems ? [0] : []);
- container.exit().remove();
- var containerEnter = container.enter().append("div").attr("class", "vectortile-container");
- containerEnter.append("h4").attr("class", "vectortile-header").text("Detroit Vector Tiles (Beta)");
- containerEnter.append("ul").attr("class", "layer-list layer-list-vectortile");
- containerEnter.append("div").attr("class", "vectortile-footer").append("a").attr("target", "_blank").call(svgIcon("#iD-icon-out-link", "inline")).attr("href", "https://github.com/osmus/detroit-mapping-challenge").append("span").text("About these layers");
- container = container.merge(containerEnter);
- var ul = container.selectAll(".layer-list-vectortile");
- var li = ul.selectAll(".list-item").data(vtData);
- li.exit().remove();
- var liEnter = li.enter().append("li").attr("class", function(d) {
- return "list-item list-item-" + d.src;
- });
- var labelEnter = liEnter.append("label").each(function(d) {
- select_default2(this).call(
- uiTooltip().title(d.tooltip).placement("top")
- );
- });
- labelEnter.append("input").attr("type", "radio").attr("name", "vectortile").on("change", selectVTLayer);
- labelEnter.append("span").text(function(d) {
- return d.name;
});
- li.merge(liEnter).classed("active", isVTLayerSelected).selectAll("input").property("checked", isVTLayerSelected);
- function isVTLayerSelected(d) {
- return dataLayer && dataLayer.template() === d.template;
- }
- function selectVTLayer(d3_event, d) {
- corePreferences("settings-custom-data-url", d.template);
- if (dataLayer) {
- dataLayer.template(d.template, d.src);
- dataLayer.enabled(true);
+ _deferred2.add(handle);
+ };
+ context.loadTileAtLoc = (loc, callback) => {
+ const handle = window.requestIdleCallback(() => {
+ _deferred2.delete(handle);
+ if (_connection && context.editableDataEnabled()) {
+ const cid = _connection.getConnectionId();
+ _connection.loadTileAtLoc(loc, afterLoad(cid, callback));
}
- }
- }
- function drawCustomDataItems(selection2) {
- var dataLayer = layers.layer("data");
- var hasData = dataLayer && dataLayer.hasData();
- var showsData = hasData && dataLayer.enabled();
- var ul = selection2.selectAll(".layer-list-data").data(dataLayer ? [0] : []);
- ul.exit().remove();
- var ulEnter = ul.enter().append("ul").attr("class", "layer-list layer-list-data");
- var liEnter = ulEnter.append("li").attr("class", "list-item-data");
- var labelEnter = liEnter.append("label").call(
- uiTooltip().title(() => _t.append("map_data.layers.custom.tooltip")).placement("top")
- );
- labelEnter.append("input").attr("type", "checkbox").on("change", function() {
- toggleLayer("data");
});
- labelEnter.append("span").call(_t.append("map_data.layers.custom.title"));
- liEnter.append("button").attr("class", "open-data-options").call(
- uiTooltip().title(() => _t.append("settings.custom_data.tooltip")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
- ).on("click", function(d3_event) {
- d3_event.preventDefault();
- editCustom();
- }).call(svgIcon("#iD-icon-more"));
- liEnter.append("button").attr("class", "zoom-to-data").call(
- uiTooltip().title(() => _t.append("map_data.layers.custom.zoom")).placement(_mainLocalizer.textDirection() === "rtl" ? "right" : "left")
- ).on("click", function(d3_event) {
- if (select_default2(this).classed("disabled"))
- return;
- d3_event.preventDefault();
- d3_event.stopPropagation();
- dataLayer.fitZoom();
- }).call(svgIcon("#iD-icon-framed-dot", "monochrome"));
- ul = ul.merge(ulEnter);
- ul.selectAll(".list-item-data").classed("active", showsData).selectAll("label").classed("deemphasize", !hasData).selectAll("input").property("disabled", !hasData).property("checked", showsData);
- ul.selectAll("button.zoom-to-data").classed("disabled", !hasData);
- }
- function editCustom() {
- context.container().call(settingsCustomData);
- }
- function customChanged(d) {
- var dataLayer = layers.layer("data");
- if (d && d.url) {
- dataLayer.url(d.url);
- } else if (d && d.fileList) {
- dataLayer.fileList(d.fileList);
+ _deferred2.add(handle);
+ };
+ context.loadEntity = (entityID, callback) => {
+ if (_connection) {
+ const cid = _connection.getConnectionId();
+ _connection.loadEntity(entityID, afterLoad(cid, callback));
+ _connection.loadEntityRelations(entityID, afterLoad(cid, callback));
}
- }
- function drawPanelItems(selection2) {
- var panelsListEnter = selection2.selectAll(".md-extras-list").data([0]).enter().append("ul").attr("class", "layer-list md-extras-list");
- var historyPanelLabelEnter = panelsListEnter.append("li").attr("class", "history-panel-toggle-item").append("label").call(
- uiTooltip().title(() => _t.append("map_data.history_panel.tooltip")).keys([uiCmd("\u2318\u21E7" + _t("info_panels.history.key"))]).placement("top")
- );
- historyPanelLabelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event) {
- d3_event.preventDefault();
- context.ui().info.toggle("history");
- });
- historyPanelLabelEnter.append("span").call(_t.append("map_data.history_panel.title"));
- var measurementPanelLabelEnter = panelsListEnter.append("li").attr("class", "measurement-panel-toggle-item").append("label").call(
- uiTooltip().title(() => _t.append("map_data.measurement_panel.tooltip")).keys([uiCmd("\u2318\u21E7" + _t("info_panels.measurement.key"))]).placement("top")
- );
- measurementPanelLabelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event) {
- d3_event.preventDefault();
- context.ui().info.toggle("measurement");
- });
- measurementPanelLabelEnter.append("span").call(_t.append("map_data.measurement_panel.title"));
- }
- context.layers().on("change.uiSectionDataLayers", section.reRender);
- context.map().on(
- "move.uiSectionDataLayers",
- debounce_default(function() {
- window.requestIdleCallback(section.reRender);
- }, 1e3)
- );
- return section;
- }
-
- // modules/ui/sections/map_features.js
- function uiSectionMapFeatures(context) {
- var _features = context.features().keys();
- var section = uiSection("map-features", context).label(() => _t.append("map_data.map_features")).disclosureContent(renderDisclosureContent).expandedByDefault(false);
- function renderDisclosureContent(selection2) {
- var container = selection2.selectAll(".layer-feature-list-container").data([0]);
- var containerEnter = container.enter().append("div").attr("class", "layer-feature-list-container");
- containerEnter.append("ul").attr("class", "layer-list layer-feature-list");
- var footer = containerEnter.append("div").attr("class", "feature-list-links section-footer");
- footer.append("a").attr("class", "feature-list-link").attr("role", "button").attr("href", "#").call(_t.append("issues.disable_all")).on("click", function(d3_event) {
- d3_event.preventDefault();
- context.features().disableAll();
- });
- footer.append("a").attr("class", "feature-list-link").attr("role", "button").attr("href", "#").call(_t.append("issues.enable_all")).on("click", function(d3_event) {
- d3_event.preventDefault();
- context.features().enableAll();
- });
- container = container.merge(containerEnter);
- container.selectAll(".layer-feature-list").call(drawListItems, _features, "checkbox", "feature", clickFeature, showsFeature);
- }
- function drawListItems(selection2, data, type2, name, change, active) {
- var items = selection2.selectAll("li").data(data);
- items.exit().remove();
- var enter = items.enter().append("li").call(
- uiTooltip().title(function(d) {
- var tip = _t.append(name + "." + d + ".tooltip");
- if (autoHiddenFeature(d)) {
- var msg = showsLayer("osm") ? _t.append("map_data.autohidden") : _t.append("map_data.osmhidden");
- return (selection3) => {
- selection3.call(tip);
- selection3.append("div").call(msg);
- };
+ };
+ context.zoomToEntity = (entityID, zoomTo) => {
+ context.loadEntity(entityID, (err, result) => {
+ if (err)
+ return;
+ if (zoomTo !== false) {
+ const entity = result.data.find((e3) => e3.id === entityID);
+ if (entity) {
+ _map.zoomTo(entity);
}
- return tip;
- }).placement("top")
- );
- var label = enter.append("label");
- label.append("input").attr("type", type2).attr("name", name).on("change", change);
- label.append("span").html(function(d) {
- return _t.html(name + "." + d + ".description");
- });
- items = items.merge(enter);
- items.classed("active", active).selectAll("input").property("checked", active).property("indeterminate", autoHiddenFeature);
- }
- function autoHiddenFeature(d) {
- return context.features().autoHidden(d);
- }
- function showsFeature(d) {
- return context.features().enabled(d);
- }
- function clickFeature(d3_event, d) {
- context.features().toggle(d);
- }
- function showsLayer(id2) {
- var layer = context.layers().layer(id2);
- return layer && layer.enabled();
- }
- context.features().on("change.map_features", section.reRender);
- return section;
- }
-
- // modules/ui/sections/map_style_options.js
- function uiSectionMapStyleOptions(context) {
- var section = uiSection("fill-area", context).label(() => _t.append("map_data.style_options")).disclosureContent(renderDisclosureContent).expandedByDefault(false);
- function renderDisclosureContent(selection2) {
- var container = selection2.selectAll(".layer-fill-list").data([0]);
- container.enter().append("ul").attr("class", "layer-list layer-fill-list").merge(container).call(drawListItems, context.map().areaFillOptions, "radio", "area_fill", setFill, isActiveFill);
- var container2 = selection2.selectAll(".layer-visual-diff-list").data([0]);
- container2.enter().append("ul").attr("class", "layer-list layer-visual-diff-list").merge(container2).call(drawListItems, ["highlight_edits"], "checkbox", "visual_diff", toggleHighlightEdited, function() {
- return context.surface().classed("highlight-edited");
- });
- }
- function drawListItems(selection2, data, type2, name, change, active) {
- var items = selection2.selectAll("li").data(data);
- items.exit().remove();
- var enter = items.enter().append("li").call(
- uiTooltip().title(function(d) {
- return _t.append(name + "." + d + ".tooltip");
- }).keys(function(d) {
- var key = d === "wireframe" ? _t("area_fill.wireframe.key") : null;
- if (d === "highlight_edits")
- key = _t("map_data.highlight_edits.key");
- return key ? [key] : null;
- }).placement("top")
- );
- var label = enter.append("label");
- label.append("input").attr("type", type2).attr("name", name).on("change", change);
- label.append("span").html(function(d) {
- return _t.html(name + "." + d + ".description");
+ }
});
- items = items.merge(enter);
- items.classed("active", active).selectAll("input").property("checked", active).property("indeterminate", false);
- }
- function isActiveFill(d) {
- return context.map().activeAreaFill() === d;
- }
- function toggleHighlightEdited(d3_event) {
- d3_event.preventDefault();
- context.map().toggleHighlightEdited();
- }
- function setFill(d3_event, d) {
- context.map().activeAreaFill(d);
- }
- context.map().on("changeHighlighting.ui_style, changeAreaFill.ui_style", section.reRender);
- return section;
- }
-
- // modules/ui/sections/photo_overlays.js
- function uiSectionPhotoOverlays(context) {
- var layers = context.layers();
- var section = uiSection("photo-overlays", context).label(() => _t.append("photo_overlays.title")).disclosureContent(renderDisclosureContent).expandedByDefault(false);
- function renderDisclosureContent(selection2) {
- var container = selection2.selectAll(".photo-overlay-container").data([0]);
- container.enter().append("div").attr("class", "photo-overlay-container").merge(container).call(drawPhotoItems).call(drawPhotoTypeItems).call(drawDateFilter).call(drawUsernameFilter);
- }
- function drawPhotoItems(selection2) {
- var photoKeys = context.photos().overlayLayerIDs();
- var photoLayers = layers.all().filter(function(obj) {
- return photoKeys.indexOf(obj.id) !== -1;
+ _map.on("drawn.zoomToEntity", () => {
+ if (!context.hasEntity(entityID))
+ return;
+ _map.on("drawn.zoomToEntity", null);
+ context.on("enter.zoomToEntity", null);
+ context.enter(modeSelect(context, [entityID]));
});
- var data = photoLayers.filter(function(obj) {
- return obj.layer.supported();
+ context.on("enter.zoomToEntity", () => {
+ if (_mode.id !== "browse") {
+ _map.on("drawn.zoomToEntity", null);
+ context.on("enter.zoomToEntity", null);
+ }
});
- function layerSupported(d) {
- return d.layer && d.layer.supported();
- }
- function layerEnabled(d) {
- return layerSupported(d) && d.layer.enabled();
+ };
+ let _minEditableZoom = 16;
+ context.minEditableZoom = function(val) {
+ if (!arguments.length)
+ return _minEditableZoom;
+ _minEditableZoom = val;
+ if (_connection) {
+ _connection.tileZoom(val);
}
- var ul = selection2.selectAll(".layer-list-photos").data([0]);
- ul = ul.enter().append("ul").attr("class", "layer-list layer-list-photos").merge(ul);
- var li = ul.selectAll(".list-item-photos").data(data);
- li.exit().remove();
- var liEnter = li.enter().append("li").attr("class", function(d) {
- var classes = "list-item-photos list-item-" + d.id;
- if (d.id === "mapillary-signs" || d.id === "mapillary-map-features") {
- classes += " indented";
+ return context;
+ };
+ context.maxCharsForTagKey = () => 255;
+ context.maxCharsForTagValue = () => 255;
+ context.maxCharsForRelationRole = () => 255;
+ context.cleanTagKey = (val) => utilCleanOsmString(val, context.maxCharsForTagKey());
+ context.cleanTagValue = (val) => utilCleanOsmString(val, context.maxCharsForTagValue());
+ context.cleanRelationRole = (val) => utilCleanOsmString(val, context.maxCharsForRelationRole());
+ let _inIntro = false;
+ context.inIntro = function(val) {
+ if (!arguments.length)
+ return _inIntro;
+ _inIntro = val;
+ return context;
+ };
+ context.save = () => {
+ if (_inIntro || context.container().select(".modal").size())
+ return;
+ let canSave;
+ if (_mode && _mode.id === "save") {
+ canSave = false;
+ if (services.osm && services.osm.isChangesetInflight()) {
+ _history.clearSaved();
+ return;
}
- return classes;
- });
- var labelEnter = liEnter.append("label").each(function(d) {
- var titleID;
- if (d.id === "mapillary-signs")
- titleID = "mapillary.signs.tooltip";
- else if (d.id === "mapillary")
- titleID = "mapillary_images.tooltip";
- else if (d.id === "kartaview")
- titleID = "kartaview_images.tooltip";
- else
- titleID = d.id.replace(/-/g, "_") + ".tooltip";
- select_default2(this).call(
- uiTooltip().title(() => _t.append(titleID)).placement("top")
- );
- });
- labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d) {
- toggleLayer(d.id);
- });
- labelEnter.append("span").html(function(d) {
- var id2 = d.id;
- if (id2 === "mapillary-signs")
- id2 = "photo_overlays.traffic_signs";
- return _t.html(id2.replace(/-/g, "_") + ".title");
- });
- li.merge(liEnter).classed("active", layerEnabled).selectAll("input").property("checked", layerEnabled);
- }
- function drawPhotoTypeItems(selection2) {
- var data = context.photos().allPhotoTypes();
- function typeEnabled(d) {
- return context.photos().showsPhotoType(d);
+ } else {
+ canSave = context.selectedIDs().every((id2) => {
+ const entity = context.hasEntity(id2);
+ return entity && !entity.isDegenerate();
+ });
}
- var ul = selection2.selectAll(".layer-list-photo-types").data([0]);
- ul.exit().remove();
- ul = ul.enter().append("ul").attr("class", "layer-list layer-list-photo-types").merge(ul);
- var li = ul.selectAll(".list-item-photo-types").data(context.photos().shouldFilterByPhotoType() ? data : []);
- li.exit().remove();
- var liEnter = li.enter().append("li").attr("class", function(d) {
- return "list-item-photo-types list-item-" + d;
- });
- var labelEnter = liEnter.append("label").each(function(d) {
- select_default2(this).call(
- uiTooltip().title(() => _t.append("photo_overlays.photo_type." + d + ".tooltip")).placement("top")
- );
- });
- labelEnter.append("input").attr("type", "checkbox").on("change", function(d3_event, d) {
- context.photos().togglePhotoType(d);
- });
- labelEnter.append("span").html(function(d) {
- return _t.html("photo_overlays.photo_type." + d + ".title");
- });
- li.merge(liEnter).classed("active", typeEnabled).selectAll("input").property("checked", typeEnabled);
- }
- function drawDateFilter(selection2) {
- var data = context.photos().dateFilters();
- function filterEnabled(d) {
- return context.photos().dateFilterValue(d);
+ if (canSave) {
+ _history.save();
}
- var ul = selection2.selectAll(".layer-list-date-filter").data([0]);
- ul.exit().remove();
- ul = ul.enter().append("ul").attr("class", "layer-list layer-list-date-filter").merge(ul);
- var li = ul.selectAll(".list-item-date-filter").data(context.photos().shouldFilterByDate() ? data : []);
- li.exit().remove();
- var liEnter = li.enter().append("li").attr("class", "list-item-date-filter");
- var labelEnter = liEnter.append("label").each(function(d) {
- select_default2(this).call(
- uiTooltip().title(() => _t.append("photo_overlays.date_filter." + d + ".tooltip")).placement("top")
- );
- });
- labelEnter.append("span").each(function(d) {
- _t.append("photo_overlays.date_filter." + d + ".title")(select_default2(this));
- });
- labelEnter.append("input").attr("type", "date").attr("class", "list-item-input").attr("placeholder", _t("units.year_month_day")).call(utilNoAuto).each(function(d) {
- utilGetSetValue(select_default2(this), context.photos().dateFilterValue(d) || "");
- }).on("change", function(d3_event, d) {
- var value = utilGetSetValue(select_default2(this)).trim();
- context.photos().setDateFilter(d, value, true);
- li.selectAll("input").each(function(d2) {
- utilGetSetValue(select_default2(this), context.photos().dateFilterValue(d2) || "");
- });
- });
- li = li.merge(liEnter).classed("active", filterEnabled);
+ if (_history.hasChanges()) {
+ return _t("save.unsaved_changes");
+ }
+ };
+ context.debouncedSave = debounce_default(context.save, 350);
+ function withDebouncedSave(fn) {
+ return function() {
+ const result = fn.apply(_history, arguments);
+ context.debouncedSave();
+ return result;
+ };
}
- function drawUsernameFilter(selection2) {
- function filterEnabled() {
- return context.photos().usernames();
+ context.hasEntity = (id2) => _history.graph().hasEntity(id2);
+ context.entity = (id2) => _history.graph().entity(id2);
+ let _mode;
+ context.mode = () => _mode;
+ context.enter = (newMode) => {
+ if (_mode) {
+ _mode.exit();
+ dispatch14.call("exit", this, _mode);
}
- var ul = selection2.selectAll(".layer-list-username-filter").data([0]);
- ul.exit().remove();
- ul = ul.enter().append("ul").attr("class", "layer-list layer-list-username-filter").merge(ul);
- var li = ul.selectAll(".list-item-username-filter").data(context.photos().shouldFilterByUsername() ? ["username-filter"] : []);
- li.exit().remove();
- var liEnter = li.enter().append("li").attr("class", "list-item-username-filter");
- var labelEnter = liEnter.append("label").each(function() {
- select_default2(this).call(
- uiTooltip().title(() => _t.append("photo_overlays.username_filter.tooltip")).placement("top")
- );
+ _mode = newMode;
+ _mode.enter();
+ dispatch14.call("enter", this, _mode);
+ };
+ context.selectedIDs = () => _mode && _mode.selectedIDs && _mode.selectedIDs() || [];
+ context.activeID = () => _mode && _mode.activeID && _mode.activeID();
+ let _selectedNoteID;
+ context.selectedNoteID = function(noteID) {
+ if (!arguments.length)
+ return _selectedNoteID;
+ _selectedNoteID = noteID;
+ return context;
+ };
+ let _selectedErrorID;
+ context.selectedErrorID = function(errorID) {
+ if (!arguments.length)
+ return _selectedErrorID;
+ _selectedErrorID = errorID;
+ return context;
+ };
+ context.install = (behavior) => context.surface().call(behavior);
+ context.uninstall = (behavior) => context.surface().call(behavior.off);
+ let _copyGraph;
+ context.copyGraph = () => _copyGraph;
+ let _copyIDs = [];
+ context.copyIDs = function(val) {
+ if (!arguments.length)
+ return _copyIDs;
+ _copyIDs = val;
+ _copyGraph = _history.graph();
+ return context;
+ };
+ let _copyLonLat;
+ context.copyLonLat = function(val) {
+ if (!arguments.length)
+ return _copyLonLat;
+ _copyLonLat = val;
+ return context;
+ };
+ let _background;
+ context.background = () => _background;
+ let _features;
+ context.features = () => _features;
+ context.hasHiddenConnections = (id2) => {
+ const graph = _history.graph();
+ const entity = graph.entity(id2);
+ return _features.hasHiddenConnections(entity, graph);
+ };
+ let _photos;
+ context.photos = () => _photos;
+ let _map;
+ context.map = () => _map;
+ context.layers = () => _map.layers();
+ context.surface = () => _map.surface;
+ context.editableDataEnabled = () => _map.editableDataEnabled();
+ context.surfaceRect = () => _map.surface.node().getBoundingClientRect();
+ context.editable = () => {
+ const mode = context.mode();
+ if (!mode || mode.id === "save")
+ return false;
+ return _map.editableDataEnabled();
+ };
+ let _debugFlags = {
+ tile: false,
+ // tile boundaries
+ collision: false,
+ // label collision bounding boxes
+ imagery: false,
+ // imagery bounding polygons
+ target: false,
+ // touch targets
+ downloaded: false
+ // downloaded data from osm
+ };
+ context.debugFlags = () => _debugFlags;
+ context.getDebug = (flag) => flag && _debugFlags[flag];
+ context.setDebug = function(flag, val) {
+ if (arguments.length === 1)
+ val = true;
+ _debugFlags[flag] = val;
+ dispatch14.call("change");
+ return context;
+ };
+ let _container = select_default2(null);
+ context.container = function(val) {
+ if (!arguments.length)
+ return _container;
+ _container = val;
+ _container.classed("ideditor", true);
+ return context;
+ };
+ context.containerNode = function(val) {
+ if (!arguments.length)
+ return context.container().node();
+ context.container(select_default2(val));
+ return context;
+ };
+ let _embed;
+ context.embed = function(val) {
+ if (!arguments.length)
+ return _embed;
+ _embed = val;
+ return context;
+ };
+ let _assetPath = "";
+ context.assetPath = function(val) {
+ if (!arguments.length)
+ return _assetPath;
+ _assetPath = val;
+ _mainFileFetcher.assetPath(val);
+ return context;
+ };
+ let _assetMap = {};
+ context.assetMap = function(val) {
+ if (!arguments.length)
+ return _assetMap;
+ _assetMap = val;
+ _mainFileFetcher.assetMap(val);
+ return context;
+ };
+ context.asset = (val) => {
+ if (/^http(s)?:\/\//i.test(val))
+ return val;
+ const filename = _assetPath + val;
+ return _assetMap[filename] || filename;
+ };
+ context.imagePath = (val) => context.asset(`img/${val}`);
+ context.reset = context.flush = () => {
+ context.debouncedSave.cancel();
+ Array.from(_deferred2).forEach((handle) => {
+ window.cancelIdleCallback(handle);
+ _deferred2.delete(handle);
});
- labelEnter.append("span").call(_t.append("photo_overlays.username_filter.title"));
- labelEnter.append("input").attr("type", "text").attr("class", "list-item-input").call(utilNoAuto).property("value", usernameValue).on("change", function() {
- var value = select_default2(this).property("value");
- context.photos().setUsernameFilter(value, true);
- select_default2(this).property("value", usernameValue);
+ Object.values(services).forEach((service) => {
+ if (service && typeof service.reset === "function") {
+ service.reset(context);
+ }
});
- li.merge(liEnter).classed("active", filterEnabled);
- function usernameValue() {
- var usernames = context.photos().usernames();
- if (usernames)
- return usernames.join("; ");
- return usernames;
- }
- }
- function toggleLayer(which) {
- setLayer(which, !showsLayer(which));
- }
- function showsLayer(which) {
- var layer = layers.layer(which);
- if (layer) {
- return layer.enabled();
+ context.changeset = null;
+ _validator.reset();
+ _features.reset();
+ _history.reset();
+ _uploader.reset();
+ context.container().select(".inspector-wrap *").remove();
+ return context;
+ };
+ context.projection = geoRawMercator();
+ context.curtainProjection = geoRawMercator();
+ context.init = () => {
+ instantiateInternal();
+ initializeDependents();
+ return context;
+ function instantiateInternal() {
+ _history = coreHistory(context);
+ context.graph = _history.graph;
+ context.pauseChangeDispatch = _history.pauseChangeDispatch;
+ context.resumeChangeDispatch = _history.resumeChangeDispatch;
+ context.perform = withDebouncedSave(_history.perform);
+ context.replace = withDebouncedSave(_history.replace);
+ context.pop = withDebouncedSave(_history.pop);
+ context.overwrite = withDebouncedSave(_history.overwrite);
+ context.undo = withDebouncedSave(_history.undo);
+ context.redo = withDebouncedSave(_history.redo);
+ _validator = coreValidator(context);
+ _uploader = coreUploader(context);
+ _background = rendererBackground(context);
+ _features = rendererFeatures(context);
+ _map = rendererMap(context);
+ _photos = rendererPhotos(context);
+ _ui = uiInit(context);
}
- return false;
- }
- function setLayer(which, enabled) {
- var layer = layers.layer(which);
- if (layer) {
- layer.enabled(enabled);
+ function initializeDependents() {
+ if (context.initialHashParams.presets) {
+ _mainPresetIndex.addablePresetIDs(new Set(context.initialHashParams.presets.split(",")));
+ }
+ if (context.initialHashParams.locale) {
+ _mainLocalizer.preferredLocaleCodes(context.initialHashParams.locale);
+ }
+ _mainLocalizer.ensureLoaded();
+ _mainPresetIndex.ensureLoaded();
+ _background.ensureLoaded();
+ Object.values(services).forEach((service) => {
+ if (service && typeof service.init === "function") {
+ service.init();
+ }
+ });
+ _map.init();
+ _validator.init();
+ _features.init();
+ if (services.maprules && context.initialHashParams.maprules) {
+ json_default(context.initialHashParams.maprules).then((mapcss) => {
+ services.maprules.init();
+ mapcss.forEach((mapcssSelector) => services.maprules.addRule(mapcssSelector));
+ }).catch(() => {
+ });
+ }
+ if (!context.container().empty()) {
+ _ui.ensureLoaded().then(() => {
+ _background.init();
+ _photos.init();
+ });
+ }
}
- }
- context.layers().on("change.uiSectionPhotoOverlays", section.reRender);
- context.photos().on("change.uiSectionPhotoOverlays", section.reRender);
- return section;
- }
-
- // modules/ui/panes/map_data.js
- function uiPaneMapData(context) {
- var mapDataPane = uiPane("map-data", context).key(_t("map_data.key")).label(_t.append("map_data.title")).description(_t.append("map_data.description")).iconName("iD-icon-data").sections([
- uiSectionDataLayers(context),
- uiSectionPhotoOverlays(context),
- uiSectionMapStyleOptions(context),
- uiSectionMapFeatures(context)
- ]);
- return mapDataPane;
- }
-
- // modules/ui/panes/preferences.js
- function uiPanePreferences(context) {
- let preferencesPane = uiPane("preferences", context).key(_t("preferences.key")).label(_t.append("preferences.title")).description(_t.append("preferences.description")).iconName("fas-user-cog").sections([
- uiSectionPrivacy(context)
- ]);
- return preferencesPane;
+ };
+ return context;
}
- // modules/ui/init.js
- function uiInit(context) {
- var _initCounter = 0;
- var _needWidth = {};
- var _lastPointerType;
- function render(container) {
- container.on("click.ui", function(d3_event) {
- if (d3_event.button !== 0)
- return;
- if (!d3_event.composedPath)
- return;
- var isOkayTarget = d3_event.composedPath().some(function(node) {
- return node.nodeType === 1 && // clicking <input> focuses it and/or changes a value
- (node.nodeName === "INPUT" || // clicking <label> affects its <input> by default
- node.nodeName === "LABEL" || // clicking <a> opens a hyperlink by default
- node.nodeName === "A");
- });
- if (isOkayTarget)
- return;
- d3_event.preventDefault();
- });
- var detected = utilDetect();
- if ("GestureEvent" in window && // Listening for gesture events on iOS 13.4+ breaks double-tapping,
- // but we only need to do this on desktop Safari anyway. – #7694
- !detected.isMobileWebKit) {
- container.on("gesturestart.ui gesturechange.ui gestureend.ui", function(d3_event) {
- d3_event.preventDefault();
- });
- }
- if ("PointerEvent" in window) {
- select_default2(window).on("pointerdown.ui pointerup.ui", function(d3_event) {
- var pointerType = d3_event.pointerType || "mouse";
- if (_lastPointerType !== pointerType) {
- _lastPointerType = pointerType;
- container.attr("pointer", pointerType);
- }
- }, true);
- } else {
- _lastPointerType = "mouse";
- container.attr("pointer", "mouse");
- }
- container.attr("lang", _mainLocalizer.localeCode()).attr("dir", _mainLocalizer.textDirection());
- container.call(uiFullScreen(context));
- var map2 = context.map();
- map2.redrawEnable(false);
- map2.on("hitMinZoom.ui", function() {
- ui.flash.iconName("#iD-icon-no").label(_t.append("cannot_zoom"))();
+ // modules/services/nominatim.js
+ var apibase = nominatimApiUrl;
+ var _inflight = {};
+ var _nominatimCache;
+ var nominatim_default = {
+ init: function() {
+ _inflight = {};
+ _nominatimCache = new import_rbush7.default();
+ },
+ reset: function() {
+ Object.values(_inflight).forEach(function(controller) {
+ controller.abort();
});
- container.append("svg").attr("id", "ideditor-defs").call(ui.svgDefs);
- container.append("div").attr("class", "sidebar").call(ui.sidebar);
- var content = container.append("div").attr("class", "main-content active");
- content.append("div").attr("class", "top-toolbar-wrap").append("div").attr("class", "top-toolbar fillD").call(uiTopToolbar(context));
- content.append("div").attr("class", "main-map").attr("dir", "ltr").call(map2);
- var overMap = content.append("div").attr("class", "over-map");
- overMap.append("div").attr("class", "select-trap").text("t");
- overMap.call(uiMapInMap(context)).call(uiNotice(context));
- overMap.append("div").attr("class", "spinner").call(uiSpinner(context));
- var controlsWrap = overMap.append("div").attr("class", "map-controls-wrap");
- var controls = controlsWrap.append("div").attr("class", "map-controls");
- controls.append("div").attr("class", "map-control zoombuttons").call(uiZoom(context));
- controls.append("div").attr("class", "map-control zoom-to-selection-control").call(uiZoomToSelection(context));
- controls.append("div").attr("class", "map-control geolocate-control").call(uiGeolocate(context));
- controlsWrap.on("wheel.mapControls", function(d3_event) {
- if (!d3_event.deltaX) {
- controlsWrap.node().scrollTop += d3_event.deltaY;
+ _inflight = {};
+ _nominatimCache = new import_rbush7.default();
+ },
+ countryCode: function(location, callback) {
+ this.reverse(location, function(err, result) {
+ if (err) {
+ return callback(err);
+ } else if (result.address) {
+ return callback(null, result.address.country_code);
+ } else {
+ return callback("Unable to geocode", null);
}
});
- var panes = overMap.append("div").attr("class", "map-panes");
- var uiPanes = [
- uiPaneBackground(context),
- uiPaneMapData(context),
- uiPaneIssues(context),
- uiPanePreferences(context),
- uiPaneHelp(context)
- ];
- uiPanes.forEach(function(pane) {
- controls.append("div").attr("class", "map-control map-pane-control " + pane.id + "-control").call(pane.renderToggleButton);
- panes.call(pane.renderPane);
- });
- ui.info = uiInfo(context);
- overMap.call(ui.info);
- overMap.append("div").attr("class", "photoviewer").classed("al", true).classed("hide", true).call(ui.photoviewer);
- overMap.append("div").attr("class", "attribution-wrap").attr("dir", "ltr").call(uiAttribution(context));
- var about = content.append("div").attr("class", "map-footer");
- about.append("div").attr("class", "api-status").call(uiStatus(context));
- var footer = about.append("div").attr("class", "map-footer-bar fillD");
- footer.append("div").attr("class", "flash-wrap footer-hide");
- var footerWrap = footer.append("div").attr("class", "main-footer-wrap footer-show");
- footerWrap.append("div").attr("class", "scale-block").call(uiScale(context));
- var aboutList = footerWrap.append("div").attr("class", "info-block").append("ul").attr("class", "map-footer-list");
- aboutList.append("li").attr("class", "user-list").call(uiContributors(context));
- var apiConnections = context.connection().apiConnections();
- if (apiConnections && apiConnections.length > 1) {
- aboutList.append("li").attr("class", "source-switch").call(
- uiSourceSwitch(context).keys(apiConnections)
- );
- }
- aboutList.append("li").attr("class", "issues-info").call(uiIssuesInfo(context));
- aboutList.append("li").attr("class", "feature-warning").call(uiFeatureInfo(context));
- var issueLinks = aboutList.append("li");
- issueLinks.append("a").attr("target", "_blank").attr("href", "https://github.com/openstreetmap/iD/issues").attr("aria-label", _t("report_a_bug")).call(svgIcon("#iD-icon-bug", "light")).call(uiTooltip().title(() => _t.append("report_a_bug")).placement("top"));
- issueLinks.append("a").attr("target", "_blank").attr("href", "https://github.com/openstreetmap/iD/blob/develop/CONTRIBUTING.md#translating").attr("aria-label", _t("help_translate")).call(svgIcon("#iD-icon-translate", "light")).call(uiTooltip().title(() => _t.append("help_translate")).placement("top"));
- aboutList.append("li").attr("class", "version").call(uiVersion(context));
- if (!context.embed()) {
- aboutList.call(uiAccount(context));
- }
- ui.onResize();
- map2.redrawEnable(true);
- ui.hash = behaviorHash(context);
- ui.hash();
- if (!ui.hash.hadLocation) {
- map2.centerZoom([0, 0], 2);
+ },
+ reverse: function(loc, callback) {
+ var cached = _nominatimCache.search(
+ { minX: loc[0], minY: loc[1], maxX: loc[0], maxY: loc[1] }
+ );
+ if (cached.length > 0) {
+ if (callback)
+ callback(null, cached[0].data);
+ return;
}
- window.onbeforeunload = function() {
- return context.save();
- };
- window.onunload = function() {
- context.history().unlock();
+ var params = { zoom: 13, format: "json", addressdetails: 1, lat: loc[1], lon: loc[0] };
+ var url = apibase + "reverse?" + utilQsString(params);
+ if (_inflight[url])
+ return;
+ var controller = new AbortController();
+ _inflight[url] = controller;
+ json_default(url, {
+ signal: controller.signal,
+ headers: {
+ "Accept-Language": _mainLocalizer.localeCodes().join(",")
+ }
+ }).then(function(result) {
+ delete _inflight[url];
+ if (result && result.error) {
+ throw new Error(result.error);
+ }
+ var extent = geoExtent(loc).padByMeters(200);
+ _nominatimCache.insert(Object.assign(extent.bbox(), { data: result }));
+ if (callback)
+ callback(null, result);
+ }).catch(function(err) {
+ delete _inflight[url];
+ if (err.name === "AbortError")
+ return;
+ if (callback)
+ callback(err.message);
+ });
+ },
+ search: function(val, callback) {
+ const params = {
+ q: val,
+ limit: 10,
+ format: "json"
};
- select_default2(window).on("resize.editor", function() {
- ui.onResize();
+ var url = apibase + "search?" + utilQsString(params);
+ if (_inflight[url])
+ return;
+ var controller = new AbortController();
+ _inflight[url] = controller;
+ json_default(url, {
+ signal: controller.signal,
+ headers: {
+ "Accept-Language": _mainLocalizer.localeCodes().join(",")
+ }
+ }).then(function(result) {
+ delete _inflight[url];
+ if (result && result.error) {
+ throw new Error(result.error);
+ }
+ if (callback)
+ callback(null, result);
+ }).catch(function(err) {
+ delete _inflight[url];
+ if (err.name === "AbortError")
+ return;
+ if (callback)
+ callback(err.message);
});
- var panPixels = 80;
- context.keybinding().on("\u232B", function(d3_event) {
- d3_event.preventDefault();
- }).on([_t("sidebar.key"), "`", "\xB2", "@"], ui.sidebar.toggle).on("\u2190", pan([panPixels, 0])).on("\u2191", pan([0, panPixels])).on("\u2192", pan([-panPixels, 0])).on("\u2193", pan([0, -panPixels])).on(uiCmd("\u2325\u2190"), pan([map2.dimensions()[0], 0])).on(uiCmd("\u2325\u2191"), pan([0, map2.dimensions()[1]])).on(uiCmd("\u2325\u2192"), pan([-map2.dimensions()[0], 0])).on(uiCmd("\u2325\u2193"), pan([0, -map2.dimensions()[1]])).on(uiCmd("\u2318" + _t("background.key")), function quickSwitch(d3_event) {
- if (d3_event) {
- d3_event.stopImmediatePropagation();
- d3_event.preventDefault();
+ }
+ };
+
+ // node_modules/name-suggestion-index/lib/matcher.js
+ var import_which_polygon4 = __toESM(require_which_polygon(), 1);
+
+ // node_modules/name-suggestion-index/lib/simplify.js
+ var import_diacritics3 = __toESM(require_diacritics(), 1);
+ function simplify2(str2) {
+ if (typeof str2 !== "string")
+ return "";
+ return import_diacritics3.default.remove(
+ str2.replace(/&/g, "and").replace(/İ/ig, "i").replace(/[\s\-=_!"#%'*{},.\/:;?\(\)\[\]@\\$\^*+<>«»~`’\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2000-\u206f\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e7f\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\ufeff\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g, "").toLowerCase()
+ );
+ }
+
+ // node_modules/name-suggestion-index/config/matchGroups.json
+ var matchGroups_default = {
+ matchGroups: {
+ adult_gaming_centre: [
+ "amenity/casino",
+ "amenity/gambling",
+ "leisure/adult_gaming_centre"
+ ],
+ beauty: [
+ "shop/beauty",
+ "shop/hairdresser_supply"
+ ],
+ bed: [
+ "shop/bed",
+ "shop/furniture"
+ ],
+ beverages: [
+ "shop/alcohol",
+ "shop/beer",
+ "shop/beverages",
+ "shop/kiosk",
+ "shop/wine"
+ ],
+ camping: [
+ "tourism/camp_site",
+ "tourism/caravan_site"
+ ],
+ car_parts: [
+ "shop/car_parts",
+ "shop/car_repair",
+ "shop/tires",
+ "shop/tyres"
+ ],
+ clinic: [
+ "amenity/clinic",
+ "amenity/doctors",
+ "healthcare/clinic",
+ "healthcare/laboratory",
+ "healthcare/physiotherapist",
+ "healthcare/sample_collection",
+ "healthcare/dialysis"
+ ],
+ convenience: [
+ "shop/beauty",
+ "shop/chemist",
+ "shop/convenience",
+ "shop/cosmetics",
+ "shop/grocery",
+ "shop/kiosk",
+ "shop/newsagent",
+ "shop/perfumery"
+ ],
+ coworking: [
+ "amenity/coworking_space",
+ "office/coworking",
+ "office/coworking_space"
+ ],
+ dentist: [
+ "amenity/dentist",
+ "amenity/doctors",
+ "healthcare/dentist"
+ ],
+ electronics: [
+ "office/telecommunication",
+ "shop/computer",
+ "shop/electronics",
+ "shop/hifi",
+ "shop/kiosk",
+ "shop/mobile",
+ "shop/mobile_phone",
+ "shop/telecommunication"
+ ],
+ fabric: [
+ "shop/fabric",
+ "shop/haberdashery",
+ "shop/sewing"
+ ],
+ fashion: [
+ "shop/accessories",
+ "shop/bag",
+ "shop/boutique",
+ "shop/clothes",
+ "shop/department_store",
+ "shop/fashion",
+ "shop/fashion_accessories",
+ "shop/sports",
+ "shop/shoes"
+ ],
+ financial: [
+ "amenity/bank",
+ "office/accountant",
+ "office/financial",
+ "office/financial_advisor",
+ "office/tax_advisor",
+ "shop/tax"
+ ],
+ fitness: [
+ "leisure/fitness_centre",
+ "leisure/fitness_center",
+ "leisure/sports_centre",
+ "leisure/sports_center"
+ ],
+ food: [
+ "amenity/bar",
+ "amenity/cafe",
+ "amenity/fast_food",
+ "amenity/ice_cream",
+ "amenity/pub",
+ "amenity/restaurant",
+ "shop/bakery",
+ "shop/candy",
+ "shop/chocolate",
+ "shop/coffee",
+ "shop/confectionary",
+ "shop/confectionery",
+ "shop/food",
+ "shop/kiosk",
+ "shop/ice_cream",
+ "shop/pastry",
+ "shop/tea"
+ ],
+ fuel: [
+ "amenity/fuel",
+ "shop/gas",
+ "shop/convenience;gas",
+ "shop/gas;convenience"
+ ],
+ gift: [
+ "shop/gift",
+ "shop/card",
+ "shop/cards",
+ "shop/kiosk",
+ "shop/stationery"
+ ],
+ hardware: [
+ "shop/bathroom_furnishing",
+ "shop/carpet",
+ "shop/diy",
+ "shop/doityourself",
+ "shop/doors",
+ "shop/electrical",
+ "shop/flooring",
+ "shop/hardware",
+ "shop/hardware_store",
+ "shop/power_tools",
+ "shop/tool_hire",
+ "shop/tools",
+ "shop/trade"
+ ],
+ health_food: [
+ "shop/health",
+ "shop/health_food",
+ "shop/herbalist",
+ "shop/nutrition_supplements"
+ ],
+ hobby: [
+ "shop/electronics",
+ "shop/hobby",
+ "shop/books",
+ "shop/games",
+ "shop/collector",
+ "shop/toys",
+ "shop/model",
+ "shop/video_games",
+ "shop/anime"
+ ],
+ hospital: [
+ "amenity/doctors",
+ "amenity/hospital",
+ "healthcare/hospital"
+ ],
+ houseware: [
+ "shop/houseware",
+ "shop/interior_decoration"
+ ],
+ lifeboat_station: [
+ "amenity/lifeboat_station",
+ "emergency/lifeboat_station",
+ "emergency/marine_rescue"
+ ],
+ lodging: [
+ "tourism/hotel",
+ "tourism/motel"
+ ],
+ money_transfer: [
+ "amenity/money_transfer",
+ "shop/money_transfer"
+ ],
+ office_supplies: [
+ "shop/office_supplies",
+ "shop/stationary",
+ "shop/stationery"
+ ],
+ outdoor: [
+ "shop/clothes",
+ "shop/outdoor",
+ "shop/sports"
+ ],
+ parcel_locker: [
+ "amenity/parcel_locker",
+ "amenity/vending_machine"
+ ],
+ pharmacy: [
+ "amenity/doctors",
+ "amenity/pharmacy",
+ "healthcare/pharmacy"
+ ],
+ playground: [
+ "amenity/theme_park",
+ "leisure/amusement_arcade",
+ "leisure/playground"
+ ],
+ rental: [
+ "amenity/bicycle_rental",
+ "amenity/boat_rental",
+ "amenity/car_rental",
+ "amenity/truck_rental",
+ "amenity/vehicle_rental",
+ "shop/kiosk",
+ "shop/rental"
+ ],
+ school: [
+ "amenity/childcare",
+ "amenity/college",
+ "amenity/kindergarten",
+ "amenity/language_school",
+ "amenity/prep_school",
+ "amenity/school",
+ "amenity/university"
+ ],
+ storage: [
+ "shop/storage_units",
+ "shop/storage_rental"
+ ],
+ substation: [
+ "power/station",
+ "power/substation",
+ "power/sub_station"
+ ],
+ supermarket: [
+ "shop/food",
+ "shop/frozen_food",
+ "shop/greengrocer",
+ "shop/grocery",
+ "shop/supermarket",
+ "shop/wholesale"
+ ],
+ variety_store: [
+ "shop/variety_store",
+ "shop/discount",
+ "shop/convenience"
+ ],
+ vending: [
+ "amenity/vending_machine",
+ "shop/kiosk",
+ "shop/vending_machine"
+ ],
+ weight_loss: [
+ "amenity/clinic",
+ "amenity/doctors",
+ "amenity/weight_clinic",
+ "healthcare/counselling",
+ "leisure/fitness_centre",
+ "office/therapist",
+ "shop/beauty",
+ "shop/diet",
+ "shop/food",
+ "shop/health_food",
+ "shop/herbalist",
+ "shop/nutrition",
+ "shop/nutrition_supplements",
+ "shop/weight_loss"
+ ],
+ wholesale: [
+ "shop/wholesale",
+ "shop/supermarket",
+ "shop/department_store"
+ ]
+ }
+ };
+
+ // node_modules/name-suggestion-index/config/genericWords.json
+ var genericWords_default = {
+ genericWords: [
+ "^(barn|bazaa?r|bench|bou?tique|building|casa|church)$",
+ "^(baseball|basketball|football|soccer|softball|tennis(halle)?)\\s?(field|court)?$",
+ "^(club|green|out|ware)\\s?house$",
+ "^(driveway|el \xE1rbol|fountain|generic|golf|government|graveyard)$",
+ "^(fixme|n\\s?\\/?\\s?a|name|no\\s?name|none|null|temporary|test|unknown)$",
+ "^(hofladen|librairie|magazine?|maison)$",
+ "^(mobile home|skate)?\\s?park$",
+ "^(obuwie|pond|pool|sale|shops?|sklep|stores?)$",
+ "^\\?+$",
+ "^private$",
+ "^tattoo( studio)?$",
+ "^windmill$",
+ "^\u0446\u0435\u0440\u043A\u043E\u0432\u043D\u0430\u044F( \u043B\u0430\u0432\u043A\u0430)?$"
+ ]
+ };
+
+ // node_modules/name-suggestion-index/config/trees.json
+ var trees_default = {
+ trees: {
+ brands: {
+ emoji: "\u{1F354}",
+ mainTag: "brand:wikidata",
+ sourceTags: ["brand", "name"],
+ nameTags: {
+ primary: "^(name|name:\\w+)$",
+ alternate: "^(brand|brand:\\w+|operator|operator:\\w+|\\w+_name|\\w+_name:\\w+)$"
}
- var previousBackground = context.background().findSource(corePreferences("background-last-used-toggle"));
- if (previousBackground) {
- var currentBackground = context.background().baseLayerSource();
- corePreferences("background-last-used-toggle", currentBackground.id);
- corePreferences("background-last-used", previousBackground.id);
- context.background().baseLayerSource(previousBackground);
+ },
+ flags: {
+ emoji: "\u{1F6A9}",
+ mainTag: "flag:wikidata",
+ nameTags: {
+ primary: "^(flag:name|flag:name:\\w+)$",
+ alternate: "^(country|country:\\w+|flag|flag:\\w+|subject|subject:\\w+)$"
}
- }).on(_t("area_fill.wireframe.key"), function toggleWireframe(d3_event) {
- d3_event.preventDefault();
- d3_event.stopPropagation();
- context.map().toggleWireframe();
- }).on(uiCmd("\u2325" + _t("area_fill.wireframe.key")), function toggleOsmData(d3_event) {
- d3_event.preventDefault();
- d3_event.stopPropagation();
- var mode = context.mode();
- if (mode && /^draw/.test(mode.id))
- return;
- var layer = context.layers().layer("osm");
- if (layer) {
- layer.enabled(!layer.enabled());
- if (!layer.enabled()) {
- context.enter(modeBrowse(context));
- }
+ },
+ operators: {
+ emoji: "\u{1F4BC}",
+ mainTag: "operator:wikidata",
+ sourceTags: ["operator"],
+ nameTags: {
+ primary: "^(name|name:\\w+|operator|operator:\\w+)$",
+ alternate: "^(brand|brand:\\w+|\\w+_name|\\w+_name:\\w+)$"
}
- }).on(_t("map_data.highlight_edits.key"), function toggleHighlightEdited(d3_event) {
- d3_event.preventDefault();
- context.map().toggleHighlightEdited();
- });
- context.on("enter.editor", function(entered) {
- container.classed("mode-" + entered.id, true);
- }).on("exit.editor", function(exited) {
- container.classed("mode-" + exited.id, false);
- });
- context.enter(modeBrowse(context));
- if (!_initCounter++) {
- if (!ui.hash.startWalkthrough) {
- context.container().call(uiSplash(context)).call(uiRestore(context));
+ },
+ transit: {
+ emoji: "\u{1F687}",
+ mainTag: "network:wikidata",
+ sourceTags: ["network"],
+ nameTags: {
+ primary: "^network$",
+ alternate: "^(operator|operator:\\w+|network:\\w+|\\w+_name|\\w+_name:\\w+)$"
}
- context.container().call(ui.shortcuts);
- }
- var osm = context.connection();
- var auth = uiLoading(context).message(_t.html("loading_auth")).blocking(true);
- if (osm && auth) {
- osm.on("authLoading.ui", function() {
- context.container().call(auth);
- }).on("authDone.ui", function() {
- auth.close();
- });
- }
- _initCounter++;
- if (ui.hash.startWalkthrough) {
- ui.hash.startWalkthrough = false;
- context.container().call(uiIntro(context));
- }
- function pan(d) {
- return function(d3_event) {
- if (d3_event.shiftKey)
- return;
- if (context.container().select(".combobox").size())
- return;
- d3_event.preventDefault();
- context.map().pan(d, 100);
- };
}
}
- let ui = {};
- let _loadPromise;
- ui.ensureLoaded = () => {
- if (_loadPromise)
- return _loadPromise;
- return _loadPromise = Promise.all([
- // must have strings and presets before loading the UI
- _mainLocalizer.ensureLoaded(),
- _mainPresetIndex.ensureLoaded()
- ]).then(() => {
- if (!context.container().empty())
- render(context.container());
- }).catch((err) => console.error(err));
- };
- ui.restart = function() {
- context.keybinding().clear();
- _loadPromise = null;
- context.container().selectAll("*").remove();
- ui.ensureLoaded();
- };
- ui.lastPointerType = function() {
- return _lastPointerType;
- };
- ui.svgDefs = svgDefs(context);
- ui.flash = uiFlash(context);
- ui.sidebar = uiSidebar(context);
- ui.photoviewer = uiPhotoviewer(context);
- ui.shortcuts = uiShortcuts(context);
- ui.onResize = function(withPan) {
- var map2 = context.map();
- var mapDimensions = utilGetDimensions(context.container().select(".main-content"), true);
- utilGetDimensions(context.container().select(".sidebar"), true);
- if (withPan !== void 0) {
- map2.redrawEnable(false);
- map2.pan(withPan);
- map2.redrawEnable(true);
- }
- map2.dimensions(mapDimensions);
- ui.photoviewer.onMapResize();
- ui.checkOverflow(".top-toolbar");
- ui.checkOverflow(".map-footer-bar");
- var resizeWindowEvent = document.createEvent("Event");
- resizeWindowEvent.initEvent("resizeWindow", true, true);
- document.dispatchEvent(resizeWindowEvent);
- };
- ui.checkOverflow = function(selector, reset) {
- if (reset) {
- delete _needWidth[selector];
- }
- var selection2 = context.container().select(selector);
- if (selection2.empty())
+ };
+
+ // node_modules/name-suggestion-index/lib/matcher.js
+ var matchGroups = matchGroups_default.matchGroups;
+ var trees = trees_default.trees;
+ var Matcher = class {
+ //
+ // `constructor`
+ // initialize the genericWords regexes
+ constructor() {
+ this.matchIndex = void 0;
+ this.genericWords = /* @__PURE__ */ new Map();
+ (genericWords_default.genericWords || []).forEach((s2) => this.genericWords.set(s2, new RegExp(s2, "i")));
+ this.itemLocation = void 0;
+ this.locationSets = void 0;
+ this.locationIndex = void 0;
+ this.warnings = [];
+ }
+ //
+ // `buildMatchIndex()`
+ // Call this to prepare the matcher for use
+ //
+ // `data` needs to be an Object indexed on a 'tree/key/value' path.
+ // (e.g. cache filled by `fileTree.read` or data found in `dist/nsi.json`)
+ // {
+ // 'brands/amenity/bank': { properties: {}, items: [ {}, {}, … ] },
+ // 'brands/amenity/bar': { properties: {}, items: [ {}, {}, … ] },
+ // …
+ // }
+ //
+ buildMatchIndex(data) {
+ const that = this;
+ if (that.matchIndex)
return;
- var scrollWidth = selection2.property("scrollWidth");
- var clientWidth = selection2.property("clientWidth");
- var needed = _needWidth[selector] || scrollWidth;
- if (scrollWidth > clientWidth) {
- selection2.classed("narrow", true);
- if (!_needWidth[selector]) {
- _needWidth[selector] = scrollWidth;
- }
- } else if (scrollWidth >= needed) {
- selection2.classed("narrow", false);
- }
- };
- ui.togglePanes = function(showPane) {
- var hidePanes = context.container().selectAll(".map-pane.shown");
- var side = _mainLocalizer.textDirection() === "ltr" ? "right" : "left";
- hidePanes.classed("shown", false).classed("hide", true);
- context.container().selectAll(".map-pane-control button").classed("active", false);
- if (showPane) {
- hidePanes.classed("shown", false).classed("hide", true).style(side, "-500px");
- context.container().selectAll("." + showPane.attr("pane") + "-control button").classed("active", true);
- showPane.classed("shown", true).classed("hide", false);
- if (hidePanes.empty()) {
- showPane.style(side, "-500px").transition().duration(200).style(side, "0px");
- } else {
- showPane.style(side, "0px");
+ that.matchIndex = /* @__PURE__ */ new Map();
+ const seenTree = /* @__PURE__ */ new Map();
+ Object.keys(data).forEach((tkv) => {
+ const category = data[tkv];
+ const parts = tkv.split("/", 3);
+ const t2 = parts[0];
+ const k2 = parts[1];
+ const v2 = parts[2];
+ const thiskv = `${k2}/${v2}`;
+ const tree = trees[t2];
+ let branch = that.matchIndex.get(thiskv);
+ if (!branch) {
+ branch = {
+ primary: /* @__PURE__ */ new Map(),
+ alternate: /* @__PURE__ */ new Map(),
+ excludeGeneric: /* @__PURE__ */ new Map(),
+ excludeNamed: /* @__PURE__ */ new Map()
+ };
+ that.matchIndex.set(thiskv, branch);
}
- } else {
- hidePanes.classed("shown", true).classed("hide", false).style(side, "0px").transition().duration(200).style(side, "-500px").on("end", function() {
- select_default2(this).classed("shown", false).classed("hide", true);
+ const properties = category.properties || {};
+ const exclude = properties.exclude || {};
+ (exclude.generic || []).forEach((s2) => branch.excludeGeneric.set(s2, new RegExp(s2, "i")));
+ (exclude.named || []).forEach((s2) => branch.excludeNamed.set(s2, new RegExp(s2, "i")));
+ const excludeRegexes = [...branch.excludeGeneric.values(), ...branch.excludeNamed.values()];
+ let items = category.items;
+ if (!Array.isArray(items) || !items.length)
+ return;
+ const primaryName = new RegExp(tree.nameTags.primary, "i");
+ const alternateName = new RegExp(tree.nameTags.alternate, "i");
+ const notName = /:(colou?r|type|forward|backward|left|right|etymology|pronunciation|wikipedia)$/i;
+ const skipGenericKV = skipGenericKVMatches(t2, k2, v2);
+ const genericKV = /* @__PURE__ */ new Set([`${k2}/yes`, `building/yes`]);
+ const matchGroupKV = /* @__PURE__ */ new Set();
+ Object.values(matchGroups).forEach((matchGroup) => {
+ const inGroup = matchGroup.some((otherkv) => otherkv === thiskv);
+ if (!inGroup)
+ return;
+ matchGroup.forEach((otherkv) => {
+ if (otherkv === thiskv)
+ return;
+ matchGroupKV.add(otherkv);
+ const otherk = otherkv.split("/", 2)[0];
+ genericKV.add(`${otherk}/yes`);
+ });
});
- }
- };
- var _editMenu = uiEditMenu(context);
- ui.editMenu = function() {
- return _editMenu;
- };
- ui.showEditMenu = function(anchorPoint, triggerType, operations) {
- ui.closeEditMenu();
- if (!operations && context.mode().operations)
- operations = context.mode().operations();
- if (!operations || !operations.length)
- return;
- if (!context.map().editableDataEnabled())
- return;
- var surfaceNode = context.surface().node();
- if (surfaceNode.focus) {
- surfaceNode.focus();
- }
- operations.forEach(function(operation) {
- if (operation.point)
- operation.point(anchorPoint);
- });
- _editMenu.anchorLoc(anchorPoint).triggerType(triggerType).operations(operations);
- context.map().supersurface.call(_editMenu);
- };
- ui.closeEditMenu = function() {
- context.map().supersurface.select(".edit-menu").remove();
- };
- var _saveLoading = select_default2(null);
- context.uploader().on("saveStarted.ui", function() {
- _saveLoading = uiLoading(context).message(_t.html("save.uploading")).blocking(true);
- context.container().call(_saveLoading);
- }).on("saveEnded.ui", function() {
- _saveLoading.close();
- _saveLoading = select_default2(null);
- });
- return ui;
- }
-
- // modules/core/context.js
- function coreContext() {
- const dispatch10 = dispatch_default("enter", "exit", "change");
- let context = utilRebind({}, dispatch10, "on");
- let _deferred2 = /* @__PURE__ */ new Set();
- context.version = package_default.version;
- context.privacyVersion = "20201202";
- context.initialHashParams = window.location.hash ? utilStringQs(window.location.hash) : {};
- context.changeset = null;
- let _defaultChangesetComment = context.initialHashParams.comment;
- let _defaultChangesetSource = context.initialHashParams.source;
- let _defaultChangesetHashtags = context.initialHashParams.hashtags;
- context.defaultChangesetComment = function(val) {
- if (!arguments.length)
- return _defaultChangesetComment;
- _defaultChangesetComment = val;
- return context;
- };
- context.defaultChangesetSource = function(val) {
- if (!arguments.length)
- return _defaultChangesetSource;
- _defaultChangesetSource = val;
- return context;
- };
- context.defaultChangesetHashtags = function(val) {
- if (!arguments.length)
- return _defaultChangesetHashtags;
- _defaultChangesetHashtags = val;
- return context;
- };
- let _setsDocumentTitle = true;
- context.setsDocumentTitle = function(val) {
- if (!arguments.length)
- return _setsDocumentTitle;
- _setsDocumentTitle = val;
- return context;
- };
- let _documentTitleBase = document.title;
- context.documentTitleBase = function(val) {
- if (!arguments.length)
- return _documentTitleBase;
- _documentTitleBase = val;
- return context;
- };
- let _ui;
- context.ui = () => _ui;
- context.lastPointerType = () => _ui.lastPointerType();
- let _keybinding = utilKeybinding("context");
- context.keybinding = () => _keybinding;
- select_default2(document).call(_keybinding);
- let _connection = services.osm;
- let _history;
- let _validator;
- let _uploader;
- context.connection = () => _connection;
- context.history = () => _history;
- context.validator = () => _validator;
- context.uploader = () => _uploader;
- context.preauth = (options2) => {
- if (_connection) {
- _connection.switch(options2);
- }
- return context;
- };
- context.locale = function(locale2) {
- if (!arguments.length)
- return _mainLocalizer.localeCode();
- _mainLocalizer.preferredLocaleCodes(locale2);
- return context;
- };
- function afterLoad(cid, callback) {
- return (err, result) => {
- if (err) {
- if (err.status === 400 || err.status === 401 || err.status === 403) {
- if (_connection) {
- _connection.logout();
- }
- }
- if (typeof callback === "function") {
- callback(err);
+ items.forEach((item) => {
+ if (!item.id)
+ return;
+ if (Array.isArray(item.matchTags) && item.matchTags.length) {
+ item.matchTags = item.matchTags.filter((matchTag) => !matchGroupKV.has(matchTag) && !genericKV.has(matchTag));
+ if (!item.matchTags.length)
+ delete item.matchTags;
}
- return;
- } else if (_connection && _connection.getConnectionId() !== cid) {
- if (typeof callback === "function") {
- callback({ message: "Connection Switched", status: -1 });
+ let kvTags = [`${thiskv}`].concat(item.matchTags || []);
+ if (!skipGenericKV) {
+ kvTags = kvTags.concat(Array.from(genericKV));
}
- return;
- } else {
- _history.merge(result.data, result.extent);
- if (typeof callback === "function") {
- callback(err, result);
+ Object.keys(item.tags).forEach((osmkey) => {
+ if (notName.test(osmkey))
+ return;
+ const osmvalue = item.tags[osmkey];
+ if (!osmvalue || excludeRegexes.some((regex) => regex.test(osmvalue)))
+ return;
+ if (primaryName.test(osmkey)) {
+ kvTags.forEach((kv) => insertName("primary", t2, kv, simplify2(osmvalue), item.id));
+ } else if (alternateName.test(osmkey)) {
+ kvTags.forEach((kv) => insertName("alternate", t2, kv, simplify2(osmvalue), item.id));
+ }
+ });
+ let keepMatchNames = /* @__PURE__ */ new Set();
+ (item.matchNames || []).forEach((matchName) => {
+ const nsimple = simplify2(matchName);
+ kvTags.forEach((kv) => {
+ const branch2 = that.matchIndex.get(kv);
+ const primaryLeaf = branch2 && branch2.primary.get(nsimple);
+ const alternateLeaf = branch2 && branch2.alternate.get(nsimple);
+ const inPrimary = primaryLeaf && primaryLeaf.has(item.id);
+ const inAlternate = alternateLeaf && alternateLeaf.has(item.id);
+ if (!inPrimary && !inAlternate) {
+ insertName("alternate", t2, kv, nsimple, item.id);
+ keepMatchNames.add(matchName);
+ }
+ });
+ });
+ if (keepMatchNames.size) {
+ item.matchNames = Array.from(keepMatchNames);
+ } else {
+ delete item.matchNames;
}
+ });
+ });
+ function insertName(which, t2, kv, nsimple, itemID) {
+ if (!nsimple) {
+ that.warnings.push(`Warning: skipping empty ${which} name for item ${t2}/${kv}: ${itemID}`);
return;
}
- };
- }
- context.loadTiles = (projection2, callback) => {
- const handle = window.requestIdleCallback(() => {
- _deferred2.delete(handle);
- if (_connection && context.editableDataEnabled()) {
- const cid = _connection.getConnectionId();
- _connection.loadTiles(projection2, afterLoad(cid, callback));
+ let branch = that.matchIndex.get(kv);
+ if (!branch) {
+ branch = {
+ primary: /* @__PURE__ */ new Map(),
+ alternate: /* @__PURE__ */ new Map(),
+ excludeGeneric: /* @__PURE__ */ new Map(),
+ excludeNamed: /* @__PURE__ */ new Map()
+ };
+ that.matchIndex.set(kv, branch);
}
- });
- _deferred2.add(handle);
- };
- context.loadTileAtLoc = (loc, callback) => {
- const handle = window.requestIdleCallback(() => {
- _deferred2.delete(handle);
- if (_connection && context.editableDataEnabled()) {
- const cid = _connection.getConnectionId();
- _connection.loadTileAtLoc(loc, afterLoad(cid, callback));
+ let leaf = branch[which].get(nsimple);
+ if (!leaf) {
+ leaf = /* @__PURE__ */ new Set();
+ branch[which].set(nsimple, leaf);
}
- });
- _deferred2.add(handle);
- };
- context.loadEntity = (entityID, callback) => {
- if (_connection) {
- const cid = _connection.getConnectionId();
- _connection.loadEntity(entityID, afterLoad(cid, callback));
- _connection.loadEntityRelations(entityID, afterLoad(cid, callback));
- }
- };
- context.zoomToEntity = (entityID, zoomTo) => {
- context.loadEntity(entityID, (err, result) => {
- if (err)
- return;
- if (zoomTo !== false) {
- const entity = result.data.find((e) => e.id === entityID);
- if (entity) {
- _map.zoomTo(entity);
+ leaf.add(itemID);
+ if (!/yes$/.test(kv)) {
+ const kvnsimple = `${kv}/${nsimple}`;
+ const existing = seenTree.get(kvnsimple);
+ if (existing && existing !== t2) {
+ const items = Array.from(leaf);
+ that.warnings.push(`Duplicate cache key "${kvnsimple}" in trees "${t2}" and "${existing}", check items: ${items}`);
+ return;
}
+ seenTree.set(kvnsimple, t2);
}
- });
- _map.on("drawn.zoomToEntity", () => {
- if (!context.hasEntity(entityID))
- return;
- _map.on("drawn.zoomToEntity", null);
- context.on("enter.zoomToEntity", null);
- context.enter(modeSelect(context, [entityID]));
- });
- context.on("enter.zoomToEntity", () => {
- if (_mode.id !== "browse") {
- _map.on("drawn.zoomToEntity", null);
- context.on("enter.zoomToEntity", null);
- }
- });
- };
- let _minEditableZoom = 16;
- context.minEditableZoom = function(val) {
- if (!arguments.length)
- return _minEditableZoom;
- _minEditableZoom = val;
- if (_connection) {
- _connection.tileZoom(val);
}
- return context;
- };
- context.maxCharsForTagKey = () => 255;
- context.maxCharsForTagValue = () => 255;
- context.maxCharsForRelationRole = () => 255;
- context.cleanTagKey = (val) => utilCleanOsmString(val, context.maxCharsForTagKey());
- context.cleanTagValue = (val) => utilCleanOsmString(val, context.maxCharsForTagValue());
- context.cleanRelationRole = (val) => utilCleanOsmString(val, context.maxCharsForRelationRole());
- let _inIntro = false;
- context.inIntro = function(val) {
- if (!arguments.length)
- return _inIntro;
- _inIntro = val;
- return context;
- };
- context.save = () => {
- if (_inIntro || context.container().select(".modal").size())
+ function skipGenericKVMatches(t2, k2, v2) {
+ return t2 === "flags" || t2 === "transit" || k2 === "landuse" || v2 === "atm" || v2 === "bicycle_parking" || v2 === "car_sharing" || v2 === "caravan_site" || v2 === "charging_station" || v2 === "dog_park" || v2 === "parking" || v2 === "phone" || v2 === "playground" || v2 === "post_box" || v2 === "public_bookcase" || v2 === "recycling" || v2 === "vending_machine";
+ }
+ }
+ //
+ // `buildLocationIndex()`
+ // Call this to prepare a which-polygon location index.
+ // This *resolves* all the locationSets into GeoJSON, which takes some time.
+ // You can skip this step if you don't care about matching within a location.
+ //
+ // `data` needs to be an Object indexed on a 'tree/key/value' path.
+ // (e.g. cache filled by `fileTree.read` or data found in `dist/nsi.json`)
+ // {
+ // 'brands/amenity/bank': { properties: {}, items: [ {}, {}, … ] },
+ // 'brands/amenity/bar': { properties: {}, items: [ {}, {}, … ] },
+ // …
+ // }
+ //
+ buildLocationIndex(data, loco) {
+ const that = this;
+ if (that.locationIndex)
return;
- let canSave;
- if (_mode && _mode.id === "save") {
- canSave = false;
- if (services.osm && services.osm.isChangesetInflight()) {
- _history.clearSaved();
+ that.itemLocation = /* @__PURE__ */ new Map();
+ that.locationSets = /* @__PURE__ */ new Map();
+ Object.keys(data).forEach((tkv) => {
+ const items = data[tkv].items;
+ if (!Array.isArray(items) || !items.length)
return;
- }
- } else {
- canSave = context.selectedIDs().every((id2) => {
- const entity = context.hasEntity(id2);
- return entity && !entity.isDegenerate();
+ items.forEach((item) => {
+ if (that.itemLocation.has(item.id))
+ return;
+ let resolved;
+ try {
+ resolved = loco.resolveLocationSet(item.locationSet);
+ } catch (err) {
+ console.warn(`buildLocationIndex: ${err.message}`);
+ }
+ if (!resolved || !resolved.id)
+ return;
+ that.itemLocation.set(item.id, resolved.id);
+ if (that.locationSets.has(resolved.id))
+ return;
+ let feature3 = _cloneDeep2(resolved.feature);
+ feature3.id = resolved.id;
+ feature3.properties.id = resolved.id;
+ if (!feature3.geometry.coordinates.length || !feature3.properties.area) {
+ console.warn(`buildLocationIndex: locationSet ${resolved.id} for ${item.id} resolves to an empty feature:`);
+ console.warn(JSON.stringify(feature3));
+ return;
+ }
+ that.locationSets.set(resolved.id, feature3);
});
+ });
+ that.locationIndex = (0, import_which_polygon4.default)({ type: "FeatureCollection", features: [...that.locationSets.values()] });
+ function _cloneDeep2(obj) {
+ return JSON.parse(JSON.stringify(obj));
}
- if (canSave) {
- _history.save();
- }
- if (_history.hasChanges()) {
- return _t("save.unsaved_changes");
- }
- };
- context.debouncedSave = debounce_default(context.save, 350);
- function withDebouncedSave(fn) {
- return function() {
- const result = fn.apply(_history, arguments);
- context.debouncedSave();
- return result;
- };
}
- context.hasEntity = (id2) => _history.graph().hasEntity(id2);
- context.entity = (id2) => _history.graph().entity(id2);
- let _mode;
- context.mode = () => _mode;
- context.enter = (newMode) => {
- if (_mode) {
- _mode.exit();
- dispatch10.call("exit", this, _mode);
+ //
+ // `match()`
+ // Pass parts and return an Array of matches.
+ // `k` - key
+ // `v` - value
+ // `n` - namelike
+ // `loc` - optional - [lon,lat] location to search
+ //
+ // 1. If the [k,v,n] tuple matches a canonical item…
+ // Return an Array of match results.
+ // Each result will include the area in km² that the item is valid.
+ //
+ // Order of results:
+ // Primary ordering will be on the "match" column:
+ // "primary" - where the query matches the `name` tag, followed by
+ // "alternate" - where the query matches an alternate name tag (e.g. short_name, brand, operator, etc)
+ // Secondary ordering will be on the "area" column:
+ // "area descending" if no location was provided, (worldwide before local)
+ // "area ascending" if location was provided (local before worldwide)
+ //
+ // [
+ // { match: 'primary', itemID: String, area: Number, kv: String, nsimple: String },
+ // { match: 'primary', itemID: String, area: Number, kv: String, nsimple: String },
+ // { match: 'alternate', itemID: String, area: Number, kv: String, nsimple: String },
+ // { match: 'alternate', itemID: String, area: Number, kv: String, nsimple: String },
+ // …
+ // ]
+ //
+ // -or-
+ //
+ // 2. If the [k,v,n] tuple matches an exclude pattern…
+ // Return an Array with a single exclude result, either
+ //
+ // [ { match: 'excludeGeneric', pattern: String, kv: String } ] // "generic" e.g. "Food Court"
+ // or
+ // [ { match: 'excludeNamed', pattern: String, kv: String } ] // "named", e.g. "Kebabai"
+ //
+ // About results
+ // "generic" - a generic word that is probably not really a name.
+ // For these, iD should warn the user "Hey don't put 'food court' in the name tag".
+ // "named" - a real name like "Kebabai" that is just common, but not a brand.
+ // For these, iD should just let it be. We don't include these in NSI, but we don't want to nag users about it either.
+ //
+ // -or-
+ //
+ // 3. If the [k,v,n] tuple matches nothing of any kind, return `null`
+ //
+ //
+ match(k2, v2, n3, loc) {
+ const that = this;
+ if (!that.matchIndex) {
+ throw new Error("match: matchIndex not built.");
}
- _mode = newMode;
- _mode.enter();
- dispatch10.call("enter", this, _mode);
- };
- context.selectedIDs = () => _mode && _mode.selectedIDs && _mode.selectedIDs() || [];
- context.activeID = () => _mode && _mode.activeID && _mode.activeID();
- let _selectedNoteID;
- context.selectedNoteID = function(noteID) {
- if (!arguments.length)
- return _selectedNoteID;
- _selectedNoteID = noteID;
- return context;
- };
- let _selectedErrorID;
- context.selectedErrorID = function(errorID) {
- if (!arguments.length)
- return _selectedErrorID;
- _selectedErrorID = errorID;
- return context;
- };
- context.install = (behavior) => context.surface().call(behavior);
- context.uninstall = (behavior) => context.surface().call(behavior.off);
- let _copyGraph;
- context.copyGraph = () => _copyGraph;
- let _copyIDs = [];
- context.copyIDs = function(val) {
- if (!arguments.length)
- return _copyIDs;
- _copyIDs = val;
- _copyGraph = _history.graph();
- return context;
- };
- let _copyLonLat;
- context.copyLonLat = function(val) {
- if (!arguments.length)
- return _copyLonLat;
- _copyLonLat = val;
- return context;
- };
- let _background;
- context.background = () => _background;
- let _features;
- context.features = () => _features;
- context.hasHiddenConnections = (id2) => {
- const graph = _history.graph();
- const entity = graph.entity(id2);
- return _features.hasHiddenConnections(entity, graph);
- };
- let _photos;
- context.photos = () => _photos;
- let _map;
- context.map = () => _map;
- context.layers = () => _map.layers();
- context.surface = () => _map.surface;
- context.editableDataEnabled = () => _map.editableDataEnabled();
- context.surfaceRect = () => _map.surface.node().getBoundingClientRect();
- context.editable = () => {
- const mode = context.mode();
- if (!mode || mode.id === "save")
- return false;
- return _map.editableDataEnabled();
- };
- let _debugFlags = {
- tile: false,
- // tile boundaries
- collision: false,
- // label collision bounding boxes
- imagery: false,
- // imagery bounding polygons
- target: false,
- // touch targets
- downloaded: false
- // downloaded data from osm
- };
- context.debugFlags = () => _debugFlags;
- context.getDebug = (flag) => flag && _debugFlags[flag];
- context.setDebug = function(flag, val) {
- if (arguments.length === 1)
- val = true;
- _debugFlags[flag] = val;
- dispatch10.call("change");
- return context;
- };
- let _container = select_default2(null);
- context.container = function(val) {
- if (!arguments.length)
- return _container;
- _container = val;
- _container.classed("ideditor", true);
- return context;
- };
- context.containerNode = function(val) {
- if (!arguments.length)
- return context.container().node();
- context.container(select_default2(val));
- return context;
- };
- let _embed;
- context.embed = function(val) {
- if (!arguments.length)
- return _embed;
- _embed = val;
- return context;
- };
- let _assetPath = "";
- context.assetPath = function(val) {
- if (!arguments.length)
- return _assetPath;
- _assetPath = val;
- _mainFileFetcher.assetPath(val);
- return context;
- };
- let _assetMap = {};
- context.assetMap = function(val) {
- if (!arguments.length)
- return _assetMap;
- _assetMap = val;
- _mainFileFetcher.assetMap(val);
- return context;
- };
- context.asset = (val) => {
- if (/^http(s)?:\/\//i.test(val))
- return val;
- const filename = _assetPath + val;
- return _assetMap[filename] || filename;
- };
- context.imagePath = (val) => context.asset(`img/${val}`);
- context.reset = context.flush = () => {
- context.debouncedSave.cancel();
- Array.from(_deferred2).forEach((handle) => {
- window.cancelIdleCallback(handle);
- _deferred2.delete(handle);
- });
- Object.values(services).forEach((service) => {
- if (service && typeof service.reset === "function") {
- service.reset(context);
- }
- });
- context.changeset = null;
- _validator.reset();
- _features.reset();
- _history.reset();
- _uploader.reset();
- context.container().select(".inspector-wrap *").remove();
- return context;
- };
- context.projection = geoRawMercator();
- context.curtainProjection = geoRawMercator();
- context.init = () => {
- instantiateInternal();
- initializeDependents();
- return context;
- function instantiateInternal() {
- _history = coreHistory(context);
- context.graph = _history.graph;
- context.pauseChangeDispatch = _history.pauseChangeDispatch;
- context.resumeChangeDispatch = _history.resumeChangeDispatch;
- context.perform = withDebouncedSave(_history.perform);
- context.replace = withDebouncedSave(_history.replace);
- context.pop = withDebouncedSave(_history.pop);
- context.overwrite = withDebouncedSave(_history.overwrite);
- context.undo = withDebouncedSave(_history.undo);
- context.redo = withDebouncedSave(_history.redo);
- _validator = coreValidator(context);
- _uploader = coreUploader(context);
- _background = rendererBackground(context);
- _features = rendererFeatures(context);
- _map = rendererMap(context);
- _photos = rendererPhotos(context);
- _ui = uiInit(context);
+ let matchLocations;
+ if (Array.isArray(loc) && that.locationIndex) {
+ matchLocations = that.locationIndex([loc[0], loc[1], loc[0], loc[1]], true);
}
- function initializeDependents() {
- if (context.initialHashParams.presets) {
- _mainPresetIndex.addablePresetIDs(new Set(context.initialHashParams.presets.split(",")));
+ const nsimple = simplify2(n3);
+ let seen = /* @__PURE__ */ new Set();
+ let results = [];
+ gatherResults("primary");
+ gatherResults("alternate");
+ if (results.length)
+ return results;
+ gatherResults("exclude");
+ return results.length ? results : null;
+ function gatherResults(which) {
+ const kv = `${k2}/${v2}`;
+ let didMatch = tryMatch(which, kv);
+ if (didMatch)
+ return;
+ for (let mg in matchGroups) {
+ const matchGroup = matchGroups[mg];
+ const inGroup = matchGroup.some((otherkv) => otherkv === kv);
+ if (!inGroup)
+ continue;
+ for (let i3 = 0; i3 < matchGroup.length; i3++) {
+ const otherkv = matchGroup[i3];
+ if (otherkv === kv)
+ continue;
+ didMatch = tryMatch(which, otherkv);
+ if (didMatch)
+ return;
+ }
}
- if (context.initialHashParams.locale) {
- _mainLocalizer.preferredLocaleCodes(context.initialHashParams.locale);
+ if (which === "exclude") {
+ const regex = [...that.genericWords.values()].find((regex2) => regex2.test(n3));
+ if (regex) {
+ results.push({ match: "excludeGeneric", pattern: String(regex) });
+ return;
+ }
}
- _mainLocalizer.ensureLoaded();
- _mainPresetIndex.ensureLoaded();
- _background.ensureLoaded();
- Object.values(services).forEach((service) => {
- if (service && typeof service.init === "function") {
- service.init();
+ }
+ function tryMatch(which, kv) {
+ const branch = that.matchIndex.get(kv);
+ if (!branch)
+ return;
+ if (which === "exclude") {
+ let regex = [...branch.excludeNamed.values()].find((regex2) => regex2.test(n3));
+ if (regex) {
+ results.push({ match: "excludeNamed", pattern: String(regex), kv });
+ return;
+ }
+ regex = [...branch.excludeGeneric.values()].find((regex2) => regex2.test(n3));
+ if (regex) {
+ results.push({ match: "excludeGeneric", pattern: String(regex), kv });
+ return;
}
+ return;
+ }
+ const leaf = branch[which].get(nsimple);
+ if (!leaf || !leaf.size)
+ return;
+ let hits = Array.from(leaf).map((itemID) => {
+ let area = Infinity;
+ if (that.itemLocation && that.locationSets) {
+ const location = that.locationSets.get(that.itemLocation.get(itemID));
+ area = location && location.properties.area || Infinity;
+ }
+ return { match: which, itemID, area, kv, nsimple };
});
- _map.init();
- _validator.init();
- _features.init();
- if (services.maprules && context.initialHashParams.maprules) {
- json_default(context.initialHashParams.maprules).then((mapcss) => {
- services.maprules.init();
- mapcss.forEach((mapcssSelector) => services.maprules.addRule(mapcssSelector));
- }).catch(() => {
- });
+ let sortFn = byAreaDescending;
+ if (matchLocations) {
+ hits = hits.filter(isValidLocation);
+ sortFn = byAreaAscending;
}
- if (!context.container().empty()) {
- _ui.ensureLoaded().then(() => {
- _background.init();
- _photos.init();
- });
+ if (!hits.length)
+ return;
+ hits.sort(sortFn).forEach((hit) => {
+ if (seen.has(hit.itemID))
+ return;
+ seen.add(hit.itemID);
+ results.push(hit);
+ });
+ return true;
+ function isValidLocation(hit) {
+ if (!that.itemLocation)
+ return true;
+ return matchLocations.find((props) => props.id === that.itemLocation.get(hit.itemID));
+ }
+ function byAreaAscending(hitA, hitB) {
+ return hitA.area - hitB.area;
+ }
+ function byAreaDescending(hitA, hitB) {
+ return hitB.area - hitA.area;
}
}
- };
- return context;
- }
+ }
+ //
+ // `getWarnings()`
+ // Return any warnings discovered when buiding the index.
+ // (currently this does nothing)
+ //
+ getWarnings() {
+ return this.warnings;
+ }
+ };
// modules/services/nsi.js
+ var import_vparse2 = __toESM(require_vparse());
var _nsiStatus = "loading";
var _nsi = {};
var buildingPreset = {
var notBranches = /(coop|express|wireless|factory|outlet)/i;
function setNsiSources() {
const nsiVersion = package_default.dependencies["name-suggestion-index"] || package_default.devDependencies["name-suggestion-index"];
- const v = (0, import_vparse2.default)(nsiVersion);
- const vMinor = `${v.major}.${v.minor}`;
+ const v2 = (0, import_vparse2.default)(nsiVersion);
+ const vMinor = `${v2.major}.${v2.minor}`;
const cdn = nsiCdnUrl.replace("{version}", vMinor);
const sources = {
"nsi_data": cdn + "dist/nsi.min.json",
"nsi_trees": cdn + "dist/trees.min.json"
};
let fileMap = _mainFileFetcher.fileMap();
- for (const k in sources) {
- if (!fileMap[k])
- fileMap[k] = sources[k];
+ for (const k2 in sources) {
+ if (!fileMap[k2])
+ fileMap[k2] = sources[k2];
}
}
function loadNsiPresets() {
Object.keys(_nsi.data).forEach((tkv) => {
const category = _nsi.data[tkv];
const parts = tkv.split("/", 3);
- const t = parts[0];
- const k = parts[1];
- const v = parts[2];
- let vmap = _nsi.kvt.get(k);
+ const t2 = parts[0];
+ const k2 = parts[1];
+ const v2 = parts[2];
+ let vmap = _nsi.kvt.get(k2);
if (!vmap) {
vmap = /* @__PURE__ */ new Map();
- _nsi.kvt.set(k, vmap);
+ _nsi.kvt.set(k2, vmap);
}
- vmap.set(v, t);
- const tree = _nsi.trees[t];
+ vmap.set(v2, t2);
+ const tree = _nsi.trees[t2];
const mainTag = tree.mainTag;
const items = category.items || [];
items.forEach((item) => {
}
function identifyTree(tags) {
let unknown;
- let t;
+ let t2;
Object.keys(tags).forEach((osmkey) => {
- if (t)
+ if (t2)
return;
const osmvalue = tags[osmkey];
if (!osmvalue)
if (osmvalue === "yes") {
unknown = "unknown";
} else {
- t = vmap.get(osmvalue);
+ t2 = vmap.get(osmvalue);
}
});
- return t || unknown || null;
+ return t2 || unknown || null;
}
function gatherNames(tags) {
const empty2 = { primary: /* @__PURE__ */ new Set(), alternate: /* @__PURE__ */ new Set() };
let foundSemi = false;
let testNameFragments = false;
let patterns2;
- let t = identifyTree(tags);
- if (!t)
+ let t2 = identifyTree(tags);
+ if (!t2)
return empty2;
- if (t === "transit") {
+ if (t2 === "transit") {
patterns2 = {
primary: /^network$/i,
alternate: /^(operator|operator:\w+|network:\w+|\w+_name|\w+_name:\w+)$/i
};
- } else if (t === "flags") {
+ } else if (t2 === "flags") {
patterns2 = {
primary: /^(flag:name|flag:name:\w+)$/i,
alternate: /^(flag|flag:\w+|subject|subject:\w+)$/i
// note: no `country`, we special-case it below
};
- } else if (t === "brands") {
+ } else if (t2 === "brands") {
testNameFragments = true;
patterns2 = {
primary: /^(name|name:\w+)$/i,
alternate: /^(brand|brand:\w+|operator|operator:\w+|\w+_name|\w+_name:\w+)/i
};
- } else if (t === "operators") {
+ } else if (t2 === "operators") {
testNameFragments = true;
patterns2 = {
primary: /^(name|name:\w+|operator|operator:\w+)$/i,
function gatherTuples(tryKVs, tryNames) {
let tuples = [];
["primary", "alternate"].forEach((whichName) => {
- const arr = Array.from(tryNames[whichName]).sort((a, b) => b.length - a.length);
- arr.forEach((n2) => {
+ const arr = Array.from(tryNames[whichName]).sort((a2, b2) => b2.length - a2.length);
+ arr.forEach((n3) => {
["primary", "alternate"].forEach((whichKV) => {
tryKVs[whichKV].forEach((kv) => {
const parts = kv.split("/", 2);
- const k = parts[0];
- const v = parts[1];
- tuples.push({ k, v, n: n2 });
+ const k2 = parts[0];
+ const v2 = parts[1];
+ tuples.push({ k: k2, v: v2, n: n3 });
});
});
});
return changed ? { newTags, matched: null } : null;
}
const tuples = gatherTuples(tryKVs, tryNames);
- for (let i2 = 0; i2 < tuples.length; i2++) {
- const tuple = tuples[i2];
+ for (let i3 = 0; i3 < tuples.length; i3++) {
+ const tuple = tuples[i3];
const hits = _nsi.matcher.match(tuple.k, tuple.v, tuple.n, loc);
if (!hits || !hits.length)
continue;
if (hits[0].match !== "primary" && hits[0].match !== "alternate")
break;
let itemID, item;
- for (let j2 = 0; j2 < hits.length; j2++) {
- const hit = hits[j2];
+ for (let j3 = 0; j3 < hits.length; j3++) {
+ const hit = hits[j3];
itemID = hit.itemID;
if (_nsi.dissolved[itemID])
continue;
item = JSON.parse(JSON.stringify(item));
const tkv = item.tkv;
const parts = tkv.split("/", 3);
- const k = parts[1];
- const v = parts[2];
+ const k2 = parts[1];
+ const v2 = parts[2];
const category = _nsi.data[tkv];
const properties = category.properties || {};
let preserveTags = item.preserveTags || properties.preserveTags || [];
["building", "emergency", "internet_access", "takeaway"].forEach((osmkey) => {
- if (k !== osmkey)
+ if (k2 !== osmkey)
preserveTags.push(`^${osmkey}$`);
});
- const regexes = preserveTags.map((s) => new RegExp(s, "i"));
+ const regexes = preserveTags.map((s2) => new RegExp(s2, "i"));
let keepTags = {};
Object.keys(newTags).forEach((osmkey) => {
if (regexes.some((regex) => regex.test(osmkey))) {
keepTags[osmkey] = newTags[osmkey];
}
});
- _nsi.kvt.forEach((vmap, k2) => {
- if (newTags[k2] === "yes")
- delete newTags[k2];
+ _nsi.kvt.forEach((vmap, k3) => {
+ if (newTags[k3] === "yes")
+ delete newTags[k3];
});
if (foundQID) {
delete newTags.wikipedia;
for (let split = nameParts.length; split > 0; split--) {
const name = nameParts.slice(0, split).join(" ");
const branch = nameParts.slice(split).join(" ");
- const nameHits = _nsi.matcher.match(k, v, name, loc);
+ const nameHits = _nsi.matcher.match(k2, v2, name, loc);
if (!nameHits || !nameHits.length)
continue;
if (nameHits.some((hit) => hit.itemID === itemID)) {
if (notBranches.test(branch)) {
newTags.name = origName;
} else {
- const branchHits = _nsi.matcher.match(k, v, branch, loc);
+ const branchHits = _nsi.matcher.match(k2, v2, branch, loc);
if (branchHits && branchHits.length) {
if (branchHits[0].match === "primary" || branchHits[0].match === "alternate") {
return null;
return changed ? { newTags, matched: null } : null;
}
function _isGenericName(tags) {
- const n2 = tags.name;
- if (!n2)
+ const n3 = tags.name;
+ if (!n3)
return false;
- const tryNames = { primary: /* @__PURE__ */ new Set([n2]), alternate: /* @__PURE__ */ new Set() };
+ const tryNames = { primary: /* @__PURE__ */ new Set([n3]), alternate: /* @__PURE__ */ new Set() };
const tryKVs = gatherKVs(tags);
if (!tryKVs.primary.size && !tryKVs.alternate.size)
return false;
const tuples = gatherTuples(tryKVs, tryNames);
- for (let i2 = 0; i2 < tuples.length; i2++) {
- const tuple = tuples[i2];
+ for (let i3 = 0; i3 < tuples.length; i3++) {
+ const tuple = tuples[i3];
const hits = _nsi.matcher.match(tuple.k, tuple.v, tuple.n);
if (hits && hits.length && hits[0].match === "excludeGeneric")
return true;
var maxResults = 1e3;
var tileZoom = 14;
var tiler4 = utilTiler().zoomExtent([tileZoom, tileZoom]).skipNullIsland(true);
- var dispatch6 = dispatch_default("loadedImages");
- var imgZoom = zoom_default2().extent([[0, 0], [320, 240]]).translateExtent([[0, 0], [320, 240]]).scaleExtent([1, 15]);
+ var dispatch7 = dispatch_default("loadedImages");
+ var imgZoom2 = zoom_default2().extent([[0, 0], [320, 240]]).translateExtent([[0, 0], [320, 240]]).scaleExtent([1, 15]);
var _oscCache;
var _oscSelectedImage;
var _loadViewerPromise2;
function abortRequest4(controller) {
controller.abort();
}
- function maxPageAtZoom(z) {
- if (z < 15)
+ function maxPageAtZoom(z2) {
+ if (z2 < 15)
return 2;
- if (z === 15)
+ if (z2 === 15)
return 5;
- if (z === 16)
+ if (z2 === 16)
return 10;
- if (z === 17)
+ if (z2 === 17)
return 20;
- if (z === 18)
+ if (z2 === 18)
return 40;
- if (z > 18)
+ if (z2 > 18)
return 80;
}
function loadTiles2(which, url, projection2) {
var currZoom = Math.floor(geoScaleToZoom(projection2.scale()));
var tiles = tiler4.getTiles(projection2);
var cache = _oscCache[which];
- Object.keys(cache.inflight).forEach(function(k) {
+ Object.keys(cache.inflight).forEach(function(k2) {
var wanted = tiles.find(function(tile) {
- return k.indexOf(tile.id + ",") === 0;
+ return k2.indexOf(tile.id + ",") === 0;
});
if (!wanted) {
- abortRequest4(cache.inflight[k]);
- delete cache.inflight[k];
+ abortRequest4(cache.inflight[k2]);
+ delete cache.inflight[k2];
}
});
tiles.forEach(function(tile) {
}
var features = data.currentPageItems.map(function(item) {
var loc = [+item.lng, +item.lat];
- var d;
+ var d2;
if (which === "images") {
- d = {
+ d2 = {
loc,
key: item.id,
ca: +item.heading,
sequence_id: item.sequence_id,
sequence_index: +item.sequence_index
};
- var seq = _oscCache.sequences[d.sequence_id];
+ var seq = _oscCache.sequences[d2.sequence_id];
if (!seq) {
seq = { rotation: 0, images: [] };
- _oscCache.sequences[d.sequence_id] = seq;
+ _oscCache.sequences[d2.sequence_id] = seq;
}
- seq.images[d.sequence_index] = d;
- _oscCache.images.forImageKey[d.key] = d;
+ seq.images[d2.sequence_index] = d2;
+ _oscCache.images.forImageKey[d2.key] = d2;
}
return {
minX: loc[0],
minY: loc[1],
maxX: loc[0],
maxY: loc[1],
- data: d
+ data: d2
};
});
cache.rtree.load(features);
cache.nextPage[tile.id] = Infinity;
}
if (which === "images") {
- dispatch6.call("loadedImages");
+ dispatch7.call("loadedImages");
}
}).catch(function() {
cache.loaded[id2] = true;
});
}
function partitionViewport2(projection2) {
- var z = geoScaleToZoom(projection2.scale());
- var z2 = Math.ceil(z * 2) / 2 + 2.5;
- var tiler8 = utilTiler().zoomExtent([z2, z2]);
- return tiler8.getTiles(projection2).map(function(tile) {
+ var z2 = geoScaleToZoom(projection2.scale());
+ var z22 = Math.ceil(z2 * 2) / 2 + 2.5;
+ var tiler9 = utilTiler().zoomExtent([z22, z22]);
+ return tiler9.getTiles(projection2).map(function(tile) {
return tile.extent;
});
}
function searchLimited2(limit, projection2, rtree) {
limit = limit || 5;
return partitionViewport2(projection2).reduce(function(result, extent) {
- var found = rtree.search(extent.bbox()).slice(0, limit).map(function(d) {
- return d.data;
+ var found = rtree.search(extent.bbox()).slice(0, limit).map(function(d2) {
+ return d2.data;
});
return found.length ? result.concat(found) : result;
}, []);
if (!_oscCache) {
this.reset();
}
- this.event = utilRebind(this, dispatch6, "on");
+ this.event = utilRebind(this, dispatch7, "on");
},
reset: function() {
if (_oscCache) {
var max3 = [viewport[1][0], viewport[0][1]];
var bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
var sequenceKeys = {};
- _oscCache.images.rtree.search(bbox2).forEach(function(d) {
- sequenceKeys[d.data.sequence_id] = true;
+ _oscCache.images.rtree.search(bbox2).forEach(function(d2) {
+ sequenceKeys[d2.data.sequence_id] = true;
});
var lineStrings = [];
Object.keys(sequenceKeys).forEach(function(sequenceKey) {
if (images) {
lineStrings.push({
type: "LineString",
- coordinates: images.map(function(d) {
- return d.loc;
+ coordinates: images.map(function(d2) {
+ return d2.loc;
}).filter(Boolean),
properties: {
captured_at: images[0] ? images[0].captured_at : null,
return _loadViewerPromise2;
var wrap2 = context.container().select(".photoviewer").selectAll(".kartaview-wrapper").data([0]);
var that = this;
- var wrapEnter = wrap2.enter().append("div").attr("class", "photo-wrapper kartaview-wrapper").classed("hide", true).call(imgZoom.on("zoom", zoomPan)).on("dblclick.zoom", null);
+ var wrapEnter = wrap2.enter().append("div").attr("class", "photo-wrapper kartaview-wrapper").classed("hide", true).call(imgZoom2.on("zoom", zoomPan2)).on("dblclick.zoom", null);
wrapEnter.append("div").attr("class", "photo-attribution fillD");
var controlsEnter = wrapEnter.append("div").attr("class", "photo-controls-wrap").append("div").attr("class", "photo-controls");
controlsEnter.append("button").on("click.back", step(-1)).text("\u25C4");
controlsEnter.append("button").on("click.forward", step(1)).text("\u25BA");
wrapEnter.append("div").attr("class", "kartaview-image-wrap");
context.ui().photoviewer.on("resize.kartaview", function(dimensions) {
- imgZoom = zoom_default2().extent([[0, 0], dimensions]).translateExtent([[0, 0], dimensions]).scaleExtent([1, 15]).on("zoom", zoomPan);
+ imgZoom2.extent([[0, 0], dimensions]).translateExtent([[0, 0], dimensions]);
});
- function zoomPan(d3_event) {
- var t = d3_event.transform;
- context.container().select(".photoviewer .kartaview-image-wrap").call(utilSetTransform, t.x, t.y, t.k);
+ function zoomPan2(d3_event) {
+ var t2 = d3_event.transform;
+ context.container().select(".photoviewer .kartaview-image-wrap").call(utilSetTransform, t2.x, t2.y, t2.k);
}
function rotate(deg) {
return function() {
var sequence = _oscCache.sequences[sequenceKey];
if (!sequence)
return;
- var r = sequence.rotation || 0;
- r += deg;
- if (r > 180)
- r -= 360;
- if (r < -180)
- r += 360;
- sequence.rotation = r;
+ var r2 = sequence.rotation || 0;
+ r2 += deg;
+ if (r2 > 180)
+ r2 -= 360;
+ if (r2 < -180)
+ r2 += 360;
+ sequence.rotation = r2;
var wrap3 = context.container().select(".photoviewer .kartaview-wrapper");
- wrap3.transition().duration(100).call(imgZoom.transform, identity2);
- wrap3.selectAll(".kartaview-image").transition().duration(100).style("transform", "rotate(" + r + "deg)");
+ wrap3.transition().duration(100).call(imgZoom2.transform, identity2);
+ wrap3.selectAll(".kartaview-image").transition().duration(100).style("transform", "rotate(" + r2 + "deg)");
};
}
function step(stepBy) {
return this.setStyles(context, null, true);
},
selectImage: function(context, imageKey) {
- var d = this.cachedImage(imageKey);
- _oscSelectedImage = d;
+ var d2 = this.cachedImage(imageKey);
+ _oscSelectedImage = d2;
this.updateUrlImage(imageKey);
var viewer = context.container().select(".photoviewer");
if (!viewer.empty())
- viewer.datum(d);
+ viewer.datum(d2);
this.setStyles(context, null, true);
context.container().selectAll(".icon-sign").classed("currentView", false);
- if (!d)
+ if (!d2)
return this;
var wrap2 = context.container().select(".photoviewer .kartaview-wrapper");
var imageWrap = wrap2.selectAll(".kartaview-image-wrap");
var attribution = wrap2.selectAll(".photo-attribution").text("");
- wrap2.transition().duration(100).call(imgZoom.transform, identity2);
+ wrap2.transition().duration(100).call(imgZoom2.transform, identity2);
imageWrap.selectAll(".kartaview-image").remove();
- if (d) {
- var sequence = _oscCache.sequences[d.sequence_id];
- var r = sequence && sequence.rotation || 0;
- imageWrap.append("img").attr("class", "kartaview-image").attr("src", apibase2 + "/" + d.imagePath).style("transform", "rotate(" + r + "deg)");
- if (d.captured_by) {
- attribution.append("a").attr("class", "captured_by").attr("target", "_blank").attr("href", "https://kartaview.org/user/" + encodeURIComponent(d.captured_by)).text("@" + d.captured_by);
+ if (d2) {
+ var sequence = _oscCache.sequences[d2.sequence_id];
+ var r2 = sequence && sequence.rotation || 0;
+ imageWrap.append("img").attr("class", "kartaview-image").attr("src", apibase2 + "/" + d2.imagePath).style("transform", "rotate(" + r2 + "deg)");
+ if (d2.captured_by) {
+ attribution.append("a").attr("class", "captured_by").attr("target", "_blank").attr("href", "https://kartaview.org/user/" + encodeURIComponent(d2.captured_by)).text("@" + d2.captured_by);
attribution.append("span").text("|");
}
- if (d.captured_at) {
- attribution.append("span").attr("class", "captured_at").text(localeDateString2(d.captured_at));
+ if (d2.captured_at) {
+ attribution.append("span").attr("class", "captured_at").text(localeDateString2(d2.captured_at));
attribution.append("span").text("|");
}
- attribution.append("a").attr("class", "image-link").attr("target", "_blank").attr("href", "https://kartaview.org/details/" + d.sequence_id + "/" + d.sequence_index).text("kartaview.org");
+ attribution.append("a").attr("class", "image-link").attr("target", "_blank").attr("href", "https://kartaview.org/details/" + d2.sequence_id + "/" + d2.sequence_index).text("kartaview.org");
}
return this;
- function localeDateString2(s) {
- if (!s)
+ function localeDateString2(s2) {
+ if (!s2)
return null;
var options2 = { day: "numeric", month: "short", year: "numeric" };
- var d2 = new Date(s);
- if (isNaN(d2.getTime()))
+ var d4 = new Date(s2);
+ if (isNaN(d4.getTime()))
return null;
- return d2.toLocaleDateString(_mainLocalizer.localeCode(), options2);
+ return d4.toLocaleDateString(_mainLocalizer.localeCode(), options2);
}
},
getSelectedImage: function() {
return _oscSelectedImage;
},
- getSequenceKeyForImage: function(d) {
- return d && d.sequence_id;
+ getSequenceKeyForImage: function(d2) {
+ return d2 && d2.sequence_id;
},
// Updates the currently highlighted sequence and selected bubble.
// Reset is only necessary when interacting with the viewport because
var hoveredImageKey = hovered && hovered.key;
var hoveredSequenceKey = this.getSequenceKeyForImage(hovered);
var hoveredSequence = hoveredSequenceKey && _oscCache.sequences[hoveredSequenceKey];
- var hoveredImageKeys = hoveredSequence && hoveredSequence.images.map(function(d) {
- return d.key;
+ var hoveredImageKeys = hoveredSequence && hoveredSequence.images.map(function(d2) {
+ return d2.key;
}) || [];
var viewer = context.container().select(".photoviewer");
var selected = viewer.empty() ? void 0 : viewer.datum();
var selectedImageKey = selected && selected.key;
var selectedSequenceKey = this.getSequenceKeyForImage(selected);
var selectedSequence = selectedSequenceKey && _oscCache.sequences[selectedSequenceKey];
- var selectedImageKeys = selectedSequence && selectedSequence.images.map(function(d) {
- return d.key;
+ var selectedImageKeys = selectedSequence && selectedSequence.images.map(function(d2) {
+ return d2.key;
}) || [];
var highlightedImageKeys = utilArrayUnion(hoveredImageKeys, selectedImageKeys);
- context.container().selectAll(".layer-kartaview .viewfield-group").classed("highlighted", function(d) {
- return highlightedImageKeys.indexOf(d.key) !== -1;
- }).classed("hovered", function(d) {
- return d.key === hoveredImageKey;
- }).classed("currentView", function(d) {
- return d.key === selectedImageKey;
- });
- context.container().selectAll(".layer-kartaview .sequence").classed("highlighted", function(d) {
- return d.properties.key === hoveredSequenceKey;
- }).classed("currentView", function(d) {
- return d.properties.key === selectedSequenceKey;
+ context.container().selectAll(".layer-kartaview .viewfield-group").classed("highlighted", function(d2) {
+ return highlightedImageKeys.indexOf(d2.key) !== -1;
+ }).classed("hovered", function(d2) {
+ return d2.key === hoveredImageKey;
+ }).classed("currentView", function(d2) {
+ return d2.key === selectedImageKey;
+ });
+ context.container().selectAll(".layer-kartaview .sequence").classed("highlighted", function(d2) {
+ return d2.properties.key === hoveredSequenceKey;
+ }).classed("currentView", function(d2) {
+ return d2.properties.key === selectedSequenceKey;
});
context.container().selectAll(".layer-kartaview .viewfield-group .viewfield").attr("d", viewfieldPath);
function viewfieldPath() {
- var d = this.parentNode.__data__;
- if (d.pano && d.key !== selectedImageKey) {
+ var d2 = this.parentNode.__data__;
+ if (d2.pano && d2.key !== selectedImageKey) {
return "M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0";
} else {
return "M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z";
}
};
+ // modules/services/vegbilder.js
+ var import_rbush9 = __toESM(require_rbush_min());
+
+ // modules/services/pannellum_photo.js
+ var pannellumViewerCSS = "pannellum/pannellum.css";
+ var pannellumViewerJS = "pannellum/pannellum.js";
+ var dispatch8 = dispatch_default("viewerChanged");
+ var _currScenes = [];
+ var _pannellumViewer;
+ var pannellum_photo_default = {
+ init: async function(context, selection2) {
+ selection2.append("div").attr("class", "photo-frame pannellum-frame").attr("id", "ideditor-pannellum-viewer").classed("hide", true);
+ if (!window.pannellum) {
+ await this.loadPannellum(context);
+ }
+ const options2 = {
+ "default": { firstScene: "" },
+ scenes: {}
+ };
+ _pannellumViewer = window.pannellum.viewer("ideditor-pannellum-viewer", options2);
+ _pannellumViewer.on("mousedown", () => {
+ select_default2(window).on("pointermove.pannellum mousemove.pannellum", () => {
+ dispatch8.call("viewerChanged");
+ });
+ }).on("mouseup", () => {
+ select_default2(window).on("pointermove.pannellum mousemove.pannellum", null);
+ }).on("animatefinished", () => {
+ dispatch8.call("viewerChanged");
+ });
+ context.ui().photoviewer.on("resize.pannellum", () => {
+ _pannellumViewer.resize();
+ });
+ this.event = utilRebind(this, dispatch8, "on");
+ return this;
+ },
+ loadPannellum: function(context) {
+ const head = select_default2("head");
+ return Promise.all([
+ new Promise((resolve, reject) => {
+ head.selectAll("#ideditor-pannellum-viewercss").data([0]).enter().append("link").attr("id", "ideditor-pannellum-viewercss").attr("rel", "stylesheet").attr("crossorigin", "anonymous").attr("href", context.asset(pannellumViewerCSS)).on("load.pannellum", resolve).on("error.pannellum", reject);
+ }),
+ new Promise((resolve, reject) => {
+ head.selectAll("#ideditor-pannellum-viewerjs").data([0]).enter().append("script").attr("id", "ideditor-pannellum-viewerjs").attr("crossorigin", "anonymous").attr("src", context.asset(pannellumViewerJS)).on("load.pannellum", resolve).on("error.pannellum", reject);
+ })
+ ]);
+ },
+ showPhotoFrame: function(context) {
+ const isHidden = context.selectAll(".photo-frame.pannellum-frame.hide").size();
+ if (isHidden) {
+ context.selectAll(".photo-frame:not(.pannellum-frame)").classed("hide", true);
+ context.selectAll(".photo-frame.pannellum-frame").classed("hide", false);
+ }
+ return this;
+ },
+ hidePhotoFrame: function(viewerContext) {
+ viewerContext.select("photo-frame.pannellum-frame").classed("hide", false);
+ return this;
+ },
+ selectPhoto: function(data, keepOrientation) {
+ const { key } = data;
+ if (!(key in _currScenes)) {
+ let newSceneOptions = {
+ showFullscreenCtrl: false,
+ autoLoad: false,
+ compass: true,
+ yaw: 0,
+ type: "equirectangular",
+ preview: data.preview_path,
+ panorama: data.image_path,
+ northOffset: data.ca
+ };
+ _currScenes.push(key);
+ _pannellumViewer.addScene(key, newSceneOptions);
+ }
+ let yaw = 0;
+ let pitch = 0;
+ if (keepOrientation) {
+ yaw = this.getYaw();
+ pitch = _pannellumViewer.getPitch();
+ }
+ _pannellumViewer.loadScene(key, pitch, yaw);
+ dispatch8.call("viewerChanged");
+ if (_currScenes.length > 3) {
+ const old_key = _currScenes.shift();
+ _pannellumViewer.removeScene(old_key);
+ }
+ return this;
+ },
+ getYaw: function() {
+ return _pannellumViewer.getYaw();
+ }
+ };
+
+ // modules/services/vegbilder.js
+ var owsEndpoint = "https://www.vegvesen.no/kart/ogc/vegbilder_1_0/ows?";
+ var tileZoom2 = 14;
+ var tiler5 = utilTiler().zoomExtent([tileZoom2, tileZoom2]).skipNullIsland(true);
+ var dispatch9 = dispatch_default("loadedImages", "viewerChanged");
+ var directionEnum = Object.freeze({
+ forward: Symbol(0),
+ backward: Symbol(1)
+ });
+ var _planeFrame;
+ var _pannellumFrame;
+ var _currentFrame;
+ var _loadViewerPromise3;
+ var _vegbilderCache;
+ async function fetchAvailableLayers() {
+ const params = {
+ service: "WFS",
+ request: "GetCapabilities",
+ version: "2.0.0"
+ };
+ const urlForRequest = owsEndpoint + utilQsString(params);
+ const response = await xml_default(urlForRequest);
+ const xPathSelector = "/wfs:WFS_Capabilities/wfs:FeatureTypeList/wfs:FeatureType/wfs:Name";
+ const regexMatcher = /^vegbilder_1_0:Vegbilder(?<image_type>_360)?_(?<year>\d{4})$/;
+ const NSResolver = response.createNSResolver(response);
+ const l2 = response.evaluate(
+ xPathSelector,
+ response,
+ NSResolver,
+ XPathResult.ANY_TYPE
+ );
+ let node;
+ const availableLayers = [];
+ while ((node = l2.iterateNext()) !== null) {
+ const match = node.textContent?.match(regexMatcher);
+ if (match) {
+ availableLayers.push({
+ name: match[0],
+ is_sphere: !!match.groups?.image_type,
+ year: parseInt(match.groups?.year, 10)
+ });
+ }
+ }
+ return availableLayers;
+ }
+ function filterAvailableLayers(photoContex) {
+ const fromDateString = photoContex.fromDate();
+ const toDateString = photoContex.toDate();
+ const fromYear = fromDateString ? new Date(fromDateString).getFullYear() : 2016;
+ const toYear = toDateString ? new Date(toDateString).getFullYear() : null;
+ const showsFlat = photoContex.showsFlat();
+ const showsPano = photoContex.showsPanoramic();
+ return Array.from(_vegbilderCache.wfslayers.values()).filter(({ layerInfo }) => layerInfo.year >= fromYear && (!toYear || layerInfo.year <= toYear) && (!layerInfo.is_sphere && showsFlat || layerInfo.is_sphere && showsPano));
+ }
+ function loadWFSLayers(projection2, margin, wfslayers) {
+ const tiles = tiler5.margin(margin).getTiles(projection2);
+ for (const cache of wfslayers) {
+ loadWFSLayer(projection2, cache, tiles);
+ }
+ }
+ function loadWFSLayer(projection2, cache, tiles) {
+ for (const [key, controller] of cache.inflight.entries()) {
+ const wanted = tiles.some((tile) => key === tile.id);
+ if (!wanted) {
+ controller.abort();
+ cache.inflight.delete(key);
+ }
+ }
+ Promise.all(tiles.map(
+ (tile) => loadTile2(cache, cache.layerInfo.name, tile)
+ )).then(() => orderSequences(projection2, cache));
+ }
+ async function loadTile2(cache, typename, tile) {
+ const bbox2 = tile.extent.bbox();
+ const tileid = tile.id;
+ if (cache.loaded.get(tileid) === true || cache.inflight.has(tileid))
+ return;
+ const params = {
+ service: "WFS",
+ request: "GetFeature",
+ version: "2.0.0",
+ typenames: typename,
+ bbox: [bbox2.minY, bbox2.minX, bbox2.maxY, bbox2.maxX].join(","),
+ outputFormat: "json"
+ };
+ const controller = new AbortController();
+ cache.inflight.set(tileid, controller);
+ const options2 = {
+ method: "GET",
+ signal: controller.signal
+ };
+ const urlForRequest = owsEndpoint + utilQsString(params);
+ let featureCollection;
+ try {
+ featureCollection = await json_default(urlForRequest, options2);
+ } catch {
+ cache.loaded.set(tileid, false);
+ return;
+ } finally {
+ cache.inflight.delete(tileid);
+ }
+ cache.loaded.set(tileid, true);
+ if (featureCollection.features.length === 0) {
+ return;
+ }
+ const features = featureCollection.features.map((feature3) => {
+ const loc = feature3.geometry.coordinates;
+ const key = feature3.id;
+ const properties = feature3.properties;
+ const {
+ RETNING: ca,
+ TIDSPUNKT: captured_at,
+ URL: image_path,
+ URLPREVIEW: preview_path,
+ BILDETYPE: image_type,
+ METER: metering,
+ FELTKODE: lane_code
+ } = properties;
+ const lane_number = parseInt(lane_code.match(/^[0-9]+/)[0], 10);
+ const direction = lane_number % 2 === 0 ? directionEnum.backward : directionEnum.forward;
+ const data = {
+ loc,
+ key,
+ ca,
+ image_path,
+ preview_path,
+ road_reference: roadReference(properties),
+ metering,
+ lane_code,
+ direction,
+ captured_at: new Date(captured_at),
+ is_sphere: image_type === "360"
+ };
+ cache.points.set(key, data);
+ return {
+ minX: loc[0],
+ minY: loc[1],
+ maxX: loc[0],
+ maxY: loc[1],
+ data
+ };
+ });
+ _vegbilderCache.rtree.load(features);
+ dispatch9.call("loadedImages");
+ }
+ function orderSequences(projection2, cache) {
+ const { points } = cache;
+ const grouped = Array.from(points.values()).reduce((grouped2, image) => {
+ const key = image.road_reference;
+ if (grouped2.has(key)) {
+ grouped2.get(key).push(image);
+ } else {
+ grouped2.set(key, [image]);
+ }
+ return grouped2;
+ }, /* @__PURE__ */ new Map());
+ const imageSequences = Array.from(grouped.values()).reduce((imageSequences2, imageGroup) => {
+ imageGroup.sort((a2, b2) => {
+ if (a2.captured_at.valueOf() > b2.captured_at.valueOf()) {
+ return 1;
+ } else if (a2.captured_at.valueOf() < b2.captured_at.valueOf()) {
+ return -1;
+ } else {
+ const { direction } = a2;
+ if (direction === directionEnum.forward) {
+ return a2.metering - b2.metering;
+ } else {
+ return b2.metering - a2.metering;
+ }
+ }
+ });
+ let imageSequence = [imageGroup[0]];
+ let angle2 = null;
+ for (const [lastImage, image] of pairs(imageGroup)) {
+ if (lastImage.ca === null) {
+ const b2 = projection2(lastImage.loc);
+ const a2 = projection2(image.loc);
+ if (!geoVecEqual(a2, b2)) {
+ angle2 = geoVecAngle(a2, b2);
+ angle2 *= 180 / Math.PI;
+ angle2 -= 90;
+ angle2 = angle2 >= 0 ? angle2 : angle2 + 360;
+ }
+ lastImage.ca = angle2;
+ }
+ if (image.direction === lastImage.direction && image.captured_at.valueOf() - lastImage.captured_at.valueOf() <= 2e4) {
+ imageSequence.push(image);
+ } else {
+ imageSequences2.push(imageSequence);
+ imageSequence = [image];
+ }
+ }
+ imageSequences2.push(imageSequence);
+ return imageSequences2;
+ }, []);
+ cache.sequences = imageSequences.map((images) => {
+ const sequence = {
+ images,
+ key: images[0].key,
+ geometry: {
+ type: "LineString",
+ coordinates: images.map((image) => image.loc)
+ }
+ };
+ for (const image of images) {
+ _vegbilderCache.image2sequence_map.set(image.key, sequence);
+ }
+ return sequence;
+ });
+ }
+ function roadReference(properties) {
+ const {
+ FYLKENUMMER: county_number,
+ VEGKATEGORI: road_class,
+ VEGSTATUS: road_status,
+ VEGNUMMER: road_number,
+ STREKNING: section,
+ DELSTREKNING: subsection,
+ HP: parcel,
+ KRYSSDEL: junction_part,
+ SIDEANLEGGSDEL: services_part,
+ ANKERPUNKT: anker_point,
+ AAR: year
+ } = properties;
+ let reference;
+ if (year >= 2020) {
+ reference = `${road_class}${road_status}${road_number} S${section}D${subsection}`;
+ if (junction_part) {
+ reference = `${reference} M${anker_point} KD${junction_part}`;
+ } else if (services_part) {
+ reference = `${reference} M${anker_point} SD${services_part}`;
+ }
+ } else {
+ reference = `${county_number}${road_class}${road_status}${road_number} HP${parcel}`;
+ }
+ return reference;
+ }
+ function localeTimestamp(date) {
+ const options2 = {
+ day: "2-digit",
+ month: "2-digit",
+ year: "numeric",
+ hour: "numeric",
+ minute: "numeric",
+ second: "numeric"
+ };
+ return date.toLocaleString(_mainLocalizer.localeCode(), options2);
+ }
+ function partitionViewport3(projection2) {
+ const zoom = geoScaleToZoom(projection2.scale());
+ const roundZoom = Math.ceil(zoom * 2) / 2 + 2.5;
+ const tiler9 = utilTiler().zoomExtent([roundZoom, roundZoom]);
+ return tiler9.getTiles(projection2).map((tile) => tile.extent);
+ }
+ function searchLimited3(limit, projection2, rtree) {
+ limit ??= 5;
+ return partitionViewport3(projection2).reduce((result, extent) => {
+ const found = rtree.search(extent.bbox()).slice(0, limit).map((d2) => d2.data);
+ return result.concat(found);
+ }, []);
+ }
+ var vegbilder_default = {
+ init: function() {
+ this.event = utilRebind(this, dispatch9, "on");
+ },
+ reset: async function() {
+ if (_vegbilderCache) {
+ for (const layer of _vegbilderCache.wfslayers.values()) {
+ for (const controller of layer.inflight.values()) {
+ controller.abort();
+ }
+ }
+ }
+ _vegbilderCache = {
+ wfslayers: /* @__PURE__ */ new Map(),
+ rtree: new import_rbush9.default(),
+ image2sequence_map: /* @__PURE__ */ new Map()
+ };
+ const availableLayers = await fetchAvailableLayers();
+ const { wfslayers } = _vegbilderCache;
+ for (const layerInfo of availableLayers) {
+ const cache = {
+ layerInfo,
+ loaded: /* @__PURE__ */ new Map(),
+ inflight: /* @__PURE__ */ new Map(),
+ points: /* @__PURE__ */ new Map(),
+ sequences: []
+ };
+ wfslayers.set(layerInfo.name, cache);
+ }
+ },
+ images: function(projection2) {
+ const limit = 5;
+ return searchLimited3(limit, projection2, _vegbilderCache.rtree);
+ },
+ sequences: function(projection2) {
+ const viewport = projection2.clipExtent();
+ const min3 = [viewport[0][0], viewport[1][1]];
+ const max3 = [viewport[1][0], viewport[0][1]];
+ const bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
+ const seen = /* @__PURE__ */ new Set();
+ const line_strings = [];
+ for (const { data } of _vegbilderCache.rtree.search(bbox2)) {
+ const sequence = _vegbilderCache.image2sequence_map.get(data.key);
+ if (!sequence)
+ continue;
+ const { key, geometry, images } = sequence;
+ if (seen.has(key))
+ continue;
+ seen.add(key);
+ const line = {
+ type: "LineString",
+ coordinates: geometry.coordinates,
+ key,
+ images
+ };
+ line_strings.push(line);
+ }
+ return line_strings;
+ },
+ cachedImage: function(key) {
+ for (const { points } of _vegbilderCache.wfslayers.values()) {
+ if (points.has(key))
+ return points.get(key);
+ }
+ },
+ getSequenceForImage: function(image) {
+ return _vegbilderCache?.image2sequence_map.get(image?.key);
+ },
+ loadImages: async function(context, margin) {
+ if (!_vegbilderCache) {
+ await this.reset();
+ }
+ margin ??= 1;
+ const wfslayers = filterAvailableLayers(context.photos());
+ loadWFSLayers(context.projection, margin, wfslayers);
+ },
+ photoFrame: function() {
+ return _currentFrame;
+ },
+ ensureViewerLoaded: function(context) {
+ if (_loadViewerPromise3)
+ return _loadViewerPromise3;
+ const step = (stepBy) => () => {
+ const viewer = context.container().select(".photoviewer");
+ const selected = viewer.empty() ? void 0 : viewer.datum();
+ if (!selected)
+ return;
+ const sequence = this.getSequenceForImage(selected);
+ const nextIndex = sequence.images.indexOf(selected) + stepBy;
+ const nextImage = sequence.images[nextIndex];
+ if (!nextImage)
+ return;
+ context.map().centerEase(nextImage.loc);
+ this.selectImage(context, nextImage.key, true);
+ };
+ const wrap2 = context.container().select(".photoviewer").selectAll(".vegbilder-wrapper").data([0]);
+ const wrapEnter = wrap2.enter().append("div").attr("class", "photo-wrapper vegbilder-wrapper").classed("hide", true);
+ wrapEnter.append("div").attr("class", "photo-attribution fillD");
+ const controlsEnter = wrapEnter.append("div").attr("class", "photo-controls-wrap").append("div").attr("class", "photo-controls");
+ controlsEnter.append("button").on("click.back", step(-1)).text("\u25C4");
+ controlsEnter.append("button").on("click.forward", step(1)).text("\u25BA");
+ _loadViewerPromise3 = Promise.all([
+ pannellum_photo_default.init(context, wrapEnter),
+ plane_photo_default.init(context, wrapEnter)
+ ]).then(([pannellumPhotoFrame, planePhotoFrame]) => {
+ _pannellumFrame = pannellumPhotoFrame;
+ _pannellumFrame.event.on("viewerChanged", () => dispatch9.call("viewerChanged"));
+ _planeFrame = planePhotoFrame;
+ _planeFrame.event.on("viewerChanged", () => dispatch9.call("viewerChanged"));
+ });
+ return _loadViewerPromise3;
+ },
+ selectImage: function(context, key, keepOrientation) {
+ const d2 = this.cachedImage(key);
+ this.updateUrlImage(key);
+ const viewer = context.container().select(".photoviewer");
+ if (!viewer.empty()) {
+ viewer.datum(d2);
+ }
+ this.setStyles(context, null, true);
+ if (!d2)
+ return this;
+ const wrap2 = context.container().select(".photoviewer .vegbilder-wrapper");
+ const attribution = wrap2.selectAll(".photo-attribution").text("");
+ if (d2.captured_at) {
+ attribution.append("span").attr("class", "captured_at").text(localeTimestamp(d2.captured_at));
+ }
+ attribution.append("a").attr("target", "_blank").attr("href", "https://vegvesen.no").call(_t.append("vegbilder.publisher"));
+ attribution.append("a").attr("target", "_blank").attr("href", `https://vegbilder.atlas.vegvesen.no/?year=${d2.captured_at.getFullYear()}&lat=${d2.loc[1]}&lng=${d2.loc[0]}&view=image&imageId=${d2.key}`).call(_t.append("vegbilder.view_on"));
+ _currentFrame = d2.is_sphere ? _pannellumFrame : _planeFrame;
+ _currentFrame.selectPhoto(d2, keepOrientation).showPhotoFrame(wrap2);
+ return this;
+ },
+ showViewer: function(context) {
+ const viewer = context.container().select(".photoviewer").classed("hide", false);
+ const isHidden = viewer.selectAll(".photo-wrapper.vegbilder-wrapper.hide").size();
+ if (isHidden) {
+ viewer.selectAll(".photo-wrapper:not(.vegbilder-wrapper)").classed("hide", true);
+ viewer.selectAll(".photo-wrapper.vegbilder-wrapper").classed("hide", false);
+ }
+ return this;
+ },
+ hideViewer: function(context) {
+ this.updateUrlImage(null);
+ const viewer = context.container().select(".photoviewer");
+ if (!viewer.empty())
+ viewer.datum(null);
+ viewer.classed("hide", true).selectAll(".photo-wrapper").classed("hide", true);
+ context.container().selectAll(".viewfield-group, .sequence").classed("currentView", false);
+ return this.setStyles(context, null, true);
+ },
+ // Updates the currently highlighted sequence and selected bubble.
+ // Reset is only necessary when interacting with the viewport because
+ // this implicitly changes the currently selected bubble/sequence
+ setStyles: function(context, hovered, reset) {
+ if (reset) {
+ context.container().selectAll(".viewfield-group").classed("highlighted", false).classed("hovered", false).classed("currentView", false);
+ context.container().selectAll(".sequence").classed("highlighted", false).classed("currentView", false);
+ }
+ const hoveredImageKey = hovered?.key;
+ const hoveredSequence = this.getSequenceForImage(hovered);
+ const hoveredSequenceKey = hoveredSequence?.key;
+ const hoveredImageKeys = hoveredSequence?.images.map((d2) => d2.key) ?? [];
+ const viewer = context.container().select(".photoviewer");
+ const selected = viewer.empty() ? void 0 : viewer.datum();
+ const selectedImageKey = selected?.key;
+ const selectedSequence = this.getSequenceForImage(selected);
+ const selectedSequenceKey = selectedSequence?.key;
+ const selectedImageKeys = selectedSequence?.images.map((d2) => d2.key) ?? [];
+ const highlightedImageKeys = utilArrayUnion(hoveredImageKeys, selectedImageKeys);
+ context.container().selectAll(".layer-vegbilder .viewfield-group").classed("highlighted", (d2) => highlightedImageKeys.indexOf(d2.key) !== -1).classed("hovered", (d2) => d2.key === hoveredImageKey).classed("currentView", (d2) => d2.key === selectedImageKey);
+ context.container().selectAll(".layer-vegbilder .sequence").classed("highlighted", (d2) => d2.key === hoveredSequenceKey).classed("currentView", (d2) => d2.key === selectedSequenceKey);
+ context.container().selectAll(".layer-vegbilder .viewfield-group .viewfield").attr("d", viewfieldPath);
+ function viewfieldPath() {
+ const d2 = this.parentNode.__data__;
+ if (d2.is_sphere && d2.key !== selectedImageKey) {
+ return "M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0";
+ } else {
+ return "M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z";
+ }
+ }
+ return this;
+ },
+ updateUrlImage: function(key) {
+ if (!window.mocha) {
+ const hash = utilStringQs(window.location.hash);
+ if (key) {
+ hash.photo = "vegbilder/" + key;
+ } else {
+ delete hash.photo;
+ }
+ window.location.replace("#" + utilQsString(hash, true));
+ }
+ },
+ validHere: function(extent) {
+ const bbox2 = Object.values(extent.bbox());
+ return iso1A2Codes(bbox2).includes("NO");
+ },
+ cache: function() {
+ return _vegbilderCache;
+ }
+ };
+
// node_modules/osm-auth/src/osm-auth.mjs
var import_store = __toESM(require_store_legacy(), 1);
- function osmAuth(o) {
+ function osmAuth(o2) {
var oauth2 = {};
oauth2.authenticated = function() {
return !!token("oauth2_access_token");
return;
}
oauth2.logout();
- var url = o.url + "/oauth2/authorize?" + utilQsString2({
- client_id: o.client_id,
- redirect_uri: o.redirect_uri,
- response_type: "code",
- scope: o.scope
+ _generatePkceChallenge(function(pkce) {
+ _authenticate(pkce, callback);
+ });
+ };
+ oauth2.authenticateAsync = function() {
+ if (oauth2.authenticated()) {
+ return Promise.resolve(oauth2);
+ }
+ oauth2.logout();
+ return new Promise((resolve, reject) => {
+ var errback = (err, result) => {
+ if (err) {
+ reject(new Error(err));
+ } else {
+ resolve(result);
+ }
+ };
+ _generatePkceChallenge((pkce) => _authenticate(pkce, errback));
});
- if (!o.singlepage) {
- var w = 600;
- var h = 550;
+ };
+ function _authenticate(pkce, callback) {
+ var state = generateState();
+ var url = o2.url + "/oauth2/authorize?" + utilQsString2({
+ client_id: o2.client_id,
+ redirect_uri: o2.redirect_uri,
+ response_type: "code",
+ scope: o2.scope,
+ state,
+ code_challenge: pkce.code_challenge,
+ code_challenge_method: pkce.code_challenge_method
+ });
+ if (o2.singlepage) {
+ if (!import_store.default.enabled) {
+ var error = new Error("local storage unavailable, but require in singlepage mode");
+ error.status = "pkce-localstorage-unavailable";
+ callback(error);
+ return;
+ }
+ var params = utilStringQs2(window.location.search.slice(1));
+ if (params.code) {
+ oauth2.bootstrapToken(params.code, callback);
+ } else {
+ token("oauth2_state", state);
+ token("oauth2_pkce_code_verifier", pkce.code_verifier);
+ window.location = url;
+ }
+ } else {
+ var w2 = 600;
+ var h2 = 550;
var settings = [
- ["width", w],
- ["height", h],
- ["left", screen.width / 2 - w / 2],
- ["top", screen.height / 2 - h / 2]
- ].map(function(x) {
- return x.join("=");
+ ["width", w2],
+ ["height", h2],
+ ["left", window.screen.width / 2 - w2 / 2],
+ ["top", window.screen.height / 2 - h2 / 2]
+ ].map(function(x2) {
+ return x2.join("=");
}).join(",");
var popup = window.open("about:blank", "oauth_window", settings);
oauth2.popupWindow = popup;
popup.location = url;
if (!popup) {
- var error = new Error("Popup was blocked");
+ error = new Error("Popup was blocked");
error.status = "popup-blocked";
- throw error;
+ callback(error);
}
}
window.authComplete = function(url2) {
- var params = utilStringQs2(url2.split("?")[1]);
- getAccessToken(params.code);
+ var params2 = utilStringQs2(url2.split("?")[1]);
+ if (params2.state !== state) {
+ error = new Error("Invalid state");
+ error.status = "invalid-state";
+ callback(error);
+ return;
+ }
+ _getAccessToken(params2.code, pkce.code_verifier, accessTokenDone);
delete window.authComplete;
};
- function getAccessToken(auth_code) {
- var url2 = o.url + "/oauth2/token?" + utilQsString2({
- client_id: o.client_id,
- grant_type: "authorization_code",
- code: auth_code,
- redirect_uri: o.redirect_uri,
- client_secret: o.client_secret
- });
- oauth2.rawxhr("POST", url2, null, null, null, accessTokenDone);
- o.loading();
- }
function accessTokenDone(err, xhr) {
- o.done();
+ o2.done();
if (err) {
callback(err);
return;
token("oauth2_access_token", access_token.access_token);
callback(null, oauth2);
}
- };
+ }
+ function _getAccessToken(auth_code, code_verifier, accessTokenDone) {
+ var url = o2.url + "/oauth2/token?" + utilQsString2({
+ client_id: o2.client_id,
+ redirect_uri: o2.redirect_uri,
+ grant_type: "authorization_code",
+ code: auth_code,
+ code_verifier
+ });
+ oauth2.rawxhr("POST", url, null, null, null, accessTokenDone);
+ o2.loading();
+ }
oauth2.bringPopupWindowToFront = function() {
var broughtPopupToFront = false;
try {
return broughtPopupToFront;
};
oauth2.bootstrapToken = function(auth_code, callback) {
- function getAccessToken(auth_code2) {
- var url = o.url + "/oauth2/token?" + utilQsString2({
- client_id: o.client_id,
- grant_type: "authorization_code",
- code: auth_code2,
- redirect_uri: o.redirect_uri,
- client_secret: o.client_secret
- });
- oauth2.rawxhr("POST", url, null, null, null, accessTokenDone);
- o.loading();
+ var state = token("oauth2_state");
+ token("oauth2_state", "");
+ var params = utilStringQs2(window.location.search.slice(1));
+ if (params.state !== state) {
+ var error = new Error("Invalid state");
+ error.status = "invalid-state";
+ callback(error);
+ return;
}
+ var code_verifier = token("oauth2_pkce_code_verifier");
+ token("oauth2_pkce_code_verifier", "");
+ _getAccessToken(auth_code, code_verifier, accessTokenDone);
function accessTokenDone(err, xhr) {
- o.done();
+ o2.done();
if (err) {
callback(err);
return;
token("oauth2_access_token", access_token.access_token);
callback(null, oauth2);
}
- getAccessToken(auth_code);
+ };
+ oauth2.fetch = function(resource, options2) {
+ if (oauth2.authenticated()) {
+ return _doFetch();
+ } else {
+ if (o2.auto) {
+ return oauth2.authenticateAsync().then(_doFetch);
+ } else {
+ return Promise.reject(new Error("not authenticated"));
+ }
+ }
+ function _doFetch() {
+ options2 = options2 || {};
+ if (!options2.headers) {
+ options2.headers = { "Content-Type": "application/x-www-form-urlencoded" };
+ }
+ options2.headers.Authorization = "Bearer " + token("oauth2_access_token");
+ return fetch(resource, options2);
+ }
};
oauth2.xhr = function(options2, callback) {
if (oauth2.authenticated()) {
- return run();
+ return _doXHR();
} else {
- if (o.auto) {
- oauth2.authenticate(run);
+ if (o2.auto) {
+ oauth2.authenticate(_doXHR);
return;
} else {
callback("not authenticated", null);
return;
}
}
- function run() {
- var url = options2.prefix !== false ? o.url + options2.path : options2.path;
+ function _doXHR() {
+ var url = options2.prefix !== false ? o2.url + options2.path : options2.path;
return oauth2.rawxhr(
options2.method,
url,
}
}
};
- xhr.onerror = function(e) {
- callback(e, null);
+ xhr.onerror = function(e3) {
+ callback(e3, null);
};
xhr.open(method, url, true);
- for (var h in headers)
- xhr.setRequestHeader(h, headers[h]);
+ for (var h2 in headers)
+ xhr.setRequestHeader(h2, headers[h2]);
xhr.send(data);
return xhr;
};
};
oauth2.options = function(val) {
if (!arguments.length)
- return o;
- o = val;
- o.url = o.url || "https://www.openstreetmap.org";
- o.auto = o.auto || false;
- o.singlepage = o.singlepage || false;
- o.loading = o.loading || function() {
+ return o2;
+ o2 = val;
+ o2.url = o2.url || "https://www.openstreetmap.org";
+ o2.auto = o2.auto || false;
+ o2.singlepage = o2.singlepage || false;
+ o2.loading = o2.loading || function() {
};
- o.done = o.done || function() {
+ o2.done = o2.done || function() {
};
- return oauth2.preauth(o);
+ return oauth2.preauth(o2);
};
var token;
if (import_store.default.enabled) {
- token = function(x, y) {
+ token = function(x2, y2) {
if (arguments.length === 1)
- return import_store.default.get(o.url + x);
+ return import_store.default.get(o2.url + x2);
else if (arguments.length === 2)
- return import_store.default.set(o.url + x, y);
+ return import_store.default.set(o2.url + x2, y2);
};
} else {
var storage = {};
- token = function(x, y) {
+ token = function(x2, y2) {
if (arguments.length === 1)
- return storage[o.url + x];
+ return storage[o2.url + x2];
else if (arguments.length === 2)
- return storage[o.url + x] = y;
+ return storage[o2.url + x2] = y2;
};
}
- oauth2.options(o);
+ oauth2.options(o2);
return oauth2;
}
function utilQsString2(obj) {
- return Object.keys(obj).sort().map(function(key) {
+ return Object.keys(obj).filter(function(key) {
+ return obj[key] !== void 0;
+ }).sort().map(function(key) {
return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]);
}).join("&");
}
function utilStringQs2(str2) {
- var i2 = 0;
- while (i2 < str2.length && (str2[i2] === "?" || str2[i2] === "#"))
- i2++;
- str2 = str2.slice(i2);
- return str2.split("&").reduce(function(obj, pair2) {
- var parts = pair2.split("=");
+ var i3 = 0;
+ while (i3 < str2.length && (str2[i3] === "?" || str2[i3] === "#"))
+ i3++;
+ str2 = str2.slice(i3);
+ return str2.split("&").reduce(function(obj, pair3) {
+ var parts = pair3.split("=");
if (parts.length === 2) {
obj[parts[0]] = decodeURIComponent(parts[1]);
}
return obj;
}, {});
}
+ function supportsWebCryptoAPI() {
+ return window && window.crypto && window.crypto.getRandomValues && window.crypto.subtle && window.crypto.subtle.digest;
+ }
+ function _generatePkceChallenge(callback) {
+ var code_verifier;
+ if (supportsWebCryptoAPI()) {
+ var random = window.crypto.getRandomValues(new Uint8Array(32));
+ code_verifier = base64(random.buffer);
+ var verifier = Uint8Array.from(Array.from(code_verifier).map(function(char) {
+ return char.charCodeAt(0);
+ }));
+ window.crypto.subtle.digest("SHA-256", verifier).then(function(hash) {
+ var code_challenge = base64(hash);
+ callback({
+ code_challenge,
+ code_verifier,
+ code_challenge_method: "S256"
+ });
+ });
+ } else {
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
+ code_verifier = "";
+ for (var i3 = 0; i3 < 64; i3++) {
+ code_verifier += chars[Math.floor(Math.random() * chars.length)];
+ }
+ callback({
+ code_verifier,
+ code_challenge: code_verifier,
+ code_challenge_method: "plain"
+ });
+ }
+ }
+ function generateState() {
+ var state;
+ if (supportsWebCryptoAPI()) {
+ var random = window.crypto.getRandomValues(new Uint8Array(32));
+ state = base64(random.buffer);
+ } else {
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
+ state = "";
+ for (var i3 = 0; i3 < 64; i3++) {
+ state += chars[Math.floor(Math.random() * chars.length)];
+ }
+ }
+ return state;
+ }
+ function base64(buffer) {
+ return btoa(String.fromCharCode.apply(null, new Uint8Array(buffer))).replace(/\//g, "_").replace(/\+/g, "-").replace(/[=]/g, "");
+ }
// modules/services/osm.js
- var import_rbush9 = __toESM(require_rbush_min());
- var tiler5 = utilTiler();
- var dispatch7 = dispatch_default("apiStatusChange", "authLoading", "authDone", "change", "loading", "loaded", "loadedNotes");
+ var import_rbush10 = __toESM(require_rbush_min());
+ var tiler6 = utilTiler();
+ var dispatch10 = dispatch_default("apiStatusChange", "authLoading", "authDone", "change", "loading", "loaded", "loadedNotes");
var urlroot = osmApiConnections[0].url;
var redirectPath = window.location.origin + window.location.pathname;
var oauth = osmAuth({
});
var _apiConnections = osmApiConnections;
var _imageryBlocklists = [/.*\.google(apis)?\..*\/(vt|kh)[\?\/].*([xyz]=.*){3}.*/];
- var _tileCache = { toLoad: {}, loaded: {}, inflight: {}, seen: {}, rtree: new import_rbush9.default() };
- var _noteCache = { toLoad: {}, loaded: {}, inflight: {}, inflightPost: {}, note: {}, closed: {}, rtree: new import_rbush9.default() };
+ var _tileCache = { toLoad: {}, loaded: {}, inflight: {}, seen: {}, rtree: new import_rbush10.default() };
+ var _noteCache = { toLoad: {}, loaded: {}, inflight: {}, inflightPost: {}, note: {}, closed: {}, rtree: new import_rbush10.default() };
var _userCache = { toLoad: {}, user: {} };
var _cachedApiStatus;
var _changeset = {};
var _off;
var _maxWayNodes = 2e3;
function authLoading() {
- dispatch7.call("authLoading");
+ dispatch10.call("authLoading");
}
function authDone() {
- dispatch7.call("authDone");
+ dispatch10.call("authDone");
}
function abortRequest5(controllerOrXHR) {
if (controllerOrXHR) {
return Object.keys(cache.inflight).length;
}
function abortUnwantedRequests4(cache, visibleTiles) {
- Object.keys(cache.inflight).forEach(function(k) {
- if (cache.toLoad[k])
+ Object.keys(cache.inflight).forEach(function(k2) {
+ if (cache.toLoad[k2])
return;
if (visibleTiles.find(function(tile) {
- return k === tile.id;
+ return k2 === tile.id;
}))
return;
- abortRequest5(cache.inflight[k]);
- delete cache.inflight[k];
+ abortRequest5(cache.inflight[k2]);
+ delete cache.inflight[k2];
});
}
function getLoc(attrs) {
function getNodes(obj) {
var elems = obj.getElementsByTagName("nd");
var nodes = new Array(elems.length);
- for (var i2 = 0, l = elems.length; i2 < l; i2++) {
- nodes[i2] = "n" + elems[i2].attributes.ref.value;
+ for (var i3 = 0, l2 = elems.length; i3 < l2; i3++) {
+ nodes[i3] = "n" + elems[i3].attributes.ref.value;
}
return nodes;
}
function getNodesJSON(obj) {
var elems = obj.nodes;
var nodes = new Array(elems.length);
- for (var i2 = 0, l = elems.length; i2 < l; i2++) {
- nodes[i2] = "n" + elems[i2];
+ for (var i3 = 0, l2 = elems.length; i3 < l2; i3++) {
+ nodes[i3] = "n" + elems[i3];
}
return nodes;
}
function getTags(obj) {
var elems = obj.getElementsByTagName("tag");
var tags = {};
- for (var i2 = 0, l = elems.length; i2 < l; i2++) {
- var attrs = elems[i2].attributes;
+ for (var i3 = 0, l2 = elems.length; i3 < l2; i3++) {
+ var attrs = elems[i3].attributes;
tags[attrs.k.value] = attrs.v.value;
}
return tags;
function getMembers(obj) {
var elems = obj.getElementsByTagName("member");
var members = new Array(elems.length);
- for (var i2 = 0, l = elems.length; i2 < l; i2++) {
- var attrs = elems[i2].attributes;
- members[i2] = {
+ for (var i3 = 0, l2 = elems.length; i3 < l2; i3++) {
+ var attrs = elems[i3].attributes;
+ members[i3] = {
id: attrs.type.value[0] + attrs.ref.value,
type: attrs.type.value,
role: attrs.role.value
function getMembersJSON(obj) {
var elems = obj.members;
var members = new Array(elems.length);
- for (var i2 = 0, l = elems.length; i2 < l; i2++) {
- var attrs = elems[i2];
- members[i2] = {
+ for (var i3 = 0, l2 = elems.length; i3 < l2; i3++) {
+ var attrs = elems[i3];
+ members[i3] = {
id: attrs.type[0] + attrs.ref,
type: attrs.type,
role: attrs.role
}
function parseComments(comments) {
var parsedComments = [];
- for (var i2 = 0; i2 < comments.length; i2++) {
- var comment = comments[i2];
+ for (var i3 = 0; i3 < comments.length; i3++) {
+ var comment = comments[i3];
if (comment.nodeName === "comment") {
var childNodes = comment.childNodes;
var parsedComment = {};
- for (var j2 = 0; j2 < childNodes.length; j2++) {
- var node = childNodes[j2];
+ for (var j3 = 0; j3 < childNodes.length; j3++) {
+ var node = childNodes[j3];
var nodeName = node.nodeName;
if (nodeName === "#text")
continue;
_deferred.delete(handle);
var results = [];
var result;
- for (var i2 = 0; i2 < children2.length; i2++) {
- result = parseChild(children2[i2]);
+ for (var i3 = 0; i3 < children2.length; i3++) {
+ result = parseChild(children2[i3]);
if (result)
results.push(result);
}
_deferred.delete(handle);
var results = [];
var result;
- for (var i2 = 0; i2 < objs.length; i2++) {
- result = parseObj(objs[i2]);
+ for (var i3 = 0; i3 < objs.length; i3++) {
+ result = parseObj(objs[i3]);
if (result)
results.push(result);
}
var bbox2 = geoExtent(props.loc).bbox();
coincident = _noteCache.rtree.search(bbox2).length;
} while (coincident);
- for (var i2 = 0; i2 < childNodes.length; i2++) {
- var node = childNodes[i2];
+ for (var i3 = 0; i3 < childNodes.length; i3++) {
+ var node = childNodes[i3];
var nodeName = node.nodeName;
if (nodeName === "#text")
continue;
_deferred.delete(handle);
var results = [];
var result;
- for (var i2 = 0; i2 < children2.length; i2++) {
- result = parseChild(children2[i2]);
+ for (var i3 = 0; i3 < children2.length; i3++) {
+ result = parseChild(children2[i3]);
if (result)
results.push(result);
}
}
}
function updateRtree4(item, replace) {
- _noteCache.rtree.remove(item, function isEql(a, b) {
- return a.data.id === b.data.id;
+ _noteCache.rtree.remove(item, function isEql(a2, b2) {
+ return a2.data.id === b2.data.id;
});
if (replace) {
_noteCache.rtree.insert(item);
}
var osm_default = {
init: function() {
- utilRebind(this, dispatch7, "on");
+ utilRebind(this, dispatch10, "on");
},
reset: function() {
Array.from(_deferred).forEach(function(handle) {
Object.values(_noteCache.inflightPost).forEach(abortRequest5);
if (_changeset.inflight)
abortRequest5(_changeset.inflight);
- _tileCache = { toLoad: {}, loaded: {}, inflight: {}, seen: {}, rtree: new import_rbush9.default() };
- _noteCache = { toLoad: {}, loaded: {}, inflight: {}, inflightPost: {}, note: {}, closed: {}, rtree: new import_rbush9.default() };
+ _tileCache = { toLoad: {}, loaded: {}, inflight: {}, seen: {}, rtree: new import_rbush10.default() };
+ _noteCache = { toLoad: {}, loaded: {}, inflight: {}, inflightPost: {}, note: {}, closed: {}, rtree: new import_rbush10.default() };
_userCache = { toLoad: {}, user: {} };
_cachedApiStatus = void 0;
_changeset = {};
} else {
if (!isAuthenticated && !_rateLimitError && err && err.status && (err.status === 509 || err.status === 429)) {
_rateLimitError = err;
- dispatch7.call("change");
+ dispatch10.call("change");
that.reloadApiStatus();
} else if (err && _cachedApiStatus === "online" || !err && _cachedApiStatus !== "online") {
that.reloadApiStatus();
loadMultiple: function(ids, callback) {
var that = this;
var groups = utilArrayGroupBy(utilArrayUniq(ids), osmEntity.id.type);
- Object.keys(groups).forEach(function(k) {
- var type2 = k + "s";
- var osmIDs = groups[k].map(function(id2) {
+ Object.keys(groups).forEach(function(k2) {
+ var type2 = k2 + "s";
+ var osmIDs = groups[k2].map(function(id2) {
return osmEntity.id.toOSM(id2);
});
var options2 = { skipSeen: false };
}
var elements = xml.getElementsByTagName("blacklist");
var regexes = [];
- for (var i2 = 0; i2 < elements.length; i2++) {
- var regexString = elements[i2].getAttribute("regex");
+ for (var i3 = 0; i3 < elements.length; i3++) {
+ var regexString = elements[i3].getAttribute("regex");
if (regexString) {
try {
var regex = new RegExp(regexString);
regexes.push(regex);
- } catch (e) {
+ } catch (e3) {
}
}
}
that.status(function(err, status) {
if (status !== _cachedApiStatus) {
_cachedApiStatus = status;
- dispatch7.call("apiStatusChange", that, err, status);
+ dispatch10.call("apiStatusChange", that, err, status);
}
});
}, 500);
loadTiles: function(projection2, callback) {
if (_off)
return;
- var tiles = tiler5.zoomExtent([_tileZoom4, _tileZoom4]).getTiles(projection2);
+ var tiles = tiler6.zoomExtent([_tileZoom4, _tileZoom4]).getTiles(projection2);
var hadRequests = hasInflightRequests(_tileCache);
abortUnwantedRequests4(_tileCache, tiles);
if (hadRequests && !hasInflightRequests(_tileCache)) {
- dispatch7.call("loaded");
+ dispatch10.call("loaded");
}
tiles.forEach(function(tile) {
this.loadTile(tile, callback);
if (_tileCache.loaded[tile.id] || _tileCache.inflight[tile.id])
return;
if (!hasInflightRequests(_tileCache)) {
- dispatch7.call("loading");
+ dispatch10.call("loading");
}
var path = "/api/0.6/map.json?bbox=";
var options2 = { skipSeen: true };
callback(err, Object.assign({ data: parsed }, tile));
}
if (!hasInflightRequests(_tileCache)) {
- dispatch7.call("loaded");
+ dispatch10.call("loaded");
}
}
},
loadTileAtLoc: function(loc, callback) {
if (Object.keys(_tileCache.toLoad).length > 50)
return;
- var k = geoZoomToScale(_tileZoom4 + 1);
- var offset = geoRawMercator().scale(k)(loc);
- var projection2 = geoRawMercator().transform({ k, x: -offset[0], y: -offset[1] });
- var tiles = tiler5.zoomExtent([_tileZoom4, _tileZoom4]).getTiles(projection2);
+ var k2 = geoZoomToScale(_tileZoom4 + 1);
+ var offset = geoRawMercator().scale(k2)(loc);
+ var projection2 = geoRawMercator().transform({ k: k2, x: -offset[0], y: -offset[1] });
+ var tiles = tiler6.zoomExtent([_tileZoom4, _tileZoom4]).getTiles(projection2);
tiles.forEach(function(tile) {
if (_tileCache.toLoad[tile.id] || _tileCache.loaded[tile.id] || _tileCache.inflight[tile.id])
return;
that.loadUsers(uids, function() {
});
}, 750);
- var tiles = tiler5.zoomExtent([_noteZoom, _noteZoom]).getTiles(projection2);
+ var tiles = tiler6.zoomExtent([_noteZoom, _noteZoom]).getTiles(projection2);
abortUnwantedRequests4(_noteCache, tiles);
tiles.forEach(function(tile) {
if (_noteCache.loaded[tile.id] || _noteCache.inflight[tile.id])
_noteCache.loaded[tile.id] = true;
}
throttleLoadUsers();
- dispatch7.call("loadedNotes");
+ dispatch10.call("loadedNotes");
},
options2
);
this.reset();
this.userChangesets(function() {
});
- dispatch7.call("change");
+ dispatch10.call("change");
return this;
},
toggle: function(val) {
caches: function(obj) {
function cloneCache(source) {
var target = {};
- Object.keys(source).forEach(function(k) {
- if (k === "rtree") {
- target.rtree = new import_rbush9.default().fromJSON(source.rtree.toJSON());
- } else if (k === "note") {
+ Object.keys(source).forEach(function(k2) {
+ if (k2 === "rtree") {
+ target.rtree = new import_rbush10.default().fromJSON(source.rtree.toJSON());
+ } else if (k2 === "note") {
target.note = {};
Object.keys(source.note).forEach(function(id2) {
target.note[id2] = osmNote(source.note[id2]);
});
} else {
- target[k] = JSON.parse(JSON.stringify(source[k]));
+ target[k2] = JSON.parse(JSON.stringify(source[k2]));
}
});
return target;
_userChangesets = void 0;
_userDetails = void 0;
oauth.logout();
- dispatch7.call("change");
+ dispatch10.call("change");
return this;
},
authenticated: function() {
return;
}
_rateLimitError = void 0;
- dispatch7.call("change");
+ dispatch10.call("change");
if (callback)
callback(err, res);
that.userChangesets(function() {
var min3 = [viewport[0][0], viewport[1][1]];
var max3 = [viewport[1][0], viewport[0][1]];
var bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
- return _noteCache.rtree.search(bbox2).map(function(d) {
- return d.data;
+ return _noteCache.rtree.search(bbox2).map(function(d2) {
+ return d2.data;
});
},
// get a single note from the cache
// formatversion: 2,
};
var url = apibase3 + "?" + utilQsString(obj);
- doRequest(url, function(err, d) {
+ doRequest(url, function(err, d2) {
if (err) {
callback(err);
- } else if (!d.success || d.error) {
- callback(d.error.messages.map(function(v) {
- return v.html["*"];
+ } else if (!d2.success || d2.error) {
+ callback(d2.error.messages.map(function(v2) {
+ return v2.html["*"];
}).join("<br>"));
} else {
var localeID = false;
- Object.values(d.entities).forEach(function(res) {
+ Object.values(d2.entities).forEach(function(res) {
if (res.missing !== "") {
var title = res.sitelinks.wiki.title;
if (title === rtypeSitelink) {
callback("No entity");
return;
}
- var i2;
+ var i3;
var description;
- for (i2 in langCodes) {
- let code2 = langCodes[i2];
+ for (i3 in langCodes) {
+ let code2 = langCodes[i3];
if (entity.descriptions[code2] && entity.descriptions[code2].language === code2) {
description = entity.descriptions[code2];
break;
var tagWiki = that.monolingualClaimToValueObj(data.tag, "P31");
var keyWiki = that.monolingualClaimToValueObj(data.key, "P31");
var wikis = [rtypeWiki, tagWiki, keyWiki];
- for (i2 in wikis) {
- var wiki = wikis[i2];
- for (var j2 in langCodes) {
- var code = langCodes[j2];
+ for (i3 in wikis) {
+ var wiki = wikis[i3];
+ for (var j3 in langCodes) {
+ var code = langCodes[j3];
var referenceId = langCodes[0].split("-")[0] !== "en" && code.split("-")[0] === "en" ? "inspector.wiki_en_reference" : "inspector.wiki_reference";
var info = getWikiInfo(wiki, code, referenceId);
if (info) {
};
// modules/services/streetside.js
- var import_rbush10 = __toESM(require_rbush_min());
+ var import_rbush11 = __toESM(require_rbush_min());
// modules/util/jsonp_request.js
var jsonpCache = {};
if (window.JSONP_DELAY === 0) {
callback(window.JSONP_FIX);
} else {
- var t = window.setTimeout(function() {
+ var t2 = window.setTimeout(function() {
callback(window.JSONP_FIX);
}, window.JSONP_DELAY || 0);
request3.abort = function() {
- window.clearTimeout(t);
+ window.clearTimeout(t2);
};
}
return request3;
}
function rand() {
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
- var c = "";
- var i2 = -1;
- while (++i2 < 15)
- c += chars.charAt(Math.floor(Math.random() * 52));
- return c;
+ var c2 = "";
+ var i3 = -1;
+ while (++i3 < 15)
+ c2 += chars.charAt(Math.floor(Math.random() * 52));
+ return c2;
}
function create2(url2) {
- var e = url2.match(/callback=(\w+)/);
- var c = e ? e[1] : rand();
- jsonpCache[c] = function(data) {
- if (jsonpCache[c]) {
+ var e3 = url2.match(/callback=(\w+)/);
+ var c2 = e3 ? e3[1] : rand();
+ jsonpCache[c2] = function(data) {
+ if (jsonpCache[c2]) {
callback(data);
}
finalize();
};
function finalize() {
- delete jsonpCache[c];
+ delete jsonpCache[c2];
script.remove();
}
request3.abort = finalize;
- return "jsonpCache." + c;
+ return "jsonpCache." + c2;
}
var cb = create2(url);
var script = select_default2("head").append("script").attr("type", "text/javascript").attr("src", url.replace(/(\{|%7B)callback(\}|%7D)/, cb));
var bubbleApi = "https://dev.virtualearth.net/mapcontrol/HumanScaleServices/GetBubbles.ashx?";
var streetsideImagesApi = "https://t.ssl.ak.tiles.virtualearth.net/tiles/";
var bubbleAppKey = "AuftgJsO0Xs8Ts4M1xZUQJQXJNsvmh3IV8DkNieCiy3tCwCUMq76-WpkrBtNAuEm";
- var pannellumViewerCSS = "pannellum-streetside/pannellum.css";
- var pannellumViewerJS = "pannellum-streetside/pannellum.js";
+ var pannellumViewerCSS2 = "pannellum/pannellum.css";
+ var pannellumViewerJS2 = "pannellum/pannellum.js";
var maxResults2 = 2e3;
- var tileZoom2 = 16.5;
- var tiler6 = utilTiler().zoomExtent([tileZoom2, tileZoom2]).skipNullIsland(true);
- var dispatch8 = dispatch_default("loadedImages", "viewerChanged");
+ var tileZoom3 = 16.5;
+ var tiler7 = utilTiler().zoomExtent([tileZoom3, tileZoom3]).skipNullIsland(true);
+ var dispatch11 = dispatch_default("loadedImages", "viewerChanged");
var minHfov = 10;
var maxHfov = 90;
var defaultHfov = 45;
var _resolution = 512;
var _currScene = 0;
var _ssCache;
- var _pannellumViewer;
+ var _pannellumViewer2;
var _sceneOptions = {
showFullscreenCtrl: false,
autoLoad: true,
type: "cubemap",
cubeMap: []
};
- var _loadViewerPromise3;
- function abortRequest6(i2) {
- i2.abort();
+ var _loadViewerPromise4;
+ function abortRequest6(i3) {
+ i3.abort();
}
- function localeTimestamp(s) {
- if (!s)
+ function localeTimestamp2(s2) {
+ if (!s2)
return null;
const options2 = { day: "numeric", month: "short", year: "numeric" };
- const d = new Date(s);
- if (isNaN(d.getTime()))
+ const d2 = new Date(s2);
+ if (isNaN(d2.getTime()))
return null;
- return d.toLocaleString(_mainLocalizer.localeCode(), options2);
+ return d2.toLocaleString(_mainLocalizer.localeCode(), options2);
}
function loadTiles3(which, url, projection2, margin) {
- const tiles = tiler6.margin(margin).getTiles(projection2);
+ const tiles = tiler7.margin(margin).getTiles(projection2);
const cache = _ssCache[which];
- Object.keys(cache.inflight).forEach((k) => {
- const wanted = tiles.find((tile) => k.indexOf(tile.id + ",") === 0);
+ Object.keys(cache.inflight).forEach((k2) => {
+ const wanted = tiles.find((tile) => k2.indexOf(tile.id + ",") === 0);
if (!wanted) {
- abortRequest6(cache.inflight[k]);
- delete cache.inflight[k];
+ abortRequest6(cache.inflight[k2]);
+ delete cache.inflight[k2];
}
});
tiles.forEach((tile) => loadNextTilePage2(which, url, tile));
if (cache.points[bubble.id])
return null;
const loc = [bubble.lo, bubble.la];
- const d = {
+ const d2 = {
loc,
key: bubble.id,
ca: bubble.he,
pano: true,
sequenceKey: null
};
- cache.points[bubble.id] = d;
+ cache.points[bubble.id] = d2;
if (bubble.pr === void 0) {
cache.leaders.push(bubble.id);
}
minY: loc[1],
maxX: loc[0],
maxY: loc[1],
- data: d
+ data: d2
};
}).filter(Boolean);
cache.rtree.load(features);
connectSequences();
if (which === "bubbles") {
- dispatch8.call("loadedImages");
+ dispatch11.call("loadedImages");
}
});
}
function connectSequences() {
let cache = _ssCache.bubbles;
let keepLeaders = [];
- for (let i2 = 0; i2 < cache.leaders.length; i2++) {
- let bubble = cache.points[cache.leaders[i2]];
+ for (let i3 = 0; i3 < cache.leaders.length; i3++) {
+ let bubble = cache.points[cache.leaders[i3]];
let seen = {};
let sequence = { key: bubble.key, bubbles: [] };
let complete = false;
} while (bubble && !seen[bubble.key] && !complete);
if (complete) {
_ssCache.sequences[sequence.key] = sequence;
- for (let j2 = 0; j2 < sequence.bubbles.length; j2++) {
- sequence.bubbles[j2].sequenceKey = sequence.key;
+ for (let j3 = 0; j3 < sequence.bubbles.length; j3++) {
+ sequence.bubbles[j3].sequenceKey = sequence.key;
}
sequence.geojson = {
type: "LineString",
captured_by: sequence.bubbles[0] ? sequence.bubbles[0].captured_by : null,
key: sequence.key
},
- coordinates: sequence.bubbles.map((d) => d.loc)
+ coordinates: sequence.bubbles.map((d2) => d2.loc)
};
} else {
- keepLeaders.push(cache.leaders[i2]);
+ keepLeaders.push(cache.leaders[i3]);
}
}
cache.leaders = keepLeaders;
}
});
}
- function partitionViewport3(projection2) {
- let z = geoScaleToZoom(projection2.scale());
- let z2 = Math.ceil(z * 2) / 2 + 2.5;
- let tiler8 = utilTiler().zoomExtent([z2, z2]);
- return tiler8.getTiles(projection2).map((tile) => tile.extent);
+ function partitionViewport4(projection2) {
+ let z2 = geoScaleToZoom(projection2.scale());
+ let z22 = Math.ceil(z2 * 2) / 2 + 2.5;
+ let tiler9 = utilTiler().zoomExtent([z22, z22]);
+ return tiler9.getTiles(projection2).map((tile) => tile.extent);
}
- function searchLimited3(limit, projection2, rtree) {
+ function searchLimited4(limit, projection2, rtree) {
limit = limit || 5;
- return partitionViewport3(projection2).reduce((result, extent) => {
- let found = rtree.search(extent.bbox()).slice(0, limit).map((d) => d.data);
+ return partitionViewport4(projection2).reduce((result, extent) => {
+ let found = rtree.search(extent.bbox()).slice(0, limit).map((d2) => d2.data);
return found.length ? result.concat(found) : result;
}, []);
}
- function loadImage(imgInfo) {
+ function loadImage2(imgInfo) {
return new Promise((resolve) => {
let img = new Image();
img.onload = () => {
});
}
function loadCanvas(imageGroup) {
- return Promise.all(imageGroup.map(loadImage)).then((data) => {
+ return Promise.all(imageGroup.map(loadImage2)).then((data) => {
let canvas = document.getElementById("ideditor-canvas" + data[0].imgInfo.face);
const which = { "01": 0, "02": 1, "03": 2, "10": 3, "11": 4, "12": 5 };
let face = data[0].imgInfo.face;
if (reset) {
selection2.selectAll("#ideditor-stitcher-canvases").remove();
}
- selection2.selectAll("#ideditor-stitcher-canvases").data([0]).enter().append("div").attr("id", "ideditor-stitcher-canvases").attr("display", "none").selectAll("canvas").data(["canvas01", "canvas02", "canvas03", "canvas10", "canvas11", "canvas12"]).enter().append("canvas").attr("id", (d) => "ideditor-" + d).attr("width", _resolution).attr("height", _resolution);
+ selection2.selectAll("#ideditor-stitcher-canvases").data([0]).enter().append("div").attr("id", "ideditor-stitcher-canvases").attr("display", "none").selectAll("canvas").data(["canvas01", "canvas02", "canvas03", "canvas10", "canvas11", "canvas12"]).enter().append("canvas").attr("id", (d2) => "ideditor-" + d2).attr("width", _resolution).attr("height", _resolution);
}
function qkToXY(qk) {
- let x = 0;
- let y = 0;
+ let x2 = 0;
+ let y2 = 0;
let scale = 256;
- for (let i2 = qk.length; i2 > 0; i2--) {
- const key = qk[i2 - 1];
- x += +(key === "1" || key === "3") * scale;
- y += +(key === "2" || key === "3") * scale;
+ for (let i3 = qk.length; i3 > 0; i3--) {
+ const key = qk[i3 - 1];
+ x2 += +(key === "1" || key === "3") * scale;
+ y2 += +(key === "2" || key === "3") * scale;
scale *= 2;
}
- return [x, y];
+ return [x2, y2];
}
function getQuadKeys() {
let dim = _resolution / 256;
if (!_ssCache) {
this.reset();
}
- this.event = utilRebind(this, dispatch8, "on");
+ this.event = utilRebind(this, dispatch11, "on");
},
/**
* reset() reset the cache.
Object.values(_ssCache.bubbles.inflight).forEach(abortRequest6);
}
_ssCache = {
- bubbles: { inflight: {}, loaded: {}, nextPage: {}, rtree: new import_rbush10.default(), points: {}, leaders: [] },
+ bubbles: { inflight: {}, loaded: {}, nextPage: {}, rtree: new import_rbush11.default(), points: {}, leaders: [] },
sequences: {}
};
},
*/
bubbles: function(projection2) {
const limit = 5;
- return searchLimited3(limit, projection2, _ssCache.bubbles.rtree);
+ return searchLimited4(limit, projection2, _ssCache.bubbles.rtree);
},
cachedImage: function(imageKey) {
return _ssCache.bubbles.points[imageKey];
const bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
let seen = {};
let results = [];
- _ssCache.bubbles.rtree.search(bbox2).forEach((d) => {
- const key = d.data.sequenceKey;
+ _ssCache.bubbles.rtree.search(bbox2).forEach((d2) => {
+ const key = d2.data.sequenceKey;
if (key && !seen[key]) {
seen[key] = true;
results.push(_ssCache.sequences[key].geojson);
loadTiles3("bubbles", bubbleApi, projection2, margin);
},
viewer: function() {
- return _pannellumViewer;
+ return _pannellumViewer2;
},
initViewer: function() {
if (!window.pannellum)
return;
- if (_pannellumViewer)
+ if (_pannellumViewer2)
return;
_currScene += 1;
const sceneID = _currScene.toString();
scenes: {}
};
options2.scenes[sceneID] = _sceneOptions;
- _pannellumViewer = window.pannellum.viewer("ideditor-viewer-streetside", options2);
+ _pannellumViewer2 = window.pannellum.viewer("ideditor-viewer-streetside", options2);
},
ensureViewerLoaded: function(context) {
- if (_loadViewerPromise3)
- return _loadViewerPromise3;
+ if (_loadViewerPromise4)
+ return _loadViewerPromise4;
let wrap2 = context.container().select(".photoviewer").selectAll(".ms-wrapper").data([0]);
let wrapEnter = wrap2.enter().append("div").attr("class", "photo-wrapper ms-wrapper").classed("hide", true);
let that = this;
let pointerPrefix = "PointerEvent" in window ? "pointer" : "mouse";
wrapEnter.append("div").attr("id", "ideditor-viewer-streetside").on(pointerPrefix + "down.streetside", () => {
select_default2(window).on(pointerPrefix + "move.streetside", () => {
- dispatch8.call("viewerChanged");
+ dispatch11.call("viewerChanged");
}, true);
}).on(pointerPrefix + "up.streetside pointercancel.streetside", () => {
select_default2(window).on(pointerPrefix + "move.streetside", null);
- let t = timer((elapsed) => {
- dispatch8.call("viewerChanged");
+ let t2 = timer((elapsed) => {
+ dispatch11.call("viewerChanged");
if (elapsed > 2e3) {
- t.stop();
+ t2.stop();
}
});
}).append("div").attr("class", "photo-attribution fillD");
controlsEnter.append("button").on("click.forward", step(1)).text("\u25BA");
wrap2 = wrap2.merge(wrapEnter).call(setupCanvas, true);
context.ui().photoviewer.on("resize.streetside", () => {
- if (_pannellumViewer) {
- _pannellumViewer.resize();
+ if (_pannellumViewer2) {
+ _pannellumViewer2.resize();
}
});
- _loadViewerPromise3 = new Promise((resolve, reject) => {
+ _loadViewerPromise4 = new Promise((resolve, reject) => {
let loadedCount = 0;
function loaded() {
loadedCount += 1;
resolve();
}
const head = select_default2("head");
- head.selectAll("#ideditor-streetside-viewercss").data([0]).enter().append("link").attr("id", "ideditor-streetside-viewercss").attr("rel", "stylesheet").attr("crossorigin", "anonymous").attr("href", context.asset(pannellumViewerCSS)).on("load.serviceStreetside", loaded).on("error.serviceStreetside", function() {
+ head.selectAll("#ideditor-streetside-viewercss").data([0]).enter().append("link").attr("id", "ideditor-streetside-viewercss").attr("rel", "stylesheet").attr("crossorigin", "anonymous").attr("href", context.asset(pannellumViewerCSS2)).on("load.serviceStreetside", loaded).on("error.serviceStreetside", function() {
reject();
});
- head.selectAll("#ideditor-streetside-viewerjs").data([0]).enter().append("script").attr("id", "ideditor-streetside-viewerjs").attr("crossorigin", "anonymous").attr("src", context.asset(pannellumViewerJS)).on("load.serviceStreetside", loaded).on("error.serviceStreetside", function() {
+ head.selectAll("#ideditor-streetside-viewerjs").data([0]).enter().append("script").attr("id", "ideditor-streetside-viewerjs").attr("crossorigin", "anonymous").attr("src", context.asset(pannellumViewerJS2)).on("load.serviceStreetside", loaded).on("error.serviceStreetside", function() {
reject();
});
}).catch(function() {
- _loadViewerPromise3 = null;
+ _loadViewerPromise4 = null;
});
- return _loadViewerPromise3;
+ return _loadViewerPromise4;
function step(stepBy) {
return () => {
let viewer = context.container().select(".photoviewer");
if (!selected)
return;
let nextID = stepBy === 1 ? selected.ne : selected.pr;
- let yaw = _pannellumViewer.getYaw();
+ let yaw = _pannellumViewer2.getYaw();
let ca = selected.ca + yaw;
let origin = selected.loc;
const meters = 35;
return extent2.extend(geoExtent(point2));
}, geoExtent());
let minDist = Infinity;
- _ssCache.bubbles.rtree.search(extent.bbox()).forEach((d) => {
- if (d.data.key === selected.key)
+ _ssCache.bubbles.rtree.search(extent.bbox()).forEach((d2) => {
+ if (d2.data.key === selected.key)
return;
- if (!geoPointInPolygon(d.data.loc, poly))
+ if (!geoPointInPolygon(d2.data.loc, poly))
return;
- let dist = geoVecLength(d.data.loc, selected.loc);
- let theta = selected.ca - d.data.ca;
+ let dist = geoVecLength(d2.data.loc, selected.loc);
+ let theta = selected.ca - d2.data.ca;
let minTheta = Math.min(Math.abs(theta), 360 - Math.abs(theta));
if (minTheta > 20) {
dist += 5;
}
if (dist < minDist) {
- nextID = d.data.key;
+ nextID = d2.data.key;
minDist = dist;
}
});
*/
selectImage: function(context, key) {
let that = this;
- let d = this.cachedImage(key);
+ let d2 = this.cachedImage(key);
let viewer = context.container().select(".photoviewer");
if (!viewer.empty())
- viewer.datum(d);
+ viewer.datum(d2);
this.setStyles(context, null, true);
let wrap2 = context.container().select(".photoviewer .ms-wrapper");
let attribution = wrap2.selectAll(".photo-attribution").html("");
wrap2.selectAll(".pnlm-load-box").style("display", "block");
- if (!d)
+ if (!d2)
return this;
this.updateUrlImage(key);
- _sceneOptions.northOffset = d.ca;
+ _sceneOptions.northOffset = d2.ca;
let line1 = attribution.append("div").attr("class", "attribution-row");
const hiresDomId = utilUniqueDomId("streetside-hires");
let label = line1.append("label").attr("for", hiresDomId).attr("class", "streetside-hires");
_resolution = _hires ? 1024 : 512;
wrap2.call(setupCanvas, true);
let viewstate = {
- yaw: _pannellumViewer.getYaw(),
- pitch: _pannellumViewer.getPitch(),
- hfov: _pannellumViewer.getHfov()
+ yaw: _pannellumViewer2.getYaw(),
+ pitch: _pannellumViewer2.getPitch(),
+ hfov: _pannellumViewer2.getHfov()
};
_sceneOptions = Object.assign(_sceneOptions, viewstate);
- that.selectImage(context, d.key).showViewer(context);
+ that.selectImage(context, d2.key).showViewer(context);
});
label.append("span").call(_t.append("streetside.hires"));
let captureInfo = line1.append("div").attr("class", "attribution-capture-info");
- if (d.captured_by) {
+ if (d2.captured_by) {
const yyyy = (/* @__PURE__ */ new Date()).getFullYear();
captureInfo.append("a").attr("class", "captured_by").attr("target", "_blank").attr("href", "https://www.microsoft.com/en-us/maps/streetside").text("\xA9" + yyyy + " Microsoft");
captureInfo.append("span").text("|");
}
- if (d.captured_at) {
- captureInfo.append("span").attr("class", "captured_at").text(localeTimestamp(d.captured_at));
+ if (d2.captured_at) {
+ captureInfo.append("span").attr("class", "captured_at").text(localeTimestamp2(d2.captured_at));
}
let line2 = attribution.append("div").attr("class", "attribution-row");
- line2.append("a").attr("class", "image-view-link").attr("target", "_blank").attr("href", "https://www.bing.com/maps?cp=" + d.loc[1] + "~" + d.loc[0] + "&lvl=17&dir=" + d.ca + "&style=x&v=2&sV=1").call(_t.append("streetside.view_on_bing"));
- line2.append("a").attr("class", "image-report-link").attr("target", "_blank").attr("href", "https://www.bing.com/maps/privacyreport/streetsideprivacyreport?bubbleid=" + encodeURIComponent(d.key) + "&focus=photo&lat=" + d.loc[1] + "&lng=" + d.loc[0] + "&z=17").call(_t.append("streetside.report"));
- let bubbleIdQuadKey = d.key.toString(4);
+ line2.append("a").attr("class", "image-view-link").attr("target", "_blank").attr("href", "https://www.bing.com/maps?cp=" + d2.loc[1] + "~" + d2.loc[0] + "&lvl=17&dir=" + d2.ca + "&style=x&v=2&sV=1").call(_t.append("streetside.view_on_bing"));
+ line2.append("a").attr("class", "image-report-link").attr("target", "_blank").attr("href", "https://www.bing.com/maps/privacyreport/streetsideprivacyreport?bubbleid=" + encodeURIComponent(d2.key) + "&focus=photo&lat=" + d2.loc[1] + "&lng=" + d2.loc[0] + "&z=17").call(_t.append("streetside.report"));
+ let bubbleIdQuadKey = d2.key.toString(4);
const paddingNeeded = 16 - bubbleIdQuadKey.length;
- for (let i2 = 0; i2 < paddingNeeded; i2++) {
+ for (let i3 = 0; i3 < paddingNeeded; i3++) {
bubbleIdQuadKey = "0" + bubbleIdQuadKey;
}
const imgUrlPrefix = streetsideImagesApi + "hs" + bubbleIdQuadKey;
- const imgUrlSuffix = ".jpg?g=6338&n=z";
+ const imgUrlSuffix = ".jpg?g=13515&n=z";
const faceKeys = ["01", "02", "03", "10", "11", "12"];
let quadKeys = getQuadKeys();
let faces = faceKeys.map((faceKey) => {
});
});
loadFaces(faces).then(function() {
- if (!_pannellumViewer) {
+ if (!_pannellumViewer2) {
that.initViewer();
} else {
_currScene += 1;
let sceneID = _currScene.toString();
- _pannellumViewer.addScene(sceneID, _sceneOptions).loadScene(sceneID);
+ _pannellumViewer2.addScene(sceneID, _sceneOptions).loadScene(sceneID);
if (_currScene > 2) {
sceneID = (_currScene - 1).toString();
- _pannellumViewer.removeScene(sceneID);
+ _pannellumViewer2.removeScene(sceneID);
}
}
});
return this;
},
- getSequenceKeyForBubble: function(d) {
- return d && d.sequenceKey;
+ getSequenceKeyForBubble: function(d2) {
+ return d2 && d2.sequenceKey;
},
// Updates the currently highlighted sequence and selected bubble.
// Reset is only necessary when interacting with the viewport because
let hoveredBubbleKey = hovered && hovered.key;
let hoveredSequenceKey = this.getSequenceKeyForBubble(hovered);
let hoveredSequence = hoveredSequenceKey && _ssCache.sequences[hoveredSequenceKey];
- let hoveredBubbleKeys = hoveredSequence && hoveredSequence.bubbles.map((d) => d.key) || [];
+ let hoveredBubbleKeys = hoveredSequence && hoveredSequence.bubbles.map((d2) => d2.key) || [];
let viewer = context.container().select(".photoviewer");
let selected = viewer.empty() ? void 0 : viewer.datum();
let selectedBubbleKey = selected && selected.key;
let selectedSequenceKey = this.getSequenceKeyForBubble(selected);
let selectedSequence = selectedSequenceKey && _ssCache.sequences[selectedSequenceKey];
- let selectedBubbleKeys = selectedSequence && selectedSequence.bubbles.map((d) => d.key) || [];
+ let selectedBubbleKeys = selectedSequence && selectedSequence.bubbles.map((d2) => d2.key) || [];
let highlightedBubbleKeys = utilArrayUnion(hoveredBubbleKeys, selectedBubbleKeys);
- context.container().selectAll(".layer-streetside-images .viewfield-group").classed("highlighted", (d) => highlightedBubbleKeys.indexOf(d.key) !== -1).classed("hovered", (d) => d.key === hoveredBubbleKey).classed("currentView", (d) => d.key === selectedBubbleKey);
- context.container().selectAll(".layer-streetside-images .sequence").classed("highlighted", (d) => d.properties.key === hoveredSequenceKey).classed("currentView", (d) => d.properties.key === selectedSequenceKey);
+ context.container().selectAll(".layer-streetside-images .viewfield-group").classed("highlighted", (d2) => highlightedBubbleKeys.indexOf(d2.key) !== -1).classed("hovered", (d2) => d2.key === hoveredBubbleKey).classed("currentView", (d2) => d2.key === selectedBubbleKey);
+ context.container().selectAll(".layer-streetside-images .sequence").classed("highlighted", (d2) => d2.properties.key === hoveredSequenceKey).classed("currentView", (d2) => d2.properties.key === selectedSequenceKey);
context.container().selectAll(".layer-streetside-images .viewfield-group .viewfield").attr("d", viewfieldPath);
function viewfieldPath() {
- let d = this.parentNode.__data__;
- if (d.pano && d.key !== selectedBubbleKey) {
+ let d2 = this.parentNode.__data__;
+ if (d2.pano && d2.key !== selectedBubbleKey) {
return "M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0";
} else {
return "M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z";
line: "count_way_members_fraction",
relation: "count_relation_members_fraction"
};
- function sets(params, n2, o) {
- if (params.geometry && o[params.geometry]) {
- params[n2] = o[params.geometry];
+ function sets(params, n3, o2) {
+ if (params.geometry && o2[params.geometry]) {
+ params[n3] = o2[params.geometry];
}
return params;
}
}
function filterKeys(type2) {
var count_type = type2 ? "count_" + type2 : "count_all";
- return function(d) {
- return Number(d[count_type]) > 2500 || d.in_wiki;
+ return function(d2) {
+ return Number(d2[count_type]) > 2500 || d2.in_wiki;
};
}
function filterMultikeys(prefix) {
- return function(d) {
- var re2 = new RegExp("^" + prefix + "(.*)$", "i");
- var matches = d.key.match(re2) || [];
+ return function(d2) {
+ var re3 = new RegExp("^" + prefix + "(.*)$", "i");
+ var matches = d2.key.match(re3) || [];
return matches.length === 2 && matches[1].indexOf(":") === -1;
};
}
function filterValues(allowUpperCase) {
- return function(d) {
- if (d.value.match(/[;,]/) !== null)
+ return function(d2) {
+ if (d2.value.match(/[;,]/) !== null)
return false;
- if (!allowUpperCase && d.value.match(/[A-Z*]/) !== null)
+ if (!allowUpperCase && d2.value.match(/[A-Z*]/) !== null)
return false;
- return d.count > 100 || d.in_wiki;
+ return d2.count > 100 || d2.in_wiki;
};
}
function filterRoles(geometry) {
- return function(d) {
- if (d.role === "")
+ return function(d2) {
+ if (d2.role === "")
return false;
- if (d.role.match(/[A-Z*;,]/) !== null)
+ if (d2.role.match(/[A-Z*;,]/) !== null)
return false;
- return Number(d[tag_members_fractions[geometry]]) > 0;
+ return Number(d2[tag_members_fractions[geometry]]) > 0;
};
}
- function valKey(d) {
+ function valKey(d2) {
return {
- value: d.key,
- title: d.key
+ value: d2.key,
+ title: d2.key
};
}
- function valKeyDescription(d) {
+ function valKeyDescription(d2) {
var obj = {
- value: d.value,
- title: d.description || d.value
+ value: d2.value,
+ title: d2.description || d2.value
};
return obj;
}
- function roleKey(d) {
+ function roleKey(d2) {
return {
- value: d.role,
- title: d.role
+ value: d2.role,
+ title: d2.role
};
}
- function sortKeys(a, b) {
- return a.key.indexOf(":") === -1 && b.key.indexOf(":") !== -1 ? -1 : a.key.indexOf(":") !== -1 && b.key.indexOf(":") === -1 ? 1 : 0;
+ function sortKeys(a2, b2) {
+ return a2.key.indexOf(":") === -1 && b2.key.indexOf(":") !== -1 ? -1 : a2.key.indexOf(":") !== -1 && b2.key.indexOf(":") === -1 ? 1 : 0;
}
var debouncedRequest2 = debounce_default(request2, 300, { leading: false });
function request2(url, params, exactMatch, callback, loaded) {
this.keys(params, function(err, data) {
if (err)
return;
- data.forEach(function(d) {
- if (d.value === "opening_hours")
+ data.forEach(function(d2) {
+ if (d2.value === "opening_hours")
return;
- _popularKeys[d.value] = true;
+ _popularKeys[d2.value] = true;
});
});
},
lang: _mainLocalizer.languageCode()
}, params);
var url = apibase4 + "keys/all?" + utilQsString(params);
- doRequest(url, params, false, callback, function(err, d) {
+ doRequest(url, params, false, callback, function(err, d2) {
if (err) {
callback(err);
} else {
- var f2 = filterKeys(params.filter);
- var result = d.data.filter(f2).sort(sortKeys).map(valKey);
+ var f3 = filterKeys(params.filter);
+ var result = d2.data.filter(f3).sort(sortKeys).map(valKey);
_taginfoCache[url] = result;
callback(null, result);
}
}, params);
var prefix = params.query;
var url = apibase4 + "keys/all?" + utilQsString(params);
- doRequest(url, params, true, callback, function(err, d) {
+ doRequest(url, params, true, callback, function(err, d2) {
if (err) {
callback(err);
} else {
- var f2 = filterMultikeys(prefix);
- var result = d.data.filter(f2).map(valKey);
+ var f3 = filterMultikeys(prefix);
+ var result = d2.data.filter(f3).map(valKey);
_taginfoCache[url] = result;
callback(null, result);
}
lang: _mainLocalizer.languageCode()
}, params);
var url = apibase4 + "key/values?" + utilQsString(params);
- doRequest(url, params, false, callback, function(err, d) {
+ doRequest(url, params, false, callback, function(err, d2) {
if (err) {
callback(err);
} else {
- var re2 = /network|taxon|genus|species|brand|grape_variety|royal_cypher|listed_status|booth|rating|stars|:output|_hours|_times|_ref|manufacturer|country|target|brewery|cai_scale/;
- var allowUpperCase = re2.test(params.key);
- var f2 = filterValues(allowUpperCase);
- var result = d.data.filter(f2).map(valKeyDescription);
+ var allowUpperCase = allowUpperCaseTagValues.test(params.key);
+ var f3 = filterValues(allowUpperCase);
+ var result = d2.data.filter(f3).map(valKeyDescription);
_taginfoCache[url] = result;
callback(null, result);
}
lang: _mainLocalizer.languageCode()
}, params);
var url = apibase4 + "relation/roles?" + utilQsString(params);
- doRequest(url, params, true, callback, function(err, d) {
+ doRequest(url, params, true, callback, function(err, d2) {
if (err) {
callback(err);
} else {
- var f2 = filterRoles(geometry);
- var result = d.data.filter(f2).map(roleKey);
+ var f3 = filterRoles(geometry);
+ var result = d2.data.filter(f3).map(roleKey);
_taginfoCache[url] = result;
callback(null, result);
}
path = "relation/wiki_pages?";
}
var url = apibase4 + path + utilQsString(params);
- doRequest(url, params, true, callback, function(err, d) {
+ doRequest(url, params, true, callback, function(err, d2) {
if (err) {
callback(err);
} else {
- _taginfoCache[url] = d.data;
- callback(null, d.data);
+ _taginfoCache[url] = d2.data;
+ callback(null, d2.data);
}
});
},
- apibase: function(_) {
+ apibase: function(_2) {
if (!arguments.length)
return apibase4;
- apibase4 = _;
+ apibase4 = _2;
return this;
}
};
var import_polygon_clipping2 = __toESM(require_polygon_clipping_umd());
var import_pbf2 = __toESM(require_pbf());
var import_vector_tile2 = __toESM(require_vector_tile());
- var tiler7 = utilTiler().tileSize(512).margin(1);
- var dispatch9 = dispatch_default("loadedData");
+ var tiler8 = utilTiler().tileSize(512).margin(1);
+ var dispatch12 = dispatch_default("loadedData");
var _vtCache;
function abortRequest7(controller) {
controller.abort();
layers.forEach(function(layerID) {
var layer = vectorTile.layers[layerID];
if (layer) {
- for (var i2 = 0; i2 < layer.length; i2++) {
- var feature3 = layer.feature(i2).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
+ for (var i3 = 0; i3 < layer.length; i3++) {
+ var feature3 = layer.feature(i3).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
var geometry = feature3.geometry;
if (geometry.type === "Polygon") {
geometry.type = "MultiPolygon";
continue;
}
merged.push(feature3);
- for (var j2 = 0; j2 < merged.length; j2++) {
- merged[j2].geometry.coordinates = coords;
- merged[j2].__featurehash__ = featurehash;
+ for (var j3 = 0; j3 < merged.length; j3++) {
+ merged[j3].geometry.coordinates = coords;
+ merged[j3].__featurehash__ = featurehash;
}
} else {
mergeCache[propertyhash] = [feature3];
});
return features;
}
- function loadTile2(source, tile) {
+ function loadTile3(source, tile) {
if (source.loaded[tile.id] || source.inflight[tile.id])
return;
- var url = source.template.replace("{x}", tile.xyz[0]).replace("{y}", tile.xyz[1]).replace(/\{[t-]y\}/, Math.pow(2, tile.xyz[2]) - tile.xyz[1] - 1).replace(/\{z(oom)?\}/, tile.xyz[2]).replace(/\{switch:([^}]+)\}/, function(s, r) {
- var subdomains = r.split(",");
+ var url = source.template.replace("{x}", tile.xyz[0]).replace("{y}", tile.xyz[1]).replace(/\{[t-]y\}/, Math.pow(2, tile.xyz[2]) - tile.xyz[1] - 1).replace(/\{z(oom)?\}/, tile.xyz[2]).replace(/\{switch:([^}]+)\}/, function(s2, r2) {
+ var subdomains = r2.split(",");
return subdomains[(tile.xyz[0] + tile.xyz[1]) % subdomains.length];
});
var controller = new AbortController();
if (!data) {
throw new Error("No Data");
}
- var z = tile.xyz[2];
- if (!source.canMerge[z]) {
- source.canMerge[z] = {};
+ var z2 = tile.xyz[2];
+ if (!source.canMerge[z2]) {
+ source.canMerge[z2] = {};
}
- source.loaded[tile.id] = vtToGeoJSON(data, tile, source.canMerge[z]);
- dispatch9.call("loadedData");
+ source.loaded[tile.id] = vtToGeoJSON(data, tile, source.canMerge[z2]);
+ dispatch12.call("loadedData");
}).catch(function() {
source.loaded[tile.id] = [];
delete source.inflight[tile.id];
if (!_vtCache) {
this.reset();
}
- this.event = utilRebind(this, dispatch9, "on");
+ this.event = utilRebind(this, dispatch12, "on");
},
reset: function() {
for (var sourceID in _vtCache) {
var source = _vtCache[sourceID];
if (!source)
return [];
- var tiles = tiler7.getTiles(projection2);
+ var tiles = tiler8.getTiles(projection2);
var seen = {};
var results = [];
- for (var i2 = 0; i2 < tiles.length; i2++) {
- var features = source.loaded[tiles[i2].id];
+ for (var i3 = 0; i3 < tiles.length; i3++) {
+ var features = source.loaded[tiles[i3].id];
if (!features || !features.length)
continue;
- for (var j2 = 0; j2 < features.length; j2++) {
- var feature3 = features[j2];
+ for (var j3 = 0; j3 < features.length; j3++) {
+ var feature3 = features[j3];
var hash = feature3.__featurehash__;
if (seen[hash])
continue;
if (!source) {
source = this.addSource(sourceID, template);
}
- var tiles = tiler7.getTiles(projection2);
- Object.keys(source.inflight).forEach(function(k) {
+ var tiles = tiler8.getTiles(projection2);
+ Object.keys(source.inflight).forEach(function(k2) {
var wanted = tiles.find(function(tile) {
- return k === tile.id;
+ return k2 === tile.id;
});
if (!wanted) {
- abortRequest7(source.inflight[k]);
- delete source.inflight[k];
+ abortRequest7(source.inflight[k2]);
+ delete source.inflight[k2];
}
});
tiles.forEach(function(tile) {
- loadTile2(source, tile);
+ loadTile3(source, tile);
});
},
cache: function() {
_wikidataCache = {};
},
// Search for Wikidata items matching the query
- itemsForSearchQuery: function(query, callback) {
+ itemsForSearchQuery: function(query, callback, language) {
if (!query) {
if (callback)
callback("No query", {});
search: query,
type: "item",
// the language to search
- language: lang,
+ language: language || lang,
// the language for the label and description in the result
uselang: lang,
limit: 10,
origin: "*"
});
- json_default(url).then(function(result) {
+ json_default(url).then((result) => {
if (result && result.error) {
- throw new Error(result.error);
+ if (result.error.code === "badvalue" && result.error.info.includes(lang) && !language && lang.includes("-")) {
+ this.itemsForSearchQuery(query, callback, lang.split("-")[0]);
+ return;
+ } else {
+ throw new Error(result.error);
+ }
}
if (callback)
callback(null, result.search || {});
formatversion: 2,
ids: qid,
props: "labels|descriptions|claims|sitelinks",
- sitefilter: langs.map(function(d) {
- return d + "wiki";
+ sitefilter: langs.map(function(d2) {
+ return d2 + "wiki";
}).join("|"),
languages: langs.join("|"),
languagefallback: 1,
callback(err || "No entity");
return;
}
- var i2;
+ var i3;
var description;
- for (i2 in langs) {
- let code = langs[i2];
+ for (i3 in langs) {
+ let code = langs[i3];
if (entity.descriptions[code] && entity.descriptions[code].language === code) {
description = entity.descriptions[code];
break;
var imageroot = "https://commons.wikimedia.org/w/index.php";
var props = ["P154", "P18"];
var prop, image;
- for (i2 = 0; i2 < props.length; i2++) {
- prop = entity.claims[props[i2]];
+ for (i3 = 0; i3 < props.length; i3++) {
+ prop = entity.claims[props[i3]];
if (prop && Object.keys(prop).length > 0) {
image = prop[Object.keys(prop)[0]].mainsnak.datavalue.value;
if (image) {
}
if (entity.sitelinks) {
var englishLocale = _mainLocalizer.languageCode().toLowerCase() === "en";
- for (i2 = 0; i2 < langs.length; i2++) {
- var w = langs[i2] + "wiki";
- if (entity.sitelinks[w]) {
- var title = entity.sitelinks[w].title;
+ for (i3 = 0; i3 < langs.length; i3++) {
+ var w2 = langs[i3] + "wiki";
+ if (entity.sitelinks[w2]) {
+ var title = entity.sitelinks[w2].title;
var tKey = "inspector.wiki_reference";
- if (!englishLocale && langs[i2] === "en") {
+ if (!englishLocale && langs[i3] === "en") {
tKey = "inspector.wiki_en_reference";
}
result.wiki = {
title,
text: tKey,
- url: "https://" + langs[i2] + ".wikipedia.org/wiki/" + title.replace(/ /g, "_")
+ url: "https://" + langs[i3] + ".wikipedia.org/wiki/" + title.replace(/ /g, "_")
};
break;
}
throw new Error("No Results");
}
if (callback) {
- var titles = result.query.search.map(function(d) {
- return d.title;
+ var titles = result.query.search.map(function(d2) {
+ return d2.title;
});
callback(null, titles);
}
var list = result.query.pages[Object.keys(result.query.pages)[0]];
var translations = {};
if (list && list.langlinks) {
- list.langlinks.forEach(function(d) {
- translations[d.lang] = d["*"];
+ list.langlinks.forEach(function(d2) {
+ translations[d2.lang] = d2["*"];
});
}
callback(null, translations);
}
};
+ // modules/services/mapilio.js
+ var import_pbf3 = __toESM(require_pbf());
+ var import_rbush12 = __toESM(require_rbush_min());
+ var import_vector_tile3 = __toESM(require_vector_tile());
+ var apiUrl2 = "https://end.mapilio.com";
+ var imageBaseUrl = "https://cdn.mapilio.com/im";
+ var baseTileUrl2 = "https://geo.mapilio.com/geoserver/gwc/service/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&LAYER=mapilio:";
+ var pointLayer = "map_points";
+ var lineLayer = "map_roads_line";
+ var tileStyle = "&STYLE=&TILEMATRIX=EPSG:900913:{z}&TILEMATRIXSET=EPSG:900913&FORMAT=application/vnd.mapbox-vector-tile&TILECOL={x}&TILEROW={y}";
+ var minZoom3 = 14;
+ var dispatch13 = dispatch_default("loadedImages", "loadedLines");
+ var imgZoom3 = zoom_default2().extent([[0, 0], [320, 240]]).translateExtent([[0, 0], [320, 240]]).scaleExtent([1, 15]);
+ var pannellumViewerCSS3 = "pannellum/pannellum.css";
+ var pannellumViewerJS3 = "pannellum/pannellum.js";
+ var resolution = 1080;
+ var _mlyActiveImage2;
+ var _mlyCache2;
+ var _loadViewerPromise5;
+ var _pannellumViewer3;
+ var _mlySceneOptions = {
+ showFullscreenCtrl: false,
+ autoLoad: true,
+ yaw: 0,
+ minHfov: 10,
+ maxHfov: 90,
+ hfov: 60
+ };
+ var _currScene2 = 0;
+ function partitionViewport5(projection2) {
+ const z2 = geoScaleToZoom(projection2.scale());
+ const z22 = Math.ceil(z2 * 2) / 2 + 2.5;
+ const tiler9 = utilTiler().zoomExtent([z22, z22]);
+ return tiler9.getTiles(projection2).map(function(tile) {
+ return tile.extent;
+ });
+ }
+ function searchLimited5(limit, projection2, rtree) {
+ limit = limit || 5;
+ return partitionViewport5(projection2).reduce(function(result, extent) {
+ const found = rtree.search(extent.bbox()).slice(0, limit).map(function(d2) {
+ return d2.data;
+ });
+ return found.length ? result.concat(found) : result;
+ }, []);
+ }
+ function loadTiles4(which, url, maxZoom2, projection2) {
+ const tiler9 = utilTiler().zoomExtent([minZoom3, maxZoom2]).skipNullIsland(true);
+ const tiles = tiler9.getTiles(projection2);
+ tiles.forEach(function(tile) {
+ loadTile4(which, url, tile);
+ });
+ }
+ function loadTile4(which, url, tile) {
+ const cache = _mlyCache2.requests;
+ const tileId = `${tile.id}-${which}`;
+ if (cache.loaded[tileId] || cache.inflight[tileId])
+ return;
+ const controller = new AbortController();
+ cache.inflight[tileId] = controller;
+ const requestUrl = url.replace("{x}", tile.xyz[0]).replace("{y}", tile.xyz[1]).replace("{z}", tile.xyz[2]);
+ fetch(requestUrl, { signal: controller.signal }).then(function(response) {
+ if (!response.ok) {
+ throw new Error(response.status + " " + response.statusText);
+ }
+ cache.loaded[tileId] = true;
+ delete cache.inflight[tileId];
+ return response.arrayBuffer();
+ }).then(function(data) {
+ if (data.byteLength === 0) {
+ throw new Error("No Data");
+ }
+ loadTileDataToCache2(data, tile, which);
+ if (which === "images") {
+ dispatch13.call("loadedImages");
+ } else {
+ dispatch13.call("loadedLines");
+ }
+ }).catch(function(e3) {
+ if (e3.message === "No Data") {
+ cache.loaded[tileId] = true;
+ } else {
+ console.error(e3);
+ }
+ });
+ }
+ function loadTileDataToCache2(data, tile) {
+ const vectorTile = new import_vector_tile3.VectorTile(new import_pbf3.default(data));
+ let features, cache, layer, i3, feature3, loc, d2;
+ if (vectorTile.layers.hasOwnProperty(pointLayer)) {
+ features = [];
+ cache = _mlyCache2.images;
+ layer = vectorTile.layers[pointLayer];
+ for (i3 = 0; i3 < layer.length; i3++) {
+ feature3 = layer.feature(i3).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
+ loc = feature3.geometry.coordinates;
+ let resolutionArr = feature3.properties.resolution.split("x");
+ let sourceWidth = Math.max(resolutionArr[0], resolutionArr[1]);
+ let sourceHeight = Math.min(resolutionArr[0], resolutionArr[1]);
+ let isPano = sourceWidth % sourceHeight === 0;
+ d2 = {
+ loc,
+ capture_time: feature3.properties.capture_time,
+ id: feature3.properties.id,
+ sequence_id: feature3.properties.sequence_uuid,
+ heading: feature3.properties.heading,
+ resolution: feature3.properties.resolution,
+ isPano
+ };
+ cache.forImageId[d2.id] = d2;
+ features.push({
+ minX: loc[0],
+ minY: loc[1],
+ maxX: loc[0],
+ maxY: loc[1],
+ data: d2
+ });
+ }
+ if (cache.rtree) {
+ cache.rtree.load(features);
+ }
+ }
+ if (vectorTile.layers.hasOwnProperty(lineLayer)) {
+ cache = _mlyCache2.sequences;
+ layer = vectorTile.layers[lineLayer];
+ for (i3 = 0; i3 < layer.length; i3++) {
+ feature3 = layer.feature(i3).toGeoJSON(tile.xyz[0], tile.xyz[1], tile.xyz[2]);
+ if (cache.lineString[feature3.properties.sequence_uuid]) {
+ cache.lineString[feature3.properties.sequence_uuid].push(feature3);
+ } else {
+ cache.lineString[feature3.properties.sequence_uuid] = [feature3];
+ }
+ }
+ }
+ }
+ function getImageData(imageId, sequenceId) {
+ return fetch(apiUrl2 + `/api/sequence-detail?sequence_uuid=${sequenceId}`, { method: "GET" }).then(function(response) {
+ if (!response.ok) {
+ throw new Error(response.status + " " + response.statusText);
+ }
+ return response.json();
+ }).then(function(data) {
+ let index = data.data.findIndex((feature3) => feature3.id === imageId);
+ const { filename, uploaded_hash } = data.data[index];
+ _mlySceneOptions.panorama = imageBaseUrl + "/" + uploaded_hash + "/" + filename + "/" + resolution;
+ });
+ }
+ var mapilio_default = {
+ // Initialize Mapilio
+ init: function() {
+ if (!_mlyCache2) {
+ this.reset();
+ }
+ this.event = utilRebind(this, dispatch13, "on");
+ },
+ // Reset cache and state
+ reset: function() {
+ if (_mlyCache2) {
+ Object.values(_mlyCache2.requests.inflight).forEach(function(request3) {
+ request3.abort();
+ });
+ }
+ _mlyCache2 = {
+ images: { rtree: new import_rbush12.default(), forImageId: {} },
+ sequences: { rtree: new import_rbush12.default(), lineString: {} },
+ requests: { loaded: {}, inflight: {} }
+ };
+ _mlyActiveImage2 = null;
+ },
+ // Get visible images
+ images: function(projection2) {
+ const limit = 5;
+ return searchLimited5(limit, projection2, _mlyCache2.images.rtree);
+ },
+ cachedImage: function(imageKey) {
+ return _mlyCache2.images.forImageId[imageKey];
+ },
+ // Load images in the visible area
+ loadImages: function(projection2) {
+ let url = baseTileUrl2 + pointLayer + tileStyle;
+ loadTiles4("images", url, 14, projection2);
+ },
+ // Load line in the visible area
+ loadLines: function(projection2) {
+ let url = baseTileUrl2 + lineLayer + tileStyle;
+ loadTiles4("line", url, 14, projection2);
+ },
+ // Get visible sequences
+ sequences: function(projection2) {
+ const viewport = projection2.clipExtent();
+ const min3 = [viewport[0][0], viewport[1][1]];
+ const max3 = [viewport[1][0], viewport[0][1]];
+ const bbox2 = geoExtent(projection2.invert(min3), projection2.invert(max3)).bbox();
+ const sequenceIds = {};
+ let lineStrings = [];
+ _mlyCache2.images.rtree.search(bbox2).forEach(function(d2) {
+ if (d2.data.sequence_id) {
+ sequenceIds[d2.data.sequence_id] = true;
+ }
+ });
+ Object.keys(sequenceIds).forEach(function(sequenceId) {
+ if (_mlyCache2.sequences.lineString[sequenceId]) {
+ lineStrings = lineStrings.concat(_mlyCache2.sequences.lineString[sequenceId]);
+ }
+ });
+ return lineStrings;
+ },
+ // Set the currently visible image
+ setActiveImage: function(image) {
+ if (image) {
+ _mlyActiveImage2 = {
+ id: image.id,
+ sequence_id: image.sequence_id
+ };
+ } else {
+ _mlyActiveImage2 = null;
+ }
+ },
+ // Update the currently highlighted sequence and selected bubble.
+ setStyles: function(context, hovered) {
+ const hoveredImageId = hovered && hovered.id;
+ const hoveredSequenceId = hovered && hovered.sequence_id;
+ const selectedSequenceId = _mlyActiveImage2 && _mlyActiveImage2.sequence_id;
+ const selectedImageId = _mlyActiveImage2 && _mlyActiveImage2.id;
+ const markers = context.container().selectAll(".layer-mapilio .viewfield-group");
+ const sequences = context.container().selectAll(".layer-mapilio .sequence");
+ markers.classed("highlighted", function(d2) {
+ return d2.id === hoveredImageId;
+ }).classed("hovered", function(d2) {
+ return d2.id === hoveredImageId;
+ }).classed("currentView", function(d2) {
+ return d2.id === selectedImageId;
+ });
+ sequences.classed("highlighted", function(d2) {
+ return d2.properties.sequence_uuid === hoveredSequenceId;
+ }).classed("currentView", function(d2) {
+ return d2.properties.sequence_uuid === selectedSequenceId;
+ });
+ return this;
+ },
+ updateUrlImage: function(imageKey) {
+ if (!window.mocha) {
+ var hash = utilStringQs(window.location.hash);
+ if (imageKey) {
+ hash.photo = "mapilio/" + imageKey;
+ } else {
+ delete hash.photo;
+ }
+ window.location.replace("#" + utilQsString(hash, true));
+ }
+ },
+ initViewer: function() {
+ if (!window.pannellum)
+ return;
+ if (_pannellumViewer3)
+ return;
+ _currScene2 += 1;
+ const sceneID = _currScene2.toString();
+ const options2 = {
+ "default": { firstScene: sceneID },
+ scenes: {}
+ };
+ options2.scenes[sceneID] = _mlySceneOptions;
+ _pannellumViewer3 = window.pannellum.viewer("ideditor-viewer-mapilio-pnlm", options2);
+ },
+ selectImage: function(context, id2) {
+ let that = this;
+ let d2 = this.cachedImage(id2);
+ this.setActiveImage(d2);
+ this.updateUrlImage(d2.id);
+ let viewer = context.container().select(".photoviewer");
+ if (!viewer.empty())
+ viewer.datum(d2);
+ this.setStyles(context, null);
+ if (!d2)
+ return this;
+ let wrap2 = context.container().select(".photoviewer .mapilio-wrapper");
+ let attribution = wrap2.selectAll(".photo-attribution").text("");
+ if (d2.capture_time) {
+ attribution.append("span").attr("class", "captured_at").text(localeDateString2(d2.capture_time));
+ attribution.append("span").text("|");
+ }
+ attribution.append("a").attr("class", "image-link").attr("target", "_blank").attr("href", `https://mapilio.com/app?lat=${d2.loc[1]}&lng=${d2.loc[0]}&zoom=17&pId=${d2.id}`).text("mapilio.com");
+ wrap2.transition().duration(100).call(imgZoom3.transform, identity2);
+ wrap2.selectAll("img").remove();
+ getImageData(d2.id, d2.sequence_id).then(function() {
+ if (d2.isPano) {
+ if (!_pannellumViewer3) {
+ that.initViewer();
+ } else {
+ _currScene2 += 1;
+ let sceneID = _currScene2.toString();
+ _pannellumViewer3.addScene(sceneID, _mlySceneOptions).loadScene(sceneID);
+ if (_currScene2 > 2) {
+ sceneID = (_currScene2 - 1).toString();
+ _pannellumViewer3.removeScene(sceneID);
+ }
+ }
+ } else {
+ that.initOnlyPhoto(context);
+ }
+ });
+ function localeDateString2(s2) {
+ if (!s2)
+ return null;
+ var options2 = { day: "numeric", month: "short", year: "numeric" };
+ var d4 = new Date(s2);
+ if (isNaN(d4.getTime()))
+ return null;
+ return d4.toLocaleDateString(_mainLocalizer.localeCode(), options2);
+ }
+ return this;
+ },
+ initOnlyPhoto: function(context) {
+ if (_pannellumViewer3) {
+ _pannellumViewer3.destroy();
+ _pannellumViewer3 = null;
+ }
+ let wrap2 = context.container().select("#ideditor-viewer-mapilio-simple");
+ let imgWrap = wrap2.select("img");
+ if (!imgWrap.empty()) {
+ imgWrap.attr("src", _mlySceneOptions.panorama);
+ } else {
+ wrap2.append("img").attr("src", _mlySceneOptions.panorama);
+ }
+ },
+ ensureViewerLoaded: function(context) {
+ let that = this;
+ let imgWrap = context.container().select("#ideditor-viewer-mapilio-simple > img");
+ if (!imgWrap.empty()) {
+ imgWrap.remove();
+ }
+ if (_loadViewerPromise5)
+ return _loadViewerPromise5;
+ let wrap2 = context.container().select(".photoviewer").selectAll(".mapilio-wrapper").data([0]);
+ let wrapEnter = wrap2.enter().append("div").attr("class", "photo-wrapper mapilio-wrapper").classed("hide", true).on("dblclick.zoom", null);
+ wrapEnter.append("div").attr("class", "photo-attribution fillD");
+ const controlsEnter = wrapEnter.append("div").attr("class", "photo-controls-wrap").append("div").attr("class", "photo-controls-mapilio");
+ controlsEnter.append("button").on("click.back", step(-1)).text("\u25C4");
+ controlsEnter.append("button").on("click.forward", step(1)).text("\u25BA");
+ wrapEnter.append("div").attr("id", "ideditor-viewer-mapilio-pnlm");
+ wrapEnter.append("div").attr("id", "ideditor-viewer-mapilio-simple-wrap").call(imgZoom3.on("zoom", zoomPan2)).append("div").attr("id", "ideditor-viewer-mapilio-simple");
+ context.ui().photoviewer.on("resize.mapilio", () => {
+ if (_pannellumViewer3) {
+ _pannellumViewer3.resize();
+ }
+ });
+ _loadViewerPromise5 = new Promise((resolve, reject) => {
+ let loadedCount = 0;
+ function loaded() {
+ loadedCount += 1;
+ if (loadedCount === 2)
+ resolve();
+ }
+ const head = select_default2("head");
+ head.selectAll("#ideditor-mapilio-viewercss").data([0]).enter().append("link").attr("id", "ideditor-mapilio-viewercss").attr("rel", "stylesheet").attr("crossorigin", "anonymous").attr("href", context.asset(pannellumViewerCSS3)).on("load.serviceMapilio", loaded).on("error.serviceMapilio", function() {
+ reject();
+ });
+ head.selectAll("#ideditor-mapilio-viewerjs").data([0]).enter().append("script").attr("id", "ideditor-mapilio-viewerjs").attr("crossorigin", "anonymous").attr("src", context.asset(pannellumViewerJS3)).on("load.serviceMapilio", loaded).on("error.serviceMapilio", function() {
+ reject();
+ });
+ }).catch(function() {
+ _loadViewerPromise5 = null;
+ });
+ function step(stepBy) {
+ return function() {
+ if (!_mlyActiveImage2)
+ return;
+ const imageId = _mlyActiveImage2.id;
+ const nextIndex = imageId + stepBy;
+ if (!nextIndex)
+ return;
+ const nextImage = _mlyCache2.images.forImageId[nextIndex];
+ context.map().centerEase(nextImage.loc);
+ that.selectImage(context, nextImage.id);
+ };
+ }
+ function zoomPan2(d3_event) {
+ var t2 = d3_event.transform;
+ context.container().select(".photoviewer #ideditor-viewer-mapilio-simple").call(utilSetTransform, t2.x, t2.y, t2.k);
+ }
+ return _loadViewerPromise5;
+ },
+ showViewer: function(context) {
+ let wrap2 = context.container().select(".photoviewer").classed("hide", false);
+ let isHidden = wrap2.selectAll(".photo-wrapper.mapilio-wrapper.hide").size();
+ if (isHidden) {
+ wrap2.selectAll(".photo-wrapper:not(.mapilio-wrapper)").classed("hide", true);
+ wrap2.selectAll(".photo-wrapper.mapilio-wrapper").classed("hide", false);
+ }
+ return this;
+ },
+ /**
+ * hideViewer()
+ */
+ hideViewer: function(context) {
+ let viewer = context.container().select(".photoviewer");
+ if (!viewer.empty())
+ viewer.datum(null);
+ this.updateUrlImage(null);
+ viewer.classed("hide", true).selectAll(".photo-wrapper").classed("hide", true);
+ context.container().selectAll(".viewfield-group, .sequence, .icon-sign").classed("currentView", false);
+ this.setActiveImage();
+ return this.setStyles(context, null);
+ },
+ // Return the current cache
+ cache: function() {
+ return _mlyCache2;
+ }
+ };
+
// modules/services/index.js
var services = {
geocoder: nominatim_default,
mapillary: mapillary_default,
nsi: nsi_default,
kartaview: kartaview_default,
+ vegbilder: vegbilder_default,
osm: osm_default,
osmWikibase: osm_wikibase_default,
maprules: maprules_default,
taginfo: taginfo_default,
vectorTile: vector_tile_default,
wikidata: wikidata_default,
- wikipedia: wikipedia_default
+ wikipedia: wikipedia_default,
+ mapilio: mapilio_default
};
// modules/modes/drag_note.js
var pointer = _downPointers[id2];
if (!pointer)
return;
- for (var i2 in _downPointers) {
- _downPointers[i2].done = true;
+ for (var i3 in _downPointers) {
+ _downPointers[i3].done = true;
}
_longPressTimeout = null;
_lastInteractionType = interactionType;
resetProperties();
_lastMouseEvent = context.map().lastPointerEvent();
select_default2(window).on("keydown.select", keydown).on("keyup.select", keyup).on(_pointerPrefix + "move.select", pointermove, true).on(_pointerPrefix + "up.select", pointerup, true).on("pointercancel.select", pointercancel, true).on("contextmenu.select-window", function(d3_event) {
- var e = d3_event;
- if (+e.clientX === 0 && +e.clientY === 0) {
+ var e3 = d3_event;
+ if (+e3.clientX === 0 && +e3.clientY === 0) {
d3_event.preventDefault();
}
});
var canCopy = [];
var skip = {};
var entity;
- var i2;
- for (i2 = 0; i2 < selected.relation.length; i2++) {
- entity = selected.relation[i2];
+ var i3;
+ for (i3 = 0; i3 < selected.relation.length; i3++) {
+ entity = selected.relation[i3];
if (!skip[entity.id] && entity.isComplete(graph)) {
canCopy.push(entity.id);
skip = getDescendants(entity.id, graph, skip);
}
}
- for (i2 = 0; i2 < selected.way.length; i2++) {
- entity = selected.way[i2];
+ for (i3 = 0; i3 < selected.way.length; i3++) {
+ entity = selected.way[i3];
if (!skip[entity.id]) {
canCopy.push(entity.id);
skip = getDescendants(entity.id, graph, skip);
}
}
- for (i2 = 0; i2 < selected.node.length; i2++) {
- entity = selected.node[i2];
+ for (i3 = 0; i3 < selected.node.length; i3++) {
+ entity = selected.node[i3];
if (!skip[entity.id]) {
canCopy.push(entity.id);
}
var children2;
descendants = descendants || {};
if (entity.type === "relation") {
- children2 = entity.members.map(function(m) {
- return m.id;
+ children2 = entity.members.map(function(m2) {
+ return m2.id;
});
} else if (entity.type === "way") {
children2 = entity.nodes;
} else {
children2 = [];
}
- for (var i2 = 0; i2 < children2.length; i2++) {
- if (!descendants[children2[i2]]) {
- descendants[children2[i2]] = true;
- descendants = getDescendants(children2[i2], graph, descendants);
+ for (var i3 = 0; i3 < children2.length; i3++) {
+ if (!descendants[children2[i3]]) {
+ descendants[children2[i3]] = true;
+ descendants = getDescendants(children2[i3], graph, descendants);
}
}
return descendants;
action.limitWays(waysIDsForVertex);
}
_actions.push(action);
- _disconnectingWayIds = _disconnectingWayIds.concat(context.graph().parentWays(context.graph().entity(vertexID)).map((d) => d.id));
+ _disconnectingWayIds = _disconnectingWayIds.concat(context.graph().parentWays(context.graph().entity(vertexID)).map((d2) => d2.id));
});
_disconnectingWayIds = utilArrayUniq(_disconnectingWayIds).filter(function(id2) {
return _wayIDs.indexOf(id2) === -1;
return context.entity(id2);
});
var nodes = utilGetAllNodes(_wayIDs, context.graph());
- _coords = nodes.map(function(n2) {
- return n2.loc;
+ _coords = nodes.map(function(n3) {
+ return n3.loc;
});
var sharedActions = [];
var sharedNodes = [];
var action = actionDisconnect(node.id).limitWays(_wayIDs);
if (action.disabled(context.graph()) !== "not_connected") {
var count = 0;
- for (var i2 in ways) {
- var way = ways[i2];
+ for (var i3 in ways) {
+ var way = ways[i3];
if (way.nodes.indexOf(node.id) !== -1) {
count += 1;
}
function downgradeTypeForEntityIDs(entityIds) {
var downgradeType;
_affectedFeatureCount = 0;
- for (var i2 in entityIds) {
- var entityID = entityIds[i2];
+ for (var i3 in entityIds) {
+ var entityID = entityIds[i3];
var type2 = downgradeTypeForEntityID(entityID);
if (type2) {
_affectedFeatureCount += 1;
var addressKeysToKeep = ["source"];
var operation = function() {
context.perform(function(graph) {
- for (var i2 in selectedIDs) {
- var entityID = selectedIDs[i2];
+ for (var i3 in selectedIDs) {
+ var entityID = selectedIDs[i3];
var type2 = downgradeTypeForEntityID(entityID);
if (!type2)
continue;
var join = actionJoin(selectedIDs);
if (!join.disabled(context.graph()))
return join;
- var merge3 = actionMerge(selectedIDs);
- if (!merge3.disabled(context.graph()))
- return merge3;
+ var merge2 = actionMerge(selectedIDs);
+ if (!merge2.disabled(context.graph()))
+ return merge2;
var mergePolygon = actionMergePolygon(selectedIDs);
if (!mergePolygon.disabled(context.graph()))
return mergePolygon;
return mergeNodes;
if (join.disabled(context.graph()) !== "not_eligible")
return join;
- if (merge3.disabled(context.graph()) !== "not_eligible")
- return merge3;
+ if (merge2.disabled(context.graph()) !== "not_eligible")
+ return merge2;
if (mergePolygon.disabled(context.graph()) !== "not_eligible")
return mergePolygon;
return mergeNodes;
});
var _amount = (_wayIDs.length ? _wayIDs : _nodeIDs).length === 1 ? "single" : "multiple";
var _nodes = utilGetAllNodes(selectedIDs, context.graph());
- var _coords = _nodes.map(function(n2) {
- return n2.loc;
+ var _coords = _nodes.map(function(n3) {
+ return n3.loc;
});
var _extent = utilTotalExtent(selectedIDs, context.graph());
var _action = chooseAction();
} else if (_wayIDs.length > 0 && (_nodeIDs.length === 0 || _nodeIDs.length === 2)) {
var startNodeIDs = [];
var endNodeIDs = [];
- for (var i2 = 0; i2 < selectedIDs.length; i2++) {
- var entity = context.entity(selectedIDs[i2]);
+ for (var i3 = 0; i3 < selectedIDs.length; i3++) {
+ var entity = context.entity(selectedIDs[i3]);
if (entity.type === "node") {
continue;
} else if (entity.type !== "way" || entity.isClosed()) {
startNodeIDs.push(entity.first());
endNodeIDs.push(entity.last());
}
- startNodeIDs = startNodeIDs.filter(function(n2) {
- return startNodeIDs.indexOf(n2) === startNodeIDs.lastIndexOf(n2);
+ startNodeIDs = startNodeIDs.filter(function(n3) {
+ return startNodeIDs.indexOf(n3) === startNodeIDs.lastIndexOf(n3);
});
- endNodeIDs = endNodeIDs.filter(function(n2) {
- return endNodeIDs.indexOf(n2) === endNodeIDs.lastIndexOf(n2);
+ endNodeIDs = endNodeIDs.filter(function(n3) {
+ return endNodeIDs.indexOf(n3) === endNodeIDs.lastIndexOf(n3);
});
if (utilArrayDifference(startNodeIDs, endNodeIDs).length + utilArrayDifference(endNodeIDs, startNodeIDs).length !== 2)
return null;
function parentWaysIdsOfSelection(onlyCommonParents) {
var graph = context.graph();
var parents = [];
- for (var i2 = 0; i2 < selectedIDs.length; i2++) {
- var entity = context.hasEntity(selectedIDs[i2]);
+ for (var i3 = 0; i3 < selectedIDs.length; i3++) {
+ var entity = context.hasEntity(selectedIDs[i3]);
if (!entity || entity.geometry(graph) !== "vertex") {
return [];
}
- var currParents = graph.parentWays(entity).map(function(w) {
- return w.id;
+ var currParents = graph.parentWays(entity).map(function(w2) {
+ return w2.id;
});
if (!parents.length) {
parents = currParents;
function childNodeIdsOfSelection(onlyCommon) {
var graph = context.graph();
var childs = [];
- for (var i2 = 0; i2 < selectedIDs.length; i2++) {
- var entity = context.hasEntity(selectedIDs[i2]);
+ for (var i3 = 0; i3 < selectedIDs.length; i3++) {
+ var entity = context.hasEntity(selectedIDs[i3]);
if (!entity || !["area", "line"].includes(entity.geometry(graph))) {
return [];
}
context.uninstall(operation.behavior);
}
});
- _operations = Object.values(operations_exports).map(function(o) {
- return o(context, selectedIDs);
- }).filter(function(o) {
- return o.id !== "delete" && o.id !== "downgrade" && o.id !== "copy";
+ _operations = Object.values(operations_exports).map(function(o2) {
+ return o2(context, selectedIDs);
+ }).filter(function(o2) {
+ return o2.id !== "delete" && o2.id !== "downgrade" && o2.id !== "copy";
}).concat([
// group copy/downgrade/delete operation together at the end of the list
operationCopy(context, selectedIDs),
return false;
let osm = context.connection();
if (osm) {
- let missing = nodes.filter(function(n2) {
- return !osm.isDataLoaded(n2.loc);
+ let missing = nodes.filter(function(n3) {
+ return !osm.isDataLoaded(n3.loc);
});
if (missing.length) {
missing.forEach(function(loc2) {
}
lasso.p(context.map().mouse());
}
- function normalize2(a, b) {
+ function normalize2(a2, b2) {
return [
- [Math.min(a[0], b[0]), Math.min(a[1], b[1])],
- [Math.max(a[0], b[0]), Math.max(a[1], b[1])]
+ [Math.min(a2[0], b2[0]), Math.min(a2[1], b2[1])],
+ [Math.max(a2[0], b2[0]), Math.max(a2[1], b2[1])]
];
}
function lassoed() {
context.ui().sidebar.hide();
}
};
- mode.sidebar = function(_) {
+ mode.sidebar = function(_2) {
if (!arguments.length)
return sidebar;
- sidebar = _;
+ sidebar = _2;
return mode;
};
mode.operations = function() {
// modules/behavior/add_way.js
function behaviorAddWay(context) {
- var dispatch10 = dispatch_default("start", "startFromWay", "startFromNode");
+ var dispatch14 = dispatch_default("start", "startFromWay", "startFromNode");
var draw = behaviorDraw(context);
function behavior(surface) {
draw.on("click", function() {
- dispatch10.apply("start", this, arguments);
+ dispatch14.apply("start", this, arguments);
}).on("clickWay", function() {
- dispatch10.apply("startFromWay", this, arguments);
+ dispatch14.apply("startFromWay", this, arguments);
}).on("clickNode", function() {
- dispatch10.apply("startFromNode", this, arguments);
+ dispatch14.apply("startFromNode", this, arguments);
}).on("cancel", behavior.cancel).on("finish", behavior.cancel);
context.map().dblclickZoomEnable(false);
surface.call(draw);
}, 1e3);
context.enter(modeBrowse(context));
};
- return utilRebind(behavior, dispatch10, "on");
+ return utilRebind(behavior, dispatch14, "on");
}
// modules/behavior/hash.js
true
/* includeChangeCount */
);
- const q = utilStringQs(latestHash);
- if (q.map) {
- corePreferences("map-location", q.map);
+ const q2 = utilStringQs(latestHash);
+ if (q2.map) {
+ corePreferences("map-location", q2.map);
}
}
}
if (window.location.hash === _cachedHash)
return;
_cachedHash = window.location.hash;
- var q = utilStringQs(_cachedHash);
- var mapArgs = (q.map || "").split("/").map(Number);
+ var q2 = utilStringQs(_cachedHash);
+ var mapArgs = (q2.map || "").split("/").map(Number);
if (mapArgs.length < 3 || mapArgs.some(isNaN)) {
updateHashIfNeeded();
} else {
return;
var mode = context.mode();
context.map().centerZoom([mapArgs[2], Math.min(_latitudeLimit, Math.max(-_latitudeLimit, mapArgs[1]))], mapArgs[0]);
- if (q.id && mode) {
- var ids = q.id.split(",").filter(function(id2) {
+ if (q2.id && mode) {
+ var ids = q2.id.split(",").filter(function(id2) {
return context.hasEntity(id2);
});
if (ids.length && (mode.id === "browse" || mode.id === "select" && !utilArrayIdentical(mode.selectedIDs(), ids))) {
context.history().on("change.behaviorHash", _throttledUpdateTitle);
context.on("enter.behaviorHash", _throttledUpdate);
select_default2(window).on("hashchange.behaviorHash", hashchange);
- var q = utilStringQs(window.location.hash);
- if (q.id) {
- context.zoomToEntity(q.id.split(",")[0], !q.map);
+ var q2 = utilStringQs(window.location.hash);
+ if (q2.id) {
+ context.zoomToEntity(q2.id.split(",")[0], !q2.map);
}
- if (q.walkthrough === "true") {
+ if (q2.walkthrough === "true") {
behavior.startWalkthrough = true;
}
- if (q.map) {
+ if (q2.map) {
behavior.hadLocation = true;
- } else if (!q.id && corePreferences("map-location")) {
+ } else if (!q2.id && corePreferences("map-location")) {
const mapArgs = corePreferences("map-location").split("/").map(Number);
context.map().centerZoom([mapArgs[2], Math.min(_latitudeLimit, Math.max(-_latitudeLimit, mapArgs[1]))], mapArgs[0]);
updateHashIfNeeded();
// node_modules/d3-brush/src/brush.js
var { abs: abs2, max: max2, min: min2 } = Math;
- function number1(e) {
- return [+e[0], +e[1]];
+ function number1(e3) {
+ return [+e3[0], +e3[1]];
}
- function number22(e) {
- return [number1(e[0]), number1(e[1])];
+ function number22(e3) {
+ return [number1(e3[0]), number1(e3[1])];
}
- var X = {
+ var X3 = {
name: "x",
handles: ["w", "e"].map(type),
- input: function(x, e) {
- return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]];
+ input: function(x2, e3) {
+ return x2 == null ? null : [[+x2[0], e3[0][1]], [+x2[1], e3[1][1]]];
},
output: function(xy) {
return xy && [xy[0][0], xy[1][0]];
}
};
- var Y = {
+ var Y3 = {
name: "y",
handles: ["n", "s"].map(type),
- input: function(y, e) {
- return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]];
+ input: function(y2, e3) {
+ return y2 == null ? null : [[e3[0][0], +y2[0]], [e3[1][0], +y2[1]]];
},
output: function(xy) {
return xy && [xy[0][1], xy[1][1]];
return xy;
}
};
- function type(t) {
- return { type: t };
+ function type(t2) {
+ return { type: t2 };
}
// modules/index.js