The map kinda works
682
package-lock.json
generated
@ -1047,6 +1047,74 @@
|
||||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"@eslint/eslintrc": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz",
|
||||
"integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.1.1",
|
||||
"espree": "^7.3.0",
|
||||
"globals": "^12.1.0",
|
||||
"ignore": "^4.0.6",
|
||||
"import-fresh": "^3.2.1",
|
||||
"js-yaml": "^3.13.1",
|
||||
"lodash": "^4.17.19",
|
||||
"minimatch": "^3.0.4",
|
||||
"strip-json-comments": "^3.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"acorn": {
|
||||
"version": "7.4.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
|
||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||
"dev": true
|
||||
},
|
||||
"espree": {
|
||||
"version": "7.3.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
|
||||
"integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^7.4.0",
|
||||
"acorn-jsx": "^5.2.0",
|
||||
"eslint-visitor-keys": "^1.3.0"
|
||||
}
|
||||
},
|
||||
"globals": {
|
||||
"version": "12.4.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
|
||||
"integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"type-fest": "^0.8.1"
|
||||
}
|
||||
},
|
||||
"import-fresh": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz",
|
||||
"integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"parent-module": "^1.0.0",
|
||||
"resolve-from": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"resolve-from": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
||||
"dev": true
|
||||
},
|
||||
"type-fest": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
||||
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@hapi/address": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
|
||||
@ -1107,12 +1175,40 @@
|
||||
"glob-to-regexp": "^0.3.0"
|
||||
}
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
|
||||
"integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "2.0.3",
|
||||
"run-parallel": "^1.1.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
|
||||
"integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@nodelib/fs.stat": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
|
||||
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
|
||||
"dev": true
|
||||
},
|
||||
"@nodelib/fs.walk": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
|
||||
"integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.scandir": "2.1.3",
|
||||
"fastq": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"@soda/friendly-errors-webpack-plugin": {
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz",
|
||||
@ -1240,12 +1336,6 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/eslint-visitor-keys": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
|
||||
"integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/express": {
|
||||
"version": "4.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.9.tgz",
|
||||
@ -1269,6 +1359,12 @@
|
||||
"@types/range-parser": "*"
|
||||
}
|
||||
},
|
||||
"@types/geojson": {
|
||||
"version": "7946.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz",
|
||||
"integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/glob": {
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
||||
@ -1305,6 +1401,15 @@
|
||||
"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/leaflet": {
|
||||
"version": "1.5.19",
|
||||
"resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.5.19.tgz",
|
||||
"integrity": "sha512-ZAKqfvdU/+KFoCpf8aUba09F8mfSc8R2esq++Cha3E2DgwS5K/I/4eJ+0JylrVHZivgY7PSAeXFv/izP+81/MQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/geojson": "*"
|
||||
}
|
||||
},
|
||||
"@types/mime": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz",
|
||||
@ -1460,90 +1565,16 @@
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/eslint-plugin": {
|
||||
"version": "2.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
|
||||
"integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==",
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.1.tgz",
|
||||
"integrity": "sha512-d7LeQ7dbUrIv5YVFNzGgaW3IQKMmnmKFneRWagRlGYOSfLJVaRbj/FrBNOBC1a3tVO+TgNq1GbHvRtg1kwL0FQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/experimental-utils": "2.34.0",
|
||||
"@typescript-eslint/experimental-utils": "4.8.1",
|
||||
"@typescript-eslint/scope-manager": "4.8.1",
|
||||
"debug": "^4.1.1",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"regexpp": "^3.0.0",
|
||||
"tsutils": "^3.17.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"regexpp": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
|
||||
"integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"tsutils": {
|
||||
"version": "3.17.1",
|
||||
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
|
||||
"integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.8.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/experimental-utils": {
|
||||
"version": "2.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz",
|
||||
"integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.3",
|
||||
"@typescript-eslint/typescript-estree": "2.34.0",
|
||||
"eslint-scope": "^5.0.0",
|
||||
"eslint-utils": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"eslint-scope": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"eslint-utils": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
|
||||
"integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"eslint-visitor-keys": "^1.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/parser": {
|
||||
"version": "2.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz",
|
||||
"integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/eslint-visitor-keys": "^1.0.0",
|
||||
"@typescript-eslint/experimental-utils": "2.34.0",
|
||||
"@typescript-eslint/typescript-estree": "2.34.0",
|
||||
"eslint-visitor-keys": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/typescript-estree": {
|
||||
"version": "2.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz",
|
||||
"integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^4.1.1",
|
||||
"eslint-visitor-keys": "^1.1.0",
|
||||
"glob": "^7.1.6",
|
||||
"is-glob": "^4.0.1",
|
||||
"lodash": "^4.17.15",
|
||||
"semver": "^7.3.2",
|
||||
"tsutils": "^3.17.1"
|
||||
},
|
||||
@ -1565,6 +1596,221 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/experimental-utils": {
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.1.tgz",
|
||||
"integrity": "sha512-WigyLn144R3+lGATXW4nNcDJ9JlTkG8YdBWHkDlN0lC3gUGtDi7Pe3h5GPvFKMcRz8KbZpm9FJV9NTW8CpRHpg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.3",
|
||||
"@typescript-eslint/scope-manager": "4.8.1",
|
||||
"@typescript-eslint/types": "4.8.1",
|
||||
"@typescript-eslint/typescript-estree": "4.8.1",
|
||||
"eslint-scope": "^5.0.0",
|
||||
"eslint-utils": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"eslint-scope": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^4.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/parser": {
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.8.1.tgz",
|
||||
"integrity": "sha512-QND8XSVetATHK9y2Ltc/XBl5Ro7Y62YuZKnPEwnNPB8E379fDsvzJ1dMJ46fg/VOmk0hXhatc+GXs5MaXuL5Uw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/scope-manager": "4.8.1",
|
||||
"@typescript-eslint/types": "4.8.1",
|
||||
"@typescript-eslint/typescript-estree": "4.8.1",
|
||||
"debug": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/scope-manager": {
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.8.1.tgz",
|
||||
"integrity": "sha512-r0iUOc41KFFbZdPAdCS4K1mXivnSZqXS5D9oW+iykQsRlTbQRfuFRSW20xKDdYiaCoH+SkSLeIF484g3kWzwOQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "4.8.1",
|
||||
"@typescript-eslint/visitor-keys": "4.8.1"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/types": {
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.8.1.tgz",
|
||||
"integrity": "sha512-ave2a18x2Y25q5K05K/U3JQIe2Av4+TNi/2YuzyaXLAsDx6UZkz1boZ7nR/N6Wwae2PpudTZmHFXqu7faXfHmA==",
|
||||
"dev": true
|
||||
},
|
||||
"@typescript-eslint/typescript-estree": {
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.1.tgz",
|
||||
"integrity": "sha512-bJ6Fn/6tW2g7WIkCWh3QRlaSU7CdUUK52shx36/J7T5oTQzANvi6raoTsbwGM11+7eBbeem8hCCKbyvAc0X3sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "4.8.1",
|
||||
"@typescript-eslint/visitor-keys": "4.8.1",
|
||||
"debug": "^4.1.1",
|
||||
"globby": "^11.0.1",
|
||||
"is-glob": "^4.0.1",
|
||||
"lodash": "^4.17.15",
|
||||
"semver": "^7.3.2",
|
||||
"tsutils": "^3.17.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
|
||||
"integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
|
||||
"dev": true
|
||||
},
|
||||
"array-union": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
||||
"dev": true
|
||||
},
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"dir-glob": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
|
||||
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-type": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"fast-glob": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz",
|
||||
"integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
"@nodelib/fs.walk": "^1.2.3",
|
||||
"glob-parent": "^5.1.0",
|
||||
"merge2": "^1.3.0",
|
||||
"micromatch": "^4.0.2",
|
||||
"picomatch": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"globby": {
|
||||
"version": "11.0.1",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz",
|
||||
"integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"array-union": "^2.1.0",
|
||||
"dir-glob": "^3.0.1",
|
||||
"fast-glob": "^3.1.1",
|
||||
"ignore": "^5.1.4",
|
||||
"merge2": "^1.3.0",
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"ignore": {
|
||||
"version": "5.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
|
||||
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
|
||||
"dev": true
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
},
|
||||
"micromatch": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
|
||||
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"braces": "^3.0.1",
|
||||
"picomatch": "^2.0.5"
|
||||
}
|
||||
},
|
||||
"path-type": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
|
||||
"integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"slash": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
|
||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"tsutils": {
|
||||
"version": "3.17.1",
|
||||
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz",
|
||||
"integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.8.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/visitor-keys": {
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.1.tgz",
|
||||
"integrity": "sha512-3nrwXFdEYALQh/zW8rFwP4QltqsanCDz4CwWMPiIZmwlk9GlvBeueEIbq05SEq4ganqM0g9nh02xXgv5XI3PeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "4.8.1",
|
||||
"eslint-visitor-keys": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"eslint-visitor-keys": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz",
|
||||
"integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@vue/babel-helper-vue-jsx-merge-props": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz",
|
||||
@ -4984,6 +5230,23 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"enquirer": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
|
||||
"integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-colors": "^4.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-colors": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
|
||||
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"entities": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
|
||||
@ -5066,22 +5329,24 @@
|
||||
"dev": true
|
||||
},
|
||||
"eslint": {
|
||||
"version": "6.8.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
|
||||
"integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz",
|
||||
"integrity": "sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@eslint/eslintrc": "^0.2.1",
|
||||
"ajv": "^6.10.0",
|
||||
"chalk": "^2.1.0",
|
||||
"cross-spawn": "^6.0.5",
|
||||
"chalk": "^4.0.0",
|
||||
"cross-spawn": "^7.0.2",
|
||||
"debug": "^4.0.1",
|
||||
"doctrine": "^3.0.0",
|
||||
"eslint-scope": "^5.0.0",
|
||||
"eslint-utils": "^1.4.3",
|
||||
"eslint-visitor-keys": "^1.1.0",
|
||||
"espree": "^6.1.2",
|
||||
"esquery": "^1.0.1",
|
||||
"enquirer": "^2.3.5",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"eslint-utils": "^2.1.0",
|
||||
"eslint-visitor-keys": "^2.0.0",
|
||||
"espree": "^7.3.0",
|
||||
"esquery": "^1.2.0",
|
||||
"esutils": "^2.0.2",
|
||||
"file-entry-cache": "^5.0.1",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
@ -5090,26 +5355,75 @@
|
||||
"ignore": "^4.0.6",
|
||||
"import-fresh": "^3.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
"inquirer": "^7.0.0",
|
||||
"is-glob": "^4.0.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"json-stable-stringify-without-jsonify": "^1.0.1",
|
||||
"levn": "^0.3.0",
|
||||
"lodash": "^4.17.14",
|
||||
"levn": "^0.4.1",
|
||||
"lodash": "^4.17.19",
|
||||
"minimatch": "^3.0.4",
|
||||
"mkdirp": "^0.5.1",
|
||||
"natural-compare": "^1.4.0",
|
||||
"optionator": "^0.8.3",
|
||||
"optionator": "^0.9.1",
|
||||
"progress": "^2.0.0",
|
||||
"regexpp": "^2.0.1",
|
||||
"semver": "^6.1.2",
|
||||
"strip-ansi": "^5.2.0",
|
||||
"strip-json-comments": "^3.0.1",
|
||||
"regexpp": "^3.1.0",
|
||||
"semver": "^7.2.1",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"strip-json-comments": "^3.1.0",
|
||||
"table": "^5.2.3",
|
||||
"text-table": "^0.2.0",
|
||||
"v8-compile-cache": "^2.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"acorn": {
|
||||
"version": "7.4.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
|
||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||
"dev": true
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true
|
||||
},
|
||||
"cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"path-key": "^3.1.0",
|
||||
"shebang-command": "^2.0.0",
|
||||
"which": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"eslint-scope": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
@ -5120,6 +5434,31 @@
|
||||
"estraverse": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"eslint-visitor-keys": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz",
|
||||
"integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==",
|
||||
"dev": true
|
||||
},
|
||||
"espree": {
|
||||
"version": "7.3.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
|
||||
"integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^7.4.0",
|
||||
"acorn-jsx": "^5.2.0",
|
||||
"eslint-visitor-keys": "^1.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"eslint-visitor-keys": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
|
||||
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"globals": {
|
||||
"version": "12.4.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
|
||||
@ -5129,6 +5468,12 @@
|
||||
"type-fest": "^0.8.1"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"import-fresh": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz",
|
||||
@ -5139,6 +5484,12 @@
|
||||
"resolve-from": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"path-key": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||
"dev": true
|
||||
},
|
||||
"resolve-from": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||
@ -5146,18 +5497,33 @@
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||
"version": "7.3.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
|
||||
"integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||
"shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^4.1.0"
|
||||
"shebang-regex": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"shebang-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"type-fest": {
|
||||
@ -5165,6 +5531,15 @@
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
||||
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
||||
"dev": true
|
||||
},
|
||||
"which": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"isexe": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -5221,9 +5596,9 @@
|
||||
}
|
||||
},
|
||||
"eslint-utils": {
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
|
||||
"integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
|
||||
"integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"eslint-visitor-keys": "^1.1.0"
|
||||
@ -5644,6 +6019,15 @@
|
||||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
|
||||
"dev": true
|
||||
},
|
||||
"fastq": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz",
|
||||
"integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"faye-websocket": {
|
||||
"version": "0.10.0",
|
||||
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
|
||||
@ -7443,13 +7827,13 @@
|
||||
"dev": true
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
||||
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prelude-ls": "~1.1.2",
|
||||
"type-check": "~0.3.2"
|
||||
"prelude-ls": "^1.2.1",
|
||||
"type-check": "~0.4.0"
|
||||
}
|
||||
},
|
||||
"lines-and-columns": {
|
||||
@ -8161,6 +8545,12 @@
|
||||
"integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
|
||||
"dev": true
|
||||
},
|
||||
"normalize-scss": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/normalize-scss/-/normalize-scss-7.0.1.tgz",
|
||||
"integrity": "sha512-qj16bWnYs+9/ac29IgGjySg4R5qQTp1lXfm7ApFOZNVBYFY8RZ3f8+XQNDDLHeDtI3Ba7Jj4+LuPgz9v/fne2A==",
|
||||
"dev": true
|
||||
},
|
||||
"normalize-url": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
|
||||
@ -8400,17 +8790,17 @@
|
||||
}
|
||||
},
|
||||
"optionator": {
|
||||
"version": "0.8.3",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
|
||||
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
|
||||
"integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"deep-is": "~0.1.3",
|
||||
"fast-levenshtein": "~2.0.6",
|
||||
"levn": "~0.3.0",
|
||||
"prelude-ls": "~1.1.2",
|
||||
"type-check": "~0.3.2",
|
||||
"word-wrap": "~1.2.3"
|
||||
"deep-is": "^0.1.3",
|
||||
"fast-levenshtein": "^2.0.6",
|
||||
"levn": "^0.4.1",
|
||||
"prelude-ls": "^1.2.1",
|
||||
"type-check": "^0.4.0",
|
||||
"word-wrap": "^1.2.3"
|
||||
}
|
||||
},
|
||||
"ora": {
|
||||
@ -9362,9 +9752,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"prelude-ls": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
|
||||
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
|
||||
"dev": true
|
||||
},
|
||||
"prepend-http": {
|
||||
@ -9667,9 +10057,9 @@
|
||||
}
|
||||
},
|
||||
"regexpp": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
|
||||
"integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
|
||||
"integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"regexpu-core": {
|
||||
@ -9890,6 +10280,12 @@
|
||||
"integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
|
||||
"dev": true
|
||||
},
|
||||
"reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||
"dev": true
|
||||
},
|
||||
"rgb-regex": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
|
||||
@ -9927,6 +10323,12 @@
|
||||
"integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
|
||||
"dev": true
|
||||
},
|
||||
"run-parallel": {
|
||||
"version": "1.1.10",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz",
|
||||
"integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==",
|
||||
"dev": true
|
||||
},
|
||||
"run-queue": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
|
||||
@ -11321,12 +11723,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"type-check": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
||||
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
||||
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prelude-ls": "~1.1.2"
|
||||
"prelude-ls": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"type-fest": {
|
||||
|
@ -13,8 +13,9 @@
|
||||
"vue-class-component": "^8.0.0-0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^2.33.0",
|
||||
"@typescript-eslint/parser": "^2.33.0",
|
||||
"@types/leaflet": "^1.5.19",
|
||||
"@typescript-eslint/eslint-plugin": "^4.1.0",
|
||||
"@typescript-eslint/parser": "^4.1.0",
|
||||
"@vue/cli-plugin-babel": "~4.5.0",
|
||||
"@vue/cli-plugin-eslint": "~4.5.0",
|
||||
"@vue/cli-plugin-typescript": "^4.5.9",
|
||||
@ -23,9 +24,10 @@
|
||||
"@vue/eslint-config-typescript": "^5.0.2",
|
||||
"axios": "^0.21.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint": "^7.5.0",
|
||||
"eslint-plugin-vue": "^7.0.0-0",
|
||||
"leaflet": "^1.7.1",
|
||||
"normalize-scss": "^7.0.1",
|
||||
"sass": "^1.29.0",
|
||||
"sass-loader": "^10.1.0",
|
||||
"typescript": "~3.9.3",
|
||||
|
@ -13,10 +13,6 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="css/standalone.css?_=a" media="screen" />
|
||||
<link rel="stylesheet" type="text/css" href="css/dynmap_style.css?_=a" media="screen" />
|
||||
<link rel="stylesheet" type="text/css" href="css/rtgame.css?_=a" media="screen" />
|
||||
|
||||
<link rel="icon" href="images/dynmap.ico" type="image/ico" />
|
||||
</head>
|
||||
<body>
|
||||
@ -24,6 +20,7 @@
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="mcmap" class="dynmap"></div>
|
||||
<script src="standalone/config.js"></script>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
|
85
src/App.vue
@ -1,27 +1,76 @@
|
||||
<template>
|
||||
<img alt="Vue logo" src="./assets/logo.png">
|
||||
<HelloWorld msg="Welcome to Your Vue.js + TypeScript App"/>
|
||||
<Leaflet></Leaflet>
|
||||
<Sidebar></Sidebar>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { Options, Vue } from 'vue-class-component';
|
||||
import HelloWorld from './components/HelloWorld.vue';
|
||||
import {defineComponent, computed, ref} from 'vue';
|
||||
import Leaflet from './components/Leaflet.vue';
|
||||
import Sidebar from './components/Sidebar.vue';
|
||||
import {ActionTypes, useStore} from "./store";
|
||||
|
||||
@Options({
|
||||
components: {
|
||||
HelloWorld,
|
||||
},
|
||||
})
|
||||
export default class App extends Vue {}
|
||||
export default defineComponent({
|
||||
name: 'WorldList',
|
||||
components: {
|
||||
Leaflet,
|
||||
Sidebar,
|
||||
},
|
||||
|
||||
setup() {
|
||||
let store = useStore(),
|
||||
updateInterval = computed(() => store.state.configuration.updateInterval),
|
||||
updatesEnabled = ref(false),
|
||||
updateTimeout = ref(0);
|
||||
|
||||
return {
|
||||
store,
|
||||
updateInterval,
|
||||
updatesEnabled,
|
||||
updateTimeout
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.loadConfiguration();
|
||||
},
|
||||
|
||||
beforeUnmount() {
|
||||
this.stopUpdates();
|
||||
},
|
||||
|
||||
methods: {
|
||||
loadConfiguration() {
|
||||
useStore().dispatch(ActionTypes.LOAD_CONFIGRUATION, undefined).then(() => {
|
||||
this.startUpdates();
|
||||
});
|
||||
},
|
||||
|
||||
startUpdates() {
|
||||
this.updatesEnabled = true;
|
||||
this.update();
|
||||
},
|
||||
|
||||
update() {
|
||||
useStore().dispatch(ActionTypes.GET_UPDATE, undefined).then(() => {
|
||||
if(this.updatesEnabled) {
|
||||
this.updateTimeout = setTimeout(() => this.update(), this.updateInterval);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
stopUpdates() {
|
||||
this.updatesEnabled = false;
|
||||
|
||||
if (this.updateTimeout) {
|
||||
clearTimeout(this.updateTimeout);
|
||||
}
|
||||
|
||||
this.updateTimeout = 0;
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
#app {
|
||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-align: center;
|
||||
color: #2c3e50;
|
||||
margin-top: 60px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
127
src/api.ts
@ -1,2 +1,129 @@
|
||||
import axios from 'axios';
|
||||
import {
|
||||
DynmapConfigurationResponse, DynmapMap, DynmapMessageConfig,
|
||||
DynmapPlayer,
|
||||
DynmapServerConfig,
|
||||
DynmapUpdateResponse,
|
||||
DynmapWorld
|
||||
} from "@/dynmap";
|
||||
|
||||
export default {
|
||||
getConfiguration(): Promise<DynmapConfigurationResponse> {
|
||||
return axios.get(window.config.url.configuration).then((response): DynmapConfigurationResponse => {
|
||||
const data = response.data,
|
||||
config: DynmapServerConfig = {
|
||||
version: data.dynmapversion || '',
|
||||
allowChat: data.allowwebchat || false,
|
||||
chatRequiresLogin: data['webchat-requires-login'] || false,
|
||||
chatInterval: data['webchat-interval'] || 5,
|
||||
defaultMap: data.defaultmap || undefined,
|
||||
defaultWorld: data.defaultworld || undefined,
|
||||
defaultZoom: data.defaultZoom || 0,
|
||||
followMap: data.followmap || undefined,
|
||||
followZoom: data.followzoom || 0,
|
||||
updateInterval: data.updaterate || 3000,
|
||||
showLayerControl: data.showlayercontrol || true,
|
||||
title: data.title || 'Dynmap',
|
||||
loginEnabled: data['login-enabled'] || false,
|
||||
loginRequired: data.loginrequired || false,
|
||||
maxPlayers: data.maxcount || 0,
|
||||
hash: data.confighash || 0,
|
||||
},
|
||||
messages: DynmapMessageConfig = {
|
||||
chatNotAllowed: data['msg-chatnotallowed'] || '',
|
||||
chatRequiresLogin: data['msg-chatrequireslogin'] || '',
|
||||
chatCooldown: data.spammessage || '',
|
||||
mapTypes: data['msg-maptypes'] || '',
|
||||
players: data['msg-players'] || '',
|
||||
playerJoin: data.joinmessage || '',
|
||||
playerQuit: data.quitmessage || '',
|
||||
anonymousJoin: data['msg-hiddennamejoin'] || '',
|
||||
anonymousQuit: data['msg-hiddennamequit'] || '',
|
||||
},
|
||||
worlds: Array<DynmapWorld> = [];
|
||||
|
||||
(data.worlds || []).forEach((world: any) => {
|
||||
const maps: Array<DynmapMap> = [];
|
||||
|
||||
(world.maps || []).forEach((map: any) => {
|
||||
maps.push({
|
||||
world: world.name,
|
||||
background: map.background || '#000000',
|
||||
backgroundDay: map.backgroundday || '#000000',
|
||||
backgroundNight: map.backgroundnight || '#000000',
|
||||
compassView: map.compassView || 'S',
|
||||
icon: map.icon || undefined,
|
||||
imageFormat: map.imageFormat || 'png',
|
||||
name: map.name || '(Unnamed map)',
|
||||
nightAndDay: map.nightandday || false,
|
||||
prefix: map.prefix || '',
|
||||
protected: map.protected || false,
|
||||
title: map.title || '',
|
||||
type: map.type || 'HDMapType',
|
||||
mapToWorld: map.maptoworld || [0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
worldToMap: map.worldtomap || [0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
nativeZoomLevels: map.mapzoomout || 1,
|
||||
extraZoomLevels: map.mapzoomin || 0,
|
||||
});
|
||||
});
|
||||
|
||||
worlds.push({
|
||||
seaLevel: world.sealevel || 64,
|
||||
name: world.name || '(Unnamed world)',
|
||||
protected: world.protected || false,
|
||||
title: world.title || '',
|
||||
height: world.height || 256,
|
||||
center: {
|
||||
x: world.center.x || 0,
|
||||
y: world.center.y || 0,
|
||||
z: world.center.z || 0
|
||||
},
|
||||
maps,
|
||||
})
|
||||
});
|
||||
|
||||
return {
|
||||
config,
|
||||
messages,
|
||||
worlds,
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
getUpdate(requestId: number, world: string, timestamp: number): Promise<DynmapUpdateResponse> {
|
||||
let url = window.config.url.update;
|
||||
url = url.replace('{world}', world);
|
||||
url = url.replace('{timestamp}', timestamp.toString());
|
||||
|
||||
return axios.get(url).then((response): DynmapUpdateResponse => {
|
||||
const data = response.data,
|
||||
players: Array<DynmapPlayer> = [];
|
||||
|
||||
(data.players || []).forEach((player: any) => {
|
||||
players.push({
|
||||
account: player.account || "",
|
||||
health: player.health || 0,
|
||||
armor: player.armor || 0,
|
||||
name: player.name || "Steve",
|
||||
sort: player.sort || 0,
|
||||
location: {
|
||||
x: player.x || 0,
|
||||
y: player.y || 0,
|
||||
z: player.z || 0,
|
||||
world: player.world || undefined,
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
timeOfDay: data.servertime || 0,
|
||||
thundering: data.isThundering || false,
|
||||
raining: data.hasStorm || false,
|
||||
playerCount: data.count || 0,
|
||||
configHash: data.configHash || 0,
|
||||
timestamp: data.timestamp || 0,
|
||||
players,
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,10 @@
|
||||
border: 1px solid red;
|
||||
}*/
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/*******************
|
||||
* Attribution placement
|
||||
*/
|
||||
@ -15,6 +19,11 @@
|
||||
* Page setup
|
||||
*/
|
||||
|
||||
|
||||
.dynmap {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.dynmap .map .tile img, img {
|
||||
image-rendering: -moz-crisp-edges;
|
||||
image-rendering: pixelated;
|
||||
@ -206,7 +215,7 @@
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.dynmap .sidebar < .hitbar:hover {
|
||||
.dynmap .sidebar > .hitbar:hover {
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
BIN
src/assets/css/images/layers.png
Normal file
After Width: | Height: | Size: 973 B |
BIN
src/assets/css/images/link.png
Normal file
After Width: | Height: | Size: 649 B |
BIN
src/assets/css/images/marker-icon.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/assets/css/images/marker-icon@2x.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
src/assets/css/images/marker-shadow.png
Normal file
After Width: | Height: | Size: 797 B |
BIN
src/assets/css/images/marker.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
src/assets/css/images/popup-close.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/css/images/zoom-in.png
Normal file
After Width: | Height: | Size: 963 B |
BIN
src/assets/css/images/zoom-out.png
Normal file
After Width: | Height: | Size: 959 B |
BIN
src/assets/images/BiomeKey.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
src/assets/images/armor.png
Normal file
After Width: | Height: | Size: 213 B |
BIN
src/assets/images/armor_depleted.png
Normal file
After Width: | Height: | Size: 192 B |
BIN
src/assets/images/blank.png
Normal file
After Width: | Height: | Size: 167 B |
BIN
src/assets/images/block_nether_flat.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
src/assets/images/block_nether_surface.png
Normal file
After Width: | Height: | Size: 340 B |
BIN
src/assets/images/block_other.png
Normal file
After Width: | Height: | Size: 330 B |
BIN
src/assets/images/block_skylands.png
Normal file
After Width: | Height: | Size: 993 B |
BIN
src/assets/images/block_the_end_flat.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
src/assets/images/block_the_end_surface.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
src/assets/images/block_world_biome.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/block_world_cave.png
Normal file
After Width: | Height: | Size: 339 B |
BIN
src/assets/images/block_world_flat.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
src/assets/images/block_world_surface.png
Normal file
After Width: | Height: | Size: 342 B |
BIN
src/assets/images/book.png
Normal file
After Width: | Height: | Size: 829 B |
BIN
src/assets/images/cave_off.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/cave_on.png
Normal file
After Width: | Height: | Size: 868 B |
BIN
src/assets/images/chat_bubble.png
Normal file
After Width: | Height: | Size: 395 B |
BIN
src/assets/images/chat_cursor.png
Normal file
After Width: | Height: | Size: 261 B |
BIN
src/assets/images/clock_day.png
Normal file
After Width: | Height: | Size: 357 B |
BIN
src/assets/images/clock_night.png
Normal file
After Width: | Height: | Size: 360 B |
BIN
src/assets/images/compass.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
src/assets/images/compass_E.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
src/assets/images/compass_N.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
src/assets/images/compass_NE.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
src/assets/images/compass_NW.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
src/assets/images/compass_SW.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
src/assets/images/compass_W.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
src/assets/images/compass_alt.png
Normal file
After Width: | Height: | Size: 802 B |
BIN
src/assets/images/compass_flat.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
src/assets/images/dynmap.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/follow_off.png
Normal file
After Width: | Height: | Size: 377 B |
BIN
src/assets/images/follow_on.png
Normal file
After Width: | Height: | Size: 376 B |
BIN
src/assets/images/heart.png
Normal file
After Width: | Height: | Size: 198 B |
BIN
src/assets/images/heart_depleted.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
src/assets/images/home.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
src/assets/images/list_off.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
src/assets/images/list_on.png
Normal file
After Width: | Height: | Size: 360 B |
BIN
src/assets/images/moon.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
src/assets/images/player.png
Normal file
After Width: | Height: | Size: 328 B |
BIN
src/assets/images/player_death.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
src/assets/images/player_face.png
Normal file
After Width: | Height: | Size: 459 B |
BIN
src/assets/images/player_follow_off.png
Normal file
After Width: | Height: | Size: 361 B |
BIN
src/assets/images/player_follow_on.gif
Normal file
After Width: | Height: | Size: 332 B |
BIN
src/assets/images/player_follow_on.png
Normal file
After Width: | Height: | Size: 355 B |
BIN
src/assets/images/player_travel.png
Normal file
After Width: | Height: | Size: 454 B |
BIN
src/assets/images/scrolldown.png
Normal file
After Width: | Height: | Size: 1019 B |
BIN
src/assets/images/scrollup.png
Normal file
After Width: | Height: | Size: 1005 B |
BIN
src/assets/images/server.png
Normal file
After Width: | Height: | Size: 368 B |
BIN
src/assets/images/sidebar_hint.png
Normal file
After Width: | Height: | Size: 271 B |
BIN
src/assets/images/sign.png
Normal file
After Width: | Height: | Size: 681 B |
BIN
src/assets/images/sign_home.png
Normal file
After Width: | Height: | Size: 407 B |
BIN
src/assets/images/sign_sign.png
Normal file
After Width: | Height: | Size: 431 B |
BIN
src/assets/images/sign_sign_alt.png
Normal file
After Width: | Height: | Size: 431 B |
BIN
src/assets/images/sign_warp.png
Normal file
After Width: | Height: | Size: 435 B |
BIN
src/assets/images/spawn.png
Normal file
After Width: | Height: | Size: 943 B |
BIN
src/assets/images/sun.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
src/assets/images/warp.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/images/weather_stormy.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
src/assets/images/weather_stormy_day.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
src/assets/images/weather_stormy_night.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
src/assets/images/weather_sunny.png
Normal file
After Width: | Height: | Size: 905 B |
BIN
src/assets/images/weather_sunny_day.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
src/assets/images/weather_sunny_night.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
src/assets/images/weather_thunder.png
Normal file
After Width: | Height: | Size: 627 B |
BIN
src/assets/images/weather_thunder_day.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/assets/images/weather_thunder_night.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/assets/images/window_close.png
Normal file
After Width: | Height: | Size: 374 B |
BIN
src/assets/images/window_close_hover.png
Normal file
After Width: | Height: | Size: 355 B |
BIN
src/assets/images/window_open.png
Normal file
After Width: | Height: | Size: 326 B |
BIN
src/assets/images/window_pinned.png
Normal file
After Width: | Height: | Size: 299 B |
BIN
src/assets/images/window_pinned_hover.png
Normal file
After Width: | Height: | Size: 290 B |
BIN
src/assets/images/window_unpinned.png
Normal file
After Width: | Height: | Size: 326 B |
BIN
src/assets/images/zoom_in.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
src/assets/images/zoom_out.png
Normal file
After Width: | Height: | Size: 336 B |
50
src/components/Leaflet.vue
Normal file
@ -0,0 +1,50 @@
|
||||
<template>
|
||||
<div class="map">
|
||||
<MapLayer v-for="[name, map] in maps" :key="name" :map="map" :name="name" :leaflet="leaflet"></MapLayer>
|
||||
<PlayersLayer></PlayersLayer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import {defineComponent} from "@vue/runtime-core";
|
||||
import L from 'leaflet';
|
||||
import {useStore} from '@/store';
|
||||
import MapLayer from "@/components/map/layer/MapLayer.vue";
|
||||
import PlayersLayer from "@/components/map/layer/PlayersLayer.vue";
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
MapLayer,
|
||||
PlayersLayer
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
leaflet: undefined as L.Map | undefined,
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
maps() {
|
||||
return useStore().state.maps;
|
||||
},
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.leaflet = new L.Map(this.$el, {
|
||||
zoom: 1,
|
||||
center: new L.LatLng(0, 0),
|
||||
zoomAnimation: true,
|
||||
zoomControl: true,
|
||||
preferCanvas: true,
|
||||
attributionControl: false,
|
||||
crs: L.CRS.Simple,
|
||||
worldCopyJump: false,
|
||||
});
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@ -1,19 +0,0 @@
|
||||
<template>
|
||||
<div class="map"></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import "leaflet/dist/leaflet.css";
|
||||
import L from "leaflet";
|
||||
|
||||
export default {
|
||||
name: "Map",
|
||||
mounted() {
|
||||
L;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@ -1,27 +1,34 @@
|
||||
<template>
|
||||
<fieldset class="section">
|
||||
<legend>Players [5/500]</legend>
|
||||
<div class="scrollup" style="display: block;"></div>
|
||||
<ul class="list content playerlist" style="height: 65px;">
|
||||
<li class="player"><span class="playerIcon" title="Follow player"><img src="images/player_face.png"></span><a
|
||||
href="#" title="Center on player">Blooping2</a></li>
|
||||
<li class="player otherworld"><span class="playerIcon" title="Follow player"><img
|
||||
src="images/player_face.png"></span><a href="#" title="Center on player">Clamor_</a></li>
|
||||
<li class="player"><span class="playerIcon" title="Follow player"><img src="images/player_face.png"></span><a
|
||||
href="#" title="Center on player">G0rd0nFreeman</a></li>
|
||||
<li class="player"><span class="playerIcon" title="Follow player"><img src="images/player_face.png"></span><a
|
||||
href="#" title="Center on player">Ravenpuffe</a></li>
|
||||
<li class="player"><span class="playerIcon" title="Follow player"><img src="images/player_face.png"></span><a
|
||||
href="#" title="Center on player">TheGoldenCarts</a></li>
|
||||
</ul>
|
||||
<div class="scrolldown" style="display: block;"></div>
|
||||
</fieldset>
|
||||
<fieldset class="section">
|
||||
<legend>Players [{{ players.size }}/{{ maxPlayers }}]</legend>
|
||||
<!-- <div class="scrollup" style="display: block;"></div>-->
|
||||
<ul class="list content playerlist">
|
||||
<PlayerListItem v-for="[account, player] in players" :key="account" :player="player"></PlayerListItem>
|
||||
</ul>
|
||||
<!-- <div class="scrolldown" style="display: block;"></div>-->
|
||||
</fieldset>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "PlayerList"
|
||||
}
|
||||
<script lang="ts">
|
||||
import PlayerListItem from "./PlayerListItem.vue";
|
||||
import {defineComponent} from "@vue/runtime-core";
|
||||
import {useStore} from "@/store";
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
PlayerListItem
|
||||
},
|
||||
|
||||
computed: {
|
||||
players() {
|
||||
return useStore().state.players;
|
||||
},
|
||||
|
||||
maxPlayers(): number {
|
||||
return useStore().state.configuration.maxPlayers;
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
24
src/components/PlayerListItem.vue
Normal file
@ -0,0 +1,24 @@
|
||||
<template>
|
||||
<li class="player">
|
||||
<span class="playerIcon" title="Follow player">
|
||||
<img src="images/player_face.png">
|
||||
</span>
|
||||
<a href="#" title="Center on player">{{ player.name }}</a>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import {defineComponent} from 'vue';
|
||||
import {DynmapPlayer} from "@/dynmap";
|
||||
|
||||
export default defineComponent({
|
||||
name: 'PlayerListItem',
|
||||
props: {
|
||||
player: Object as () => DynmapPlayer,
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@ -2,154 +2,26 @@
|
||||
<div class="sidebar pinned">
|
||||
<div class="panel">
|
||||
<div class="pin"></div>
|
||||
<fieldset class="section">
|
||||
<legend>Map Types</legend>
|
||||
<div class="scrollup" style="display: block;"></div>
|
||||
<ul class="list content worldlist" style="height: 277px;">
|
||||
<li class="world subsection">Hub
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">New Earth®
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item selected" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">City
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">Island
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">Train
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">Planets
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">Single Material - Part 1
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">Single Material - Part 2
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">Mall
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">Chunks
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">The Netherlands
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_nether_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_nether_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">1.14 Builds
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="world subsection">1.13 Builds
|
||||
<ul class="maplist sublist">
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Flat" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_flat.png');">Flat</a>
|
||||
</li>
|
||||
<li class="map item" style="background: rgb(0, 0, 0);"><a title="Surface" href="#" class="maptype"
|
||||
style="background-image: url('images/block_world_surface.png');">Surface</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="scrolldown" style="display: block;"></div>
|
||||
</fieldset>
|
||||
<WorldList></WorldList>
|
||||
<PlayerList></PlayerList>
|
||||
<div class="hitbar"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PlayerList from "@/components/PlayerList";
|
||||
export default {
|
||||
name: "Sidebar",
|
||||
components: {PlayerList}
|
||||
<script lang="ts">
|
||||
import { Options, Vue } from 'vue-class-component';
|
||||
import PlayerList from './PlayerList.vue';
|
||||
import WorldList from './WorldList.vue';
|
||||
|
||||
@Options({
|
||||
components: {
|
||||
PlayerList,
|
||||
WorldList,
|
||||
},
|
||||
})
|
||||
export default class Sidebar extends Vue {
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
|
34
src/components/WorldList.vue
Normal file
@ -0,0 +1,34 @@
|
||||
<template>
|
||||
<fieldset class="section">
|
||||
<legend>Map Types</legend>
|
||||
<!-- <div class="scrollup" style="display: block;"></div>-->
|
||||
<ul class="list content worldlist">
|
||||
<WorldListItem :world="world" v-for="[name, world] in worlds" :key="name"></WorldListItem>
|
||||
</ul>
|
||||
<!-- <div class="scrolldown" style="display: block;"></div>-->
|
||||
</fieldset>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import WorldListItem from './WorldListItem.vue';
|
||||
import {defineComponent} from 'vue';
|
||||
import {useStore} from "@/store";
|
||||
|
||||
export default defineComponent({
|
||||
name: 'WorldList',
|
||||
components: {
|
||||
WorldListItem
|
||||
},
|
||||
|
||||
computed: {
|
||||
worlds() {
|
||||
return useStore().state.worlds;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
62
src/components/WorldListItem.vue
Normal file
@ -0,0 +1,62 @@
|
||||
<template>
|
||||
<li class="world subsection">
|
||||
{{ world.title }}
|
||||
<ul class="maplist sublist">
|
||||
<li :class="{'map': true, 'item': true, 'selected': map === currentMap}" style="background: rgb(0, 0, 0);" v-for="map in world.maps" :key="map.name">
|
||||
<a :title="map.title" href="#" class="maptype" :style="{'background-image': `url(${getMapIcon(map)})`}" @click="setCurrentMap(map.name)">{{ map.name }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import {MutationTypes, useStore} from "@/store";
|
||||
import {DynmapMap, DynmapWorld} from "@/dynmap";
|
||||
import {defineComponent} from 'vue';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'WorldListItem',
|
||||
props: {
|
||||
world: {
|
||||
type: Object as () => DynmapWorld,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
currentMap(): DynmapMap | undefined {
|
||||
return useStore().state.currentMap;
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
getMapIcon(map: DynmapMap): string {
|
||||
let worldType: string,
|
||||
mapType: string;
|
||||
|
||||
if (this.world.name.endsWith('_nether') || (this.world.name == 'DIM-1')) {
|
||||
worldType = 'nether';
|
||||
mapType = (map.name == 'nether') ? 'surface' : 'flat';
|
||||
} else if (this.world.name.endsWith('the_end') || (this.world.name == 'DIM1')) {
|
||||
worldType = 'the_end';
|
||||
mapType = (map.name == 'the_end') ? 'surface' : 'flat';
|
||||
} else {
|
||||
worldType = 'world';
|
||||
mapType = ['surface', 'flat', 'biome', 'cave'].includes(map.name) ? map.name : 'flat';
|
||||
}
|
||||
|
||||
return `images/block_${worldType}_${mapType}.png`;
|
||||
},
|
||||
setCurrentMap(map: string) {
|
||||
useStore().commit(MutationTypes.SET_CURRENT_MAP, {
|
||||
world: this.world.name,
|
||||
map
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
85
src/components/map/layer/MapLayer.vue
Normal file
@ -0,0 +1,85 @@
|
||||
<script lang="ts">
|
||||
import {defineComponent} from "@vue/runtime-core";
|
||||
import {DynmapMap} from "@/dynmap";
|
||||
import L from 'leaflet';
|
||||
import {useStore} from "@/store";
|
||||
import {hdMapType} from "@/leaflet/mapType/HDMapType";
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
map: {
|
||||
type: Object as () => DynmapMap,
|
||||
required: true
|
||||
},
|
||||
leaflet: {
|
||||
type: Object as () => L.Map,
|
||||
required: true,
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
layer: hdMapType({
|
||||
maxZoom: this.map.nativeZoomLevels + this.map.extraZoomLevels,
|
||||
maxNativeZoom: this.map.nativeZoomLevels,
|
||||
errorTileUrl: 'images/blank.png',
|
||||
worldName: this.map.world,
|
||||
prefix: this.map.prefix,
|
||||
}) as L.Layer,
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
active(): boolean {
|
||||
return this.map === useStore().state.currentMap;
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
active(newValue) {
|
||||
console.warn(`Active for ${this.map.world} ${this.map.name} now ${newValue}`);
|
||||
|
||||
if(newValue) {
|
||||
this.enableLayer();
|
||||
} else {
|
||||
this.disableLayer();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
console.log('mounted ' + this.name + ' ' + this.active);
|
||||
|
||||
if(this.active) {
|
||||
this.enableLayer();
|
||||
}
|
||||
},
|
||||
|
||||
unmounted() {
|
||||
console.log('unmounted ' + this.name);
|
||||
},
|
||||
|
||||
render() {
|
||||
return null;
|
||||
},
|
||||
|
||||
methods: {
|
||||
enableLayer() {
|
||||
console.warn('Enabling layer ' + this.map.world + ' ' + this.map.name);
|
||||
this.leaflet.addLayer(this.layer);
|
||||
},
|
||||
disableLayer() {
|
||||
console.warn('Disabling layer ' + this.map.world + ' ' + this.map.name);
|
||||
this.layer.remove();
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
41
src/components/map/layer/PlayersLayer.vue
Normal file
@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<PlayerMarker v-for="[account, player] in players" :key="account" :player="player"></PlayerMarker>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import PlayerMarker from "@/components/map/marker/PlayerMarker.vue";
|
||||
import {defineComponent} from "@vue/runtime-core";
|
||||
import {useStore} from "@/store";
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
PlayerMarker
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
players() {
|
||||
return useStore().state.players;
|
||||
},
|
||||
},
|
||||
|
||||
mounted() {
|
||||
|
||||
},
|
||||
|
||||
unmounted() {
|
||||
},
|
||||
|
||||
render() {
|
||||
return null;
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|