{"version":3,"file":"livemap.js","mappings":"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","sources":["webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack:///./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack:///./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack:///./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack:///./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack:///./node_modules/svg-baker-runtime/browser-symbol.js","webpack:///./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js","webpack:///./src/control/PinControl.ts","webpack:///./src/data/Point.ts","webpack:///external var \"L\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/nonce","webpack:///./src/layer/LiveTileLayer.ts","webpack:///./src/control/TileLayerControl.ts","webpack:///./src/layer/marker/Marker.ts","webpack:///./src/layer/marker/Circle.ts","webpack:///./src/layer/marker/Ellipse.ts","webpack:///./src/layer/marker/Icon.ts","webpack:///./src/layer/marker/Polygon.ts","webpack:///./src/layer/marker/Polyline.ts","webpack:///./src/layer/marker/Rectangle.ts","webpack:///./src/layer/MarkersLayer.ts","webpack:///./src/control/LayersControl.ts","webpack:///./src/control/ControlBox.ts","webpack:///./src/data/Url.ts","webpack:///./src/control/LinkControl.ts","webpack:///./src/control/CoordsControl.ts","webpack:///./src/data/Renderer.ts","webpack:///./src/control/RenderersControl.ts","webpack:///./src/control/SidebarControl.ts","webpack:///./src/layer/menu/MenuRow.ts","webpack:///./src/layer/menu/ContextMenu.ts","webpack:///./src/layer/Notifications.ts","webpack:///./src/data/Web.ts","webpack:///./src/data/Zoom.ts","webpack:///./src/data/Ui.ts","webpack:///./src/data/Lang.ts","webpack:///./src/data/Settings.ts","webpack:///./src/scss/styles.scss?b3c8","webpack:///./src/svg/apple.svg","webpack:///./src/svg/basic.svg","webpack:///./src/svg/bee.svg","webpack:///./src/svg/berries.svg","webpack:///./src/svg/cave.svg","webpack:///./src/svg/center.svg","webpack:///./src/svg/circle.svg","webpack:///./src/svg/copy.svg","webpack:///./src/svg/danger.svg","webpack:///./src/svg/gear.svg","webpack:///./src/svg/grain.svg","webpack:///./src/svg/gravestone.svg","webpack:///./src/svg/home.svg","webpack:///./src/svg/house.svg","webpack:///./src/svg/info.svg","webpack:///./src/svg/ladder.svg","webpack:///./src/svg/layers.svg","webpack:///./src/svg/link.svg","webpack:///./src/svg/marker.svg","webpack:///./src/svg/mushroom.svg","webpack:///./src/svg/paste.svg","webpack:///./src/svg/pick.svg","webpack:///./src/svg/pin.svg","webpack:///./src/svg/player.svg","webpack:///./src/svg/propick.svg","webpack:///./src/svg/rocks.svg","webpack:///./src/svg/ruins.svg","webpack:///./src/svg/sepia.svg","webpack:///./src/svg/skull_and_crossbones.svg","webpack:///./src/svg/spiral.svg","webpack:///./src/svg/star1.svg","webpack:///./src/svg/star2.svg","webpack:///./src/svg/success.svg","webpack:///./src/svg/trader.svg","webpack:///./src/svg/tree.svg","webpack:///./src/svg/tree2.svg","webpack:///./src/svg/turnip.svg","webpack:///./src/svg/vessel.svg","webpack:///./src/svg/warning.svg","webpack:///./src/svg/x.svg","webpack:///./src/data/Value.ts","webpack:///./src/data/Player.ts","webpack:///./src/layer/PlayersLayer.ts","webpack:///./src/LiveMap.ts","webpack:///./src/lib/L.ellipse.js","webpack:///./src/lib/L.rotated.js"],"sourcesContent":["\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.BrowserSpriteSymbol = factory());\n}(this, (function () { 'use strict';\n\nvar SpriteSymbol = function SpriteSymbol(ref) {\n var id = ref.id;\n var viewBox = ref.viewBox;\n var content = ref.content;\n\n this.id = id;\n this.viewBox = viewBox;\n this.content = content;\n};\n\n/**\n * @return {string}\n */\nSpriteSymbol.prototype.stringify = function stringify () {\n return this.content;\n};\n\n/**\n * @return {string}\n */\nSpriteSymbol.prototype.toString = function toString () {\n return this.stringify();\n};\n\nSpriteSymbol.prototype.destroy = function destroy () {\n var this$1 = this;\n\n ['id', 'viewBox', 'content'].forEach(function (prop) { return delete this$1[prop]; });\n};\n\n/**\n * @param {string} content\n * @return {Element}\n */\nvar parse = function (content) {\n var hasImportNode = !!document.importNode;\n var doc = new DOMParser().parseFromString(content, 'image/svg+xml').documentElement;\n\n /**\n * Fix for browser which are throwing WrongDocumentError\n * if you insert an element which is not part of the document\n * @see http://stackoverflow.com/a/7986519/4624403\n */\n if (hasImportNode) {\n return document.importNode(doc, true);\n }\n\n return doc;\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\n\n\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar deepmerge = createCommonjsModule(function (module, exports) {\n(function (root, factory) {\n if (typeof undefined === 'function' && undefined.amd) {\n undefined(factory);\n } else {\n module.exports = factory();\n }\n}(commonjsGlobal, function () {\n\nfunction isMergeableObject(val) {\n var nonNullObject = val && typeof val === 'object';\n\n return nonNullObject\n && Object.prototype.toString.call(val) !== '[object RegExp]'\n && Object.prototype.toString.call(val) !== '[object Date]'\n}\n\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {}\n}\n\nfunction cloneIfNecessary(value, optionsArgument) {\n var clone = optionsArgument && optionsArgument.clone === true;\n return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value\n}\n\nfunction defaultArrayMerge(target, source, optionsArgument) {\n var destination = target.slice();\n source.forEach(function(e, i) {\n if (typeof destination[i] === 'undefined') {\n destination[i] = cloneIfNecessary(e, optionsArgument);\n } else if (isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, optionsArgument);\n } else if (target.indexOf(e) === -1) {\n destination.push(cloneIfNecessary(e, optionsArgument));\n }\n });\n return destination\n}\n\nfunction mergeObject(target, source, optionsArgument) {\n var destination = {};\n if (isMergeableObject(target)) {\n Object.keys(target).forEach(function (key) {\n destination[key] = cloneIfNecessary(target[key], optionsArgument);\n });\n }\n Object.keys(source).forEach(function (key) {\n if (!isMergeableObject(source[key]) || !target[key]) {\n destination[key] = cloneIfNecessary(source[key], optionsArgument);\n } else {\n destination[key] = deepmerge(target[key], source[key], optionsArgument);\n }\n });\n return destination\n}\n\nfunction deepmerge(target, source, optionsArgument) {\n var array = Array.isArray(source);\n var options = optionsArgument || { arrayMerge: defaultArrayMerge };\n var arrayMerge = options.arrayMerge || defaultArrayMerge;\n\n if (array) {\n return Array.isArray(target) ? arrayMerge(target, source, optionsArgument) : cloneIfNecessary(source, optionsArgument)\n } else {\n return mergeObject(target, source, optionsArgument)\n }\n}\n\ndeepmerge.all = function deepmergeAll(array, optionsArgument) {\n if (!Array.isArray(array) || array.length < 2) {\n throw new Error('first argument should be an array with at least two elements')\n }\n\n // we are sure there are at least 2 values, so it is safe to have no initial value\n return array.reduce(function(prev, next) {\n return deepmerge(prev, next, optionsArgument)\n })\n};\n\nreturn deepmerge\n\n}));\n});\n\nvar namespaces_1 = createCommonjsModule(function (module, exports) {\nvar namespaces = {\n svg: {\n name: 'xmlns',\n uri: 'http://www.w3.org/2000/svg'\n },\n xlink: {\n name: 'xmlns:xlink',\n uri: 'http://www.w3.org/1999/xlink'\n }\n};\n\nexports.default = namespaces;\nmodule.exports = exports.default;\n});\n\n/**\n * @param {Object} attrs\n * @return {string}\n */\nvar objectToAttrsString = function (attrs) {\n return Object.keys(attrs).map(function (attr) {\n var value = attrs[attr].toString().replace(/\"/g, '"');\n return (attr + \"=\\\"\" + value + \"\\\"\");\n }).join(' ');\n};\n\nvar svg = namespaces_1.svg;\nvar xlink = namespaces_1.xlink;\n\nvar defaultAttrs = {};\ndefaultAttrs[svg.name] = svg.uri;\ndefaultAttrs[xlink.name] = xlink.uri;\n\n/**\n * @param {string} [content]\n * @param {Object} [attributes]\n * @return {string}\n */\nvar wrapInSvgString = function (content, attributes) {\n if ( content === void 0 ) content = '';\n\n var attrs = deepmerge(defaultAttrs, attributes || {});\n var attrsRendered = objectToAttrsString(attrs);\n return (\"\" + content + \"\");\n};\n\nvar BrowserSpriteSymbol = (function (SpriteSymbol$$1) {\n function BrowserSpriteSymbol () {\n SpriteSymbol$$1.apply(this, arguments);\n }\n\n if ( SpriteSymbol$$1 ) BrowserSpriteSymbol.__proto__ = SpriteSymbol$$1;\n BrowserSpriteSymbol.prototype = Object.create( SpriteSymbol$$1 && SpriteSymbol$$1.prototype );\n BrowserSpriteSymbol.prototype.constructor = BrowserSpriteSymbol;\n\n var prototypeAccessors = { isMounted: {} };\n\n prototypeAccessors.isMounted.get = function () {\n return !!this.node;\n };\n\n /**\n * @param {Element} node\n * @return {BrowserSpriteSymbol}\n */\n BrowserSpriteSymbol.createFromExistingNode = function createFromExistingNode (node) {\n return new BrowserSpriteSymbol({\n id: node.getAttribute('id'),\n viewBox: node.getAttribute('viewBox'),\n content: node.outerHTML\n });\n };\n\n BrowserSpriteSymbol.prototype.destroy = function destroy () {\n if (this.isMounted) {\n this.unmount();\n }\n SpriteSymbol$$1.prototype.destroy.call(this);\n };\n\n /**\n * @param {Element|string} target\n * @return {Element}\n */\n BrowserSpriteSymbol.prototype.mount = function mount (target) {\n if (this.isMounted) {\n return this.node;\n }\n\n var mountTarget = typeof target === 'string' ? document.querySelector(target) : target;\n var node = this.render();\n this.node = node;\n\n mountTarget.appendChild(node);\n\n return node;\n };\n\n /**\n * @return {Element}\n */\n BrowserSpriteSymbol.prototype.render = function render () {\n var content = this.stringify();\n return parse(wrapInSvgString(content)).childNodes[0];\n };\n\n BrowserSpriteSymbol.prototype.unmount = function unmount () {\n this.node.parentNode.removeChild(this.node);\n };\n\n Object.defineProperties( BrowserSpriteSymbol.prototype, prototypeAccessors );\n\n return BrowserSpriteSymbol;\n}(SpriteSymbol));\n\nreturn BrowserSpriteSymbol;\n\n})));\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.BrowserSprite = factory());\n}(this, (function () { 'use strict';\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\n\n\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar deepmerge = createCommonjsModule(function (module, exports) {\n(function (root, factory) {\n if (typeof undefined === 'function' && undefined.amd) {\n undefined(factory);\n } else {\n module.exports = factory();\n }\n}(commonjsGlobal, function () {\n\nfunction isMergeableObject(val) {\n var nonNullObject = val && typeof val === 'object';\n\n return nonNullObject\n && Object.prototype.toString.call(val) !== '[object RegExp]'\n && Object.prototype.toString.call(val) !== '[object Date]'\n}\n\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {}\n}\n\nfunction cloneIfNecessary(value, optionsArgument) {\n var clone = optionsArgument && optionsArgument.clone === true;\n return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value\n}\n\nfunction defaultArrayMerge(target, source, optionsArgument) {\n var destination = target.slice();\n source.forEach(function(e, i) {\n if (typeof destination[i] === 'undefined') {\n destination[i] = cloneIfNecessary(e, optionsArgument);\n } else if (isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, optionsArgument);\n } else if (target.indexOf(e) === -1) {\n destination.push(cloneIfNecessary(e, optionsArgument));\n }\n });\n return destination\n}\n\nfunction mergeObject(target, source, optionsArgument) {\n var destination = {};\n if (isMergeableObject(target)) {\n Object.keys(target).forEach(function (key) {\n destination[key] = cloneIfNecessary(target[key], optionsArgument);\n });\n }\n Object.keys(source).forEach(function (key) {\n if (!isMergeableObject(source[key]) || !target[key]) {\n destination[key] = cloneIfNecessary(source[key], optionsArgument);\n } else {\n destination[key] = deepmerge(target[key], source[key], optionsArgument);\n }\n });\n return destination\n}\n\nfunction deepmerge(target, source, optionsArgument) {\n var array = Array.isArray(source);\n var options = optionsArgument || { arrayMerge: defaultArrayMerge };\n var arrayMerge = options.arrayMerge || defaultArrayMerge;\n\n if (array) {\n return Array.isArray(target) ? arrayMerge(target, source, optionsArgument) : cloneIfNecessary(source, optionsArgument)\n } else {\n return mergeObject(target, source, optionsArgument)\n }\n}\n\ndeepmerge.all = function deepmergeAll(array, optionsArgument) {\n if (!Array.isArray(array) || array.length < 2) {\n throw new Error('first argument should be an array with at least two elements')\n }\n\n // we are sure there are at least 2 values, so it is safe to have no initial value\n return array.reduce(function(prev, next) {\n return deepmerge(prev, next, optionsArgument)\n })\n};\n\nreturn deepmerge\n\n}));\n});\n\n// \n// An event handler can take an optional event argument\n// and should not return a value\n \n// An array of all currently registered event handlers for a type\n \n// A map of event types and their corresponding event handlers.\n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberof mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nvar namespaces_1 = createCommonjsModule(function (module, exports) {\nvar namespaces = {\n svg: {\n name: 'xmlns',\n uri: 'http://www.w3.org/2000/svg'\n },\n xlink: {\n name: 'xmlns:xlink',\n uri: 'http://www.w3.org/1999/xlink'\n }\n};\n\nexports.default = namespaces;\nmodule.exports = exports.default;\n});\n\n/**\n * @param {Object} attrs\n * @return {string}\n */\nvar objectToAttrsString = function (attrs) {\n return Object.keys(attrs).map(function (attr) {\n var value = attrs[attr].toString().replace(/\"/g, '"');\n return (attr + \"=\\\"\" + value + \"\\\"\");\n }).join(' ');\n};\n\nvar svg = namespaces_1.svg;\nvar xlink = namespaces_1.xlink;\n\nvar defaultAttrs = {};\ndefaultAttrs[svg.name] = svg.uri;\ndefaultAttrs[xlink.name] = xlink.uri;\n\n/**\n * @param {string} [content]\n * @param {Object} [attributes]\n * @return {string}\n */\nvar wrapInSvgString = function (content, attributes) {\n if ( content === void 0 ) content = '';\n\n var attrs = deepmerge(defaultAttrs, attributes || {});\n var attrsRendered = objectToAttrsString(attrs);\n return (\"\" + content + \"\");\n};\n\nvar svg$1 = namespaces_1.svg;\nvar xlink$1 = namespaces_1.xlink;\n\nvar defaultConfig = {\n attrs: ( obj = {\n style: ['position: absolute', 'width: 0', 'height: 0'].join('; '),\n 'aria-hidden': 'true'\n }, obj[svg$1.name] = svg$1.uri, obj[xlink$1.name] = xlink$1.uri, obj )\n};\nvar obj;\n\nvar Sprite = function Sprite(config) {\n this.config = deepmerge(defaultConfig, config || {});\n this.symbols = [];\n};\n\n/**\n * Add new symbol. If symbol with the same id exists it will be replaced.\n * @param {SpriteSymbol} symbol\n * @return {boolean} `true` - symbol was added, `false` - replaced\n */\nSprite.prototype.add = function add (symbol) {\n var ref = this;\n var symbols = ref.symbols;\n var existing = this.find(symbol.id);\n\n if (existing) {\n symbols[symbols.indexOf(existing)] = symbol;\n return false;\n }\n\n symbols.push(symbol);\n return true;\n};\n\n/**\n * Remove symbol & destroy it\n * @param {string} id\n * @return {boolean} `true` - symbol was found & successfully destroyed, `false` - otherwise\n */\nSprite.prototype.remove = function remove (id) {\n var ref = this;\n var symbols = ref.symbols;\n var symbol = this.find(id);\n\n if (symbol) {\n symbols.splice(symbols.indexOf(symbol), 1);\n symbol.destroy();\n return true;\n }\n\n return false;\n};\n\n/**\n * @param {string} id\n * @return {SpriteSymbol|null}\n */\nSprite.prototype.find = function find (id) {\n return this.symbols.filter(function (s) { return s.id === id; })[0] || null;\n};\n\n/**\n * @param {string} id\n * @return {boolean}\n */\nSprite.prototype.has = function has (id) {\n return this.find(id) !== null;\n};\n\n/**\n * @return {string}\n */\nSprite.prototype.stringify = function stringify () {\n var ref = this.config;\n var attrs = ref.attrs;\n var stringifiedSymbols = this.symbols.map(function (s) { return s.stringify(); }).join('');\n return wrapInSvgString(stringifiedSymbols, attrs);\n};\n\n/**\n * @return {string}\n */\nSprite.prototype.toString = function toString () {\n return this.stringify();\n};\n\nSprite.prototype.destroy = function destroy () {\n this.symbols.forEach(function (s) { return s.destroy(); });\n};\n\nvar SpriteSymbol = function SpriteSymbol(ref) {\n var id = ref.id;\n var viewBox = ref.viewBox;\n var content = ref.content;\n\n this.id = id;\n this.viewBox = viewBox;\n this.content = content;\n};\n\n/**\n * @return {string}\n */\nSpriteSymbol.prototype.stringify = function stringify () {\n return this.content;\n};\n\n/**\n * @return {string}\n */\nSpriteSymbol.prototype.toString = function toString () {\n return this.stringify();\n};\n\nSpriteSymbol.prototype.destroy = function destroy () {\n var this$1 = this;\n\n ['id', 'viewBox', 'content'].forEach(function (prop) { return delete this$1[prop]; });\n};\n\n/**\n * @param {string} content\n * @return {Element}\n */\nvar parse = function (content) {\n var hasImportNode = !!document.importNode;\n var doc = new DOMParser().parseFromString(content, 'image/svg+xml').documentElement;\n\n /**\n * Fix for browser which are throwing WrongDocumentError\n * if you insert an element which is not part of the document\n * @see http://stackoverflow.com/a/7986519/4624403\n */\n if (hasImportNode) {\n return document.importNode(doc, true);\n }\n\n return doc;\n};\n\nvar BrowserSpriteSymbol = (function (SpriteSymbol$$1) {\n function BrowserSpriteSymbol () {\n SpriteSymbol$$1.apply(this, arguments);\n }\n\n if ( SpriteSymbol$$1 ) BrowserSpriteSymbol.__proto__ = SpriteSymbol$$1;\n BrowserSpriteSymbol.prototype = Object.create( SpriteSymbol$$1 && SpriteSymbol$$1.prototype );\n BrowserSpriteSymbol.prototype.constructor = BrowserSpriteSymbol;\n\n var prototypeAccessors = { isMounted: {} };\n\n prototypeAccessors.isMounted.get = function () {\n return !!this.node;\n };\n\n /**\n * @param {Element} node\n * @return {BrowserSpriteSymbol}\n */\n BrowserSpriteSymbol.createFromExistingNode = function createFromExistingNode (node) {\n return new BrowserSpriteSymbol({\n id: node.getAttribute('id'),\n viewBox: node.getAttribute('viewBox'),\n content: node.outerHTML\n });\n };\n\n BrowserSpriteSymbol.prototype.destroy = function destroy () {\n if (this.isMounted) {\n this.unmount();\n }\n SpriteSymbol$$1.prototype.destroy.call(this);\n };\n\n /**\n * @param {Element|string} target\n * @return {Element}\n */\n BrowserSpriteSymbol.prototype.mount = function mount (target) {\n if (this.isMounted) {\n return this.node;\n }\n\n var mountTarget = typeof target === 'string' ? document.querySelector(target) : target;\n var node = this.render();\n this.node = node;\n\n mountTarget.appendChild(node);\n\n return node;\n };\n\n /**\n * @return {Element}\n */\n BrowserSpriteSymbol.prototype.render = function render () {\n var content = this.stringify();\n return parse(wrapInSvgString(content)).childNodes[0];\n };\n\n BrowserSpriteSymbol.prototype.unmount = function unmount () {\n this.node.parentNode.removeChild(this.node);\n };\n\n Object.defineProperties( BrowserSpriteSymbol.prototype, prototypeAccessors );\n\n return BrowserSpriteSymbol;\n}(SpriteSymbol));\n\nvar defaultConfig$1 = {\n /**\n * Should following options be automatically configured:\n * - `syncUrlsWithBaseTag`\n * - `locationChangeAngularEmitter`\n * - `moveGradientsOutsideSymbol`\n * @type {boolean}\n */\n autoConfigure: true,\n\n /**\n * Default mounting selector\n * @type {string}\n */\n mountTo: 'body',\n\n /**\n * Fix disappearing SVG elements when exists.\n * Executes when sprite mounted.\n * @see http://stackoverflow.com/a/18265336/796152\n * @see https://github.com/everdimension/angular-svg-base-fix\n * @see https://github.com/angular/angular.js/issues/8934#issuecomment-56568466\n * @type {boolean}\n */\n syncUrlsWithBaseTag: false,\n\n /**\n * Should sprite listen custom location change event\n * @type {boolean}\n */\n listenLocationChangeEvent: true,\n\n /**\n * Custom window event name which should be emitted to update sprite urls\n * @type {string}\n */\n locationChangeEvent: 'locationChange',\n\n /**\n * Emit location change event in Angular automatically\n * @type {boolean}\n */\n locationChangeAngularEmitter: false,\n\n /**\n * Selector to find symbols usages when updating sprite urls\n * @type {string}\n */\n usagesToUpdate: 'use[*|href]',\n\n /**\n * Fix Firefox bug when gradients and patterns don't work if they are within a symbol.\n * Executes when sprite is rendered, but not mounted.\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=306674\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=353575\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=1235364\n * @type {boolean}\n */\n moveGradientsOutsideSymbol: false\n};\n\n/**\n * @param {*} arrayLike\n * @return {Array}\n */\nvar arrayFrom = function (arrayLike) {\n return Array.prototype.slice.call(arrayLike, 0);\n};\n\nvar browser = {\n isChrome: function () { return /chrome/i.test(navigator.userAgent); },\n isFirefox: function () { return /firefox/i.test(navigator.userAgent); },\n\n // https://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx\n isIE: function () { return /msie/i.test(navigator.userAgent) || /trident/i.test(navigator.userAgent); },\n isEdge: function () { return /edge/i.test(navigator.userAgent); }\n};\n\n/**\n * @param {string} name\n * @param {*} data\n */\nvar dispatchEvent = function (name, data) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(name, false, false, data);\n window.dispatchEvent(event);\n};\n\n/**\n * IE doesn't evaluate `);\n }\n\n // only add to the map if we are not hiding it by default\n if (!layerJson.hidden) {\n // adding to the map makes it visible\n this.addTo(this._livemap);\n }\n\n // add this layer to the layers control\n this._livemap.layersControl.addOverlay(this, this._label);\n }\n\n protected updateMarkers(json: object): void {\n const toRemove: string[] = [...this._markers.keys()];\n\n // get all markers from json\n const layerJson: LayerJson = json as LayerJson;\n layerJson.markers.forEach((markerJson: MarkerJson): void => {\n try {\n const marker: Marker | undefined = this._markers.get(markerJson.id);\n if (marker) {\n // update existing marker\n marker.update(markerJson);\n toRemove.remove(markerJson.id);\n } else {\n // create new marker\n this.createMarker(markerJson);\n }\n } catch (e) {\n console.error(`Error refreshing markers in layer (${this._label})\\n`, this, markerJson, e);\n }\n });\n\n // any markers left over are no longer in the json file and must be removed\n toRemove.forEach((key: string): void => {\n this._markers.get(key)?.remove();\n this._markers.delete(key);\n });\n }\n\n private createMarker(json: MarkerJson): void {\n // merge in default options, if any\n if (this._defaults) {\n if (this._defaults.options) {\n json.options = {...this._defaults.options, ...json.options};\n }\n if (this._defaults.popup) {\n json.popup = {...this._defaults.popup, ...json.popup};\n }\n if (this._defaults.tooltip) {\n json.tooltip = {...this._defaults.tooltip, ...json.tooltip};\n }\n }\n\n // set to correct pane from layer if needed\n const layerPane: string | undefined = this.json.options?.pane;\n if (layerPane !== undefined) {\n // layer has custom pane set\n if (json.options?.pane === undefined) {\n // marker does not have custom pane, use layer's instead\n json.options = {\n ...json.options,\n pane: layerPane\n }\n }\n }\n\n // create new marker from json, add to layer, and store\n const marker: Marker = this.createType(json).addTo(this);\n marker.update(json);\n this._markers.set(json.id, marker);\n }\n\n private createType(json: MarkerJson): Marker {\n switch (json.type) {\n case 'circle':\n return new Circle(this, json);\n case 'ellipse':\n return new Ellipse(this, json);\n case 'icon':\n return new Icon(this, json);\n case 'polygon':\n return new Polygon(this, json);\n case 'polyline':\n return new Polyline(this, json);\n case 'rectangle':\n return new Rectangle(this, json);\n }\n throw new Error(`Invalid marker type (${json.type})`);\n }\n}\n","import * as L from 'leaflet';\nimport {LiveMap} from '../LiveMap';\nimport {MarkersLayer} from '../layer/MarkersLayer';\n\ninterface LayersJson {\n markers: string[]\n}\n\nexport class LayersControl extends L.Control.Layers {\n declare _layers: L.Control.LayersObject[];\n\n constructor(livemap: LiveMap) {\n super({}, {}, {\n position: 'topleft'\n });\n\n this.addTo(livemap);\n\n window.fetchJson('data/markers.json')\n .then((json: LayersJson): void => {\n // each layer has its own json file full of markers\n json.markers.forEach((layer: string): void => {\n try {\n new MarkersLayer(livemap, `data/markers/${layer}.json`);\n } catch (e) {\n console.error(`Error loading markers layer (${layer})\\n`, e);\n }\n });\n })\n .catch((err: unknown): void => {\n console.error(`Error fetching marker layers\\n`, this, err);\n });\n }\n\n public tick(count: number): void {\n this._layers.forEach((obj: L.Control.LayersObject): void => {\n try {\n (obj.layer as MarkersLayer).tick(count);\n } catch (e) {\n console.error('Error ticking markers layer\\n', obj.layer, e);\n }\n });\n }\n}\n","import * as L from 'leaflet';\nimport {LiveMap} from '../LiveMap';\n\nexport abstract class ControlBox extends L.Control {\n protected readonly _livemap: LiveMap;\n\n protected constructor(livemap: LiveMap, position: string) {\n super({position: position} as L.ControlOptions);\n this._livemap = livemap;\n }\n}\n","import {LiveMap} from '../LiveMap';\nimport {Point} from './Point';\n\nexport class Url {\n private readonly _livemap: LiveMap;\n private readonly _basePath: string;\n private readonly _renderer: string;\n private readonly _zoom: number;\n private readonly _point: Point;\n\n constructor(livemap: LiveMap, url: string, renderer?: string | null, zoom?: string | number | null, x?: string | number | null, z?: string | number | null) {\n this._livemap = livemap;\n\n if (renderer) {\n this._basePath = url ?? '/';\n } else {\n const match: RegExpExecArray | null = /(.*\\/)?(.+)\\/([+-]?\\d+)\\/([+-]?\\d+)\\/([+-]?\\d+)(\\/.*)?$/.exec(url);\n if (match) {\n this._basePath = match[1] ?? '/';\n renderer = match[2];\n zoom = match[3];\n x = match[4];\n z = match[5];\n } else {\n this._basePath = window.location.pathname?.split('?')[0]?.replace('index.html', '') ?? '/';\n const url: URLSearchParams = new URLSearchParams(window.location.search);\n renderer = url.get('renderer');\n zoom = url.get('zoom');\n x = url.get('x');\n z = url.get('z');\n }\n }\n\n this._renderer = renderer ?? this._livemap.settings.renderers[0].id;\n this._zoom = +(zoom ?? this._livemap.settings.zoom.def);\n this._point = Point.of(x ?? 0, z ?? 0);\n }\n\n get basePath(): string {\n return this._basePath;\n }\n\n get renderer(): string {\n return this._renderer;\n }\n\n get zoom(): number {\n return this._zoom;\n }\n\n get x(): number {\n return this._point.x;\n }\n\n get z(): number {\n return this._point.z;\n }\n\n get point(): Point {\n return this._point;\n }\n\n public toString(): string {\n if (this._livemap.settings.friendlyUrls) {\n return `${this.basePath}${this.renderer}/${this.zoom}/${this.point.x}/${this.point.z}/`;\n } else {\n return `${this.basePath}?renderer=${this.renderer}&zoom=${this.zoom}&x=${this.point.x}&z=${this.point.z}`;\n }\n }\n}\n","import * as L from 'leaflet';\nimport {ControlBox} from './ControlBox';\nimport {LiveMap} from '../LiveMap';\nimport {Point} from '../data/Point';\nimport {Url} from '../data/Url';\n\nexport class LinkControl extends ControlBox {\n private readonly _dom: HTMLAnchorElement;\n private readonly _url: Url;\n\n constructor(livemap: LiveMap) {\n super(livemap, 'bottomleft');\n\n this._dom = L.DomUtil.create('a', 'leaflet-control-layers link');\n this._dom.title = 'Share this location';\n this._dom.appendChild(window.createSVGIcon('link'));\n L.DomEvent.disableClickPropagation(this._dom);\n this._dom.onclick = (e: MouseEvent): void => {\n e.preventDefault();\n window.history.replaceState({}, 'LiveMap', this._dom.href);\n this._livemap.contextMenu.share(\n Point.of(this._livemap.getCenter())\n .floor()\n .subtract(this._livemap.settings.spawn)\n );\n }\n\n // add to the map once we have a dom to add\n this.addTo(livemap);\n\n // parse data from the browser's url\n this._url = new Url(this._livemap, window.location.pathname);\n\n // center the map on url coordinates or spawn (0, 0);\n // this sets up the map after ctor and before load\n // onLoad will not call until this is finished\n setTimeout((): void => {\n this._livemap.sidebarControl.renderersControl.rendererType = this._url.renderer;\n this._livemap.centerOn(this._url.point, this._url.zoom);\n }, 0);\n }\n\n onAdd(map: L.Map): HTMLAnchorElement {\n map.addEventListener('moveend', this.update);\n map.addEventListener('zoomend', this.update);\n return this._dom;\n }\n\n onRemove(map: L.Map): void {\n map.removeEventListener('moveend', this.update);\n map.removeEventListener('zoomend', this.update);\n }\n\n update = (): void => {\n this._dom.href = this.getUrlFromView().toString();\n // todo - find out how to prevent chrome from spamming history\n window.history.replaceState({}, '', this._dom.href);\n }\n\n public getUrlFromView(): Url {\n return this.getUrlFromPoint(\n Point.of(this._livemap.getCenter()).floor()\n .subtract(this._livemap.settings.spawn)\n );\n }\n\n public getUrlFromPoint(point: Point): Url {\n return new Url(this._livemap, this._url.basePath,\n this._livemap.sidebarControl.renderersControl.rendererType,\n this._livemap.currentZoom(), point.x, point.z\n );\n }\n}\n","import * as L from 'leaflet';\nimport {ControlBox} from './ControlBox';\nimport {LiveMap} from '../LiveMap';\nimport {Point} from '../data/Point';\n\nexport class CoordsControl extends ControlBox {\n private readonly _dom: HTMLElement;\n private readonly _domX: HTMLElement;\n private readonly _domZ: HTMLElement\n\n private _point: Point = new Point(0, 0);\n\n constructor(livemap: LiveMap) {\n super(livemap, 'bottomcenter');\n\n this._dom = L.DomUtil.create('div', 'leaflet-control-layers coordinates');\n const p: HTMLElement = L.DomUtil.create('p', '', this._dom);\n this._domX = L.DomUtil.create('span', '', p);\n L.DomUtil.create('span', '', p).innerHTML = ',';\n this._domZ = L.DomUtil.create('span', '', p);\n\n L.DomEvent.disableClickPropagation(this._dom);\n\n this.addTo(livemap);\n }\n\n onAdd(map: L.Map): HTMLElement {\n map.addEventListener('mousemove', this.update);\n\n this.update();\n\n return this._dom;\n }\n\n onRemove(map: L.Map): void {\n map.removeEventListener('mousemove', this.update);\n }\n\n public update = (e?: L.LeafletMouseEvent): void => {\n this._point = e\n ? Point.of(e.latlng)\n .subtract(this._livemap.settings.spawn)\n .round()\n : new Point(0, 0);\n this._domX.innerHTML = `${this._point.x}`;\n this._domZ.innerHTML = `${this._point.z}`;\n }\n\n public getPoint(): Point {\n return this._point;\n }\n}\n","export class Renderer {\n private readonly _id: string;\n private readonly _icon: string;\n\n constructor(renderer?: Renderer) {\n this._id = renderer?.id ?? '';\n this._icon = renderer?.icon ?? '';\n }\n\n get id(): string {\n return this._id;\n }\n\n get icon(): string {\n return this._icon;\n }\n}\n","import {LiveMap} from '../LiveMap';\nimport {Renderer} from '../data/Renderer';\nimport * as L from 'leaflet';\n\nexport class RenderersControl {\n private readonly _livemap: LiveMap;\n private readonly _dom: HTMLElement;\n\n private _renderers: Renderer[] = [];\n\n private _rendererType: string = 'basic';\n\n constructor(livemap: LiveMap) {\n this._livemap = livemap;\n\n this._dom = L.DomUtil.create('ul');\n\n livemap.settings.renderers.forEach((renderer: Renderer): void => {\n this._renderers.push(new Renderer(renderer))\n });\n }\n\n get dom(): HTMLElement {\n return this._dom;\n }\n\n get rendererType(): string {\n return this._rendererType;\n }\n\n set rendererType(renderer: string | null) {\n this._rendererType = !renderer?.length ? this._renderers[0].id : renderer;\n }\n}\n","import * as L from 'leaflet';\nimport {LiveMap} from '../LiveMap';\nimport {PinControl} from './PinControl';\nimport {RenderersControl} from './RenderersControl';\n\nexport class SidebarControl {\n private readonly _livemap: LiveMap;\n private readonly _dom: HTMLElement;\n\n private readonly _renderersControl: RenderersControl;\n\n constructor(livemap: LiveMap) {\n this._livemap = livemap;\n\n this._renderersControl = new RenderersControl(this._livemap);\n\n this._dom = L.DomUtil.create('aside');\n\n if (livemap.settings.ui.sidebar != 'hide') {\n document.body.prepend(this._dom);\n }\n\n // set up and show/hide the pin\n const pin: PinControl = new PinControl(this._livemap, this._dom);\n this.show(pin.pinned);\n\n // set up the logo fancy div magic\n const holder: HTMLElement = L.DomUtil.create('div', '', this._dom);\n const logo: HTMLElement = L.DomUtil.create('div', '', holder);\n L.DomUtil.create('div', '', holder); // this one is squishy :3\n\n const logolink: string = this._livemap.settings.ui.logolink;\n const logotext: string = this._livemap.settings.ui.logotext;\n\n let rawhtml: string = this._livemap.settings.ui.logoimg;\n if (logolink) {\n rawhtml += `${logotext}`;\n } else {\n rawhtml += `${logotext}`;\n }\n rawhtml += ``;\n logo.insertAdjacentHTML('beforeend', rawhtml);\n\n // add these after the logo\n this._dom.appendChild(this.renderersControl.dom);\n this._dom.appendChild(this._livemap.playersLayer.dom);\n\n this._dom.onclick = (): void => {\n // todo followPlayerMarker(null)\n };\n this._dom.onmouseleave = (): void => {\n if (!pin.pinned) {\n this.show(false);\n }\n };\n this._dom.onmouseenter = (): void => {\n if (!pin.pinned) {\n this.show(true);\n }\n };\n }\n\n get renderersControl(): RenderersControl {\n return this._renderersControl;\n }\n\n public show(show: boolean): void {\n this._dom.className = show ? 'show' : '';\n }\n}\n","export class MenuRow {\n private readonly _text?: string;\n private readonly _alt?: string;\n private readonly _icon?: string;\n private readonly _key?: string;\n private readonly _action?: (e?: Event) => void;\n\n constructor(text?: string, alt?: string, icon?: string, key?: string, action?: (e?: Event) => void) {\n this._text = text;\n this._alt = alt;\n this._icon = icon;\n this._key = key?.toLowerCase();\n this._action = action;\n }\n\n get text(): string | undefined {\n return this._text;\n }\n\n get alt(): string | undefined {\n return this._alt;\n }\n\n get icon(): string | undefined {\n return this._icon;\n }\n\n get key(): string | undefined {\n return this._key;\n }\n\n get action(): ((e?: Event) => void) | undefined {\n return this._action;\n }\n\n public create(): HTMLElement {\n if (!this.text) {\n // no contents or text, make a divider\n return document.createElement('hr');\n }\n\n // init contents\n const iconElem: Element = document.createElement('p');\n const textElem: Element = document.createElement('p');\n const keyElem: Element = document.createElement('p');\n\n // populate contents\n if (this.icon) {\n iconElem.appendChild(window.createSVGIcon(this.icon));\n }\n textElem.innerHTML = this.text ?? '';\n keyElem.innerHTML = this.key ?? '';\n\n // create row\n const row: HTMLElement = document.createElement('div');\n row.appendChild(iconElem);\n row.appendChild(textElem);\n row.appendChild(keyElem);\n\n if (this.alt) {\n row.title = this.alt;\n }\n\n // attach click action\n if (this.action) {\n row.onclick = (e: MouseEvent) => this.action!(e);\n }\n\n return row;\n }\n}\n","import * as L from 'leaflet';\nimport {LiveMap} from '../../LiveMap';\nimport {Lang} from '../../data/Lang';\nimport {Point} from '../../data/Point';\nimport {Url} from '../../data/Url';\nimport {MenuRow} from './MenuRow';\n\nexport class ContextMenu {\n private readonly _livemap: LiveMap;\n private readonly _menu: [HTMLElement, HTMLElement];\n private readonly _rows: MenuRow[];\n private readonly _pointRegex: RegExp = /\\[?(?-?\\d+),(?-?\\d+)]?/;\n private readonly _format: string = '[ {x}, {z} ]';\n\n private _point?: Point;\n private _cur: boolean = false;\n\n public constructor(livemap: LiveMap) {\n this._livemap = livemap;\n\n // create the menu rows\n this._rows = this.createRows();\n\n // create dual menus to swap between\n this._menu = [\n this.createMenu(),\n this.createMenu()\n ];\n\n // setup browser's listeners\n window.onblur = document.onblur = (): void => this.close();\n window.oncontextmenu = (e: MouseEvent) => this.open(e);\n window.onkeydown = (e: KeyboardEvent) => this.keydown(e);\n\n // setup map's listeners\n this._livemap.on('load unload resize viewreset move movestart moveend zoom zoomstart zoomend' +\n ' zoomlevelschange click dblclick mousedown preclick', (): void => this.close());\n }\n\n private createRows(): MenuRow[] {\n const lang: Lang = this._livemap.settings.lang;\n const rows: MenuRow[] = [];\n rows.push(new MenuRow('[ 0,0 ]'));\n rows.push(new MenuRow());\n if (navigator.clipboard) {\n // some browsers don't support clipboard api :(\n rows.push(new MenuRow(lang.copy, lang.copyAlt, 'copy', 'Ctrl+C', () => this.copy()));\n rows.push(new MenuRow(lang.paste, lang.pasteAlt, 'paste', 'Ctrl+V', () => this.paste()));\n rows.push(new MenuRow());\n rows.push(new MenuRow(lang.share, lang.shareAlt, 'link', 'Ctrl+S', () => this.share()));\n rows.push(new MenuRow());\n }\n rows.push(new MenuRow(lang.center, lang.centerAlt, 'center', 'F10', () => this.center()));\n return rows;\n }\n\n private createMenu(): HTMLElement {\n // create the menu\n const wrapper: HTMLElement = L.DomUtil.create('div', 'contextmenu-wrapper');\n const menu: HTMLElement = document.body.appendChild(wrapper)\n .appendChild(L.DomUtil.create('div'))\n .appendChild(L.DomUtil.create('div', 'contextmenu'));\n\n // add the rows to the menu\n this._rows.forEach((row: MenuRow): void => menu.append(row.create()));\n\n // prevent menu from opening real context menu\n menu.addEventListener('contextmenu', (e: Event): void => this.stopPropagation(e));\n\n return wrapper;\n }\n\n private close(): void {\n // hide the current menu\n this._menu[+this._cur].classList.remove('show');\n\n this._point = undefined;\n }\n\n private open(e: MouseEvent): void {\n // close current menu (mobile needs this)\n this.close();\n\n // show the next menu at mouse position, while keeping it inside the viewable area\n const menu: HTMLElement = this._menu[+(this._cur = !this._cur)];\n menu.classList.add('show');\n menu.style.top = `${Math.min(window.innerHeight - menu.offsetHeight - 25, e.y)}px`;\n menu.style.left = `${Math.min(window.innerWidth - menu.offsetWidth - 25, e.x)}px`;\n\n // stop the event from bubbling up the stack\n this.stopPropagation(e);\n\n // update coordinates in first row\n this._point = this._livemap.coordsControl.getPoint();\n menu.querySelector('div:first-child p:nth-child(2)')!.innerHTML = this._point.toString(this._format);\n }\n\n private keydown(e: KeyboardEvent): void {\n // close menu when escape is pressed\n if (e.key === 'Escape') {\n this.close();\n return;\n }\n\n // get current key combo\n const combo: string = this.combo(e);\n\n // find and run any actions for this key combo\n this._rows.forEach((row: MenuRow): void => {\n if (row.key == combo && row.action) {\n row.action(e);\n this.stopPropagation(e);\n }\n });\n }\n\n private combo(e: KeyboardEvent): string {\n if (e.key == 'Control' || e.key == 'Shift' || e.key == 'Alt') {\n return '';\n }\n\n let combo: string = '';\n if (e.ctrlKey) {\n combo += `${combo ? '+' : ''}ctrl`;\n }\n if (e.shiftKey) {\n combo += `${combo ? '+' : ''}shift`;\n }\n if (e.altKey) {\n combo += `${combo ? '+' : ''}alt`;\n }\n combo += `${combo ? '+' : ''}${e.key}`;\n return combo.toLowerCase();\n }\n\n public copy(): void {\n navigator.clipboard.writeText((this._point ?? this._livemap.coordsControl.getPoint()).toString(this._format))\n .then((): void => {\n this._livemap.notifications.success(this._livemap.settings.lang.notifCopy);\n })\n .catch((e): void => {\n console.error('Could not copy location\\n', e);\n this._livemap.notifications.danger(this._livemap.settings.lang.notifCopyFailed);\n })\n .finally((): void => {\n this.close();\n });\n }\n\n public paste(): void {\n navigator.clipboard.readText()\n .then((text: string): void => {\n const point: Point | undefined = this.pastePoint(text) ?? this.pasteUrl(text);\n if (point) {\n this._livemap.notifications.info(this._livemap.settings.lang.notifPaste);\n this._livemap.centerOn(point);\n } else {\n this._livemap.notifications.warning(this._livemap.settings.lang.notifPasteInvalid);\n }\n })\n .catch((e): void => {\n console.error('Could not paste location\\n', e);\n this._livemap.notifications.danger(this._livemap.settings.lang.notifPasteFailed);\n })\n .finally((): void => {\n this.close();\n });\n }\n\n private pastePoint(text: string): Point | undefined {\n const match: RegExpExecArray | null = this._pointRegex.exec(text.replace(/\\s+/g, ''));\n if (match) {\n return Point.of(parseInt(match[1]), parseInt(match[2]));\n }\n }\n\n private pasteUrl(text: string): Point | undefined {\n try {\n return new Url(this._livemap, text).point;\n } catch (err) {\n return;\n }\n }\n\n public share(point?: Point): void {\n point ??= this._point ?? this._livemap.coordsControl.getPoint();\n const text: string = `${window.location.origin}${this._livemap.linkControl.getUrlFromPoint(point)}`;\n navigator.clipboard.writeText(text)\n .then((): void => {\n this._livemap.notifications.success(this._livemap.settings.lang.notifShare);\n })\n .catch((e): void => {\n console.error('Could not copy shareable url\\n', e);\n this._livemap.notifications.danger(this._livemap.settings.lang.notifShareFailed);\n })\n .finally((): void => {\n this.close();\n });\n }\n\n public center(): void {\n this._livemap.centerOn(this._livemap.coordsControl.getPoint());\n this._livemap.coordsControl.update();\n this._livemap.linkControl.update();\n this._livemap.notifications.success(this._livemap.settings.lang.notifCenter);\n this.close();\n }\n\n private stopPropagation(e: Event): void {\n // stop the event in the current element\n // and prevent it from bubbling up the stack\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n","import * as L from 'leaflet';\n\nexport class Notifications {\n private readonly _dom: HTMLElement;\n\n constructor() {\n this._dom = L.DomUtil.create('div', 'notifications');\n document.body.appendChild(this._dom);\n }\n\n public create(type: ('info' | 'success' | 'warning' | 'danger'), text: string): void {\n const div: HTMLElement = this._dom.appendChild(L.DomUtil.create('div', type));\n div.appendChild(window.createSVGIcon(type));\n div.appendChild(L.DomUtil.create('p')).innerText = text;\n\n const handler = (): void => {\n div.removeEventListener('transitionend', handler);\n setTimeout((): void => {\n div.addEventListener('transitionend', (): void => {\n div.remove();\n }, {passive: true});\n div.classList.remove('show');\n }, 2500);\n };\n div.addEventListener('transitionend', handler, {passive: true});\n setTimeout((): void => div.classList.add('show'), 50);\n }\n\n public info(text: string): void {\n this.create('info', text);\n }\n\n public success(text: string): void {\n this.create('success', text);\n }\n\n public warning(text: string): void {\n this.create('warning', text);\n }\n\n public danger(text: string): void {\n this.create('danger', text);\n }\n}\n","export class Web {\n private readonly _tiletype: string;\n\n constructor(web?: Web) {\n this._tiletype = web?._tiletype ?? 'webp';\n }\n\n get tiletype(): string {\n return this._tiletype;\n }\n}\n","export class Zoom {\n private readonly _def: number;\n private readonly _maxin: number;\n private readonly _maxout: number;\n\n constructor(zoom?: Zoom) {\n this._def = zoom?.def ?? 0;\n this._maxin = zoom?.maxin ?? -3;\n this._maxout = zoom?.maxout ?? 8;\n }\n\n get def(): number {\n return this._def;\n }\n\n get maxin(): number {\n return this._maxin;\n }\n\n get maxout(): number {\n return this._maxout;\n }\n}\n","export class Ui {\n private readonly _attribution: string;\n private readonly _logolink: string;\n private readonly _logoimg: string;\n private readonly _logotext: string;\n private readonly _sitetitle: string;\n private readonly _sidebar: string;\n\n constructor(json?: Ui) {\n this._attribution = json?.attribution ?? `Livemap ©2024`;\n this._logolink = json?.logolink ?? 'https://mods.vintagestory.at/livemap';\n this._logoimg = json?.logoimg ?? ``;\n this._logotext = json?.logotext ?? 'LiveMap';\n this._sitetitle = json?.sitetitle ?? 'Vintage Story LiveMap';\n this._sidebar = json?.sidebar ?? 'unpinned';\n }\n\n get attribution(): string {\n return this._attribution;\n }\n\n get logolink(): string {\n return this._logolink;\n }\n\n get logoimg(): string {\n return this._logoimg;\n }\n\n get logotext(): string {\n return this._logotext;\n }\n\n get sitetitle(): string {\n return this._sitetitle;\n }\n\n get sidebar(): string {\n return this._sidebar;\n }\n}\n","export class Lang {\n private readonly _pinned: string;\n private readonly _unpinned: string;\n private readonly _players: string;\n private readonly _renderers: string;\n private readonly _copy: string;\n private readonly _copyAlt: string;\n private readonly _paste: string;\n private readonly _pasteAlt: string;\n private readonly _share: string;\n private readonly _shareAlt: string;\n private readonly _center: string;\n private readonly _centerAlt: string;\n private readonly _notifCopy: string;\n private readonly _notifCopyFailed: string;\n private readonly _notifPaste: string;\n private readonly _notifPasteFailed: string;\n private readonly _notifPasteInvalid: string;\n private readonly _notifShare: string;\n private readonly _notifShareFailed: string;\n private readonly _notifCenter: string;\n\n constructor(lang: Lang) {\n this._pinned = lang.pinned;\n this._unpinned = lang.unpinned;\n this._players = lang.players;\n this._renderers = lang.renderers;\n this._copy = lang.copy;\n this._copyAlt = lang.copyAlt;\n this._paste = lang.paste;\n this._pasteAlt = lang.pasteAlt;\n this._share = lang.share;\n this._shareAlt = lang.shareAlt;\n this._center = lang.center;\n this._centerAlt = lang.centerAlt;\n this._notifCopy = lang.notifCopy;\n this._notifCopyFailed = lang.notifCopyFailed;\n this._notifPaste = lang.notifPaste;\n this._notifPasteFailed = lang.notifPasteFailed;\n this._notifPasteInvalid = lang.notifPasteInvalid;\n this._notifShare = lang.notifShare;\n this._notifShareFailed = lang.notifShareFailed;\n this._notifCenter = lang.notifCenter;\n }\n\n get pinned(): string {\n return this._pinned ?? 'Pinned';\n }\n\n get unpinned(): string {\n return this._unpinned ?? 'Unpinned';\n }\n\n get players(): string {\n return this._players ?? 'Players';\n }\n\n get renderers(): string {\n return this._renderers ?? 'Map Types';\n }\n\n get copy(): string {\n return this._copy ?? 'Copy';\n }\n\n get copyAlt(): string {\n return this._copyAlt ?? 'Copy this location to the clipboard';\n }\n\n get paste(): string {\n return this._paste ?? 'Paste';\n }\n\n get pasteAlt(): string {\n return this._pasteAlt ?? 'Go to a point from the clipboard';\n }\n\n get share(): string {\n return this._share ?? 'Share';\n }\n\n get shareAlt(): string {\n return this._shareAlt ?? 'Copy a sharable url to the clipboard';\n }\n\n get center(): string {\n return this._center ?? 'Center';\n }\n\n get centerAlt(): string {\n return this._centerAlt ?? 'Center the map on this point';\n }\n\n get notifCopy(): string {\n return this._notifCopy ?? 'Copied location to clipboard';\n }\n\n get notifCopyFailed(): string {\n return this._notifCopyFailed ?? 'Could not copy location';\n }\n\n get notifPaste(): string {\n return this._notifPaste ?? 'Centered on location from clipboard';\n }\n\n get notifPasteFailed(): string {\n return this._notifPasteFailed ?? 'Could not paste location';\n }\n\n get notifPasteInvalid(): string {\n return this._notifPasteInvalid ?? 'Not a valid location';\n }\n\n get notifShare(): string {\n return this._notifShare ?? 'Copied shareable url to clipboard';\n }\n\n get notifShareFailed(): string {\n return this._notifShareFailed ?? 'Could not copy shareable url';\n }\n\n get notifCenter(): string {\n return this._notifCenter ?? 'Centered on location';\n }\n}\n","import {Point} from './Point';\nimport {Web} from './Web';\nimport {Zoom} from './Zoom';\nimport {Renderer} from './Renderer';\nimport {Ui} from './Ui';\nimport {Lang} from './Lang';\n\nexport class Settings {\n private readonly _friendlyUrls: boolean;\n private readonly _playerList: boolean;\n private readonly _playerMarkers: boolean;\n private readonly _maxPlayers: number;\n private readonly _interval: number;\n private readonly _size: Point;\n private readonly _spawn: Point;\n private readonly _web: Web;\n private readonly _zoom: Zoom;\n private readonly _renderers: Renderer[];\n private readonly _ui: Ui;\n private readonly _lang: Lang;\n\n constructor(json: Settings) {\n this._friendlyUrls = json.friendlyUrls ?? true;\n this._playerList = json.playerList ?? true;\n this._playerMarkers = json.playerMarkers ?? true;\n this._maxPlayers = json.maxPlayers ?? 0;\n this._interval = json.interval ?? 30;\n this._size = json.size ? Point.of(json.size) : Point.of(1024000, 1024000);\n this._spawn = json.spawn ? Point.of(json.spawn) : this.size.divide(2);\n this._web = json.web ? new Web(json.web) : new Web();\n this._zoom = json.zoom ? new Zoom(json.zoom) : new Zoom();\n this._renderers = json.renderers ?? [];\n this._ui = json.ui ? new Ui(json.ui) : new Ui();\n this._lang = new Lang(json.lang);\n }\n\n get friendlyUrls(): boolean {\n return this._friendlyUrls;\n }\n\n get playerList(): boolean {\n return this._playerList;\n }\n\n get playerMarkers(): boolean {\n return this._playerMarkers;\n }\n\n get maxPlayers(): number {\n return this._maxPlayers;\n }\n\n get interval(): number {\n return this._interval;\n }\n\n get size(): Point {\n return this._size;\n }\n\n get spawn(): Point {\n return this._spawn;\n }\n\n get web(): Web {\n return this._web;\n }\n\n get zoom(): Zoom {\n return this._zoom;\n }\n\n get renderers(): Renderer[] {\n return this._renderers;\n }\n\n get ui(): Ui {\n return this._ui;\n }\n\n get lang(): Lang {\n return this._lang;\n }\n}\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[1]!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[1]!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-apple\",\n \"use\": \"svg-apple-usage\",\n \"viewBox\": \"0 0 91.28 103.72\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-basic\",\n \"use\": \"svg-basic-usage\",\n \"viewBox\": \"0 0 32 32\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-bee\",\n \"use\": \"svg-bee-usage\",\n \"viewBox\": \"0 0 33.228 23.739\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-berries\",\n \"use\": \"svg-berries-usage\",\n \"viewBox\": \"0 0 160.64 132.41\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-cave\",\n \"use\": \"svg-cave-usage\",\n \"viewBox\": \"0 0 24.294 15.707\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-center\",\n \"use\": \"svg-center-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-circle\",\n \"use\": \"svg-circle-usage\",\n \"viewBox\": \"0 0 100 100\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-copy\",\n \"use\": \"svg-copy-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-danger\",\n \"use\": \"svg-danger-usage\",\n \"viewBox\": \"0 0 32 32\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-gear\",\n \"use\": \"svg-gear-usage\",\n \"viewBox\": \"0 0 50 50\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-grain\",\n \"use\": \"svg-grain-usage\",\n \"viewBox\": \"0 0 40 40\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-gravestone\",\n \"use\": \"svg-gravestone-usage\",\n \"viewBox\": \"0 0 52 63\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-home\",\n \"use\": \"svg-home-usage\",\n \"viewBox\": \"0 0 31.107 27.799\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-house\",\n \"use\": \"svg-house-usage\",\n \"viewBox\": \"0 0 8 8\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-info\",\n \"use\": \"svg-info-usage\",\n \"viewBox\": \"0 0 16 16\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-ladder\",\n \"use\": \"svg-ladder-usage\",\n \"viewBox\": \"0 0 28.585 20.192\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-layers\",\n \"use\": \"svg-layers-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-link\",\n \"use\": \"svg-link-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-marker\",\n \"use\": \"svg-marker-usage\",\n \"viewBox\": \"0 0 25 25\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-mushroom\",\n \"use\": \"svg-mushroom-usage\",\n \"viewBox\": \"0 0 92.34 107.35\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-paste\",\n \"use\": \"svg-paste-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-pick\",\n \"use\": \"svg-pick-usage\",\n \"viewBox\": \"0 0 21.955 22.029\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-pin\",\n \"use\": \"svg-pin-usage\",\n \"viewBox\": \"0 0 32 32\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-player\",\n \"use\": \"svg-player-usage\",\n \"viewBox\": \"0 0 32 32\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-propick\",\n \"use\": \"svg-propick-usage\",\n \"viewBox\": \"0 0 21.245 18.985\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-rocks\",\n \"use\": \"svg-rocks-usage\",\n \"viewBox\": \"0 0 36.178 19.512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-ruins\",\n \"use\": \"svg-ruins-usage\",\n \"viewBox\": \"0 0 32.663 17.187\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-sepia\",\n \"use\": \"svg-sepia-usage\",\n \"viewBox\": \"0 0 32 32\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-skull_and_crossbones\",\n \"use\": \"svg-skull_and_crossbones-usage\",\n \"viewBox\": \"0 0 178.43 138.02\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-spiral\",\n \"use\": \"svg-spiral-usage\",\n \"viewBox\": \"0 0 25.877 23.683\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-star1\",\n \"use\": \"svg-star1-usage\",\n \"viewBox\": \"0 0 27.482 27.482\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-star2\",\n \"use\": \"svg-star2-usage\",\n \"viewBox\": \"0 0 28.193 26.814\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-success\",\n \"use\": \"svg-success-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-trader\",\n \"use\": \"svg-trader-usage\",\n \"viewBox\": \"0 0 22.35 21.682\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-tree\",\n \"use\": \"svg-tree-usage\",\n \"viewBox\": \"0 0 102.91 113.49\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-tree2\",\n \"use\": \"svg-tree2-usage\",\n \"viewBox\": \"0 0 103.57 122.18\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-turnip\",\n \"use\": \"svg-turnip-usage\",\n \"viewBox\": \"0 0 120 120\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-vessel\",\n \"use\": \"svg-vessel-usage\",\n \"viewBox\": \"0 0 22.815 23.848\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-warning\",\n \"use\": \"svg-warning-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"svg-x\",\n \"use\": \"svg-x-usage\",\n \"viewBox\": \"0 0 119.18 158.66\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// todo - get a better name than this\nexport class Value {\n private readonly _cur: number;\n private readonly _max: number;\n\n constructor(value?: Value) {\n this._cur = value?.cur ?? 0;\n this._max = value?.max ?? 0;\n }\n\n get cur(): number {\n return this._cur;\n }\n\n get max(): number {\n return this._max;\n }\n}\n","import {Point} from './Point';\nimport {Value} from './Value';\n\nexport class Player {\n private _id: string;\n private _name: string;\n private _avatar: string;\n private _role: string;\n private _pos: Point;\n private _yaw: number;\n private _health: Value;\n private _satiety: Value;\n\n constructor(player?: Player) {\n this._id = player?.id ?? '';\n this._name = player?.name ?? '';\n this._avatar = player?.avatar ?? '';\n this._role = player?.role ?? '';\n this._pos = player?.pos ? Point.of(player.pos) : new Point(0, 0);\n this._yaw = player?.yaw ?? 0;\n this._health = new Value(player?.health);\n this._satiety = new Value(player?.satiety);\n }\n\n get id(): string {\n return this._id;\n }\n\n get name(): string {\n return this._name;\n }\n\n get avatar(): string {\n return this._avatar;\n }\n\n get role(): string {\n return this._role;\n }\n\n get pos(): Point {\n return this._pos;\n }\n\n get yaw(): number {\n return this._yaw;\n }\n\n get health(): Value {\n return this._health;\n }\n\n get satiety(): Value {\n return this._satiety;\n }\n\n public updateData(data: Player): void {\n this._id = data.id;\n this._name = data.name;\n this._avatar = data.avatar;\n this._role = data.role;\n this._pos = data.pos;\n this._yaw = data.yaw;\n this._health = data.health;\n this._satiety = data.satiety;\n }\n}\n","import * as L from 'leaflet';\nimport {LiveMap} from '../LiveMap';\nimport {MarkersLayer} from './MarkersLayer';\nimport {Players} from '../data/Players';\nimport {Player} from '../data/Player';\nimport {Value} from '../data/Value';\nimport {Icon} from './marker/Icon';\nimport {Marker, MarkerJson} from './marker/Marker';\n\nexport class PlayersLayer extends MarkersLayer {\n private readonly _dom: HTMLElement;\n\n private readonly _players: Map = new Map();\n\n private _max: number = 0;\n\n constructor(livemap: LiveMap) {\n super(livemap, 'data/players.json');\n this._dom = L.DomUtil.create('ul');\n\n this.options = {\n ...this.options,\n pane: 'players'\n };\n }\n\n get dom(): HTMLElement {\n return this._dom;\n }\n\n get cur(): number {\n return this._players.size;\n }\n\n get max(): number {\n return this._max;\n }\n\n get players(): IterableIterator {\n return this._players.values();\n }\n\n protected override initial(json: object): void {\n const players: Players = json as Players;\n\n this.label = this._livemap.settings.lang.players;\n this.interval = players.interval;\n this._livemap.layersControl.addOverlay(this, this.label);\n if (!players.hidden && !this._livemap.hasLayer(this)) {\n this._livemap.addLayer(this);\n }\n }\n\n protected override updateMarkers(json: object): void {\n const players: Players = json as Players;\n\n // update players in marker layer and sidebar\n this.updatePlayers(players);\n\n // todo update player counts in sidebar legend\n /*this._legend.textContent = this._livemap.settings.lang.players\n .replace(/{cur}/g, this.cur.toString())\n .replace(/{max}/g, this.max.toString());/*/\n\n // todo follow highlighted player\n //\n }\n\n private updatePlayers(json: Players): void {\n const toRemove: Set = new Set(this._players.keys());\n\n json.players.forEach((data: Player): void => {\n const player: Player | undefined = this._players.get(data.name);\n if (player) {\n this.updatePlayer(player, new Player(data));\n toRemove.delete(player.name);\n } else {\n this.createPlayer(new Player(data));\n }\n });\n\n toRemove.forEach((name: string): void => {\n this.removePlayer(name);\n });\n }\n\n private createPlayer(player: Player): void {\n this._players.set(player.name, player);\n if (this._livemap.settings.playerMarkers) {\n this.addMarker(player);\n }\n if (this._livemap.settings.playerList) {\n this.addToSidebar(player);\n }\n }\n\n private updatePlayer(player: Player, data: Player): void {\n player.updateData(data);\n const icon: Icon = this.markers.get(player.name) as Icon;\n const marker: L.Marker = icon.get() as L.Marker;\n marker.setLatLng(data.pos.toLatLng());\n marker.setTooltipContent(this.tooltip(data));\n\n // https://stackoverflow.com/a/53416030/3530727\n const from: number = marker.options.rotationAngle ?? Math.round(data.yaw);\n const to: number = Math.round(data.yaw);\n const diff: number = ((((to - from) % 360) + 540) % 360) - 180;\n marker.options.rotationAngle = from + diff;\n }\n\n private removePlayer(name: string): void {\n this._players.delete(name);\n this.removeMarker(name);\n this.removeFromSidebar(name);\n }\n\n private addMarker(player: Player): void {\n const icon: Icon = new Icon(this, {\n type: 'icon',\n id: player.name,\n point: player.pos,\n options: {\n title: player.name,\n rotationAngle: player.yaw,\n iconUrl: '#svg-player',\n iconSize: [24, 24],\n iconAnchor: [12, 12]\n },\n tooltip: {\n 'permanent': true,\n 'direction': 'right',\n 'offset': [10, 0],\n 'pane': 'players',\n 'content': this.tooltip(player)\n }\n } as unknown as MarkerJson);\n icon.addTo(this);\n this.markers.set(player.name, icon);\n }\n\n private removeMarker(name: string): void {\n const marker: Marker | undefined = this.markers.get(name);\n if (marker) {\n this.markers.delete(name)\n marker.remove();\n }\n }\n\n private addToSidebar(player: Player): void {\n const li: HTMLElement = L.DomUtil.create('li', '', this._dom);\n li.id = player.name;\n li.title = player.name;\n\n const img: HTMLImageElement = L.DomUtil.create('img', '', li);\n img.src = player.avatar;\n img.alt = `${player.name}'s Avatar`;\n\n const p: HTMLParagraphElement = L.DomUtil.create('p', '', li);\n p.innerText = player.name;\n }\n\n private removeFromSidebar(name: string): void {\n this._dom.querySelectorAll(`#${name}`)?.forEach((li: Element): void => li.remove());\n }\n\n private tooltip(player: Player): string {\n return `
  • avatar
  • ${player.name}

`\n }\n\n private stat(value: Value, divisor: number): string {\n const segments: number = Math.round(value.max / divisor);\n const amount: number = Math.round((Math.min(value.cur, value.max) / value.max) * 100);\n return `--amount:${amount}%;--segments:${segments}`;\n }\n}\n","import * as L from 'leaflet';\nimport {TileLayerControl} from './control/TileLayerControl';\nimport {LayersControl} from './control/LayersControl';\nimport {LinkControl} from './control/LinkControl';\nimport {CoordsControl} from './control/CoordsControl';\nimport {SidebarControl} from './control/SidebarControl';\nimport {ContextMenu} from './layer/menu/ContextMenu';\nimport {Notifications} from './layer/Notifications';\nimport {Settings} from './data/Settings';\nimport {Point} from './data/Point';\nimport './scss/styles';\nimport './svg'\nimport {PlayersLayer} from './layer/PlayersLayer';\n\nexport class LiveMap extends L.Map {\n declare _controlCorners: { [x: string]: HTMLDivElement; };\n declare _controlContainer?: HTMLElement;\n declare _container?: HTMLElement;\n\n private readonly _settings: Settings;\n\n private readonly _tileLayerControl: TileLayerControl;\n private readonly _playersLayer: PlayersLayer;\n private readonly _layersControl: LayersControl;\n private readonly _linkControl: LinkControl;\n private readonly _coordsControl: CoordsControl;\n private readonly _sidebarControl: SidebarControl;\n\n private readonly _contextMenu: ContextMenu;\n private readonly _notifications: Notifications;\n\n private readonly _scale: number;\n\n constructor(settings: Settings) {\n // create the map div element\n L.DomUtil.create('div', 'loading', document.body).id = 'map';\n\n super('map', {\n // we need a flat and simple crs\n crs: L.Util.extend(L.CRS.Simple, {\n // we need to flip the y-axis correctly\n // https://stackoverflow.com/a/62320569/3530727\n transformation: new L.Transformation(1, 0, 1, 0)\n }),\n // center map on spawn\n center: [settings.spawn.x, settings.spawn.z],\n // always allow attribution in case a layer needs it\n attributionControl: true,\n // canvas is more efficient than svg\n preferCanvas: true,\n // these get weird when changed\n zoomSnap: 1,\n zoomDelta: 1,\n\n // chrome based browsers on linux zoom twice as fast, so we have to double the ratio\n // effectively undoes the fix for Leaflet/Leaflet#4538 and Leaflet/Leaflet#7403\n // https://github.com/Leaflet/Leaflet/commit/96977a19358374b0166cff049862fa1f0fed5948\n //\n // todo remove this logic when this bug gets fixed: https://issues.chromium.org/issues/40887377\n // it seems intentional, so it might not get fixed https://issues.chromium.org/issues/40804672\n wheelPxPerZoomLevel: L.Browser.linux && L.Browser.chrome ? 120 : 60\n });\n\n this._settings = settings;\n\n // set custom page title from lang\n if (document.title.trim() == '') {\n document.title = settings.ui.sitetitle ?? 'Vintage Story LiveMap';\n }\n\n // pre-calculate map's scale\n this._scale ??= (1 / Math.pow(2, settings.zoom.maxout));\n\n // set up the controllers\n this._tileLayerControl = new TileLayerControl(this);\n this._layersControl = new LayersControl(this);\n this._playersLayer = new PlayersLayer(this);\n this._coordsControl = new CoordsControl(this);\n this._linkControl = new LinkControl(this);\n this._sidebarControl = new SidebarControl(this);\n\n // the fancy context menu and stuff\n this._contextMenu = new ContextMenu(this);\n this._notifications = new Notifications();\n\n // replace leaflet's attribution with our own\n this.attributionControl.setPrefix(settings.ui.attribution);\n\n // stuff to do after the map fully loads\n this.on('load', (): void => this.onLoad());\n }\n\n onLoad(): void {\n // get rid of the page logo and loading images\n const container: HTMLElement = this.getContainer();\n container.classList.remove('loading');\n container.addEventListener('transitionend', (e: TransitionEvent): void => {\n if (e.target === container) {\n document.querySelector('.logo')?.remove();\n }\n }, {passive: true});\n\n // fix map size on load - fixes android browser url bar pushing page off-screen\n // https://chanind.github.io/javascript/2019/09/28/avoid-100vh-on-mobile-web.html\n this.updateSizeToWindow();\n\n // replace layers.png with an svg\n const layers: HTMLElement = document.querySelector('.leaflet-control-layers-toggle')!;\n layers.appendChild(window.createSVGIcon('layers'));\n const svg: SVGElement = layers.firstChild as SVGElement;\n svg.style.width = '24px';\n svg.style.height = '24px';\n svg.style.margin = '3px';\n\n // fix svg size issues in weird browsers like safari\n document.querySelectorAll('svg').forEach((svg: Element): void => {\n svg.setAttribute('preserveAspectRatio', 'none');\n });\n\n // start the tick loop\n this.loop(0);\n }\n\n // https://stackoverflow.com/a/60391674/3530727\n _initControlPos(): void {\n const container: HTMLDivElement = this._controlContainer = L.DomUtil.create('div', 'leaflet-control-container', this._container);\n const corners: { [x: string]: HTMLDivElement; } = this._controlCorners = {};\n\n function createRow(vSide: string): void {\n const div: HTMLDivElement = L.DomUtil.create('div', `leaflet-control-container-${vSide}`, container);\n createCell(vSide, 'left', div);\n createCell(vSide, 'center', div);\n createCell(vSide, 'right', div);\n }\n\n function createCell(vSide: string, hSide: string, container: HTMLDivElement): void {\n corners[`${vSide}${hSide}`] = L.DomUtil.create('div', `leaflet-${vSide} leaflet-${hSide}`, container);\n }\n\n createRow('top');\n createRow('middle');\n createRow('bottom');\n }\n\n get settings(): Settings {\n return this._settings;\n }\n\n get tileLayerControl(): TileLayerControl {\n return this._tileLayerControl;\n }\n\n get playersLayer(): PlayersLayer {\n return this._playersLayer;\n }\n\n get layersControl(): LayersControl {\n return this._layersControl;\n }\n\n get coordsControl(): CoordsControl {\n return this._coordsControl;\n }\n\n get linkControl(): LinkControl {\n return this._linkControl\n }\n\n get sidebarControl(): SidebarControl {\n return this._sidebarControl;\n }\n\n get contextMenu(): ContextMenu {\n return this._contextMenu;\n }\n\n get notifications(): Notifications {\n return this._notifications;\n }\n\n get scale(): number {\n return this._scale;\n }\n\n private loop(count: number): void {\n try {\n if (document.visibilityState === 'visible') {\n this.tileLayerControl.tick(count);\n this.layersControl.tick(count);\n }\n } catch (e) {\n console.error(`Error processing tick (${count})\\n`, e);\n }\n\n setTimeout(() => this.loop(++count), 1000);\n }\n\n public createPaneIfNotExist(pane?: string): void {\n if (pane && this.getPane(pane) === undefined) {\n this.createPane(pane);\n }\n }\n\n public centerOn(point: Point, zoom?: number | string): void {\n if (zoom !== undefined) {\n this.setZoom(this.settings.zoom.maxout - +zoom);\n }\n this.setView(point.add(this.settings.spawn).toLatLng());\n this._linkControl.update();\n }\n\n public currentZoom(): number {\n return this.settings.zoom.maxout - this.getZoom();\n }\n\n public updateSizeToWindow(): void {\n const style: CSSStyleDeclaration = this.getContainer().style;\n style.width = `${window.innerWidth}px`;\n style.height = `${window.innerHeight}px`;\n this.invalidateSize();\n }\n}\n\nwindow.onload = (): void => {\n window.fetchJson('data/settings.json')\n .then((json: Settings): void => {\n window.livemap = new LiveMap(new Settings(json));\n })\n .catch((err: unknown): void => {\n console.error(`Error creating map\\n`, err);\n });\n};\n\n// update map size when window size, scale, or orientation changes\n'orientationchange resize'.split(' ').forEach((event: string): void => {\n window.addEventListener(event, (): void => {\n window.livemap?.updateSizeToWindow();\n }, {passive: true});\n});\n\nwindow.fetchJson = async (url: string): Promise => {\n const res: Response = await fetch(url, {\n headers: {\n 'Content-Disposition': 'inline'\n }\n });\n if (res.ok) {\n return await res.json();\n }\n throw (res.statusText);\n}\n\nwindow.createSVGIcon = (icon: string): DocumentFragment => {\n const template: HTMLTemplateElement = L.DomUtil.create('template');\n template.innerHTML = ``;\n return template.content;\n}\n\n// https://stackoverflow.com/a/3955096\nArray.prototype.remove = function (obj: T, ax?: number): void {\n while ((ax = this.indexOf(obj)) !== -1) {\n this.splice(ax, 1);\n }\n};\n\n\nconst knownThemes: string[] = [];\n\nfor (let i: number = 0; i < document.styleSheets.length; i++) {\n const css: CSSStyleSheet = document.styleSheets[i];\n if (css.href?.endsWith('themes.css')) {\n const rules: CSSRuleList = css.cssRules;\n for (let j: number = 0; j < rules.length; j++) {\n const rule: CSSStyleRule = rules[j] as CSSStyleRule;\n const match: RegExpExecArray | null = /html\\[theme=\\u0022(.+)\\u0022]/.exec(rule.selectorText);\n if (match) {\n knownThemes.push(match[1]);\n }\n }\n break;\n }\n}\n\nwindow.matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', (): void => setTheme());\n\nconst setTheme = (): void => {\n const prefersDark: boolean = knownThemes.length > 1 && window.matchMedia('(prefers-color-scheme: dark)').matches;\n const theme: string = localStorage.getItem('theme') ?? knownThemes[+prefersDark];\n document.querySelector('html')!.setAttribute('theme', theme);\n // todo\n //localStorage.setItem('theme', theme);\n //localStorage.removeItem('theme');\n\n const icon: HTMLLinkElement | null = document.querySelector(`link[rel='shortcut icon']`);\n if (icon) {\n icon.href = prefersDark ? 'favicon-white.ico' : 'favicon.ico';\n }\n};\n\nsetTheme();\n","// noinspection all\n\n/**\n * Copyright 2014 JD Fergason\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// https://github.com/jdfergason/Leaflet.Ellipse\n\nimport * as L from 'leaflet';\nimport {Point} from '../data/Point';\n\nL.SVG.include({\n _updateEllipse: function (layer) {\n const rx = layer._radiusX,\n ry = layer._radiusY,\n phi = layer._tiltDeg,\n endPoint = layer._endPointParams;\n\n const d = 'M' + endPoint.x0 + ',' + endPoint.y0 +\n 'A' + rx + ',' + ry + ',' + phi + ',' +\n endPoint.largeArc + ',' + endPoint.sweep + ',' +\n endPoint.x1 + ',' + endPoint.y1 + ' z';\n this._setPath(layer, d);\n }\n});\n\nL.Canvas.include({\n _updateEllipse: function (layer) {\n if (layer._empty()) {\n return;\n }\n\n const p = layer._point,\n ctx = this._ctx,\n r = layer._radiusX,\n s = (layer._radiusY || r) / r;\n\n // https://github.com/jdfergason/Leaflet.Ellipse/commit/900d2904902da10248c23fe8d4fc022d3f68d70c\n if (this.hasOwnProperty('_drawnLayers')) {\n this._drawnlayers[layer._leaflet_id] = layer;\n } else if (this.hasOwnProperty('_layers')) {\n this._layers[layer._leaflet_id] = layer;\n } else {\n throw new Error('Cannot find property _drawnLayers or _layers');\n }\n\n ctx.save();\n\n ctx.translate(p.x, p.y);\n if (layer._tilt !== 0) {\n ctx.rotate(layer._tilt);\n }\n if (s !== 1) {\n ctx.scale(1, s);\n }\n\n ctx.beginPath();\n ctx.arc(0, 0, r, 0, Math.PI * 2);\n ctx.restore();\n\n this._fillStroke(ctx, layer);\n },\n});\n\nL.Ellipse = L.Path.extend({\n\n options: {\n fill: true,\n startAngle: 0,\n endAngle: 359.9\n },\n\n initialize: function (latlng, options) {\n L.setOptions(this, options);\n this._latlng = L.latLng(latlng);\n\n if (options.tilt) {\n this._tiltDeg = options.tilt;\n } else {\n this._tiltDeg = 0;\n }\n\n const point = Point.of(options.radii ?? [10, 10]);\n this._mRadiusX = point.x;\n this._mRadiusY = point.z;\n },\n\n setRadius: function (radii) {\n this._mRadiusX = radii[0];\n this._mRadiusY = radii[1];\n return this.redraw();\n },\n\n getRadius: function () {\n return new L.point(this._mRadiusX, this._mRadiusY);\n },\n\n setTilt: function (tilt) {\n this._tiltDeg = tilt;\n return this.redraw();\n },\n\n getBounds: function () {\n var lngRadius = this._getLngRadius(),\n latRadius = this._getLatRadius(),\n latlng = this._latlng;\n\n return new L.LatLngBounds(\n [latlng.lat - latRadius, latlng.lng - lngRadius],\n [latlng.lat + latRadius, latlng.lng + lngRadius]);\n },\n\n // @method setLatLng(latLng: LatLng): this\n // Sets the position of a circle marker to a new location.\n setLatLng: function (latlng) {\n this._latlng = L.latLng(latlng);\n this.redraw();\n return this.fire('move', {latlng: this._latlng});\n },\n\n // @method getLatLng(): LatLng\n // Returns the current geographical position of the circle marker\n getLatLng: function () {\n return this._latlng;\n },\n\n setStyle: L.Path.prototype.setStyle,\n\n _project: function () {\n const lngRadius = this._getLngRadius(),\n latRadius = this._getLatRadius(),\n latlng = this._latlng,\n pointLeft = this._map.latLngToLayerPoint([latlng.lat, latlng.lng - lngRadius]),\n pointBelow = this._map.latLngToLayerPoint([latlng.lat - latRadius, latlng.lng]);\n\n this._point = this._map.latLngToLayerPoint(latlng);\n\n // https://github.com/jdfergason/Leaflet.Ellipse/issues/10#issuecomment-348963516\n this._radiusX = Point.pixelsToMeters(Math.abs(this._point.x - pointLeft.x));\n this._radiusY = Point.pixelsToMeters(Math.abs(pointBelow.y - this._point.y));\n\n this._tilt = Math.PI * this._tiltDeg / 180;\n this._endPointParams = this._centerPointToEndPoint();\n this._updateBounds();\n },\n\n _updateBounds: function () {\n // http://math.stackexchange.com/questions/91132/how-to-get-the-limits-of-rotated-ellipse\n const sin = Math.sin(this._tilt);\n const cos = Math.cos(this._tilt);\n const sinSquare = sin * sin;\n const cosSquare = cos * cos;\n const aSquare = this._radiusX * this._radiusX;\n const bSquare = this._radiusY * this._radiusY;\n const halfWidth = Math.sqrt(aSquare * cosSquare + bSquare * sinSquare);\n const halfHeight = Math.sqrt(aSquare * sinSquare + bSquare * cosSquare);\n const w = this._clickTolerance();\n const p = [halfWidth + w, halfHeight + w];\n this._pxBounds = new L.Bounds(this._point.subtract(p), this._point.add(p));\n },\n\n _update: function () {\n if (this._map) {\n this._updatePath();\n }\n },\n\n _updatePath: function () {\n this._renderer._updateEllipse(this);\n },\n\n _getLatRadius: function () {\n // https://github.com/SlidEnergy/Leaflet.Ellipse/commit/11890f2ec425ec7f7755b991fd31016bd58f59be\n if (!!this._map.options.crs.infinite) {\n return this._mRadiusY;\n }\n return (this._mRadiusY / 40075017) * 360;\n },\n\n _getLngRadius: function () {\n // https://github.com/SlidEnergy/Leaflet.Ellipse/commit/11890f2ec425ec7f7755b991fd31016bd58f59be\n if (!!this._map.options.crs.infinite) {\n return this._mRadiusX;\n }\n return ((this._mRadiusX / 40075017) * 360) / Math.cos((Math.PI / 180) * this._latlng.lat);\n },\n\n _centerPointToEndPoint: function () {\n // Convert between center point parameterization of an ellipse\n // too SVG's end-point and sweep parameters. This is an\n // adaptation of the perl code found here:\n // http://commons.oreilly.com/wiki/index.php/SVG_Essentials/Paths\n const c = this._point,\n rx = this._radiusX,\n ry = this._radiusY,\n theta2 = (this.options.startAngle + this.options.endAngle) * (Math.PI / 180),\n theta1 = this.options.startAngle * (Math.PI / 180),\n delta = this.options.endAngle,\n phi = this._tiltDeg * (Math.PI / 180);\n\n // Determine start and end-point coordinates\n const x0 = c.x + Math.cos(phi) * rx * Math.cos(theta1) +\n Math.sin(-phi) * ry * Math.sin(theta1);\n const y0 = c.y + Math.sin(phi) * rx * Math.cos(theta1) +\n Math.cos(phi) * ry * Math.sin(theta1);\n\n const x1 = c.x + Math.cos(phi) * rx * Math.cos(theta2) +\n Math.sin(-phi) * ry * Math.sin(theta2);\n const y1 = c.y + Math.sin(phi) * rx * Math.cos(theta2) +\n Math.cos(phi) * ry * Math.sin(theta2);\n\n const largeArc = (delta > 180) ? 1 : 0;\n const sweep = (delta > 0) ? 1 : 0;\n\n return {\n 'x0': x0, 'y0': y0, 'tilt': phi, 'largeArc': largeArc,\n 'sweep': sweep, 'x1': x1, 'y1': y1\n };\n },\n\n _empty: function () {\n return this._radiusX && this._radiusY && !this._renderer._bounds.intersects(this._pxBounds);\n },\n\n _containsPoint: function (p) {\n // http://stackoverflow.com/questions/7946187/point-and-ellipse-rotated-position-test-algorithm\n const sin = Math.sin(this._tilt);\n const cos = Math.cos(this._tilt);\n const dx = p.x - this._point.x;\n const dy = p.y - this._point.y;\n const sumA = cos * dx + sin * dy;\n const sumB = sin * dx - cos * dy;\n\n // if there is no fill, only use points where the stroke is\n if (this.options.fill === false) {\n const x = this._radiusX - this.options.weight;\n const y = this._radiusY - this.options.weight;\n if (sumA * sumA / (x * x) + sumB * sumB / (y * y) <= 1) {\n return false;\n }\n }\n\n return sumA * sumA / (this._radiusX * this._radiusX) + sumB * sumB / (this._radiusY * this._radiusY) <= 1;\n }\n});\n\nL.ellipse = function (latlng, options) {\n return new L.Ellipse(latlng, options);\n};\n","// noinspection all\n\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Benjamin Becquet\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n// https://github.com/bbecquet/Leaflet.RotatedMarker\n\nimport * as L from 'leaflet';\n\n(function () {\n // save these original methods before they are overwritten\n const proto_initIcon = L.Marker.prototype._initIcon;\n const proto_setPos = L.Marker.prototype._setPos;\n\n const oldIE = (L.DomUtil.TRANSFORM === 'msTransform');\n\n L.Marker.addInitHook(function () {\n const iconOptions = this.options.icon && this.options.icon.options;\n let iconAnchor = iconOptions && this.options.icon.options.iconAnchor;\n if (iconAnchor) {\n iconAnchor = (iconAnchor[0] + 'px ' + iconAnchor[1] + 'px');\n }\n this.options.rotationOrigin = this.options.rotationOrigin || iconAnchor || 'center bottom';\n this.options.rotationAngle = this.options.rotationAngle || 0;\n\n // Ensure marker keeps rotated during dragging\n this.on('drag', function (e) {\n e.target._applyRotation();\n });\n });\n\n L.Marker.include({\n _initIcon: function () {\n proto_initIcon.call(this);\n },\n\n _setPos: function (pos) {\n proto_setPos.call(this, pos);\n this._applyRotation();\n },\n\n _applyRotation: function () {\n if (this.options.rotationAngle) {\n this._icon.style[L.DomUtil.TRANSFORM + 'Origin'] = this.options.rotationOrigin;\n\n if (oldIE) {\n // for IE 9, use the 2D rotation\n this._icon.style[L.DomUtil.TRANSFORM] = 'rotate(' + this.options.rotationAngle + 'deg)';\n } else {\n // for modern browsers, prefer the 3D accelerated version\n this._icon.style[L.DomUtil.TRANSFORM] += ' rotateZ(' + this.options.rotationAngle + 'deg)';\n }\n }\n },\n\n setRotationAngle: function (angle) {\n this.options.rotationAngle = angle;\n this.update();\n return this;\n },\n\n setRotationOrigin: function (origin) {\n this.options.rotationOrigin = origin;\n this.update();\n return this;\n }\n });\n})();\n"],"names":["stylesInDOM","getIndexByIdentifier","identifier","result","i","length","modulesToDom","list","options","idCountMap","identifiers","item","id","base","count","concat","indexByIdentifier","obj","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","push","api","domAPI","update","newObj","remove","module","exports","lastIdentifiers","newList","index","newLastIdentifiers","_i","_index","memo","insert","style","target","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","e","getTarget","Error","appendChild","element","createElement","setAttributes","attributes","styleElement","nonce","setAttribute","insertStyleElement","needLayer","btoa","unescape","encodeURIComponent","JSON","stringify","styleTagTransform","apply","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","SpriteSymbol","ref","viewBox","content","this","prototype","toString","destroy","this$1","forEach","prop","parse","hasImportNode","importNode","doc","DOMParser","parseFromString","documentElement","createCommonjsModule","fn","g","self","deepmerge","root","factory","commonjsGlobal","isMergeableObject","val","Object","call","emptyTarget","Array","isArray","cloneIfNecessary","value","optionsArgument","clone","defaultArrayMerge","source","destination","slice","indexOf","mergeObject","keys","key","array","arrayMerge","all","reduce","prev","next","namespaces_1","namespaces","svg","name","uri","xlink","default","objectToAttrsString","attrs","map","attr","replace","join","defaultAttrs","wrapInSvgString","BrowserSpriteSymbol","SpriteSymbol$$1","arguments","__proto__","create","constructor","prototypeAccessors","isMounted","get","node","createFromExistingNode","getAttribute","outerHTML","unmount","mount","mountTarget","render","childNodes","defineProperties","mitt","on","type","handler","off","emit","evt","svg$1","xlink$1","defaultConfig","Sprite","config","symbols","add","symbol","existing","find","filter","s","has","stringifiedSymbols","defaultConfig$1","autoConfigure","mountTo","syncUrlsWithBaseTag","listenLocationChangeEvent","locationChangeEvent","locationChangeAngularEmitter","usagesToUpdate","moveGradientsOutsideSymbol","arrayFrom","arrayLike","browser","isChrome","test","navigator","userAgent","isFirefox","isIE","isEdge","dispatchEvent","data","event","createEvent","initCustomEvent","evalStylesIEWorkaround","updatedNodes","querySelectorAll","textContent","getUrlWithoutFragment","url","location","href","split","eventName","angular","run","$rootScope","$on","newUrl","oldUrl","defaultSelector","selector","insertBefore","selectAttributes","nodes","matcher","acc","arrayfied","matched","xLinkNS","xLinkAttrName","specialUrlCharsPattern","encoder","match","charCodeAt","toUpperCase","escapeRegExp","str","updateReferences","startsWith","replaceWith","setAttributeNS","sprite","attList","attSelector","updateUrls","startsWithEncoded","replaceWithEncoded","localName","RegExp","Events","MOUNT","SYMBOL_MOUNT","BrowserSprite","Sprite$$1","cfg","emitter","_emitter","_autoConfigure","baseUrl","getElementsByTagName","handleLocationChange","_handleLocationChange","bind","addEventListener","spriteNode","symbolNode","detail","isNewSymbol","attach","removeEventListener","prepend","mountNode","usages","ready$1","definition","listener","fns","hack","doScroll","domContentLoaded","loaded","readyState","shift","setTimeout","spriteNodeId","spriteGlobalVarName","loadSprite","getElementById","body","PinControl","livemap","parent","_pinned","_livemap","_dom","onclick","pin","pinned","localStorage","setItem","createSVGIcon","_svg","settings","ui","sidebar","getItem","className","text","eval","Point","of","a","b","x","y","z","lat","lng","toLatLngArray","inArr","outArr","coord","point","toLatLng","pixelsToMeters","num","scale","metersToPixels","latlng","_x","_z","n","subtract","multiply","divide","ceil","Math","floor","round","toPoint","offset","format","L","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","d","o","defineProperty","enumerable","globalThis","Function","hasOwnProperty","nc","LiveTileLayer","super","tileSize","noWrap","zoomReverse","minNativeZoom","maxNativeZoom","zoom","maxout","minZoom","maxZoom","maxin","zoomOffset","setZIndex","_getZoomForUrl","_tileZoom","getTileUrl","coords","renderer","sidebarControl","renderersControl","rendererType","ext","web","tiletype","template","_url","extend","_tileOnLoad","done","tile","_tileOnError","createTile","src","crossOrigin","alt","fetch","then","res","ok","blob","reader","FileReader","readAsDataURL","onload","String","statusText","catch","err","TileLayerControl","_layers","_cur","_updating","addLayer","createTileLayer","tick","interval","updateTileLayer","switchTileLayer","redraw","Marker","json","marker","_id","_type","_json","_marker","_layer","createPaneIfNotExist","pane","popup","tooltip","bindPopup","bindTooltip","addTo","autoOpen","openPopup","setPane","Circle","radius","setLatLng","setRadius","Ellipse","radii","Icon","iconUrl","html","svgHtml","icon","assign","Polygon","points","setLatLngs","Polyline","Rectangle","setBounds","MarkersLayer","_markers","Map","_interval","updateLayer","markers","label","_label","fetchJson","initial","updateMarkers","console","error","layerJson","_defaults","defaults","insertAdjacentHTML","hidden","layersControl","addOverlay","toRemove","markerJson","createMarker","delete","layerPane","createType","set","LayersControl","Layers","position","ControlBox","Url","_basePath","exec","pathname","URLSearchParams","search","_renderer","renderers","_zoom","def","_point","basePath","friendlyUrls","LinkControl","getUrlFromView","history","replaceState","title","disableClickPropagation","preventDefault","contextMenu","share","getCenter","spawn","centerOn","onAdd","onRemove","getUrlFromPoint","currentZoom","CoordsControl","_domX","innerHTML","_domZ","p","getPoint","Renderer","_icon","RenderersControl","_renderers","_rendererType","dom","SidebarControl","_renderersControl","show","holder","logo","logolink","logotext","rawhtml","logoimg","playersLayer","onmouseleave","onmouseenter","MenuRow","action","_text","_alt","_key","toLowerCase","_action","iconElem","textElem","keyElem","row","ContextMenu","_pointRegex","_format","_rows","createRows","_menu","createMenu","onblur","close","oncontextmenu","open","onkeydown","keydown","lang","rows","clipboard","copy","copyAlt","paste","pasteAlt","shareAlt","center","centerAlt","wrapper","menu","append","stopPropagation","classList","top","min","innerHeight","offsetHeight","left","innerWidth","offsetWidth","coordsControl","combo","ctrlKey","shiftKey","altKey","writeText","notifications","success","notifCopy","danger","notifCopyFailed","finally","readText","pastePoint","pasteUrl","info","notifPaste","warning","notifPasteInvalid","notifPasteFailed","parseInt","origin","linkControl","notifShare","notifShareFailed","notifCenter","stopImmediatePropagation","Notifications","div","innerText","passive","Web","_tiletype","Zoom","_def","_maxin","_maxout","Ui","_attribution","attribution","_logolink","_logoimg","_logotext","_sitetitle","sitetitle","_sidebar","Lang","_unpinned","unpinned","_players","players","_copy","_copyAlt","_paste","_pasteAlt","_share","_shareAlt","_center","_centerAlt","_notifCopy","_notifCopyFailed","_notifPaste","_notifPasteFailed","_notifPasteInvalid","_notifShare","_notifShareFailed","_notifCenter","Settings","_friendlyUrls","_playerList","playerList","_playerMarkers","playerMarkers","_maxPlayers","maxPlayers","_size","size","_spawn","_web","_ui","_lang","Value","cur","_max","max","Player","player","_name","_avatar","avatar","_role","role","_pos","pos","_yaw","yaw","_health","health","_satiety","satiety","updateData","PlayersLayer","values","hasLayer","updatePlayers","Set","updatePlayer","createPlayer","removePlayer","addMarker","addToSidebar","setTooltipContent","from","rotationAngle","diff","removeMarker","removeFromSidebar","iconSize","iconAnchor","li","img","stat","divisor","segments","LiveMap","crs","Simple","transformation","attributionControl","preferCanvas","zoomSnap","zoomDelta","wheelPxPerZoomLevel","linux","chrome","_settings","trim","_scale","pow","_tileLayerControl","_layersControl","_playersLayer","_coordsControl","_linkControl","_sidebarControl","_contextMenu","_notifications","setPrefix","onLoad","container","getContainer","updateSizeToWindow","layers","width","height","margin","loop","_initControlPos","_controlContainer","_container","corners","_controlCorners","createRow","vSide","createCell","hSide","tileLayerControl","visibilityState","getPane","createPane","setZoom","setView","getZoom","invalidateSize","headers","ax","knownThemes","styleSheets","endsWith","rules","cssRules","j","rule","selectorText","matchMedia","setTheme","prefersDark","matches","theme","include","_updateEllipse","rx","_radiusX","ry","_radiusY","phi","_tiltDeg","endPoint","_endPointParams","x0","y0","largeArc","sweep","x1","y1","_setPath","_empty","ctx","_ctx","r","_drawnlayers","_leaflet_id","save","translate","_tilt","rotate","beginPath","arc","PI","restore","_fillStroke","fill","startAngle","endAngle","initialize","_latlng","tilt","_mRadiusX","_mRadiusY","getRadius","setTilt","getBounds","lngRadius","_getLngRadius","latRadius","_getLatRadius","fire","getLatLng","setStyle","_project","pointLeft","_map","latLngToLayerPoint","pointBelow","abs","_centerPointToEndPoint","_updateBounds","sin","cos","sinSquare","cosSquare","aSquare","bSquare","halfWidth","sqrt","halfHeight","w","_clickTolerance","_pxBounds","_update","_updatePath","infinite","c","theta2","theta1","delta","_bounds","intersects","_containsPoint","dx","dy","sumA","sumB","weight","proto_initIcon","_initIcon","proto_setPos","_setPos","oldIE","TRANSFORM","addInitHook","rotationOrigin","_applyRotation","setRotationAngle","angle","setRotationOrigin"],"sourceRoot":""}