More svg injection, removing stringed html from code
3
client/copy.bat
Normal file
@ -0,0 +1,3 @@
|
||||
copy .\\node_modules\\leaflet\\dist\\leaflet.css .\\public\\stylesheets\\leaflet\\leaflet.css
|
||||
copy .\\node_modules\\@iconfu\\svg-inject\\dist\\svg-inject.js .\\public\\javascripts\\svg-inject.js
|
||||
copy .\\node_modules\\leaflet.nauticscale\\dist\\leaflet.nauticscale.js .\\public\\javascripts\\leaflet.nauticscale.js
|
||||
@ -677,15 +677,18 @@ class DemoDataGenerator {
|
||||
var ret = {bullseyes: {
|
||||
"0": {
|
||||
latitude: 37.25,
|
||||
longitude: -115.8
|
||||
longitude: -115.8,
|
||||
coalition: "neutral"
|
||||
},
|
||||
"1": {
|
||||
latitude: 37.25,
|
||||
longitude: -115.75
|
||||
longitude: -115.75,
|
||||
coalition: "red"
|
||||
},
|
||||
"2": {
|
||||
latitude: 37.25,
|
||||
longitude: -115.7
|
||||
longitude: -115.7,
|
||||
coalition: "blue"
|
||||
}
|
||||
}};
|
||||
ret.time = Date.now();
|
||||
|
||||
59
client/package-lock.json
generated
@ -25,6 +25,7 @@
|
||||
"devDependencies": {
|
||||
"@babel/preset-env": "^7.21.4",
|
||||
"@iconfu/svg-inject": "^1.2.3",
|
||||
"@tanem/svg-injector": "^10.1.55",
|
||||
"@types/gtag.js": "^0.0.12",
|
||||
"@types/node": "^18.16.1",
|
||||
"@types/sortablejs": "^1.15.0",
|
||||
@ -1688,9 +1689,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
|
||||
"integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
|
||||
"version": "7.21.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
|
||||
"integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.13.11"
|
||||
@ -1831,6 +1832,17 @@
|
||||
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@tanem/svg-injector": {
|
||||
"version": "10.1.55",
|
||||
"resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.55.tgz",
|
||||
"integrity": "sha512-xh8ejdvjDaH1eddZC0CdI45eeid4BIU2ppjNEhiTiWMYcLGT19KWjbES/ttDS4mq9gIAQfXx57g5zimEVohqYA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.5",
|
||||
"content-type": "^1.0.5",
|
||||
"tslib": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/geojson": {
|
||||
"version": "7946.0.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz",
|
||||
@ -2824,9 +2836,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/content-type": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
|
||||
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
|
||||
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
@ -5344,9 +5356,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
|
||||
"integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
|
||||
"integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/tty-browserify": {
|
||||
@ -6842,9 +6854,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
|
||||
"integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
|
||||
"version": "7.21.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
|
||||
"integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.11"
|
||||
@ -6960,6 +6972,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@tanem/svg-injector": {
|
||||
"version": "10.1.55",
|
||||
"resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.55.tgz",
|
||||
"integrity": "sha512-xh8ejdvjDaH1eddZC0CdI45eeid4BIU2ppjNEhiTiWMYcLGT19KWjbES/ttDS4mq9gIAQfXx57g5zimEVohqYA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.21.5",
|
||||
"content-type": "^1.0.5",
|
||||
"tslib": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"@types/geojson": {
|
||||
"version": "7946.0.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz",
|
||||
@ -7768,9 +7791,9 @@
|
||||
"integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA=="
|
||||
},
|
||||
"content-type": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
|
||||
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
|
||||
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
|
||||
},
|
||||
"convert-source-map": {
|
||||
"version": "1.1.3",
|
||||
@ -9806,9 +9829,9 @@
|
||||
}
|
||||
},
|
||||
"tslib": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
|
||||
"integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
|
||||
"integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==",
|
||||
"dev": true
|
||||
},
|
||||
"tty-browserify": {
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
"version": "v0.2.1-alpha",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"copy": "copy .\\node_modules\\leaflet\\dist\\leaflet.css .\\public\\stylesheets\\leaflet\\leaflet.css & copy .\\node_modules\\@iconfu\\svg-inject\\dist\\svg-inject.js .\\public\\javascripts\\svg-inject.js",
|
||||
"copy": "copy.bat",
|
||||
"start": "npm run copy & concurrently --kill-others \"npm run watch\" \"nodemon ./bin/www\"",
|
||||
"watch": "watchify .\\src\\index.ts --debug -o .\\public\\javascripts\\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ]"
|
||||
},
|
||||
@ -16,17 +16,15 @@
|
||||
"debug": "~2.6.9",
|
||||
"ejs": "^3.1.8",
|
||||
"express": "~4.16.1",
|
||||
"geomag": "^1.0.0",
|
||||
"leaflet": "^1.9.3",
|
||||
"leaflet-control-mini-map": "^0.4.0",
|
||||
"leaflet.nauticscale": "^1.1.0",
|
||||
"milsymbol": "^2.0.0",
|
||||
"morgan": "~1.9.1",
|
||||
"save": "^2.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-env": "^7.21.4",
|
||||
"@iconfu/svg-inject": "^1.2.3",
|
||||
"@tanem/svg-injector": "^10.1.55",
|
||||
"@types/gtag.js": "^0.0.12",
|
||||
"@types/node": "^18.16.1",
|
||||
"@types/sortablejs": "^1.15.0",
|
||||
|
||||
2
client/prepare.bat
Normal file
@ -0,0 +1,2 @@
|
||||
copy .\\node_modules\\leaflet\\dist\\leaflet.css .\\public\\stylesheets\\leaflet\\leaflet.css
|
||||
copy .\\node_modules\\leaflet.nauticscale\\dist\\leaflet.nauticscale.js .\\public\\javascripts\\leaflet.nauticscale.js
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.4766 9.25718L11.3099 8.44468C11.4401 8.31772 11.6667 8.40659 11.6667 8.58941V12.2812C11.6667 12.9541 11.1068 13.5 10.4167 13.5H1.25C0.559896 13.5 0 12.9541 0 12.2812V3.3437C0 2.67085 0.559896 2.12495 1.25 2.12495H8.3724C8.55729 2.12495 8.65104 2.34331 8.52083 2.4728L7.6875 3.2853C7.64844 3.32339 7.59635 3.3437 7.53906 3.3437H1.25V12.2812H10.4167V9.39937C10.4167 9.34605 10.4375 9.29526 10.4766 9.25718ZM14.5547 4.13335L7.71615 10.8009L5.36198 11.0548C4.67969 11.1285 4.09896 10.5673 4.17448 9.89702L4.4349 7.60171L11.2734 0.934131C11.8698 0.352686 12.8333 0.352686 13.4271 0.934131L14.5521 2.03101C15.1484 2.61245 15.1484 3.55444 14.5547 4.13335ZM11.9818 4.91792L10.4688 3.44272L5.63021 8.16284L5.4401 9.82085L7.14063 9.6355L11.9818 4.91792ZM13.6693 2.89429L12.5443 1.79741C12.4375 1.69331 12.263 1.69331 12.1589 1.79741L11.3542 2.58198L12.8672 4.05718L13.6719 3.27261C13.776 3.16597 13.776 2.99839 13.6693 2.89429Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="96.000000pt" height="96.000000pt" viewBox="0 0 96.000000 96.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,96.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M411 846 c-77 -78 -70 -86 69 -86 139 0 146 8 69 86 -29 30 -60 54
|
||||
-69 54 -9 0 -40 -24 -69 -54z"/>
|
||||
<path d="M132 668 c-16 -16 -15 -43 2 -57 9 -8 110 -11 351 -9 309 3 339 4
|
||||
349 21 8 12 8 22 0 35 -10 16 -40 17 -350 20 -256 2 -343 -1 -352 -10z"/>
|
||||
<path d="M132 508 c-16 -16 -15 -43 2 -57 9 -8 110 -11 351 -9 309 3 339 4
|
||||
349 21 8 12 8 22 0 35 -10 16 -40 17 -350 20 -256 2 -343 -1 -352 -10z"/>
|
||||
<path d="M132 348 c-16 -16 -15 -43 2 -57 9 -8 110 -11 351 -9 309 3 339 4
|
||||
349 21 8 12 8 22 0 35 -10 16 -40 17 -350 20 -256 2 -343 -1 -352 -10z"/>
|
||||
<path d="M363 184 c-7 -18 92 -124 117 -124 25 0 124 106 117 124 -9 24 -225
|
||||
24 -234 0z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"/></svg>
|
||||
|
Before Width: | Height: | Size: 480 B |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M211.8 339.8C200.9 350.7 183.1 350.7 172.2 339.8L108.2 275.8C97.27 264.9 97.27 247.1 108.2 236.2C119.1 225.3 136.9 225.3 147.8 236.2L192 280.4L300.2 172.2C311.1 161.3 328.9 161.3 339.8 172.2C350.7 183.1 350.7 200.9 339.8 211.8L211.8 339.8zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z"/></svg>
|
||||
|
Before Width: | Height: | Size: 733 B |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z"/></svg>
|
||||
|
Before Width: | Height: | Size: 875 B |
38
client/public/javascripts/leaflet.nauticscale.js
Normal file
@ -0,0 +1,38 @@
|
||||
L.Control.ScaleNautic = L.Control.Scale.extend({
|
||||
options: {
|
||||
nautic: false
|
||||
},
|
||||
|
||||
_addScales: function(options, className, container) {
|
||||
L.Control.Scale.prototype._addScales.call(this, options, className, container);
|
||||
L.setOptions(options);
|
||||
if (this.options.nautic) {
|
||||
this._nScale = L.DomUtil.create('div', className, container);
|
||||
}
|
||||
},
|
||||
|
||||
_updateScales: function (maxMeters) {
|
||||
L.Control.Scale.prototype._updateScales.call(this, maxMeters);
|
||||
if (this.options.nautic && maxMeters) {
|
||||
this._updateNautic(maxMeters);
|
||||
}
|
||||
},
|
||||
|
||||
_updateNautic: function (maxMeters) {
|
||||
var scale = this._nScale,
|
||||
maxNauticalMiles = maxMeters / 1852, nauticalMiles;
|
||||
|
||||
if(maxMeters >= 1852) {
|
||||
nauticalMiles = L.Control.Scale.prototype._getRoundNum.call(this, maxNauticalMiles);
|
||||
} else {
|
||||
nauticalMiles = maxNauticalMiles > 0.1 ? Math.round(maxNauticalMiles * 10) / 10 : Math.round(maxNauticalMiles * 100) / 100;
|
||||
}
|
||||
|
||||
scale.style.width = Math.round(this.options.maxWidth * (nauticalMiles / maxNauticalMiles)) - 10 + 'px';
|
||||
scale.innerHTML = nauticalMiles + ' nm';
|
||||
}
|
||||
});
|
||||
|
||||
L.control.scalenautic = function (options) {
|
||||
return new L.Control.ScaleNautic(options);
|
||||
};
|
||||
@ -1,697 +0,0 @@
|
||||
/**
|
||||
* SVGInject - Version 1.2.3
|
||||
* A tiny, intuitive, robust, caching solution for injecting SVG files inline into the DOM.
|
||||
*
|
||||
* https://github.com/iconfu/svg-inject
|
||||
*
|
||||
* Copyright (c) 2018 INCORS, the creators of iconfu.com
|
||||
* @license MIT License - https://github.com/iconfu/svg-inject/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
(function(window, document) {
|
||||
// constants for better minification
|
||||
var _CREATE_ELEMENT_ = 'createElement';
|
||||
var _GET_ELEMENTS_BY_TAG_NAME_ = 'getElementsByTagName';
|
||||
var _LENGTH_ = 'length';
|
||||
var _STYLE_ = 'style';
|
||||
var _TITLE_ = 'title';
|
||||
var _UNDEFINED_ = 'undefined';
|
||||
var _SET_ATTRIBUTE_ = 'setAttribute';
|
||||
var _GET_ATTRIBUTE_ = 'getAttribute';
|
||||
|
||||
var NULL = null;
|
||||
|
||||
// constants
|
||||
var __SVGINJECT = '__svgInject';
|
||||
var ID_SUFFIX = '--inject-';
|
||||
var ID_SUFFIX_REGEX = new RegExp(ID_SUFFIX + '\\d+', "g");
|
||||
var LOAD_FAIL = 'LOAD_FAIL';
|
||||
var SVG_NOT_SUPPORTED = 'SVG_NOT_SUPPORTED';
|
||||
var SVG_INVALID = 'SVG_INVALID';
|
||||
var ATTRIBUTE_EXCLUSION_NAMES = ['src', 'alt', 'onload', 'onerror'];
|
||||
var A_ELEMENT = document[_CREATE_ELEMENT_]('a');
|
||||
var IS_SVG_SUPPORTED = typeof SVGRect != _UNDEFINED_;
|
||||
var DEFAULT_OPTIONS = {
|
||||
useCache: true,
|
||||
copyAttributes: true,
|
||||
makeIdsUnique: true
|
||||
};
|
||||
// Map of IRI referenceable tag names to properties that can reference them. This is defined in
|
||||
// https://www.w3.org/TR/SVG11/linking.html#processingIRI
|
||||
var IRI_TAG_PROPERTIES_MAP = {
|
||||
clipPath: ['clip-path'],
|
||||
'color-profile': NULL,
|
||||
cursor: NULL,
|
||||
filter: NULL,
|
||||
linearGradient: ['fill', 'stroke'],
|
||||
marker: ['marker', 'marker-end', 'marker-mid', 'marker-start'],
|
||||
mask: NULL,
|
||||
pattern: ['fill', 'stroke'],
|
||||
radialGradient: ['fill', 'stroke']
|
||||
};
|
||||
var INJECTED = 1;
|
||||
var FAIL = 2;
|
||||
|
||||
var uniqueIdCounter = 1;
|
||||
var xmlSerializer;
|
||||
var domParser;
|
||||
|
||||
|
||||
// creates an SVG document from an SVG string
|
||||
function svgStringToSvgDoc(svgStr) {
|
||||
domParser = domParser || new DOMParser();
|
||||
return domParser.parseFromString(svgStr, 'text/xml');
|
||||
}
|
||||
|
||||
|
||||
// searializes an SVG element to an SVG string
|
||||
function svgElemToSvgString(svgElement) {
|
||||
xmlSerializer = xmlSerializer || new XMLSerializer();
|
||||
return xmlSerializer.serializeToString(svgElement);
|
||||
}
|
||||
|
||||
|
||||
// Returns the absolute url for the specified url
|
||||
function getAbsoluteUrl(url) {
|
||||
A_ELEMENT.href = url;
|
||||
return A_ELEMENT.href;
|
||||
}
|
||||
|
||||
|
||||
// Load svg with an XHR request
|
||||
function loadSvg(url, callback, errorCallback) {
|
||||
if (url) {
|
||||
var req = new XMLHttpRequest();
|
||||
req.onreadystatechange = function() {
|
||||
if (req.readyState == 4) {
|
||||
// readyState is DONE
|
||||
var status = req.status;
|
||||
if (status == 200) {
|
||||
// request status is OK
|
||||
callback(req.responseXML, req.responseText.trim());
|
||||
} else if (status >= 400) {
|
||||
// request status is error (4xx or 5xx)
|
||||
errorCallback();
|
||||
} else if (status == 0) {
|
||||
// request status 0 can indicate a failed cross-domain call
|
||||
errorCallback();
|
||||
}
|
||||
}
|
||||
};
|
||||
req.open('GET', url, true);
|
||||
req.send();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Copy attributes from img element to svg element
|
||||
function copyAttributes(imgElem, svgElem) {
|
||||
var attribute;
|
||||
var attributeName;
|
||||
var attributeValue;
|
||||
var attributes = imgElem.attributes;
|
||||
for (var i = 0; i < attributes[_LENGTH_]; i++) {
|
||||
attribute = attributes[i];
|
||||
attributeName = attribute.name;
|
||||
// Only copy attributes not explicitly excluded from copying
|
||||
if (ATTRIBUTE_EXCLUSION_NAMES.indexOf(attributeName) == -1) {
|
||||
attributeValue = attribute.value;
|
||||
// If img attribute is "title", insert a title element into SVG element
|
||||
if (attributeName == _TITLE_) {
|
||||
var titleElem;
|
||||
var firstElementChild = svgElem.firstElementChild;
|
||||
if (firstElementChild && firstElementChild.localName.toLowerCase() == _TITLE_) {
|
||||
// If the SVG element's first child is a title element, keep it as the title element
|
||||
titleElem = firstElementChild;
|
||||
} else {
|
||||
// If the SVG element's first child element is not a title element, create a new title
|
||||
// ele,emt and set it as the first child
|
||||
titleElem = document[_CREATE_ELEMENT_ + 'NS']('http://www.w3.org/2000/svg', _TITLE_);
|
||||
svgElem.insertBefore(titleElem, firstElementChild);
|
||||
}
|
||||
// Set new title content
|
||||
titleElem.textContent = attributeValue;
|
||||
} else {
|
||||
// Set img attribute to svg element
|
||||
svgElem[_SET_ATTRIBUTE_](attributeName, attributeValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// This function appends a suffix to IDs of referenced elements in the <defs> in order to to avoid ID collision
|
||||
// between multiple injected SVGs. The suffix has the form "--inject-X", where X is a running number which is
|
||||
// incremented with each injection. References to the IDs are adjusted accordingly.
|
||||
// We assume tha all IDs within the injected SVG are unique, therefore the same suffix can be used for all IDs of one
|
||||
// injected SVG.
|
||||
// If the onlyReferenced argument is set to true, only those IDs will be made unique that are referenced from within the SVG
|
||||
function makeIdsUnique(svgElem, onlyReferenced) {
|
||||
var idSuffix = ID_SUFFIX + uniqueIdCounter++;
|
||||
// Regular expression for functional notations of an IRI references. This will find occurences in the form
|
||||
// url(#anyId) or url("#anyId") (for Internet Explorer) and capture the referenced ID
|
||||
var funcIriRegex = /url\("?#([a-zA-Z][\w:.-]*)"?\)/g;
|
||||
// Get all elements with an ID. The SVG spec recommends to put referenced elements inside <defs> elements, but
|
||||
// this is not a requirement, therefore we have to search for IDs in the whole SVG.
|
||||
var idElements = svgElem.querySelectorAll('[id]');
|
||||
var idElem;
|
||||
// An object containing referenced IDs as keys is used if only referenced IDs should be uniquified.
|
||||
// If this object does not exist, all IDs will be uniquified.
|
||||
var referencedIds = onlyReferenced ? [] : NULL;
|
||||
var tagName;
|
||||
var iriTagNames = {};
|
||||
var iriProperties = [];
|
||||
var changed = false;
|
||||
var i, j;
|
||||
|
||||
if (idElements[_LENGTH_]) {
|
||||
// Make all IDs unique by adding the ID suffix and collect all encountered tag names
|
||||
// that are IRI referenceable from properities.
|
||||
for (i = 0; i < idElements[_LENGTH_]; i++) {
|
||||
tagName = idElements[i].localName; // Use non-namespaced tag name
|
||||
// Make ID unique if tag name is IRI referenceable
|
||||
if (tagName in IRI_TAG_PROPERTIES_MAP) {
|
||||
iriTagNames[tagName] = 1;
|
||||
}
|
||||
}
|
||||
// Get all properties that are mapped to the found IRI referenceable tags
|
||||
for (tagName in iriTagNames) {
|
||||
(IRI_TAG_PROPERTIES_MAP[tagName] || [tagName]).forEach(function (mappedProperty) {
|
||||
// Add mapped properties to array of iri referencing properties.
|
||||
// Use linear search here because the number of possible entries is very small (maximum 11)
|
||||
if (iriProperties.indexOf(mappedProperty) < 0) {
|
||||
iriProperties.push(mappedProperty);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (iriProperties[_LENGTH_]) {
|
||||
// Add "style" to properties, because it may contain references in the form 'style="fill:url(#myFill)"'
|
||||
iriProperties.push(_STYLE_);
|
||||
}
|
||||
// Run through all elements of the SVG and replace IDs in references.
|
||||
// To get all descending elements, getElementsByTagName('*') seems to perform faster than querySelectorAll('*').
|
||||
// Since svgElem.getElementsByTagName('*') does not return the svg element itself, we have to handle it separately.
|
||||
var descElements = svgElem[_GET_ELEMENTS_BY_TAG_NAME_]('*');
|
||||
var element = svgElem;
|
||||
var propertyName;
|
||||
var value;
|
||||
var newValue;
|
||||
for (i = -1; element != NULL;) {
|
||||
if (element.localName == _STYLE_) {
|
||||
// If element is a style element, replace IDs in all occurences of "url(#anyId)" in text content
|
||||
value = element.textContent;
|
||||
newValue = value && value.replace(funcIriRegex, function(match, id) {
|
||||
if (referencedIds) {
|
||||
referencedIds[id] = 1;
|
||||
}
|
||||
return 'url(#' + id + idSuffix + ')';
|
||||
});
|
||||
if (newValue !== value) {
|
||||
element.textContent = newValue;
|
||||
}
|
||||
} else if (element.hasAttributes()) {
|
||||
// Run through all property names for which IDs were found
|
||||
for (j = 0; j < iriProperties[_LENGTH_]; j++) {
|
||||
propertyName = iriProperties[j];
|
||||
value = element[_GET_ATTRIBUTE_](propertyName);
|
||||
newValue = value && value.replace(funcIriRegex, function(match, id) {
|
||||
if (referencedIds) {
|
||||
referencedIds[id] = 1;
|
||||
}
|
||||
return 'url(#' + id + idSuffix + ')';
|
||||
});
|
||||
if (newValue !== value) {
|
||||
element[_SET_ATTRIBUTE_](propertyName, newValue);
|
||||
}
|
||||
}
|
||||
// Replace IDs in xlink:ref and href attributes
|
||||
['xlink:href', 'href'].forEach(function(refAttrName) {
|
||||
var iri = element[_GET_ATTRIBUTE_](refAttrName);
|
||||
if (/^\s*#/.test(iri)) { // Check if iri is non-null and internal reference
|
||||
iri = iri.trim();
|
||||
element[_SET_ATTRIBUTE_](refAttrName, iri + idSuffix);
|
||||
if (referencedIds) {
|
||||
// Add ID to referenced IDs
|
||||
referencedIds[iri.substring(1)] = 1;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
element = descElements[++i];
|
||||
}
|
||||
for (i = 0; i < idElements[_LENGTH_]; i++) {
|
||||
idElem = idElements[i];
|
||||
// If set of referenced IDs exists, make only referenced IDs unique,
|
||||
// otherwise make all IDs unique.
|
||||
if (!referencedIds || referencedIds[idElem.id]) {
|
||||
// Add suffix to element's ID
|
||||
idElem.id += idSuffix;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// return true if SVG element has changed
|
||||
return changed;
|
||||
}
|
||||
|
||||
|
||||
// For cached SVGs the IDs are made unique by simply replacing the already inserted unique IDs with a
|
||||
// higher ID counter. This is much more performant than a call to makeIdsUnique().
|
||||
function makeIdsUniqueCached(svgString) {
|
||||
return svgString.replace(ID_SUFFIX_REGEX, ID_SUFFIX + uniqueIdCounter++);
|
||||
}
|
||||
|
||||
|
||||
// Inject SVG by replacing the img element with the SVG element in the DOM
|
||||
function inject(imgElem, svgElem, absUrl, options) {
|
||||
if (svgElem) {
|
||||
svgElem[_SET_ATTRIBUTE_]('data-inject-url', absUrl);
|
||||
var parentNode = imgElem.parentNode;
|
||||
if (parentNode) {
|
||||
if (options.copyAttributes) {
|
||||
copyAttributes(imgElem, svgElem);
|
||||
}
|
||||
// Invoke beforeInject hook if set
|
||||
var beforeInject = options.beforeInject;
|
||||
var injectElem = (beforeInject && beforeInject(imgElem, svgElem)) || svgElem;
|
||||
// Replace img element with new element. This is the actual injection.
|
||||
parentNode.replaceChild(injectElem, imgElem);
|
||||
// Mark img element as injected
|
||||
imgElem[__SVGINJECT] = INJECTED;
|
||||
removeOnLoadAttribute(imgElem);
|
||||
// Invoke afterInject hook if set
|
||||
var afterInject = options.afterInject;
|
||||
if (afterInject) {
|
||||
afterInject(imgElem, injectElem);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
svgInvalid(imgElem, options);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Merges any number of options objects into a new object
|
||||
function mergeOptions() {
|
||||
var mergedOptions = {};
|
||||
var args = arguments;
|
||||
// Iterate over all specified options objects and add all properties to the new options object
|
||||
for (var i = 0; i < args[_LENGTH_]; i++) {
|
||||
var argument = args[i];
|
||||
for (var key in argument) {
|
||||
if (argument.hasOwnProperty(key)) {
|
||||
mergedOptions[key] = argument[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return mergedOptions;
|
||||
}
|
||||
|
||||
|
||||
// Adds the specified CSS to the document's <head> element
|
||||
function addStyleToHead(css) {
|
||||
var head = document[_GET_ELEMENTS_BY_TAG_NAME_]('head')[0];
|
||||
if (head) {
|
||||
var style = document[_CREATE_ELEMENT_](_STYLE_);
|
||||
style.type = 'text/css';
|
||||
style.appendChild(document.createTextNode(css));
|
||||
head.appendChild(style);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Builds an SVG element from the specified SVG string
|
||||
function buildSvgElement(svgStr, verify) {
|
||||
if (verify) {
|
||||
var svgDoc;
|
||||
try {
|
||||
// Parse the SVG string with DOMParser
|
||||
svgDoc = svgStringToSvgDoc(svgStr);
|
||||
} catch(e) {
|
||||
return NULL;
|
||||
}
|
||||
if (svgDoc[_GET_ELEMENTS_BY_TAG_NAME_]('parsererror')[_LENGTH_]) {
|
||||
// DOMParser does not throw an exception, but instead puts parsererror tags in the document
|
||||
return NULL;
|
||||
}
|
||||
return svgDoc.documentElement;
|
||||
} else {
|
||||
var div = document.createElement('div');
|
||||
div.innerHTML = svgStr;
|
||||
return div.firstElementChild;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function removeOnLoadAttribute(imgElem) {
|
||||
// Remove the onload attribute. Should only be used to remove the unstyled image flash protection and
|
||||
// make the element visible, not for removing the event listener.
|
||||
imgElem.removeAttribute('onload');
|
||||
}
|
||||
|
||||
|
||||
function errorMessage(msg) {
|
||||
console.error('SVGInject: ' + msg);
|
||||
}
|
||||
|
||||
|
||||
function fail(imgElem, status, options) {
|
||||
imgElem[__SVGINJECT] = FAIL;
|
||||
if (options.onFail) {
|
||||
options.onFail(imgElem, status);
|
||||
} else {
|
||||
errorMessage(status);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function svgInvalid(imgElem, options) {
|
||||
removeOnLoadAttribute(imgElem);
|
||||
fail(imgElem, SVG_INVALID, options);
|
||||
}
|
||||
|
||||
|
||||
function svgNotSupported(imgElem, options) {
|
||||
removeOnLoadAttribute(imgElem);
|
||||
fail(imgElem, SVG_NOT_SUPPORTED, options);
|
||||
}
|
||||
|
||||
|
||||
function loadFail(imgElem, options) {
|
||||
fail(imgElem, LOAD_FAIL, options);
|
||||
}
|
||||
|
||||
|
||||
function removeEventListeners(imgElem) {
|
||||
imgElem.onload = NULL;
|
||||
imgElem.onerror = NULL;
|
||||
}
|
||||
|
||||
|
||||
function imgNotSet(msg) {
|
||||
errorMessage('no img element');
|
||||
}
|
||||
|
||||
|
||||
function createSVGInject(globalName, options) {
|
||||
var defaultOptions = mergeOptions(DEFAULT_OPTIONS, options);
|
||||
var svgLoadCache = {};
|
||||
|
||||
if (IS_SVG_SUPPORTED) {
|
||||
// If the browser supports SVG, add a small stylesheet that hides the <img> elements until
|
||||
// injection is finished. This avoids showing the unstyled SVGs before style is applied.
|
||||
addStyleToHead('img[onload^="' + globalName + '("]{visibility:hidden;}');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* SVGInject
|
||||
*
|
||||
* Injects the SVG specified in the `src` attribute of the specified `img` element or array of `img`
|
||||
* elements. Returns a Promise object which resolves if all passed in `img` elements have either been
|
||||
* injected or failed to inject (Only if a global Promise object is available like in all modern browsers
|
||||
* or through a polyfill).
|
||||
*
|
||||
* Options:
|
||||
* useCache: If set to `true` the SVG will be cached using the absolute URL. Default value is `true`.
|
||||
* copyAttributes: If set to `true` the attributes will be copied from `img` to `svg`. Dfault value
|
||||
* is `true`.
|
||||
* makeIdsUnique: If set to `true` the ID of elements in the `<defs>` element that can be references by
|
||||
* property values (for example 'clipPath') are made unique by appending "--inject-X", where X is a
|
||||
* running number which increases with each injection. This is done to avoid duplicate IDs in the DOM.
|
||||
* beforeLoad: Hook before SVG is loaded. The `img` element is passed as a parameter. If the hook returns
|
||||
* a string it is used as the URL instead of the `img` element's `src` attribute.
|
||||
* afterLoad: Hook after SVG is loaded. The loaded `svg` element and `svg` string are passed as a
|
||||
* parameters. If caching is active this hook will only get called once for injected SVGs with the
|
||||
* same absolute path. Changes to the `svg` element in this hook will be applied to all injected SVGs
|
||||
* with the same absolute path. It's also possible to return an `svg` string or `svg` element which
|
||||
* will then be used for the injection.
|
||||
* beforeInject: Hook before SVG is injected. The `img` and `svg` elements are passed as parameters. If
|
||||
* any html element is returned it gets injected instead of applying the default SVG injection.
|
||||
* afterInject: Hook after SVG is injected. The `img` and `svg` elements are passed as parameters.
|
||||
* onAllFinish: Hook after all `img` elements passed to an SVGInject() call have either been injected or
|
||||
* failed to inject.
|
||||
* onFail: Hook after injection fails. The `img` element and a `status` string are passed as an parameter.
|
||||
* The `status` can be either `'SVG_NOT_SUPPORTED'` (the browser does not support SVG),
|
||||
* `'SVG_INVALID'` (the SVG is not in a valid format) or `'LOAD_FAILED'` (loading of the SVG failed).
|
||||
*
|
||||
* @param {HTMLImageElement} img - an img element or an array of img elements
|
||||
* @param {Object} [options] - optional parameter with [options](#options) for this injection.
|
||||
*/
|
||||
function SVGInject(img, options) {
|
||||
options = mergeOptions(defaultOptions, options);
|
||||
|
||||
var run = function(resolve) {
|
||||
var allFinish = function() {
|
||||
var onAllFinish = options.onAllFinish;
|
||||
if (onAllFinish) {
|
||||
onAllFinish();
|
||||
}
|
||||
resolve && resolve();
|
||||
};
|
||||
|
||||
if (img && typeof img[_LENGTH_] != _UNDEFINED_) {
|
||||
// an array like structure of img elements
|
||||
var injectIndex = 0;
|
||||
var injectCount = img[_LENGTH_];
|
||||
|
||||
if (injectCount == 0) {
|
||||
allFinish();
|
||||
} else {
|
||||
var finish = function() {
|
||||
if (++injectIndex == injectCount) {
|
||||
allFinish();
|
||||
}
|
||||
};
|
||||
|
||||
for (var i = 0; i < injectCount; i++) {
|
||||
SVGInjectElement(img[i], options, finish);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// only one img element
|
||||
SVGInjectElement(img, options, allFinish);
|
||||
}
|
||||
};
|
||||
|
||||
// return a Promise object if globally available
|
||||
return typeof Promise == _UNDEFINED_ ? run() : new Promise(run);
|
||||
}
|
||||
|
||||
|
||||
// Injects a single svg element. Options must be already merged with the default options.
|
||||
function SVGInjectElement(imgElem, options, callback) {
|
||||
if (imgElem) {
|
||||
var svgInjectAttributeValue = imgElem[__SVGINJECT];
|
||||
if (!svgInjectAttributeValue) {
|
||||
removeEventListeners(imgElem);
|
||||
|
||||
if (!IS_SVG_SUPPORTED) {
|
||||
svgNotSupported(imgElem, options);
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
// Invoke beforeLoad hook if set. If the beforeLoad returns a value use it as the src for the load
|
||||
// URL path. Else use the imgElem's src attribute value.
|
||||
var beforeLoad = options.beforeLoad;
|
||||
var src = (beforeLoad && beforeLoad(imgElem)) || imgElem[_GET_ATTRIBUTE_]('src');
|
||||
|
||||
if (!src) {
|
||||
// If no image src attribute is set do no injection. This can only be reached by using javascript
|
||||
// because if no src attribute is set the onload and onerror events do not get called
|
||||
if (src === '') {
|
||||
loadFail(imgElem, options);
|
||||
}
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
// set array so later calls can register callbacks
|
||||
var onFinishCallbacks = [];
|
||||
imgElem[__SVGINJECT] = onFinishCallbacks;
|
||||
|
||||
var onFinish = function() {
|
||||
callback();
|
||||
onFinishCallbacks.forEach(function(onFinishCallback) {
|
||||
onFinishCallback();
|
||||
});
|
||||
};
|
||||
|
||||
var absUrl = getAbsoluteUrl(src);
|
||||
var useCacheOption = options.useCache;
|
||||
var makeIdsUniqueOption = options.makeIdsUnique;
|
||||
|
||||
var setSvgLoadCacheValue = function(val) {
|
||||
if (useCacheOption) {
|
||||
svgLoadCache[absUrl].forEach(function(svgLoad) {
|
||||
svgLoad(val);
|
||||
});
|
||||
svgLoadCache[absUrl] = val;
|
||||
}
|
||||
};
|
||||
|
||||
if (useCacheOption) {
|
||||
var svgLoad = svgLoadCache[absUrl];
|
||||
|
||||
var handleLoadValue = function(loadValue) {
|
||||
if (loadValue === LOAD_FAIL) {
|
||||
loadFail(imgElem, options);
|
||||
} else if (loadValue === SVG_INVALID) {
|
||||
svgInvalid(imgElem, options);
|
||||
} else {
|
||||
var hasUniqueIds = loadValue[0];
|
||||
var svgString = loadValue[1];
|
||||
var uniqueIdsSvgString = loadValue[2];
|
||||
var svgElem;
|
||||
|
||||
if (makeIdsUniqueOption) {
|
||||
if (hasUniqueIds === NULL) {
|
||||
// IDs for the SVG string have not been made unique before. This may happen if previous
|
||||
// injection of a cached SVG have been run with the option makedIdsUnique set to false
|
||||
svgElem = buildSvgElement(svgString, false);
|
||||
hasUniqueIds = makeIdsUnique(svgElem, false);
|
||||
|
||||
loadValue[0] = hasUniqueIds;
|
||||
loadValue[2] = hasUniqueIds && svgElemToSvgString(svgElem);
|
||||
} else if (hasUniqueIds) {
|
||||
// Make IDs unique for already cached SVGs with better performance
|
||||
svgString = makeIdsUniqueCached(uniqueIdsSvgString);
|
||||
}
|
||||
}
|
||||
|
||||
svgElem = svgElem || buildSvgElement(svgString, false);
|
||||
|
||||
inject(imgElem, svgElem, absUrl, options);
|
||||
}
|
||||
onFinish();
|
||||
};
|
||||
|
||||
if (typeof svgLoad != _UNDEFINED_) {
|
||||
// Value for url exists in cache
|
||||
if (svgLoad.isCallbackQueue) {
|
||||
// Same url has been cached, but value has not been loaded yet, so add to callbacks
|
||||
svgLoad.push(handleLoadValue);
|
||||
} else {
|
||||
handleLoadValue(svgLoad);
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
var svgLoad = [];
|
||||
// set property isCallbackQueue to Array to differentiate from array with cached loaded values
|
||||
svgLoad.isCallbackQueue = true;
|
||||
svgLoadCache[absUrl] = svgLoad;
|
||||
}
|
||||
}
|
||||
|
||||
// Load the SVG because it is not cached or caching is disabled
|
||||
loadSvg(absUrl, function(svgXml, svgString) {
|
||||
// Use the XML from the XHR request if it is an instance of Document. Otherwise
|
||||
// (for example of IE9), create the svg document from the svg string.
|
||||
var svgElem = svgXml instanceof Document ? svgXml.documentElement : buildSvgElement(svgString, true);
|
||||
|
||||
var afterLoad = options.afterLoad;
|
||||
if (afterLoad) {
|
||||
// Invoke afterLoad hook which may modify the SVG element. After load may also return a new
|
||||
// svg element or svg string
|
||||
var svgElemOrSvgString = afterLoad(svgElem, svgString) || svgElem;
|
||||
if (svgElemOrSvgString) {
|
||||
// Update svgElem and svgString because of modifications to the SVG element or SVG string in
|
||||
// the afterLoad hook, so the modified SVG is also used for all later cached injections
|
||||
var isString = typeof svgElemOrSvgString == 'string';
|
||||
svgString = isString ? svgElemOrSvgString : svgElemToSvgString(svgElem);
|
||||
svgElem = isString ? buildSvgElement(svgElemOrSvgString, true) : svgElemOrSvgString;
|
||||
}
|
||||
}
|
||||
|
||||
if (svgElem instanceof SVGElement) {
|
||||
var hasUniqueIds = NULL;
|
||||
if (makeIdsUniqueOption) {
|
||||
hasUniqueIds = makeIdsUnique(svgElem, false);
|
||||
}
|
||||
|
||||
if (useCacheOption) {
|
||||
var uniqueIdsSvgString = hasUniqueIds && svgElemToSvgString(svgElem);
|
||||
// set an array with three entries to the load cache
|
||||
setSvgLoadCacheValue([hasUniqueIds, svgString, uniqueIdsSvgString]);
|
||||
}
|
||||
|
||||
inject(imgElem, svgElem, absUrl, options);
|
||||
} else {
|
||||
svgInvalid(imgElem, options);
|
||||
setSvgLoadCacheValue(SVG_INVALID);
|
||||
}
|
||||
onFinish();
|
||||
}, function() {
|
||||
loadFail(imgElem, options);
|
||||
setSvgLoadCacheValue(LOAD_FAIL);
|
||||
onFinish();
|
||||
});
|
||||
} else {
|
||||
if (Array.isArray(svgInjectAttributeValue)) {
|
||||
// svgInjectAttributeValue is an array. Injection is not complete so register callback
|
||||
svgInjectAttributeValue.push(callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
imgNotSet();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the default [options](#options) for SVGInject.
|
||||
*
|
||||
* @param {Object} [options] - default [options](#options) for an injection.
|
||||
*/
|
||||
SVGInject.setOptions = function(options) {
|
||||
defaultOptions = mergeOptions(defaultOptions, options);
|
||||
};
|
||||
|
||||
|
||||
// Create a new instance of SVGInject
|
||||
SVGInject.create = createSVGInject;
|
||||
|
||||
|
||||
/**
|
||||
* Used in onerror Event of an `<img>` element to handle cases when the loading the original src fails
|
||||
* (for example if file is not found or if the browser does not support SVG). This triggers a call to the
|
||||
* options onFail hook if available. The optional second parameter will be set as the new src attribute
|
||||
* for the img element.
|
||||
*
|
||||
* @param {HTMLImageElement} img - an img element
|
||||
* @param {String} [fallbackSrc] - optional parameter fallback src
|
||||
*/
|
||||
SVGInject.err = function(img, fallbackSrc) {
|
||||
if (img) {
|
||||
if (img[__SVGINJECT] != FAIL) {
|
||||
removeEventListeners(img);
|
||||
|
||||
if (!IS_SVG_SUPPORTED) {
|
||||
svgNotSupported(img, defaultOptions);
|
||||
} else {
|
||||
removeOnLoadAttribute(img);
|
||||
loadFail(img, defaultOptions);
|
||||
}
|
||||
if (fallbackSrc) {
|
||||
removeOnLoadAttribute(img);
|
||||
img.src = fallbackSrc;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
imgNotSet();
|
||||
}
|
||||
};
|
||||
|
||||
window[globalName] = SVGInject;
|
||||
|
||||
return SVGInject;
|
||||
}
|
||||
|
||||
var SVGInjectInstance = createSVGInject('SVGInject');
|
||||
|
||||
if (typeof module == 'object' && typeof module.exports == 'object') {
|
||||
module.exports = SVGInjectInstance;
|
||||
}
|
||||
})(window, document);
|
||||
@ -7,240 +7,69 @@
|
||||
|
||||
#primary-toolbar {
|
||||
align-items: center;
|
||||
display:flex;
|
||||
position: absolute;
|
||||
display: flex;
|
||||
left: 10px;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
#olympus-toolbar-summary {
|
||||
#toolbar-summary {
|
||||
background-image: url("/images/icon-round.png");
|
||||
background-position: 20px 22px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 45px 45px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-indent: 60px;
|
||||
padding: 20px;
|
||||
text-indent: 60px;
|
||||
}
|
||||
|
||||
dl.ol-data-grid {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin: 0;
|
||||
row-gap: 4px;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dt {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dd {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
|
||||
dl.ol-data-grid dt.icon {
|
||||
text-indent: 10px;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dt.icon::before {
|
||||
content: url(/images/icons/speed.svg );
|
||||
display: inline-block;
|
||||
filter: invert(100%);
|
||||
width: 20px;
|
||||
translate: -20px 2px;
|
||||
}
|
||||
|
||||
|
||||
dl.ol-data-grid dt.icon-speed::before {
|
||||
content: url(/images/icons/speed.svg );
|
||||
}
|
||||
|
||||
|
||||
dl.ol-data-grid dt.icon-altitude::before {
|
||||
content: url(/images/icons/altitude.svg );
|
||||
}
|
||||
|
||||
dl.ol-data-grid dd {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.br-info::after {
|
||||
content: attr(data-bearing) '\00B0 / ' attr(data-distance) attr(data-distance-units);
|
||||
}
|
||||
|
||||
.br-info[data-message]::after {
|
||||
content: attr(data-message);
|
||||
}
|
||||
|
||||
.coordinates::after {
|
||||
content: attr(data-dd) "\00b0 " attr(data-mm) "'" attr(data-ss) "." attr(data-sss) '"' attr(data-label);
|
||||
}
|
||||
|
||||
.ol-button-box {
|
||||
column-gap: 6px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin: 5px 0;
|
||||
row-gap: 5px;
|
||||
}
|
||||
|
||||
.ol-button-box button {
|
||||
background-repeat: no-repeat;
|
||||
;
|
||||
border: 1px solid var(--accent-light-blue);
|
||||
color: var(--accent-light-blue);
|
||||
}
|
||||
|
||||
.ol-dialog {
|
||||
align-self: center;
|
||||
background-color: var(--background-slate-blue);
|
||||
color: white;
|
||||
justify-self: center;
|
||||
#connection-status-panel {
|
||||
bottom: 20px;
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.ol-panel.ol-dialog {
|
||||
padding: 24px 30px;
|
||||
}
|
||||
|
||||
.ol-dialog-close {
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
font-weight: var(--font-weight-bolder);
|
||||
#mouse-info-panel {
|
||||
bottom: 60px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: fit-content;
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.ol-dialog-close::before {
|
||||
content: "\d7";
|
||||
}
|
||||
|
||||
.ol-dialog-header {
|
||||
border-bottom: 1px solid var(--background-grey);
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.ol-dialog-content {
|
||||
margin:4px 0;
|
||||
}
|
||||
|
||||
.ol-dialog-footer {
|
||||
border-top: 1px solid var(--background-grey);
|
||||
padding-top: 15px;
|
||||
display: flex;
|
||||
right: 10px;
|
||||
row-gap: 10px;
|
||||
width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.ol-dialog.scrollable .ol-dialog-content {
|
||||
overflow-y: auto;
|
||||
#unit-control-panel {
|
||||
height: fit-content;
|
||||
left: 10px;
|
||||
position: absolute;
|
||||
top: 80px;
|
||||
width: 240px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.ol-checkbox label {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
white-space: nowrap;
|
||||
#unit-info-panel {
|
||||
bottom: 20px;
|
||||
font-size: 12px;
|
||||
left: 10px;
|
||||
position: absolute;
|
||||
width: fit-content;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.ol-checkbox input[type="checkbox"] {
|
||||
appearance: none;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.ol-checkbox input[type="checkbox"]::before {
|
||||
align-self: center;
|
||||
background-image: url("/images/icons/square-regular.svg");
|
||||
background-repeat: no-repeat;
|
||||
content: "";
|
||||
filter: invert(100%);
|
||||
display: flex;
|
||||
height: 16px;
|
||||
margin-right: 10px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.ol-checkbox input[type="checkbox"]:checked::before {
|
||||
background-image: url("/images/icons/square-check-solid.svg");
|
||||
}
|
||||
|
||||
.ol-text-input input {
|
||||
height: 32px;
|
||||
border-radius: 5px;
|
||||
color: var(--background-offwhite);
|
||||
background-color: var(--background-grey);
|
||||
border: 1px solid var(--background-grey);
|
||||
border-radius: var(--border-radius-sm);
|
||||
text-align: center;
|
||||
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
input[type=number] {
|
||||
-moz-appearance: textfield;
|
||||
appearance: textfield;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input[type=number]::-webkit-inner-spin-button,
|
||||
input[type=number]::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
[class|="ol-button"] {
|
||||
align-items: center;
|
||||
background-repeat: no-repeat;
|
||||
display: flex;
|
||||
font-weight: normal;
|
||||
padding: 8px 10px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
[class|="ol-button"]::before {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.ol-button-close {
|
||||
background: transparent;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.ol-button-close::before {
|
||||
content: "\d7";
|
||||
}
|
||||
|
||||
.ol-button-apply {
|
||||
background: transparent;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.ol-button-apply::before {
|
||||
content: "\2713";
|
||||
}
|
||||
|
||||
.ol-button-settings {
|
||||
background-color: var(--background-slate-blue);
|
||||
}
|
||||
|
||||
.ol-button-settings::before {
|
||||
background-image: url("/images/icons/gears-solid.svg");
|
||||
background-position: 0 50%;
|
||||
background-size: 24px 24px;
|
||||
content: "";
|
||||
display: flex;
|
||||
filter: invert(100%);
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
#info-popup {
|
||||
position: absolute;
|
||||
width: fit-content;
|
||||
height: fit-content;
|
||||
top: 100px;
|
||||
left: 50%;
|
||||
translate: -50% 0%;
|
||||
z-index: 9999;
|
||||
}
|
||||
@ -1,9 +1,4 @@
|
||||
:root {
|
||||
--airbase-marker-height: 40px;
|
||||
--airbase-marker-width: 40px;
|
||||
}
|
||||
|
||||
[data-object|="airbase"] {
|
||||
.airbase-icon {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
@ -11,35 +6,15 @@
|
||||
position: relative;
|
||||
}
|
||||
|
||||
[data-hide-airbase] #map-container [data-object|="airbase"] {
|
||||
display: none;
|
||||
.airbase-icon[data-coalition="red"] svg * {
|
||||
stroke: var(--unit-background-red);
|
||||
}
|
||||
|
||||
/******************************
|
||||
Marker
|
||||
******************************/
|
||||
|
||||
[data-object|="airbase"] .airbase {
|
||||
background-color: transparent;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
position: absolute;
|
||||
transform-origin: center;
|
||||
z-index: 3;
|
||||
.airbase-icon[data-coalition="blue"] svg * {
|
||||
stroke: var(--unit-background-blue);
|
||||
}
|
||||
|
||||
/* Airbase */
|
||||
[data-object|="airbase"] .airbase-marker {
|
||||
background-image: var(--airbase-marker-neutral-url);
|
||||
background-size: contain;
|
||||
height: var(--airbase-marker-height);
|
||||
width: var(--airbase-marker-width);
|
||||
.airbase-icon[data-coalition="neutral"] svg * {
|
||||
stroke: var(--unit-background-neutral);
|
||||
}
|
||||
|
||||
[data-object|="airbase"][data-coalition="red"] .airbase-marker {
|
||||
background-image: var(--airbase-marker-red-url);
|
||||
}
|
||||
|
||||
[data-object|="airbase"][data-coalition="blue"] .airbase-marker {
|
||||
background-image: var(--airbase-marker-blue-url);
|
||||
}
|
||||
22
client/public/stylesheets/markers/bullseye.css
Normal file
@ -0,0 +1,22 @@
|
||||
.bullseye-icon {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.bullseye-icon[data-coalition="red"] svg * {
|
||||
stroke: var(--unit-background-red);
|
||||
fill: var(--unit-background-red);
|
||||
}
|
||||
|
||||
.bullseye-icon[data-coalition="blue"] svg * {
|
||||
stroke: var(--unit-background-blue);
|
||||
fill: var(--unit-background-blue);
|
||||
}
|
||||
|
||||
.bullseye-icon[data-coalition="neutral"] svg * {
|
||||
stroke: var(--unit-background-neutral);
|
||||
fill: var(--unit-background-neutral);
|
||||
}
|
||||
@ -9,9 +9,9 @@
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@ -20,10 +20,10 @@
|
||||
background: var(--secondary-gunmetal-grey);
|
||||
display: flex;
|
||||
justify-self: center;
|
||||
transform-origin: bottom;
|
||||
translate: 0 -50%;
|
||||
padding-bottom: calc((var(--unit-aircraft-width) / 2) + var(--unit-stroke-width));
|
||||
position: absolute;
|
||||
transform-origin: bottom;
|
||||
translate: 0 -50%;
|
||||
width: var(--unit-aircraft-vvi-width);
|
||||
}
|
||||
|
||||
@ -49,41 +49,41 @@
|
||||
translate: -1px 1px;
|
||||
}
|
||||
|
||||
.unit-marker {
|
||||
.unit-icon {
|
||||
height: var(--unit-height);
|
||||
position: absolute;
|
||||
transform-origin: center;
|
||||
height: var(--unit-height);
|
||||
width: var(--unit-width);
|
||||
}
|
||||
|
||||
[data-is-selected] .unit-marker::before {
|
||||
content: "";
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
[data-is-selected] .unit-icon::before {
|
||||
background-color: var(--unit-spotlight-fill);
|
||||
border-radius: 50%;
|
||||
content: "";
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
/*** Basic colours ***/
|
||||
[data-coalition="blue"] .unit-marker svg>*:first-child {
|
||||
[data-coalition="blue"] .unit-icon svg>*:first-child {
|
||||
fill: var(--unit-background-blue);
|
||||
}
|
||||
|
||||
[data-coalition="red"] .unit-marker svg>*:first-child {
|
||||
[data-coalition="red"] .unit-icon svg>*:first-child {
|
||||
fill: var(--unit-background-red);
|
||||
}
|
||||
|
||||
[data-coalition="neutral"] .unit-marker svg>*:first-child {
|
||||
[data-coalition="neutral"] .unit-icon svg>*:first-child {
|
||||
fill: var(--unit-background-neutral);
|
||||
}
|
||||
|
||||
[data-is-selected] .unit-marker svg>*:first-child {
|
||||
[data-is-selected] .unit-icon svg>*:first-child {
|
||||
fill: white;
|
||||
}
|
||||
|
||||
[data-is-highlighted] .unit-marker svg>*:first-child {
|
||||
[data-is-highlighted] .unit-icon svg>*:first-child {
|
||||
stroke: white;
|
||||
}
|
||||
|
||||
@ -140,15 +140,15 @@
|
||||
|
||||
/*** Unit summary ***/
|
||||
[data-object|="unit"] .unit-summary {
|
||||
pointer-events: none;
|
||||
column-gap: 6px;
|
||||
color: white;
|
||||
column-gap: 6px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
justify-content: right;
|
||||
line-height: 12px;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
row-gap: 1px;
|
||||
text-shadow:
|
||||
@ -247,41 +247,41 @@
|
||||
/*** Unit state ***/
|
||||
[data-object|="unit"] .unit-state {
|
||||
background-repeat: no-repeat;
|
||||
position: absolute;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="rtb"] .unit-state {
|
||||
background-image: url("/theme/images/states/rtb.svg");
|
||||
background-image: url("/resources/theme/images/states/rtb.svg");
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="land"] .unit-state {
|
||||
background-image: url("/theme/images/states/rtb.svg");
|
||||
background-image: url("/resources/theme/images/states/rtb.svg");
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="idle"] .unit-state {
|
||||
background-image: url("/theme/images/states/idle.svg");
|
||||
background-image: url("/resources/theme/images/states/idle.svg");
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="attack"] .unit-state {
|
||||
background-image: url("/theme/images/states/attack.svg");
|
||||
background-image: url("/resources/theme/images/states/attack.svg");
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="follow"] .unit-state {
|
||||
background-image: url("/theme/images/states/follow.svg");
|
||||
background-image: url("/resources/theme/images/states/follow.svg");
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="refuel"] .unit-state {
|
||||
background-image: url("/theme/images/states/refuel.svg");
|
||||
background-image: url("/resources/theme/images/states/refuel.svg");
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="human"] .unit-state {
|
||||
background-image: url("/theme/images/states/human.svg");
|
||||
background-image: url("/resources/theme/images/states/human.svg");
|
||||
}
|
||||
|
||||
[data-object|="unit"][data-state="dcs"] .unit-state {
|
||||
background-image: url("/theme/images/states/dcs.svg");
|
||||
background-image: url("/resources/theme/images/states/dcs.svg");
|
||||
}
|
||||
|
||||
/*** Dead unit ***/
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
@import url("other/contextmenus.css");
|
||||
@import url("other/popup.css");
|
||||
@import url("markers/airbase.css");
|
||||
@import url("markers/bullseye.css");
|
||||
@import url("markers/units.css");
|
||||
|
||||
* {
|
||||
@ -88,8 +89,8 @@ form>div {
|
||||
|
||||
.ol-scrollable::-webkit-scrollbar-track {
|
||||
background-color: transparent;
|
||||
border-top-right-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
@ -104,8 +105,8 @@ form>div {
|
||||
.ol-scrollable::-webkit-scrollbar-thumb {
|
||||
background-color: white;
|
||||
border-radius: 100px;
|
||||
opacity: 0.8;
|
||||
margin-top: 10px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.ol-panel {
|
||||
@ -137,15 +138,15 @@ form>div {
|
||||
|
||||
.ol-ellipsed {
|
||||
display: inline-block;
|
||||
width: calc(100%);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
text-align: left;
|
||||
text-overflow: ellipsis;
|
||||
width: calc(100%);
|
||||
}
|
||||
|
||||
.ol-select {
|
||||
position: relative;
|
||||
color: var(--nav-text);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ol-select>.ol-select-value {
|
||||
@ -154,10 +155,10 @@ form>div {
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
min-width: 0;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.ol-select:not(.ol-select-image)>.ol-select-value {
|
||||
@ -165,12 +166,12 @@ form>div {
|
||||
background-color: var(--background-grey);
|
||||
border-radius: var(--border-radius-sm);
|
||||
height: 32px;
|
||||
padding-right: 30px;
|
||||
padding-left: 20px;
|
||||
|
||||
width: calc(100%);
|
||||
overflow: hidden;
|
||||
padding-left: 20px;
|
||||
padding-right: 30px;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
width: calc(100%);
|
||||
}
|
||||
|
||||
.ol-select.narrow:not(.ol-select-image)>.ol-select-value {
|
||||
@ -183,22 +184,22 @@ form>div {
|
||||
}
|
||||
|
||||
.ol-select:not(.ol-select-image)>.ol-select-value:after {
|
||||
content: url("/resources/theme/images/icons/chevron-down.svg");
|
||||
position: absolute;
|
||||
content: url("/themes/olympus/images/chevron-down.svg");
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.ol-select>.ol-select-options {
|
||||
border-radius: var(--border-radius-md);
|
||||
max-height: 0;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
max-height: 0;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.ol-select-options.scrollbar-visible {
|
||||
border-top-right-radius: 0px !important;
|
||||
border-bottom-right-radius: 0px !important;
|
||||
border-top-right-radius: 0px !important;
|
||||
}
|
||||
|
||||
.ol-select.ol-select-image>.ol-select-options {
|
||||
@ -207,11 +208,11 @@ form>div {
|
||||
|
||||
.ol-select.is-open>.ol-select-options {
|
||||
max-height: 382px;
|
||||
min-width: 100%;
|
||||
overflow: visible;
|
||||
overflow-y: auto;
|
||||
min-width: 100%;
|
||||
z-index: 9999;
|
||||
translate: 0px 5px;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.ol-select.is-open[data-position="top"]>.ol-select-options {
|
||||
@ -247,16 +248,16 @@ form>div {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
border-radius: var(--border-radius-sm);
|
||||
color: white;
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
padding: 6px 2px;
|
||||
padding: 5px;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
border-radius: var(--border-radius-sm);
|
||||
}
|
||||
|
||||
.ol-select>.ol-select-options>div a:hover,
|
||||
@ -368,13 +369,13 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.ol-panel .ol-group {
|
||||
align-items: center;
|
||||
border-radius: var(--border-radius-sm);
|
||||
column-gap: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
row-gap: 4px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.ol-group-header {
|
||||
@ -405,7 +406,7 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.ol-panel .ol-group-button-toggle button::before {
|
||||
background-image: url("/images/icons/square-check-solid.svg");
|
||||
background-image: url("/resources/theme/images/icons/square-check-solid.svg");
|
||||
background-repeat: no-repeat;
|
||||
content: "";
|
||||
filter: invert(100%);
|
||||
@ -415,7 +416,7 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.ol-panel .ol-group-button-toggle button.off::before {
|
||||
background-image: url("/images/icons/square-regular.svg");
|
||||
background-image: url("/resources/theme/images/icons/square-regular.svg");
|
||||
}
|
||||
|
||||
.highlight-primary {
|
||||
@ -470,9 +471,9 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.icon-small {
|
||||
width: 20px;
|
||||
padding: 2px;
|
||||
filter: invert(100%);
|
||||
padding: 2px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.ol-data-grid {
|
||||
@ -485,17 +486,17 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.slider {
|
||||
width: 100%;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
height: 2px;
|
||||
background: #d3d3d3;
|
||||
outline: none;
|
||||
height: 2px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
opacity: 0.7;
|
||||
outline: none;
|
||||
-webkit-transition: .2s;
|
||||
transition: opacity .2s;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.slider:hover {
|
||||
@ -505,11 +506,11 @@ nav.ol-panel> :last-child {
|
||||
.slider::-webkit-slider-thumb {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: gray;
|
||||
cursor: pointer;
|
||||
border-radius: 999px;
|
||||
cursor: pointer;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.active .slider::-webkit-slider-thumb {
|
||||
@ -517,11 +518,11 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.slider::-moz-range-thumb {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: gray;
|
||||
cursor: pointer;
|
||||
border-radius: 999px;
|
||||
cursor: pointer;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.active .slider::-moz-range-thumb {
|
||||
@ -529,25 +530,25 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.main-logo {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.ol-measure-box {
|
||||
position: absolute;
|
||||
background-color: var(--background-steel);
|
||||
border-radius: 999px;
|
||||
color: var(--primary-neutral);
|
||||
font-size: 12px;
|
||||
font-weight: var(--font-weight-bolder);
|
||||
height: fit-content;
|
||||
padding-bottom: 0.2em;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
background-color: var(--background-steel);
|
||||
border-radius: 999px;
|
||||
width: fit-content;
|
||||
height: fit-content;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
color: var(--primary-neutral);
|
||||
font-size: 12px;
|
||||
width: fit-content;
|
||||
z-index: 2000;
|
||||
font-weight: var(--font-weight-bolder);
|
||||
}
|
||||
|
||||
.ol-sortable .handle {
|
||||
@ -575,7 +576,7 @@ nav.ol-panel> :last-child {
|
||||
width: 28px;
|
||||
}
|
||||
|
||||
#unit-selection #unit-identification [data-object|="unit"] .unit-marker {
|
||||
#unit-selection #unit-identification [data-object|="unit"] .unit-icon {
|
||||
background-size: 28px 28px;
|
||||
height: 28px;
|
||||
width: 28px;
|
||||
@ -588,13 +589,13 @@ nav.ol-panel> :last-child {
|
||||
#unit-visibility-control button {
|
||||
border: none;
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
padding: 0px;
|
||||
width: 32px;
|
||||
}
|
||||
|
||||
#unit-visibility-control button svg {
|
||||
pointer-events: none;
|
||||
height: 16px;
|
||||
pointer-events: none;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
@ -633,31 +634,27 @@ nav.ol-panel> :last-child {
|
||||
#roe-buttons-container button,
|
||||
#reaction-to-threat-buttons-container button,
|
||||
#emissions-countermeasures-buttons-container button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--accent-light-blue);
|
||||
display: flex;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
#roe-buttons-container button.selected,
|
||||
#reaction-to-threat-buttons-container button.selected,
|
||||
#emissions-countermeasures-buttons-container button.selected {
|
||||
#unit-control-panel .ol-option-button button.selected {
|
||||
background-color: white;
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
#roe-buttons-container button.selected svg .foreground,
|
||||
#reaction-to-threat-buttons-container button.selected svg .foreground,
|
||||
#emissions-countermeasures-buttons-container button.selected svg .foreground {
|
||||
#unit-control-panel .ol-option-button button.selected svg * {
|
||||
fill: var(--background-steel);
|
||||
}
|
||||
|
||||
/****************************************************************************************/
|
||||
#splash-screen {
|
||||
background-image: url("/images/splash/splash_pic_ship.png");
|
||||
background-image: url("/resources/theme/images/splash/1.png");
|
||||
background-position: 100% 50%;
|
||||
background-size: 60%;
|
||||
border-radius: var(--border-radius-lg);
|
||||
@ -707,9 +704,9 @@ nav.ol-panel> :last-child {
|
||||
#splash-content #app-summary>* {
|
||||
height: fit-content;
|
||||
line-height: 25px;
|
||||
padding: 2px;
|
||||
white-space: nowrap;
|
||||
width: fit-content;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#splash-content .app-version {
|
||||
@ -721,8 +718,8 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
#splash-content #legal-stuff p {
|
||||
color: #FFF7;
|
||||
font-size: 10px;
|
||||
color:#FFF7;
|
||||
width: 120%;
|
||||
}
|
||||
|
||||
@ -735,34 +732,34 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
#gray-out {
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
z-index: 9999;
|
||||
background-color: #000A;
|
||||
height: 100%;
|
||||
left: 0px;
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
width: 100%;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
#authentication-form {
|
||||
display: flex;
|
||||
align-items: end;
|
||||
column-gap: 10px;
|
||||
margin: 10px 0px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
|
||||
#authentication-form>div {
|
||||
display: flex;
|
||||
align-items: start;
|
||||
row-gap: 4px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
row-gap: 4px;
|
||||
}
|
||||
|
||||
#authentication-form>div>input {
|
||||
height: 35px;
|
||||
border-radius: var(--border-radius-sm);
|
||||
border: 0px solid transparent;
|
||||
border-radius: var(--border-radius-sm);
|
||||
height: 35px;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
@ -776,13 +773,13 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
#connection-status[data-status="connecting"]::before {
|
||||
content: "Connecting...";
|
||||
animation: blinker 1s linear infinite;
|
||||
content: "Connecting...";
|
||||
}
|
||||
|
||||
#connection-status[data-status="failed"]::before {
|
||||
content: "Incorrect username/password!";
|
||||
color: var(--primary-red);
|
||||
content: "Incorrect username/password!";
|
||||
}
|
||||
|
||||
@keyframes blinker {
|
||||
@ -792,31 +789,31 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
#hotgroup-panel {
|
||||
position: absolute;
|
||||
bottom: 40px;
|
||||
column-gap: 10px;
|
||||
display: flex;
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
translate: -50%;
|
||||
z-index: 9999;
|
||||
display: flex;
|
||||
column-gap: 10px;
|
||||
}
|
||||
|
||||
#hotgroup-panel>div {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
align-items: center;
|
||||
background-color: var(--background-steel);
|
||||
border: 0px solid transparent;
|
||||
border-radius: var(--border-radius-sm);
|
||||
color: white;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
border: 0px solid transparent;
|
||||
height: 50px;
|
||||
justify-content: center;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
#hotgroup-panel>div:hover {
|
||||
cursor: pointer;
|
||||
border: 2px solid white;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.hotgroup-selector>.unit-hotgroup {
|
||||
@ -825,13 +822,230 @@ nav.ol-panel> :last-child {
|
||||
}
|
||||
|
||||
.ol-destination-preview-icon {
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
background-color: var(--secondary-yellow);
|
||||
pointer-events: none;
|
||||
border-radius: 999px;
|
||||
height: 52px;
|
||||
pointer-events: none;
|
||||
width: 52px;
|
||||
}
|
||||
|
||||
.ol-destination-preview {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
dl.ol-data-grid {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin: 0;
|
||||
row-gap: 4px;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dt {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dd {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dt.icon {
|
||||
text-indent: 10px;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dt.icon::before {
|
||||
content: url("/resources/theme/images/icons/speed.svg");
|
||||
display: inline-block;
|
||||
filter: invert(100%);
|
||||
translate: -20px 2px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
dl.ol-data-grid dt.icon-speed::before {
|
||||
content: url("/images/icons/speed.svg");
|
||||
}
|
||||
|
||||
dl.ol-data-grid dt.icon-altitude::before {
|
||||
content: url("/images/icons/altitude.svg");
|
||||
}
|
||||
|
||||
dl.ol-data-grid dd {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.br-info::after {
|
||||
content: attr(data-bearing) '\00B0 / ' attr(data-distance) attr(data-distance-units);
|
||||
}
|
||||
|
||||
.br-info[data-message]::after {
|
||||
content: attr(data-message);
|
||||
}
|
||||
|
||||
.coordinates::after {
|
||||
content: attr(data-dd) "\00b0 " attr(data-mm) "'" attr(data-ss) "." attr(data-sss) '"' attr(data-label);
|
||||
}
|
||||
|
||||
.ol-button-box {
|
||||
column-gap: 6px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
margin: 5px 0;
|
||||
row-gap: 5px;
|
||||
}
|
||||
|
||||
.ol-button-box button {
|
||||
background-repeat: no-repeat;
|
||||
;
|
||||
border: 1px solid var(--accent-light-blue);
|
||||
color: var(--accent-light-blue);
|
||||
}
|
||||
|
||||
.ol-dialog {
|
||||
align-self: center;
|
||||
background-color: var(--background-slate-blue);
|
||||
color: white;
|
||||
justify-self: center;
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.ol-panel.ol-dialog {
|
||||
padding: 24px 30px;
|
||||
}
|
||||
|
||||
.ol-dialog-close {
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
font-weight: var(--font-weight-bolder);
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.ol-dialog-close::before {
|
||||
content: "\d7";
|
||||
}
|
||||
|
||||
.ol-dialog-header {
|
||||
border-bottom: 1px solid var(--background-grey);
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.ol-dialog-content {
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
.ol-dialog-footer {
|
||||
border-top: 1px solid var(--background-grey);
|
||||
display: flex;
|
||||
padding-top: 15px;
|
||||
row-gap: 10px;
|
||||
}
|
||||
|
||||
.ol-dialog.scrollable .ol-dialog-content {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.ol-checkbox label {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ol-checkbox input[type="checkbox"] {
|
||||
appearance: none;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.ol-checkbox input[type="checkbox"]::before {
|
||||
align-self: center;
|
||||
background-image: url("/resources/theme/images/icons/square-regular.svg");
|
||||
background-repeat: no-repeat;
|
||||
content: "";
|
||||
display: flex;
|
||||
filter: invert(100%);
|
||||
height: 16px;
|
||||
margin-right: 10px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.ol-checkbox input[type="checkbox"]:checked::before {
|
||||
background-image: url("/resources/theme/images/icons/square-check-solid.svg");
|
||||
}
|
||||
|
||||
.ol-text-input input {
|
||||
background-color: var(--background-grey);
|
||||
border: 1px solid var(--background-grey);
|
||||
border-radius: 5px;
|
||||
border-radius: var(--border-radius-sm);
|
||||
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
|
||||
color: var(--background-offwhite);
|
||||
height: 32px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
input[type=number] {
|
||||
-moz-appearance: textfield;
|
||||
appearance: textfield;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input[type=number]::-webkit-inner-spin-button,
|
||||
input[type=number]::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
[class|="ol-button"] {
|
||||
align-items: center;
|
||||
background-repeat: no-repeat;
|
||||
display: flex;
|
||||
font-weight: normal;
|
||||
padding: 8px 10px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
[class|="ol-button"]::before {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.ol-button-close {
|
||||
background: transparent;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.ol-button-close::before {
|
||||
content: "\d7";
|
||||
}
|
||||
|
||||
.ol-button-apply {
|
||||
background: transparent;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.ol-button-apply::before {
|
||||
content: "\2713";
|
||||
}
|
||||
|
||||
.ol-button-settings {
|
||||
background-color: var(--background-slate-blue);
|
||||
}
|
||||
|
||||
.ol-button-settings::before {
|
||||
background-image: url("/resources/theme/images/icons/gears-solid.svg");
|
||||
background-position: 0 50%;
|
||||
background-size: 24px 24px;
|
||||
content: "";
|
||||
display: flex;
|
||||
filter: invert(100%);
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
@ -17,23 +17,23 @@
|
||||
}
|
||||
|
||||
#active-coalition-label {
|
||||
position: absolute;
|
||||
top: -28px;
|
||||
border-radius: 999px;
|
||||
width: fit-content;
|
||||
color: var(--nav-text);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
height: fit-content;
|
||||
padding: 3px 10px;
|
||||
padding-bottom: 3px;
|
||||
font-weight: 600;
|
||||
color: var(--nav-text);
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
top: -28px;
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
#context-menu-switch {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#map-contextmenu>div:nth-child(2){
|
||||
#map-contextmenu>div:nth-child(2) {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@ -41,22 +41,22 @@
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
#map-contextmenu>ul{
|
||||
#map-contextmenu>ul {
|
||||
max-height: 200px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#map-contextmenu .ol-panel {
|
||||
width: 100%;
|
||||
border-radius: var(--border-radius-sm);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#map-contextmenu ul {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#map-contextmenu>div:nth-child(n+3){
|
||||
#map-contextmenu>div:nth-child(n+3) {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@ -64,10 +64,10 @@
|
||||
row-gap: 5px;
|
||||
}
|
||||
|
||||
#map-contextmenu .ol-select-container{
|
||||
width: 100%;
|
||||
flex:0 0 auto;
|
||||
#map-contextmenu .ol-select-container {
|
||||
align-self: stretch;
|
||||
flex: 0 0 auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#aircraft-spawn-menu .ol-select.is-open .ol-select-options {
|
||||
@ -76,28 +76,28 @@
|
||||
|
||||
#aircraft-spawn-menu>button,
|
||||
#ground-unit-spawn-menu>button {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#aircraft-spawn-button {
|
||||
background-image: var( --spawn-aircraft-url );
|
||||
background-image: url("/resources/theme/images/buttons/spawn/aircraft.svg");
|
||||
background-size: 48px;
|
||||
}
|
||||
|
||||
#ground-unit-spawn-button {
|
||||
background-image: var( --spawn-groundunit-url );
|
||||
background-image: url("/resources/theme/images/buttons/spawn/ground.svg");
|
||||
background-size: 48px;
|
||||
}
|
||||
|
||||
#smoke-spawn-button {
|
||||
background-image: var( --spawn-smoke-url );
|
||||
background-image: url("/resources/theme/images/buttons/spawn/smoke.svg");
|
||||
background-size: 48px;
|
||||
}
|
||||
|
||||
.unit-spawn-button {
|
||||
border-radius: 0px;
|
||||
border: none;
|
||||
border-radius: 0px;
|
||||
height: 48px;
|
||||
margin-bottom: -10px;
|
||||
margin-top: -10px;
|
||||
@ -105,37 +105,34 @@
|
||||
}
|
||||
|
||||
.unit-spawn-button:last-of-type {
|
||||
border-top-right-radius: var(--border-radius-sm);
|
||||
border-bottom-right-radius: var(--border-radius-sm);
|
||||
border-top-right-radius: var(--border-radius-sm);
|
||||
}
|
||||
|
||||
[data-active-coalition="blue"].toggle-fill,
|
||||
[data-active-coalition="blue"].unit-spawn-button:hover,
|
||||
[data-active-coalition="blue"].unit-spawn-button.is-open,
|
||||
[data-active-coalition="blue"].unit-spawn-button:hover,
|
||||
[data-active-coalition="blue"].unit-spawn-button.is-open,
|
||||
[data-active-coalition="blue"]#active-coalition-label,
|
||||
[data-active-coalition="blue"].deploy-unit-button,
|
||||
[data-active-coalition="blue"]#spawn-airbase-aircraft-button
|
||||
{
|
||||
[data-active-coalition="blue"]#spawn-airbase-aircraft-button {
|
||||
background-color: var(--primary-blue)
|
||||
}
|
||||
|
||||
[data-active-coalition="red"].toggle-fill,
|
||||
[data-active-coalition="red"].unit-spawn-button:hover,
|
||||
[data-active-coalition="red"].unit-spawn-button.is-open,
|
||||
[data-active-coalition="red"].unit-spawn-button:hover,
|
||||
[data-active-coalition="red"].unit-spawn-button.is-open,
|
||||
[data-active-coalition="red"]#active-coalition-label,
|
||||
[data-active-coalition="red"].deploy-unit-button,
|
||||
[data-active-coalition="red"]#spawn-airbase-aircraft-button
|
||||
{
|
||||
[data-active-coalition="red"]#spawn-airbase-aircraft-button {
|
||||
background-color: var(--primary-red)
|
||||
}
|
||||
|
||||
[data-active-coalition="neutral"].toggle-fill,
|
||||
[data-active-coalition="neutral"].unit-spawn-button:hover,
|
||||
[data-active-coalition="neutral"].unit-spawn-button.is-open,
|
||||
[data-active-coalition="neutral"].unit-spawn-button:hover,
|
||||
[data-active-coalition="neutral"].unit-spawn-button.is-open,
|
||||
[data-active-coalition="neutral"]#active-coalition-label,
|
||||
[data-active-coalition="neutral"].deploy-unit-button,
|
||||
[data-active-coalition="neutral"]#spawn-airbase-aircraft-button
|
||||
{
|
||||
[data-active-coalition="neutral"]#spawn-airbase-aircraft-button {
|
||||
background-color: var(--primary-neutral)
|
||||
}
|
||||
|
||||
@ -144,11 +141,13 @@
|
||||
border: 1px solid var(--primary-blue);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
[data-active-coalition="red"].deploy-unit-button:disabled {
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--primary-red);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
[data-active-coalition="neutral"].deploy-unit-button:disabled {
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--primary-neutral);
|
||||
@ -158,9 +157,11 @@
|
||||
[data-active-coalition="blue"].toggle-fill::after {
|
||||
transform: translateX(0);
|
||||
}
|
||||
|
||||
[data-active-coalition="red"].toggle-fill::after {
|
||||
transform: translateX(var(--height));
|
||||
}
|
||||
|
||||
[data-active-coalition="neutral"].toggle-fill::after {
|
||||
transform: translateX(calc(var(--height) / 2));
|
||||
}
|
||||
@ -168,182 +169,198 @@
|
||||
[data-active-coalition="blue"]#active-coalition-label::after {
|
||||
content: "Create blue unit";
|
||||
}
|
||||
|
||||
[data-active-coalition="red"]#active-coalition-label::after {
|
||||
content: "Create red unit";
|
||||
}
|
||||
|
||||
[data-active-coalition="neutral"]#active-coalition-label::after {
|
||||
content: "Create neutral unit";
|
||||
}
|
||||
|
||||
#loadout-preview {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
column-gap: 20px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#loadout-list {
|
||||
align-content: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-content: center;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#unit-image {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
filter: invert(100%);
|
||||
margin-top: 10px;
|
||||
height: 100px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
#smoke-spawn-menu {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#smoke-spawn-menu>button {
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
column-gap: 10px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#smoke-spawn-menu>button::before {
|
||||
display: block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 999px;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 10px;
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
[data-smoke-color="red"]::before{ background-color: red; }
|
||||
[data-smoke-color="white"]::before{ background-color: white; }
|
||||
[data-smoke-color="blue"]::before{ background-color: blue; }
|
||||
[data-smoke-color="green"]::before{ background-color: green; }
|
||||
[data-smoke-color="orange"]::before{ background-color: orange; }
|
||||
[data-smoke-color="red"]::before {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
[data-smoke-color="white"]::before {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
[data-smoke-color="blue"]::before {
|
||||
background-color: blue;
|
||||
}
|
||||
|
||||
[data-smoke-color="green"]::before {
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
[data-smoke-color="orange"]::before {
|
||||
background-color: orange;
|
||||
}
|
||||
|
||||
/* Unit context menu */
|
||||
#unit-contextmenu {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: fit-content;
|
||||
width: fit-content;
|
||||
padding: 15px;
|
||||
position: absolute;
|
||||
row-gap: 5px;
|
||||
width: fit-content;
|
||||
z-index: 1000;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
#unit-contextmenu button {
|
||||
border: 1px solid var(--background-offwhite);
|
||||
border-radius: var(--border-radius-sm);
|
||||
padding: 12px;
|
||||
font-weight: normal;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
#unit-contextmenu div {
|
||||
align-content: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
#unit-contextmenu div:before {
|
||||
display: inline-block;
|
||||
filter: invert(100%);
|
||||
height: 16px;
|
||||
margin-right: 15px;
|
||||
width: 16px;
|
||||
display: inline-block;
|
||||
filter: invert(100%);
|
||||
height: 16px;
|
||||
margin-right: 15px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
#center-map::before {
|
||||
content: url( /images/icons/arrows-to-eye-solid.svg );
|
||||
content: url("/resources/theme/images/icons/arrows-to-eye-solid.svg");
|
||||
}
|
||||
|
||||
#refuel::before {
|
||||
content: url( /images/icons/fuel.svg );
|
||||
content: url("/resources/theme/images/icons/fuel.svg");
|
||||
}
|
||||
|
||||
#attack::before {
|
||||
content: url( /images/icons/sword.svg );
|
||||
content: url("/resources/theme/images/icons/sword.svg");
|
||||
}
|
||||
|
||||
#follow::before {
|
||||
content: url( /images/icons/follow.svg );
|
||||
content: url("/resources/theme/images/icons/follow.svg");
|
||||
}
|
||||
|
||||
#trail::before {
|
||||
content: url( /images/icons/trail.svg );
|
||||
content: url("/resources/theme/images/icons/trail.svg");
|
||||
}
|
||||
|
||||
#echelon-lh::before {
|
||||
content: url( /images/icons/echelon-lh.svg );
|
||||
content: url("/resources/theme/images/icons/echelon-lh.svg");
|
||||
}
|
||||
|
||||
#echelon-rh::before {
|
||||
content: url( /images/icons/echelon-rh.svg );
|
||||
content: url("/resources/theme/images/icons/echelon-rh.svg");
|
||||
}
|
||||
|
||||
#line-abreast::before {
|
||||
content: url( /images/icons/line-abreast.svg );
|
||||
content: url("/resources/theme/images/icons/line-abreast.svg");
|
||||
}
|
||||
|
||||
#front::before {
|
||||
content: url( /images/icons/front.svg );
|
||||
content: url("/resources/theme/images/icons/front.svg");
|
||||
}
|
||||
|
||||
#custom::before {
|
||||
content: url( /images/icons/custom.svg );
|
||||
content: url("/resources/theme/images/icons/custom.svg");
|
||||
}
|
||||
|
||||
#custom-formation-dialog {
|
||||
width: 250px;
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
#custom-formation-dialog > .ol-dialog-content {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
row-gap: 10px;
|
||||
#custom-formation-dialog>.ol-dialog-content {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
row-gap: 10px;
|
||||
}
|
||||
|
||||
#custom-formation-dialog > .ol-dialog-content > .ol-group {
|
||||
#custom-formation-dialog>.ol-dialog-content>.ol-group {
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
#reference-system {
|
||||
content: url( /images/reference-system.svg );
|
||||
content: url("/images/reference-system.svg");
|
||||
display: inline-block;
|
||||
filter: invert(100%);
|
||||
width: 50px;
|
||||
transform: translate(-50%, -50%);
|
||||
filter: invert(100%);
|
||||
position: absolute;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.formation-position-clock {
|
||||
position: relative;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
margin: 15px;
|
||||
position: relative;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.formation-position-clock > .clock-hand {
|
||||
transform: translate(-50%, -50%);
|
||||
display: flex;
|
||||
position: absolute;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 20px;
|
||||
.formation-position-clock>.clock-hand {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
height: 20px;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
@ -362,9 +379,9 @@
|
||||
--width: 40px;
|
||||
--height: calc(var(--width) / 2);
|
||||
--border-radius: calc(var(--height) / 2);
|
||||
cursor: pointer;
|
||||
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.toggle-input {
|
||||
@ -372,23 +389,22 @@
|
||||
}
|
||||
|
||||
.toggle-fill {
|
||||
position: relative;
|
||||
width: var(--width);
|
||||
height: var(--height);
|
||||
border-radius: var(--border-radius);
|
||||
height: var(--height);
|
||||
position: relative;
|
||||
transition: background-color 0.2s;
|
||||
width: var(--width);
|
||||
}
|
||||
|
||||
.toggle-fill::after {
|
||||
background-color: #ffffff;
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
|
||||
content: "";
|
||||
height: calc(var(--height) - 4px);
|
||||
left: 2;
|
||||
position: absolute;
|
||||
top: 2;
|
||||
left: 2;
|
||||
height: calc(var(--height) - 4px);
|
||||
width: calc(var(--height) - 4px);
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
|
||||
border-radius: var(--border-radius);
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
width: calc(var(--height) - 4px);
|
||||
}
|
||||
@ -1,13 +1,3 @@
|
||||
#info-popup {
|
||||
position: absolute;
|
||||
width: fit-content;
|
||||
height: fit-content;
|
||||
top: 100px;
|
||||
left: 50%;
|
||||
translate: -50% 0%;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.ol-popup > div {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
|
||||
@ -1,12 +1,3 @@
|
||||
#connection-status-panel {
|
||||
bottom: 20px;
|
||||
font-size:12px;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
width: 160px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
#connection-status-panel dt::before {
|
||||
content: "No connection";
|
||||
}
|
||||
@ -15,15 +6,14 @@
|
||||
border-radius: 50%;
|
||||
background: red;
|
||||
content: " ";
|
||||
height:12px;
|
||||
width:12px;
|
||||
height: 12px;
|
||||
width: 12px;
|
||||
}
|
||||
|
||||
|
||||
#connection-status-panel[data-is-connected] dt::before {
|
||||
content: "Connected";
|
||||
}
|
||||
|
||||
#connection-status-panel[data-is-connected] dd::after {
|
||||
background:var( --accent-green );
|
||||
background: var(--accent-green);
|
||||
}
|
||||
@ -1,91 +1,75 @@
|
||||
#mouse-info-panel {
|
||||
bottom: 60px;
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
height: fit-content;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
row-gap: 10px;
|
||||
width: 160px;
|
||||
z-index: 1000;
|
||||
#mouse-info-panel>* {
|
||||
background-color: var(--background-grey);
|
||||
border-radius: var(--border-radius-sm);
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
|
||||
#mouse-info-panel > * {
|
||||
background-color: var( --background-grey );
|
||||
border-radius: var( --border-radius-sm );
|
||||
padding:6px;
|
||||
}
|
||||
|
||||
|
||||
#mouse-info-panel dl {
|
||||
margin-bottom:4px;
|
||||
margin-bottom: 4px;
|
||||
row-gap: 8px;
|
||||
}
|
||||
|
||||
#mouse-info-panel dt {
|
||||
height:20px;
|
||||
width:30%;
|
||||
height: 20px;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
#mouse-info-panel dt::after {
|
||||
align-items: center;
|
||||
background-color: white;
|
||||
border-radius: var( --border-radius-sm );
|
||||
color: var( --background-steel );
|
||||
display:flex;
|
||||
font-size:15.6px;
|
||||
border-radius: var(--border-radius-sm);
|
||||
color: var(--background-steel);
|
||||
display: flex;
|
||||
font-size: 15.6px;
|
||||
font-weight: bolder;
|
||||
height:16px;
|
||||
height: 16px;
|
||||
justify-content: center;
|
||||
line-height: 16px;
|
||||
padding:4px;
|
||||
padding: 4px;
|
||||
text-transform: uppercase;
|
||||
width:16px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
#mouse-info-panel dt#ref-unit-position::after {
|
||||
background-image: url( "/images/icons/ruler.svg" );
|
||||
background-image: url("/resources/theme/images/icons/ruler.svg");
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-size:16px 16px;
|
||||
background-size: 16px 16px;
|
||||
content: "";
|
||||
}
|
||||
|
||||
#mouse-info-panel dt#ref-measure-position::after {
|
||||
background-image: url( "/images/pin.png" );
|
||||
background-image: url("/resources/theme/images/pin.png");
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-size:16px 16px;
|
||||
background-size: 16px 16px;
|
||||
content: "";
|
||||
}
|
||||
|
||||
|
||||
#mouse-info-panel dt[data-label]::after {
|
||||
content: attr( data-label );
|
||||
content: attr(data-label);
|
||||
}
|
||||
|
||||
#mouse-info-panel dt[data-coalition="blue"]::after {
|
||||
background-color: var( --primary-blue );
|
||||
background-color: var(--primary-blue);
|
||||
}
|
||||
|
||||
#mouse-info-panel dt[data-coalition="red"]::after {
|
||||
background-color: var( --primary-red );
|
||||
background-color: var(--primary-red);
|
||||
}
|
||||
|
||||
|
||||
#mouse-info-panel dt[data-tooltip]:hover::before {
|
||||
background-color: var( --background-grey );
|
||||
background-color: var(--background-grey);
|
||||
border-radius: 5px;
|
||||
content: attr( data-tooltip );
|
||||
display:flex;
|
||||
content: attr(data-tooltip);
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
padding: 5px;
|
||||
position: absolute;
|
||||
translate: calc( -100% - 15px ) 0;
|
||||
translate: calc(-100% - 15px) 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#mouse-info-panel dd {
|
||||
width:70%;
|
||||
width: 70%;
|
||||
}
|
||||
@ -2,16 +2,6 @@ body.feature-forceShowUnitControlPanel #unit-control-panel {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
|
||||
#unit-control-panel {
|
||||
height: fit-content;
|
||||
left: 10px;
|
||||
position: absolute;
|
||||
top: 80px;
|
||||
width: 240px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
#unit-control-panel h3 {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
@ -33,31 +23,31 @@ body.feature-forceShowUnitControlPanel #unit-control-panel {
|
||||
display: flex;
|
||||
font-size: 11px;
|
||||
height: 32px;
|
||||
margin-right: 5px;
|
||||
padding: 8px 0;
|
||||
position: relative;
|
||||
width: calc(100% - 5px);
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#unit-control-panel #selected-units-container button::before {
|
||||
background-color: var( --primary-neutral );
|
||||
background-color: var(--primary-neutral);
|
||||
border-radius: 999px;
|
||||
content: attr(data-short-label);
|
||||
font-size: 10px;
|
||||
margin: 2px 4px;
|
||||
max-width: 30px;
|
||||
min-width: 20px;
|
||||
overflow: hidden;
|
||||
padding: 4px 6px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
width: fit-content;
|
||||
min-width: 20px;
|
||||
max-width: 30px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#unit-control-panel #selected-units-container button:hover::before {
|
||||
background-color: black;
|
||||
max-width: 100%;
|
||||
text-overflow: unset;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
#unit-control-panel #selected-units-container button[data-coalition="blue"]::before {
|
||||
@ -120,13 +110,12 @@ body.feature-forceShowUnitControlPanel #unit-control-panel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#advanced-settings-dialog>.ol-dialog-content {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
row-gap: 10px;
|
||||
}
|
||||
|
||||
@ -146,8 +135,8 @@ body.feature-forceShowUnitControlPanel #unit-control-panel {
|
||||
}
|
||||
|
||||
#advanced-settings-dialog hr {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
#general-settings-grid {
|
||||
|
||||
@ -1,119 +1,106 @@
|
||||
|
||||
#unit-info-panel {
|
||||
bottom: 20px;
|
||||
font-size:12px;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
width: fit-content;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
|
||||
#unit-info-panel #unit-name {
|
||||
padding:0px 0;
|
||||
margin-bottom:4px;
|
||||
padding: 0px 0;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
#unit-info-panel #current-task {
|
||||
border-radius: var( --border-radius-lg );
|
||||
margin-top:8px;
|
||||
padding:6px 16px;
|
||||
border-radius: var(--border-radius-lg);
|
||||
margin-top: 8px;
|
||||
padding: 6px 16px;
|
||||
}
|
||||
|
||||
#unit-info-panel #current-task::after {
|
||||
content: attr( data-current-task );
|
||||
display:block;
|
||||
content: attr(data-current-task);
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
#loadout {
|
||||
display:flex;
|
||||
display: flex;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#loadout-silhouette {
|
||||
align-items: center;
|
||||
display:flex;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
width:100px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
#loadout-silhouette::before {
|
||||
background-image: var( --loadout-background-image );
|
||||
background-image: var(--loadout-background-image);
|
||||
background-repeat: no-repeat;
|
||||
background-size:75px 75px;
|
||||
content:"";
|
||||
display:block;
|
||||
filter: invert( 100% );
|
||||
height:75px;
|
||||
translate:-10px 0;
|
||||
width:75px;
|
||||
background-size: 75px 75px;
|
||||
content: "";
|
||||
display: block;
|
||||
filter: invert(100%);
|
||||
height: 75px;
|
||||
translate: -10px 0;
|
||||
width: 75px;
|
||||
}
|
||||
|
||||
#loadout-items {
|
||||
align-self: center;
|
||||
display:flex;
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
row-gap: 8px;
|
||||
}
|
||||
|
||||
|
||||
#loadout-items > * {
|
||||
#loadout-items>* {
|
||||
align-items: center;
|
||||
column-gap: 8px;
|
||||
display:flex;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#loadout-items > *::before {
|
||||
#loadout-items>*::before {
|
||||
align-items: center;
|
||||
background-color: var( --secondary-light-grey );
|
||||
border-radius: var( --border-radius-sm );
|
||||
content: attr( data-qty );
|
||||
display:flex;
|
||||
font-weight: var( --font-weight-bolder );
|
||||
padding:1px 4px;
|
||||
background-color: var(--secondary-light-grey);
|
||||
border-radius: var(--border-radius-sm);
|
||||
content: attr(data-qty);
|
||||
display: flex;
|
||||
font-weight: var(--font-weight-bolder);
|
||||
padding: 1px 4px;
|
||||
}
|
||||
|
||||
#loadout-items > *::after {
|
||||
content: attr( data-item );
|
||||
#loadout-items>*::after {
|
||||
content: attr(data-item);
|
||||
overflow: hidden;
|
||||
position:relative;
|
||||
position: relative;
|
||||
text-overflow: ellipsis;
|
||||
width:80px;
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
|
||||
#fuel-percentage {
|
||||
align-items: center;
|
||||
display:flex;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#fuel-percentage::before {
|
||||
content: url( /images/icons/fuel.svg );
|
||||
display:inline-block;
|
||||
filter:invert(100%);
|
||||
height:16px;
|
||||
margin-right:6px;
|
||||
width:16px;
|
||||
content: url("/resources/theme/images/icons/fuel.svg");
|
||||
display: inline-block;
|
||||
filter: invert(100%);
|
||||
height: 16px;
|
||||
margin-right: 6px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
#fuel-percentage::after {
|
||||
content: attr( data-percentage ) "%";
|
||||
content: attr(data-percentage) "%";
|
||||
}
|
||||
|
||||
|
||||
#fuel-display {
|
||||
background-color: var( --background-grey );
|
||||
border-radius: var( --border-radius-md );
|
||||
height:6px;
|
||||
margin-top:4px;
|
||||
background-color: var(--background-grey);
|
||||
border-radius: var(--border-radius-md);
|
||||
height: 6px;
|
||||
margin-top: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#fuel-display #fuel-bar {
|
||||
border-radius: var( --border-radius-md );
|
||||
height:100%;
|
||||
}
|
||||
|
||||
border-radius: var(--border-radius-md);
|
||||
height: 100%;
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.4955 18.2238C12.7115 15.3416 13.888 9.51496 16.8654 9.26602C20.5872 8.95485 25.1646 8.07764 24.7964 21.0345" stroke="#5CA7FF" stroke-linecap="round" stroke-dasharray="2 2"/>
|
||||
<path d="M11.8419 26.3021C11.8812 26.3949 11.9723 26.4546 12.0729 26.4546C12.1735 26.4546 12.2646 26.3949 12.3039 26.3021L12.997 24.685C13.0504 24.5592 13.0787 24.4257 13.0787 24.2889L13.0787 23.0788L15.3418 21.7587L15.3418 22.0541C15.3418 22.2631 15.51 22.4313 15.719 22.4313C15.928 22.4313 16.0962 22.2631 16.0962 22.0541L16.0962 21.174L16.0962 20.6711L16.0962 20.2939C16.0962 20.0849 15.928 19.9167 15.719 19.9167C15.51 19.9167 15.3418 20.0849 15.3418 20.2939L15.3418 20.4197L13.0787 20.4197L13.0787 19.9058L13.9981 19.0995C14.0531 19.0523 14.0845 18.9832 14.0845 18.9109L14.0845 18.6595C14.0845 18.5212 13.9714 18.408 13.8331 18.408L12.3244 18.408L12.3244 19.4138C12.3244 19.5521 12.2112 19.6653 12.0729 19.6653C11.9346 19.6653 11.8214 19.5521 11.8214 19.4138L11.8214 18.408L10.3127 18.408C10.1744 18.408 10.0613 18.5212 10.0613 18.6595L10.0613 18.9109C10.0613 18.9832 10.0926 19.0523 10.1477 19.0995L11.0671 19.9058L11.0671 20.4197L8.80398 20.4197L8.80398 20.2939C8.80398 20.0849 8.6358 19.9167 8.42679 19.9167C8.21778 19.9167 8.04961 20.0849 8.04961 20.2939L8.04961 20.6711L8.04961 21.174L8.04961 22.0541C8.04961 22.2631 8.21778 22.4313 8.42679 22.4313C8.6358 22.4313 8.80398 22.2631 8.80398 22.0541L8.80398 21.7587L11.0671 23.0788L11.0671 24.2889C11.0671 24.4257 11.0954 24.5592 11.1488 24.685L11.8419 26.3021Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M21.582 14.7988C21.9629 14.4473 21.9629 13.832 21.582 13.4805C21.2305 13.0996 20.6152 13.0996 20.2637 13.4805L17.1875 16.5566L14.082 13.4805C13.7305 13.0996 13.1152 13.0996 12.7637 13.4805C12.3828 13.832 12.3828 14.4473 12.7637 14.7988L15.8398 17.875L12.7637 20.9805C12.3828 21.332 12.3828 21.9473 12.7637 22.2988C13.1152 22.6797 13.7305 22.6797 14.082 22.2988L17.1875 19.2227L20.2637 22.2988C20.6152 22.6797 21.2305 22.6797 21.582 22.2988C21.9629 21.9473 21.9629 21.332 21.582 20.9805L18.5059 17.875L21.582 14.7988Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 647 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.25 13.5C12.25 12.6797 12.9062 12 13.75 12H17.5C18.3203 12 19 12.6797 19 13.5V18H19.1875C20.3125 18 21.25 18.9375 21.25 20.0625V20.8125C21.25 21.1406 21.4844 21.375 21.8125 21.375C22.1172 21.375 22.375 21.1406 22.375 20.8125V17.2031C21.7188 17.0391 21.25 16.4531 21.25 15.75V14.25L20.5 13.5C20.2891 13.3125 20.2891 12.9609 20.5 12.75C20.6875 12.5625 21.0391 12.5625 21.25 12.75L23.0547 14.5781C23.3359 14.8594 23.5 15.2344 23.5 15.6328V15.9375V16.5V17.25V20.8125C23.5 21.75 22.7266 22.5 21.8125 22.5C20.875 22.5 20.125 21.75 20.125 20.8125V20.0625C20.125 19.5469 19.7031 19.125 19.1875 19.125H19V22.5C19.3984 22.5 19.75 22.8516 19.75 23.25C19.75 23.6719 19.3984 24 19 24H12.25C11.8281 24 11.5 23.6719 11.5 23.25C11.5 22.8516 11.8281 22.5 12.25 22.5V13.5ZM13.75 13.875V16.125C13.75 16.3359 13.9141 16.5 14.125 16.5H17.125C17.3125 16.5 17.5 16.3359 17.5 16.125V13.875C17.5 13.6875 17.3125 13.5 17.125 13.5H14.125C13.9141 13.5 13.75 13.6875 13.75 13.875Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="15" height="19" viewBox="0 0 15 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.582 7.17432C11.9629 6.82275 11.9629 6.20752 11.582 5.85596C11.2305 5.4751 10.6152 5.4751 10.2637 5.85596L7.1875 8.93213L4.08203 5.85596C3.73047 5.4751 3.11523 5.4751 2.76367 5.85596C2.38281 6.20752 2.38281 6.82275 2.76367 7.17432L5.83984 10.2505L2.76367 13.356C2.38281 13.7075 2.38281 14.3228 2.76367 14.6743C3.11523 15.0552 3.73047 15.0552 4.08203 14.6743L7.1875 11.5981L10.2637 14.6743C10.6152 15.0552 11.2305 15.0552 11.582 14.6743C11.9629 14.3228 11.9629 13.7075 11.582 13.356L8.50586 10.2505L11.582 7.17432Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 647 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M24.5996 17.625C24.5996 18.082 24.2188 18.4375 23.7871 18.4375H22.9746L23 22.5C23 22.5762 23 22.6523 23 22.7031V23.1094C23 23.6934 22.543 24.125 21.9844 24.125H21.5781C21.5273 24.125 21.502 24.125 21.4766 24.125C21.4512 24.125 21.4004 24.125 21.375 24.125H20.5625H19.9531C19.3691 24.125 18.9375 23.6934 18.9375 23.1094V22.5V20.875C18.9375 20.4434 18.5566 20.0625 18.125 20.0625H16.5C16.043 20.0625 15.6875 20.4434 15.6875 20.875V22.5V23.1094C15.6875 23.6934 15.2305 24.125 14.6719 24.125H14.0625H13.25C13.1992 24.125 13.1738 24.125 13.123 24.125C13.0977 24.125 13.0723 24.125 13.0469 24.125H12.6406C12.0566 24.125 11.625 23.6934 11.625 23.1094V20.2656C11.625 20.2656 11.625 20.2402 11.625 20.2148V18.4375H10.8125C10.3555 18.4375 10 18.082 10 17.625C10 17.3965 10.0762 17.1934 10.2539 17.0156L16.7539 11.3281C16.9316 11.1504 17.1348 11.125 17.3125 11.125C17.4902 11.125 17.6934 11.1758 17.8457 11.3027L24.3203 17.0156C24.5234 17.1934 24.625 17.3965 24.5996 17.625Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="16" height="19" viewBox="0 0 16 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.1875 8.84424C12.1875 10.1919 11.748 11.4517 11.0156 12.4478L14.707 16.1685C15.0879 16.52 15.0879 17.1353 14.707 17.4868C14.3555 17.8677 13.7402 17.8677 13.3887 17.4868L9.66797 13.7661C8.67188 14.5278 7.41211 14.938 6.09375 14.938C2.72461 14.938 0 12.2134 0 8.84424C0 5.50439 2.72461 2.75049 6.09375 2.75049C9.43359 2.75049 12.1875 5.50439 12.1875 8.84424ZM6.09375 13.063C8.4082 13.063 10.3125 11.188 10.3125 8.84424C10.3125 6.52979 8.4082 4.62549 6.09375 4.62549C3.75 4.62549 1.875 6.52979 1.875 8.84424C1.875 11.188 3.75 13.063 6.09375 13.063Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 679 B |
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="15"
|
||||
height="15"
|
||||
viewBox="0 0 15 15"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="designated.svg"
|
||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
id="namedview6"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
width="30px"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="5.9428571"
|
||||
inkscape:cx="-29.026442"
|
||||
inkscape:cy="16.237981"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="m 7.5000002,0 c 0.498,0 0.9375,0.4395 0.9375,0.9375 V 1.2598 C 11.1621,1.6699 13.3301,3.8379002 13.7402,6.5625002 h 0.3223 c 0.498,0 0.9375,0.4395 0.9375,0.9375 0,0.5273 -0.4395,0.9375 -0.9375,0.9375 H 13.7402 C 13.3301,11.1914 11.1621,13.3594 8.4375002,13.7695 v 0.293 c 0,0.5273 -0.4395,0.9375 -0.9375,0.9375 -0.5273,0 -0.9375,-0.4102 -0.9375,-0.9375 v -0.293 C 3.8086002,13.3594 1.6406,11.1914 1.2305,8.4375002 h -0.293 c -0.5273,0 -0.9375,-0.4102 -0.9375,-0.9375 0,-0.498 0.4102,-0.9375 0.9375,-0.9375 h 0.293 C 1.6406,3.8379002 3.8086002,1.6699 6.5625002,1.2598 V 0.9375 c 0,-0.498 0.4102,-0.9375 0.9375,-0.9375 z m -4.3652,8.4375002 c 0.3515,1.7284998 1.6992,3.0761998 3.4277,3.4276998 V 11.25 c 0,-0.498 0.4102,-0.9375 0.9375,-0.9375 0.498,0 0.9375,0.4395 0.9375,0.9375 v 0.6152 C 10.1367,11.5137 11.4844,10.166 11.8359,8.4375002 H 11.25 c -0.5273,0 -0.9375,-0.4102 -0.9375,-0.9375 0,-0.498 0.4102,-0.9375 0.9375,-0.9375 h 0.5859 c -0.3515,-1.6992 -1.6992,-3.0469 -3.3983998,-3.3984 v 0.5859 c 0,0.5273 -0.4395,0.9375 -0.9375,0.9375 -0.5273,0 -0.9375,-0.4102 -0.9375,-0.9375 v -0.5859 c -1.7285,0.3515 -3.0762,1.6992 -3.4277,3.3984 h 0.6152 c 0.498,0 0.9375,0.4395 0.9375,0.9375 0,0.5273 -0.4395,0.9375 -0.9375,0.9375 z m 4.3652,0 c -0.5273,0 -0.9375,-0.4102 -0.9375,-0.9375 0,-0.498 0.4102,-0.9375 0.9375,-0.9375 0.498,0 0.9375,0.4395 0.9375,0.9375 0,0.5273 -0.4395,0.9375 -0.9375,0.9375 z"
|
||||
fill="#5ca7ff"
|
||||
id="path2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="14.063629"
|
||||
height="14.9414"
|
||||
viewBox="0 0 14.063629 14.9414"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="return.svg"
|
||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
id="namedview6"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="23.771429"
|
||||
inkscape:cx="3.218149"
|
||||
inkscape:cy="7.1304087"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="m 7.0324294,0 c 0.1172,0 0.2637,0.0293 0.3809,0.0879 l 5.5077996,2.3437 c 0.6445,0.293 1.1425,0.9082 1.1425,1.67 -0.0292,2.9296 -1.2304,8.2324 -6.2694996,10.664 -0.498,0.2344 -1.0547,0.2344 -1.5527,0 -5.0391,-2.4316 -6.24020004,-7.7344 -6.24020004,-10.664 -0.0293,-0.7618 0.4687,-1.377 1.11320004,-1.67 l 5.5078,-2.3437 C 6.7394294,0.0293 6.8859294,0 7.0324294,0 Z m 0,1.9629 V 13.0371 C 11.075429,11.0742 12.159429,6.7676 12.188629,4.1602 Z"
|
||||
fill="#5ca7ff"
|
||||
id="path2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="13.126647"
|
||||
height="15.015483"
|
||||
viewBox="0 0 13.126647 15.015483"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="free.svg"
|
||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
id="namedview6"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="43.789474"
|
||||
inkscape:cx="4.5330529"
|
||||
inkscape:cy="6.7710337"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="m 10.796771,3.75 c 0,1.31836 -0.7618,2.46094 -1.8750496,3.13476 v 0.61525 c 0,0.5273 -0.43945,0.9375 -0.9375,0.9375 h -2.8125 c -0.52734,0 -0.9375,-0.4102 -0.9375,-0.9375 V 6.88476 c -1.14258,-0.67382 -1.875,-1.8164 -1.875,-3.13476 0,-2.05078 1.875,-3.75 4.21875,-3.75 2.31445,0 4.2187996,1.69922 4.2187996,3.75 z M 4.9373514,5.15625 c 0.49804,0 0.9375,-0.41016 0.9375,-0.9375 0,-0.49805 -0.43946,-0.9375 -0.9375,-0.9375 -0.52735,0 -0.9375,0.43945 -0.9375,0.9375 0,0.52734 0.41015,0.9375 0.9375,0.9375 z m 4.21872,-0.9375 c 0,-0.49805 -0.43943,-0.9375 -0.93748,-0.9375 -0.52734,0 -0.9375,0.43945 -0.9375,0.9375 0,0.52734 0.41016,0.9375 0.9375,0.9375 0.49805,0 0.93748,-0.41016 0.93748,-0.9375 z M 0.10336144,8.02731 c 0.23438,-0.4687 0.79102,-0.6445 1.25976996,-0.4101 l 5.21484,2.6074 5.1854996,-2.6074 c 0.4688,-0.2344 1.0254,-0.0586 1.2598,0.4101 0.2344,0.4688 0.0586,1.0254 -0.4101,1.2598 l -3.9551196,1.9629 3.9551196,1.9922 c 0.4687,0.2344 0.6445,0.791 0.4101,1.2597 -0.2344,0.4688 -0.791,0.6446 -1.2598,0.4102 l -5.1854996,-2.6074 -5.21484,2.6074 c -0.46874996,0.2344 -1.02538996,0.0586 -1.25976996,-0.4102 -0.234374,-0.4687 -0.058593,-1.0253 0.41016,-1.2597 L 4.4685914,11.25001 0.51352144,9.28711 c -0.468753,-0.2344 -0.644534,-0.791 -0.41016,-1.2598 z"
|
||||
fill="#5ca7ff"
|
||||
id="path2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="9.3896503"
|
||||
height="9.3896503"
|
||||
viewBox="0 0 9.3896503 9.3896503"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="hold.svg"
|
||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
id="namedview6"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="23.771429"
|
||||
inkscape:cx="1.1989183"
|
||||
inkscape:cy="4.311899"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="m 9.103975,1.603975 c 0.3809,-0.3515 0.3809,-0.9668 0,-1.3183 -0.3515,-0.3809 -0.9668,-0.3809 -1.3183,0 l -3.0762,3.0761 -3.1055,-3.0761 c -0.3515,-0.3809 -0.9668,-0.3809 -1.3183,0 -0.3809,0.3515 -0.3809,0.9668 0,1.3183 l 3.0761,3.0762 -3.0761,3.1055 c -0.3809,0.3515 -0.3809,0.9668 0,1.3183 0.3515,0.3809 0.9668,0.3809 1.3183,0 l 3.1055,-3.0761 3.0762,3.0761 c 0.3515,0.3809 0.9668,0.3809 1.3183,0 0.3809,-0.3515 0.3809,-0.9668 0,-1.3183 l -3.0761,-3.1055 z"
|
||||
fill="#5ca7ff"
|
||||
id="path2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
@ -45,7 +45,8 @@
|
||||
stroke="#5ca7ff"
|
||||
stroke-linecap="round"
|
||||
stroke-dasharray="2, 2"
|
||||
id="path4" />
|
||||
id="path4"
|
||||
style="fill:none" />
|
||||
<path
|
||||
d="m 14.783034,12.805026 -0.1001,0.8985 0.9106,-0.2539 0.0806,0.6152 -0.8301,0.0586 0.5444,0.7251 -0.5542,0.2954 -0.3808,-0.7642 -0.3345,0.7593 -0.5762,-0.2905 0.5396,-0.7251 -0.8252,-0.0635 0.0952,-0.6103 0.8911,0.2539 -0.1001,-0.8985 z"
|
||||
fill="#5ca7ff"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 498 B After Width: | Height: | Size: 498 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 638 B After Width: | Height: | Size: 638 B |
|
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 450 B |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 695 B After Width: | Height: | Size: 695 B |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 433 B After Width: | Height: | Size: 433 B |
|
Before Width: | Height: | Size: 730 B After Width: | Height: | Size: 730 B |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 821 B After Width: | Height: | Size: 821 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 496 B |
|
Before Width: | Height: | Size: 497 B After Width: | Height: | Size: 497 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
43
client/public/themes/olympus/images/markers/bullseye.svg
Normal file
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="0 0 512 512"
|
||||
version="1.1"
|
||||
id="svg170"
|
||||
sodipodi:docname="bullseye.svg"
|
||||
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs174" />
|
||||
<sodipodi:namedview
|
||||
id="namedview172"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.6347656"
|
||||
inkscape:cx="319.00597"
|
||||
inkscape:cy="305.85424"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg170" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.0417;stroke-linecap:round"
|
||||
id="path927"
|
||||
cx="256"
|
||||
cy="256"
|
||||
r="256" />
|
||||
<!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
|
||||
<path
|
||||
d="M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"
|
||||
id="path168" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 618 B |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M19.4199 20.4688C20.1055 20.3672 20.7402 19.9609 21.1211 19.377L25.2344 13.0293C25.5391 12.5215 25.4629 11.8613 25.0312 11.4551C24.5996 11.0488 23.9395 11.0234 23.4824 11.3789L17.4648 15.8984C16.8555 16.3555 16.5 17.0664 16.5 17.8281L19.4199 20.4688ZM18.9121 21.1035L15.9668 18.4629C14.4434 18.5137 13.25 19.7578 13.25 21.2812C13.25 21.3828 13.25 21.4844 13.25 21.5859C13.3008 22.043 12.9961 22.5 12.5391 22.5H12.4375C11.9805 22.5 11.625 22.8809 11.625 23.3125C11.625 23.7695 11.9805 24.125 12.4375 24.125H16.0938C17.6426 24.125 18.9375 22.8555 18.9375 21.2812C18.9375 21.2305 18.9121 21.1543 18.9121 21.1035Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 740 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M19.4199 20.4688C20.1055 20.3672 20.7402 19.9609 21.1211 19.377L25.2344 13.0293C25.5391 12.5215 25.4629 11.8613 25.0312 11.4551C24.5996 11.0488 23.9395 11.0234 23.4824 11.3789L17.4648 15.8984C16.8555 16.3555 16.5 17.0664 16.5 17.8281L19.4199 20.4688ZM18.9121 21.1035L15.9668 18.4629C14.4434 18.5137 13.25 19.7578 13.25 21.2812C13.25 21.3828 13.25 21.4844 13.25 21.5859C13.3008 22.043 12.9961 22.5 12.5391 22.5H12.4375C11.9805 22.5 11.625 22.8809 11.625 23.3125C11.625 23.7695 11.9805 24.125 12.4375 24.125H16.0938C17.6426 24.125 18.9375 22.8555 18.9375 21.2812C18.9375 21.2305 18.9121 21.1543 18.9121 21.1035Z" fill="#202831"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 740 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M19.4199 20.4688C20.1055 20.3672 20.7402 19.9609 21.1211 19.377L25.2344 13.0293C25.5391 12.5215 25.4629 11.8613 25.0312 11.4551C24.5996 11.0488 23.9395 11.0234 23.4824 11.3789L17.4648 15.8984C16.8555 16.3555 16.5 17.0664 16.5 17.8281L19.4199 20.4688ZM18.9121 21.1035L15.9668 18.4629C14.4434 18.5137 13.25 19.7578 13.25 21.2812C13.25 21.3828 13.25 21.4844 13.25 21.5859C13.3008 22.043 12.9961 22.5 12.5391 22.5H12.4375C11.9805 22.5 11.625 22.8809 11.625 23.3125C11.625 23.7695 11.9805 24.125 12.4375 24.125H16.0938C17.6426 24.125 18.9375 22.8555 18.9375 21.2812C18.9375 21.2305 18.9121 21.1543 18.9121 21.1035Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 738 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.125 14C13.125 13.3164 13.6719 12.75 14.375 12.75H17.5C18.1836 12.75 18.75 13.3164 18.75 14V17.75H18.9062C19.8438 17.75 20.625 18.5312 20.625 19.4688V20.0938C20.625 20.3672 20.8203 20.5625 21.0938 20.5625C21.3477 20.5625 21.5625 20.3672 21.5625 20.0938V17.0859C21.0156 16.9492 20.625 16.4609 20.625 15.875V14.625L20 14C19.8242 13.8438 19.8242 13.5508 20 13.375C20.1562 13.2188 20.4492 13.2188 20.625 13.375L22.1289 14.8984C22.3633 15.1328 22.5 15.4453 22.5 15.7773V16.0312V16.5V17.125V20.0938C22.5 20.875 21.8555 21.5 21.0938 21.5C20.3125 21.5 19.6875 20.875 19.6875 20.0938V19.4688C19.6875 19.0391 19.3359 18.6875 18.9062 18.6875H18.75V21.5C19.082 21.5 19.375 21.793 19.375 22.125C19.375 22.4766 19.082 22.75 18.75 22.75H13.125C12.7734 22.75 12.5 22.4766 12.5 22.125C12.5 21.793 12.7734 21.5 13.125 21.5V14ZM14.375 14.3125V16.1875C14.375 16.3633 14.5117 16.5 14.6875 16.5H17.1875C17.3438 16.5 17.5 16.3633 17.5 16.1875V14.3125C17.5 14.1562 17.3438 14 17.1875 14H14.6875C14.5117 14 14.375 14.1562 14.375 14.3125Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.125 14C13.125 13.3164 13.6719 12.75 14.375 12.75H17.5C18.1836 12.75 18.75 13.3164 18.75 14V17.75H18.9062C19.8438 17.75 20.625 18.5312 20.625 19.4688V20.0938C20.625 20.3672 20.8203 20.5625 21.0938 20.5625C21.3477 20.5625 21.5625 20.3672 21.5625 20.0938V17.0859C21.0156 16.9492 20.625 16.4609 20.625 15.875V14.625L20 14C19.8242 13.8438 19.8242 13.5508 20 13.375C20.1562 13.2188 20.4492 13.2188 20.625 13.375L22.1289 14.8984C22.3633 15.1328 22.5 15.4453 22.5 15.7773V16.0312V16.5V17.125V20.0938C22.5 20.875 21.8555 21.5 21.0938 21.5C20.3125 21.5 19.6875 20.875 19.6875 20.0938V19.4688C19.6875 19.0391 19.3359 18.6875 18.9062 18.6875H18.75V21.5C19.082 21.5 19.375 21.793 19.375 22.125C19.375 22.4766 19.082 22.75 18.75 22.75H13.125C12.7734 22.75 12.5 22.4766 12.5 22.125C12.5 21.793 12.7734 21.5 13.125 21.5V14ZM14.375 14.3125V16.1875C14.375 16.3633 14.5117 16.5 14.6875 16.5H17.1875C17.3438 16.5 17.5 16.3633 17.5 16.1875V14.3125C17.5 14.1562 17.3438 14 17.1875 14H14.6875C14.5117 14 14.375 14.1562 14.375 14.3125Z" fill="#202831"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.125 14C13.125 13.3164 13.6719 12.75 14.375 12.75H17.5C18.1836 12.75 18.75 13.3164 18.75 14V17.75H18.9062C19.8438 17.75 20.625 18.5312 20.625 19.4688V20.0938C20.625 20.3672 20.8203 20.5625 21.0938 20.5625C21.3477 20.5625 21.5625 20.3672 21.5625 20.0938V17.0859C21.0156 16.9492 20.625 16.4609 20.625 15.875V14.625L20 14C19.8242 13.8438 19.8242 13.5508 20 13.375C20.1562 13.2188 20.4492 13.2188 20.625 13.375L22.1289 14.8984C22.3633 15.1328 22.5 15.4453 22.5 15.7773V16.0312V16.5V17.125V20.0938C22.5 20.875 21.8555 21.5 21.0938 21.5C20.3125 21.5 19.6875 20.875 19.6875 20.0938V19.4688C19.6875 19.0391 19.3359 18.6875 18.9062 18.6875H18.75V21.5C19.082 21.5 19.375 21.793 19.375 22.125C19.375 22.4766 19.082 22.75 18.75 22.75H13.125C12.7734 22.75 12.5 22.4766 12.5 22.125C12.5 21.793 12.7734 21.5 13.125 21.5V14ZM14.375 14.3125V16.1875C14.375 16.3633 14.5117 16.5 14.6875 16.5H17.1875C17.3438 16.5 17.5 16.3633 17.5 16.1875V14.3125C17.5 14.1562 17.3438 14 17.1875 14H14.6875C14.5117 14 14.375 14.1562 14.375 14.3125Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.6562 13.5312C20.6562 15.0352 18.6328 17.6875 17.7578 18.7812C17.5664 19.0547 17.1562 19.0547 16.9648 18.7812C16.0898 17.6875 14.0938 15.0352 14.0938 13.5312C14.0938 11.7266 15.543 10.25 17.375 10.25C19.1797 10.25 20.6562 11.7266 20.6562 13.5312ZM20.875 15.7461C20.957 15.5547 21.0391 15.3633 21.1211 15.1719C21.1484 15.1445 21.1484 15.1172 21.1758 15.0898L24.3477 13.8047C24.7578 13.6406 25.25 13.9414 25.25 14.4062V21.8164C25.25 22.0898 25.0859 22.3359 24.8125 22.4453L20.875 24.0039V15.7461ZM13.2461 14.0508C13.3281 14.4336 13.4375 14.8164 13.6016 15.1719C13.6836 15.3633 13.7656 15.5547 13.875 15.7461V22.6094L10.375 24.0039C9.96484 24.168 9.5 23.8672 9.5 23.4023V15.9922C9.5 15.7188 9.66406 15.4727 9.91016 15.3906L13.2461 14.0508ZM18.4414 19.3281C18.8242 18.8633 19.4258 18.0977 20 17.2227V24.0586L14.75 22.5547V17.2227C15.2969 18.0977 15.8984 18.8633 16.2812 19.3281C16.8281 20.0391 17.8945 20.0391 18.4414 19.3281ZM17.375 14.4062C17.9766 14.4062 18.4688 13.9414 18.4688 13.3125C18.4688 12.7109 17.9766 12.2188 17.375 12.2188C16.7461 12.2188 16.2812 12.7109 16.2812 13.3125C16.2812 13.9414 16.7461 14.4062 17.375 14.4062Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.6562 13.5312C20.6562 15.0352 18.6328 17.6875 17.7578 18.7812C17.5664 19.0547 17.1562 19.0547 16.9648 18.7812C16.0898 17.6875 14.0938 15.0352 14.0938 13.5312C14.0938 11.7266 15.543 10.25 17.375 10.25C19.1797 10.25 20.6562 11.7266 20.6562 13.5312ZM20.875 15.7461C20.957 15.5547 21.0391 15.3633 21.1211 15.1719C21.1484 15.1445 21.1484 15.1172 21.1758 15.0898L24.3477 13.8047C24.7578 13.6406 25.25 13.9414 25.25 14.4062V21.8164C25.25 22.0898 25.0859 22.3359 24.8125 22.4453L20.875 24.0039V15.7461ZM13.2461 14.0508C13.3281 14.4336 13.4375 14.8164 13.6016 15.1719C13.6836 15.3633 13.7656 15.5547 13.875 15.7461V22.6094L10.375 24.0039C9.96484 24.168 9.5 23.8672 9.5 23.4023V15.9922C9.5 15.7188 9.66406 15.4727 9.91016 15.3906L13.2461 14.0508ZM18.4414 19.3281C18.8242 18.8633 19.4258 18.0977 20 17.2227V24.0586L14.75 22.5547V17.2227C15.2969 18.0977 15.8984 18.8633 16.2812 19.3281C16.8281 20.0391 17.8945 20.0391 18.4414 19.3281ZM17.375 14.4062C17.9766 14.4062 18.4688 13.9414 18.4688 13.3125C18.4688 12.7109 17.9766 12.2188 17.375 12.2188C16.7461 12.2188 16.2812 12.7109 16.2812 13.3125C16.2812 13.9414 16.7461 14.4062 17.375 14.4062Z" fill="#202831"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M20.6562 13.5312C20.6562 15.0352 18.6328 17.6875 17.7578 18.7812C17.5664 19.0547 17.1562 19.0547 16.9648 18.7812C16.0898 17.6875 14.0938 15.0352 14.0938 13.5312C14.0938 11.7266 15.543 10.25 17.375 10.25C19.1797 10.25 20.6562 11.7266 20.6562 13.5312ZM20.875 15.7461C20.957 15.5547 21.0391 15.3633 21.1211 15.1719C21.1484 15.1445 21.1484 15.1172 21.1758 15.0898L24.3477 13.8047C24.7578 13.6406 25.25 13.9414 25.25 14.4062V21.8164C25.25 22.0898 25.0859 22.3359 24.8125 22.4453L20.875 24.0039V15.7461ZM13.2461 14.0508C13.3281 14.4336 13.4375 14.8164 13.6016 15.1719C13.6836 15.3633 13.7656 15.5547 13.875 15.7461V22.6094L10.375 24.0039C9.96484 24.168 9.5 23.8672 9.5 23.4023V15.9922C9.5 15.7188 9.66406 15.4727 9.91016 15.3906L13.2461 14.0508ZM18.4414 19.3281C18.8242 18.8633 19.4258 18.0977 20 17.2227V24.0586L14.75 22.5547V17.2227C15.2969 18.0977 15.8984 18.8633 16.2812 19.3281C16.8281 20.0391 17.8945 20.0391 18.4414 19.3281ZM17.375 14.4062C17.9766 14.4062 18.4688 13.9414 18.4688 13.3125C18.4688 12.7109 17.9766 12.2188 17.375 12.2188C16.7461 12.2188 16.2812 12.7109 16.2812 13.3125C16.2812 13.9414 16.7461 14.4062 17.375 14.4062Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M23.1211 16C24.1172 16 25.875 16.8496 25.875 17.875C25.875 18.9297 24.1172 19.75 23.1211 19.75H19.6934L16.7637 24.9062C16.5879 25.1992 16.2656 25.375 15.9434 25.375H14.3027C13.9805 25.375 13.7461 25.082 13.834 24.7891L15.2695 19.75H12.2812L10.9922 21.4492C10.9043 21.5664 10.7871 21.625 10.6406 21.625H9.41016C9.17578 21.625 9 21.4492 9 21.2148C9 21.1855 9 21.1562 9 21.127L9.9375 17.875L9 14.6523C9 14.623 9 14.5938 9 14.5352C9 14.3301 9.17578 14.125 9.41016 14.125H10.6406C10.7871 14.125 10.9043 14.2129 10.9922 14.3301L12.2812 16H15.2695L13.834 10.9902C13.7461 10.6973 13.9805 10.375 14.3027 10.375H15.9434C16.2656 10.375 16.5879 10.5801 16.7637 10.873L19.6934 16H23.1211Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 806 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M23.1211 16C24.1172 16 25.875 16.8496 25.875 17.875C25.875 18.9297 24.1172 19.75 23.1211 19.75H19.6934L16.7637 24.9062C16.5879 25.1992 16.2656 25.375 15.9434 25.375H14.3027C13.9805 25.375 13.7461 25.082 13.834 24.7891L15.2695 19.75H12.2812L10.9922 21.4492C10.9043 21.5664 10.7871 21.625 10.6406 21.625H9.41016C9.17578 21.625 9 21.4492 9 21.2148C9 21.1855 9 21.1562 9 21.127L9.9375 17.875L9 14.6523C9 14.623 9 14.5938 9 14.5352C9 14.3301 9.17578 14.125 9.41016 14.125H10.6406C10.7871 14.125 10.9043 14.2129 10.9922 14.3301L12.2812 16H15.2695L13.834 10.9902C13.7461 10.6973 13.9805 10.375 14.3027 10.375H15.9434C16.2656 10.375 16.5879 10.5801 16.7637 10.873L19.6934 16H23.1211Z" fill="#202831"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 806 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M23.1211 16C24.1172 16 25.875 16.8496 25.875 17.875C25.875 18.9297 24.1172 19.75 23.1211 19.75H19.6934L16.7637 24.9062C16.5879 25.1992 16.2656 25.375 15.9434 25.375H14.3027C13.9805 25.375 13.7461 25.082 13.834 24.7891L15.2695 19.75H12.2812L10.9922 21.4492C10.9043 21.5664 10.7871 21.625 10.6406 21.625H9.41016C9.17578 21.625 9 21.4492 9 21.2148C9 21.1855 9 21.1562 9 21.127L9.9375 17.875L9 14.6523C9 14.623 9 14.5938 9 14.5352C9 14.3301 9.17578 14.125 9.41016 14.125H10.6406C10.7871 14.125 10.9043 14.2129 10.9922 14.3301L12.2812 16H15.2695L13.834 10.9902C13.7461 10.6973 13.9805 10.375 14.3027 10.375H15.9434C16.2656 10.375 16.5879 10.5801 16.7637 10.873L19.6934 16H23.1211Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 804 B |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.0234 14.3594C17.2285 14.1543 17.3164 13.8906 17.1992 13.627C17.1406 13.4512 17.0527 13.3047 16.9941 13.1582L16.9062 13.0117C16.8184 12.8652 16.7012 12.7188 16.6133 12.5723C16.4375 12.3672 16.1445 12.2793 15.8809 12.3672L15.0605 12.6309C14.7383 12.3965 14.3867 12.1621 14.0059 12.0449L13.8301 11.1953C13.7715 10.9023 13.5371 10.6973 13.2734 10.668C13.0684 10.6387 12.8633 10.6094 12.6875 10.6094C12.4824 10.6094 12.2773 10.6387 12.0723 10.668C11.8086 10.6973 11.6035 10.9023 11.5449 11.166L11.3691 12.0449C10.959 12.1914 10.6074 12.3965 10.2852 12.6309L9.46484 12.3672C9.20117 12.2793 8.9082 12.3672 8.73242 12.5723C8.64453 12.7188 8.55664 12.8652 8.43945 13.0117L8.35156 13.1582C8.29297 13.3047 8.20508 13.4512 8.14648 13.627C8.0293 13.8906 8.11719 14.1543 8.32227 14.3594L8.9668 14.9453C8.9375 15.1211 8.9375 15.3262 8.9375 15.5312C8.9375 15.7656 8.9375 15.9707 8.9668 16.1465L8.32227 16.7324C8.11719 16.9082 8.0293 17.2012 8.14648 17.4648C8.20508 17.6113 8.29297 17.7871 8.35156 17.9336L8.43945 18.0801C8.52734 18.2266 8.64453 18.373 8.73242 18.5195C8.9082 18.7246 9.20117 18.8125 9.46484 18.7246L10.2852 18.4316C10.6074 18.6953 10.959 18.9004 11.3398 19.0469L11.5449 19.8965C11.5742 20.1895 11.8086 20.3945 12.0723 20.4238C12.2773 20.4531 12.4824 20.4531 12.6582 20.4531C12.8633 20.4531 13.0684 20.4531 13.2734 20.4238C13.5371 20.3945 13.7422 20.1895 13.8008 19.8965L13.9766 19.0469C14.3867 18.9004 14.7383 18.6953 15.0605 18.4316L15.8809 18.7246C16.1445 18.8125 16.4375 18.7246 16.6133 18.5195C16.7012 18.373 16.7891 18.2266 16.877 18.0801L16.9648 17.9336C17.0527 17.7871 17.1406 17.6113 17.1992 17.4648C17.3164 17.2012 17.2285 16.9082 17.0234 16.7324L16.3789 16.1465C16.4082 15.9414 16.4082 15.7363 16.4082 15.5312C16.4082 15.3262 16.4082 15.1211 16.3789 14.916L17.0234 14.3594ZM14.0938 15.5312C14.0938 16.3223 13.4492 16.9375 12.6875 16.9375C11.8965 16.9375 11.2812 16.3223 11.2812 15.5312C11.2812 14.7695 11.8965 14.125 12.6875 14.125C13.4492 14.125 14.0938 14.7695 14.0938 15.5312ZM22.7656 25.0527C22.9707 25.2578 23.2344 25.3457 23.498 25.2285C23.6738 25.1699 23.8203 25.082 23.9668 25.0234L24.1133 24.9062C24.2598 24.8184 24.4062 24.7305 24.5527 24.6426C24.7578 24.4668 24.8457 24.1738 24.7578 23.9102L24.4941 23.0898C24.7285 22.7676 24.9629 22.416 25.0801 22.0352L25.959 21.8301C26.2227 21.8008 26.4277 21.5664 26.457 21.3027C26.4863 21.0977 26.5156 20.8926 26.5156 20.7168C26.5156 20.5117 26.4863 20.3066 26.457 20.1016C26.4277 19.8379 26.2227 19.6328 25.959 19.5742L25.0801 19.3691C24.9336 18.9883 24.7285 18.6367 24.4941 18.3145L24.7578 17.4941C24.8457 17.2305 24.7578 16.9375 24.5527 16.7617C24.4062 16.6738 24.2598 16.5859 24.1133 16.4688L23.9668 16.3809C23.8203 16.3223 23.6738 16.2344 23.498 16.1758C23.2637 16.0586 22.9707 16.1465 22.7656 16.3516L22.1797 16.9961C22.0039 16.9668 21.7988 16.9668 21.5938 16.9668C21.3594 16.9668 21.1543 16.9668 20.9785 16.9961L20.3926 16.3516C20.2168 16.1465 19.9238 16.0586 19.6602 16.1758C19.5137 16.2344 19.3379 16.3223 19.1914 16.3809L19.0449 16.4688C18.8984 16.5566 18.752 16.6738 18.6055 16.7617C18.4004 16.9375 18.3125 17.2305 18.4004 17.4941L18.6934 18.3145C18.4297 18.6367 18.2246 18.9883 18.0781 19.3691L17.2285 19.5449C16.9355 19.6035 16.7305 19.8379 16.7012 20.1016C16.6719 20.3066 16.6719 20.4824 16.6719 20.6875C16.6719 20.8926 16.6719 21.0977 16.7012 21.3027C16.7305 21.5664 16.9355 21.7715 17.2285 21.8301L18.0781 22.0059C18.2246 22.416 18.4297 22.7676 18.6934 23.0898L18.4004 23.9102C18.3125 24.1738 18.4004 24.4668 18.6055 24.6133C18.752 24.7305 18.8984 24.8184 19.0449 24.9062L19.1914 24.9941C19.3379 25.082 19.5137 25.1699 19.6602 25.2285C19.9238 25.3457 20.2168 25.2578 20.3926 25.0527L20.9785 24.4082C21.1836 24.4375 21.3887 24.4375 21.5938 24.4375C21.7988 24.4375 22.0039 24.4375 22.209 24.4082L22.7656 25.0527ZM21.5938 22.0938C20.8027 22.0938 20.1875 21.4785 20.1875 20.6875C20.1875 19.9258 20.8027 19.2812 21.5938 19.2812C22.3555 19.2812 23 19.9258 23 20.6875C23 21.4785 22.3555 22.0938 21.5938 22.0938Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.0 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.0234 14.3594C17.2285 14.1543 17.3164 13.8906 17.1992 13.627C17.1406 13.4512 17.0527 13.3047 16.9941 13.1582L16.9062 13.0117C16.8184 12.8652 16.7012 12.7188 16.6133 12.5723C16.4375 12.3672 16.1445 12.2793 15.8809 12.3672L15.0605 12.6309C14.7383 12.3965 14.3867 12.1621 14.0059 12.0449L13.8301 11.1953C13.7715 10.9023 13.5371 10.6973 13.2734 10.668C13.0684 10.6387 12.8633 10.6094 12.6875 10.6094C12.4824 10.6094 12.2773 10.6387 12.0723 10.668C11.8086 10.6973 11.6035 10.9023 11.5449 11.166L11.3691 12.0449C10.959 12.1914 10.6074 12.3965 10.2852 12.6309L9.46484 12.3672C9.20117 12.2793 8.9082 12.3672 8.73242 12.5723C8.64453 12.7188 8.55664 12.8652 8.43945 13.0117L8.35156 13.1582C8.29297 13.3047 8.20508 13.4512 8.14648 13.627C8.0293 13.8906 8.11719 14.1543 8.32227 14.3594L8.9668 14.9453C8.9375 15.1211 8.9375 15.3262 8.9375 15.5312C8.9375 15.7656 8.9375 15.9707 8.9668 16.1465L8.32227 16.7324C8.11719 16.9082 8.0293 17.2012 8.14648 17.4648C8.20508 17.6113 8.29297 17.7871 8.35156 17.9336L8.43945 18.0801C8.52734 18.2266 8.64453 18.373 8.73242 18.5195C8.9082 18.7246 9.20117 18.8125 9.46484 18.7246L10.2852 18.4316C10.6074 18.6953 10.959 18.9004 11.3398 19.0469L11.5449 19.8965C11.5742 20.1895 11.8086 20.3945 12.0723 20.4238C12.2773 20.4531 12.4824 20.4531 12.6582 20.4531C12.8633 20.4531 13.0684 20.4531 13.2734 20.4238C13.5371 20.3945 13.7422 20.1895 13.8008 19.8965L13.9766 19.0469C14.3867 18.9004 14.7383 18.6953 15.0605 18.4316L15.8809 18.7246C16.1445 18.8125 16.4375 18.7246 16.6133 18.5195C16.7012 18.373 16.7891 18.2266 16.877 18.0801L16.9648 17.9336C17.0527 17.7871 17.1406 17.6113 17.1992 17.4648C17.3164 17.2012 17.2285 16.9082 17.0234 16.7324L16.3789 16.1465C16.4082 15.9414 16.4082 15.7363 16.4082 15.5312C16.4082 15.3262 16.4082 15.1211 16.3789 14.916L17.0234 14.3594ZM14.0938 15.5312C14.0938 16.3223 13.4492 16.9375 12.6875 16.9375C11.8965 16.9375 11.2812 16.3223 11.2812 15.5312C11.2812 14.7695 11.8965 14.125 12.6875 14.125C13.4492 14.125 14.0938 14.7695 14.0938 15.5312ZM22.7656 25.0527C22.9707 25.2578 23.2344 25.3457 23.498 25.2285C23.6738 25.1699 23.8203 25.082 23.9668 25.0234L24.1133 24.9062C24.2598 24.8184 24.4062 24.7305 24.5527 24.6426C24.7578 24.4668 24.8457 24.1738 24.7578 23.9102L24.4941 23.0898C24.7285 22.7676 24.9629 22.416 25.0801 22.0352L25.959 21.8301C26.2227 21.8008 26.4277 21.5664 26.457 21.3027C26.4863 21.0977 26.5156 20.8926 26.5156 20.7168C26.5156 20.5117 26.4863 20.3066 26.457 20.1016C26.4277 19.8379 26.2227 19.6328 25.959 19.5742L25.0801 19.3691C24.9336 18.9883 24.7285 18.6367 24.4941 18.3145L24.7578 17.4941C24.8457 17.2305 24.7578 16.9375 24.5527 16.7617C24.4062 16.6738 24.2598 16.5859 24.1133 16.4688L23.9668 16.3809C23.8203 16.3223 23.6738 16.2344 23.498 16.1758C23.2637 16.0586 22.9707 16.1465 22.7656 16.3516L22.1797 16.9961C22.0039 16.9668 21.7988 16.9668 21.5938 16.9668C21.3594 16.9668 21.1543 16.9668 20.9785 16.9961L20.3926 16.3516C20.2168 16.1465 19.9238 16.0586 19.6602 16.1758C19.5137 16.2344 19.3379 16.3223 19.1914 16.3809L19.0449 16.4688C18.8984 16.5566 18.752 16.6738 18.6055 16.7617C18.4004 16.9375 18.3125 17.2305 18.4004 17.4941L18.6934 18.3145C18.4297 18.6367 18.2246 18.9883 18.0781 19.3691L17.2285 19.5449C16.9355 19.6035 16.7305 19.8379 16.7012 20.1016C16.6719 20.3066 16.6719 20.4824 16.6719 20.6875C16.6719 20.8926 16.6719 21.0977 16.7012 21.3027C16.7305 21.5664 16.9355 21.7715 17.2285 21.8301L18.0781 22.0059C18.2246 22.416 18.4297 22.7676 18.6934 23.0898L18.4004 23.9102C18.3125 24.1738 18.4004 24.4668 18.6055 24.6133C18.752 24.7305 18.8984 24.8184 19.0449 24.9062L19.1914 24.9941C19.3379 25.082 19.5137 25.1699 19.6602 25.2285C19.9238 25.3457 20.2168 25.2578 20.3926 25.0527L20.9785 24.4082C21.1836 24.4375 21.3887 24.4375 21.5938 24.4375C21.7988 24.4375 22.0039 24.4375 22.209 24.4082L22.7656 25.0527ZM21.5938 22.0938C20.8027 22.0938 20.1875 21.4785 20.1875 20.6875C20.1875 19.9258 20.8027 19.2812 21.5938 19.2812C22.3555 19.2812 23 19.9258 23 20.6875C23 21.4785 22.3555 22.0938 21.5938 22.0938Z" fill="#202831"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.0 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.0234 14.3594C17.2285 14.1543 17.3164 13.8906 17.1992 13.627C17.1406 13.4512 17.0527 13.3047 16.9941 13.1582L16.9062 13.0117C16.8184 12.8652 16.7012 12.7188 16.6133 12.5723C16.4375 12.3672 16.1445 12.2793 15.8809 12.3672L15.0605 12.6309C14.7383 12.3965 14.3867 12.1621 14.0059 12.0449L13.8301 11.1953C13.7715 10.9023 13.5371 10.6973 13.2734 10.668C13.0684 10.6387 12.8633 10.6094 12.6875 10.6094C12.4824 10.6094 12.2773 10.6387 12.0723 10.668C11.8086 10.6973 11.6035 10.9023 11.5449 11.166L11.3691 12.0449C10.959 12.1914 10.6074 12.3965 10.2852 12.6309L9.46484 12.3672C9.20117 12.2793 8.9082 12.3672 8.73242 12.5723C8.64453 12.7188 8.55664 12.8652 8.43945 13.0117L8.35156 13.1582C8.29297 13.3047 8.20508 13.4512 8.14648 13.627C8.0293 13.8906 8.11719 14.1543 8.32227 14.3594L8.9668 14.9453C8.9375 15.1211 8.9375 15.3262 8.9375 15.5312C8.9375 15.7656 8.9375 15.9707 8.9668 16.1465L8.32227 16.7324C8.11719 16.9082 8.0293 17.2012 8.14648 17.4648C8.20508 17.6113 8.29297 17.7871 8.35156 17.9336L8.43945 18.0801C8.52734 18.2266 8.64453 18.373 8.73242 18.5195C8.9082 18.7246 9.20117 18.8125 9.46484 18.7246L10.2852 18.4316C10.6074 18.6953 10.959 18.9004 11.3398 19.0469L11.5449 19.8965C11.5742 20.1895 11.8086 20.3945 12.0723 20.4238C12.2773 20.4531 12.4824 20.4531 12.6582 20.4531C12.8633 20.4531 13.0684 20.4531 13.2734 20.4238C13.5371 20.3945 13.7422 20.1895 13.8008 19.8965L13.9766 19.0469C14.3867 18.9004 14.7383 18.6953 15.0605 18.4316L15.8809 18.7246C16.1445 18.8125 16.4375 18.7246 16.6133 18.5195C16.7012 18.373 16.7891 18.2266 16.877 18.0801L16.9648 17.9336C17.0527 17.7871 17.1406 17.6113 17.1992 17.4648C17.3164 17.2012 17.2285 16.9082 17.0234 16.7324L16.3789 16.1465C16.4082 15.9414 16.4082 15.7363 16.4082 15.5312C16.4082 15.3262 16.4082 15.1211 16.3789 14.916L17.0234 14.3594ZM14.0938 15.5312C14.0938 16.3223 13.4492 16.9375 12.6875 16.9375C11.8965 16.9375 11.2812 16.3223 11.2812 15.5312C11.2812 14.7695 11.8965 14.125 12.6875 14.125C13.4492 14.125 14.0938 14.7695 14.0938 15.5312ZM22.7656 25.0527C22.9707 25.2578 23.2344 25.3457 23.498 25.2285C23.6738 25.1699 23.8203 25.082 23.9668 25.0234L24.1133 24.9062C24.2598 24.8184 24.4062 24.7305 24.5527 24.6426C24.7578 24.4668 24.8457 24.1738 24.7578 23.9102L24.4941 23.0898C24.7285 22.7676 24.9629 22.416 25.0801 22.0352L25.959 21.8301C26.2227 21.8008 26.4277 21.5664 26.457 21.3027C26.4863 21.0977 26.5156 20.8926 26.5156 20.7168C26.5156 20.5117 26.4863 20.3066 26.457 20.1016C26.4277 19.8379 26.2227 19.6328 25.959 19.5742L25.0801 19.3691C24.9336 18.9883 24.7285 18.6367 24.4941 18.3145L24.7578 17.4941C24.8457 17.2305 24.7578 16.9375 24.5527 16.7617C24.4062 16.6738 24.2598 16.5859 24.1133 16.4688L23.9668 16.3809C23.8203 16.3223 23.6738 16.2344 23.498 16.1758C23.2637 16.0586 22.9707 16.1465 22.7656 16.3516L22.1797 16.9961C22.0039 16.9668 21.7988 16.9668 21.5938 16.9668C21.3594 16.9668 21.1543 16.9668 20.9785 16.9961L20.3926 16.3516C20.2168 16.1465 19.9238 16.0586 19.6602 16.1758C19.5137 16.2344 19.3379 16.3223 19.1914 16.3809L19.0449 16.4688C18.8984 16.5566 18.752 16.6738 18.6055 16.7617C18.4004 16.9375 18.3125 17.2305 18.4004 17.4941L18.6934 18.3145C18.4297 18.6367 18.2246 18.9883 18.0781 19.3691L17.2285 19.5449C16.9355 19.6035 16.7305 19.8379 16.7012 20.1016C16.6719 20.3066 16.6719 20.4824 16.6719 20.6875C16.6719 20.8926 16.6719 21.0977 16.7012 21.3027C16.7305 21.5664 16.9355 21.7715 17.2285 21.8301L18.0781 22.0059C18.2246 22.416 18.4297 22.7676 18.6934 23.0898L18.4004 23.9102C18.3125 24.1738 18.4004 24.4668 18.6055 24.6133C18.752 24.7305 18.8984 24.8184 19.0449 24.9062L19.1914 24.9941C19.3379 25.082 19.5137 25.1699 19.6602 25.2285C19.9238 25.3457 20.2168 25.2578 20.3926 25.0527L20.9785 24.4082C21.1836 24.4375 21.3887 24.4375 21.5938 24.4375C21.7988 24.4375 22.0039 24.4375 22.209 24.4082L22.7656 25.0527ZM21.5938 22.0938C20.8027 22.0938 20.1875 21.4785 20.1875 20.6875C20.1875 19.9258 20.8027 19.2812 21.5938 19.2812C22.3555 19.2812 23 19.9258 23 20.6875C23 21.4785 22.3555 22.0938 21.5938 22.0938Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.0 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.3125 11.4375C15.2559 11.4375 13.6055 12.377 12.4121 13.4941C11.2188 14.5859 10.4316 15.9062 10.0508 16.8203C9.97461 17.0234 9.97461 17.252 10.0508 17.4551C10.4316 18.3438 11.2188 19.6641 12.4121 20.7812C13.6055 21.8984 15.2559 22.8125 17.3125 22.8125C19.3438 22.8125 20.9941 21.8984 22.1875 20.7812C23.3809 19.6641 24.168 18.3438 24.5488 17.4551C24.625 17.252 24.625 17.0234 24.5488 16.8203C24.168 15.9062 23.3809 14.5859 22.1875 13.4941C20.9941 12.377 19.3438 11.4375 17.3125 11.4375ZM20.9688 17.125C20.9688 19.1562 19.3184 20.7812 17.3125 20.7812C15.2812 20.7812 13.6562 19.1562 13.6562 17.125C13.6562 15.1191 15.2812 13.4688 17.3125 13.4688C19.3184 13.4688 20.9688 15.1191 20.9688 17.125ZM17.3125 15.5C17.3125 16.4141 16.5762 17.125 15.6875 17.125C15.3828 17.125 15.1035 17.0488 14.875 16.9219C14.875 16.998 14.875 17.0742 14.875 17.125C14.875 18.4707 15.9668 19.5625 17.3125 19.5625C18.6582 19.5625 19.75 18.4707 19.75 17.125C19.75 15.7793 18.6582 14.6875 17.3125 14.6875C17.2363 14.6875 17.1602 14.7129 17.084 14.7129C17.2109 14.9414 17.3125 15.2207 17.3125 15.5Z" fill="#5CA7FF"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.3125 11.4375C15.2559 11.4375 13.6055 12.377 12.4121 13.4941C11.2188 14.5859 10.4316 15.9062 10.0508 16.8203C9.97461 17.0234 9.97461 17.252 10.0508 17.4551C10.4316 18.3438 11.2188 19.6641 12.4121 20.7812C13.6055 21.8984 15.2559 22.8125 17.3125 22.8125C19.3438 22.8125 20.9941 21.8984 22.1875 20.7812C23.3809 19.6641 24.168 18.3438 24.5488 17.4551C24.625 17.252 24.625 17.0234 24.5488 16.8203C24.168 15.9062 23.3809 14.5859 22.1875 13.4941C20.9941 12.377 19.3438 11.4375 17.3125 11.4375ZM20.9688 17.125C20.9688 19.1562 19.3184 20.7812 17.3125 20.7812C15.2812 20.7812 13.6562 19.1562 13.6562 17.125C13.6562 15.1191 15.2812 13.4688 17.3125 13.4688C19.3184 13.4688 20.9688 15.1191 20.9688 17.125ZM17.3125 15.5C17.3125 16.4141 16.5762 17.125 15.6875 17.125C15.3828 17.125 15.1035 17.0488 14.875 16.9219C14.875 16.998 14.875 17.0742 14.875 17.125C14.875 18.4707 15.9668 19.5625 17.3125 19.5625C18.6582 19.5625 19.75 18.4707 19.75 17.125C19.75 15.7793 18.6582 14.6875 17.3125 14.6875C17.2363 14.6875 17.1602 14.7129 17.084 14.7129C17.2109 14.9414 17.3125 15.2207 17.3125 15.5Z" fill="#202831"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.3125 11.4375C15.2559 11.4375 13.6055 12.377 12.4121 13.4941C11.2188 14.5859 10.4316 15.9062 10.0508 16.8203C9.97461 17.0234 9.97461 17.252 10.0508 17.4551C10.4316 18.3438 11.2188 19.6641 12.4121 20.7812C13.6055 21.8984 15.2559 22.8125 17.3125 22.8125C19.3438 22.8125 20.9941 21.8984 22.1875 20.7812C23.3809 19.6641 24.168 18.3438 24.5488 17.4551C24.625 17.252 24.625 17.0234 24.5488 16.8203C24.168 15.9062 23.3809 14.5859 22.1875 13.4941C20.9941 12.377 19.3438 11.4375 17.3125 11.4375ZM20.9688 17.125C20.9688 19.1562 19.3184 20.7812 17.3125 20.7812C15.2812 20.7812 13.6562 19.1562 13.6562 17.125C13.6562 15.1191 15.2812 13.4688 17.3125 13.4688C19.3184 13.4688 20.9688 15.1191 20.9688 17.125ZM17.3125 15.5C17.3125 16.4141 16.5762 17.125 15.6875 17.125C15.3828 17.125 15.1035 17.0488 14.875 16.9219C14.875 16.998 14.875 17.0742 14.875 17.125C14.875 18.4707 15.9668 19.5625 17.3125 19.5625C18.6582 19.5625 19.75 18.4707 19.75 17.125C19.75 15.7793 18.6582 14.6875 17.3125 14.6875C17.2363 14.6875 17.1602 14.7129 17.084 14.7129C17.2109 14.9414 17.3125 15.2207 17.3125 15.5Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
2
client/src/@types/server.d.ts
vendored
@ -8,7 +8,7 @@ interface AirbasesData {
|
||||
}
|
||||
|
||||
interface BullseyesData {
|
||||
bullseyes: {[key: string]: any},
|
||||
bullseyes: {[key: string]: {latitude: number, longitude: number, coalition: string}},
|
||||
}
|
||||
|
||||
interface LogData {
|
||||
|
||||
@ -5,8 +5,7 @@ import { ContextMenu } from "./contextmenu";
|
||||
export class AirbaseContextMenu extends ContextMenu {
|
||||
#airbase: Airbase | null = null;
|
||||
|
||||
constructor(id: string)
|
||||
{
|
||||
constructor(id: string) {
|
||||
super(id);
|
||||
document.addEventListener("contextMenuSpawnAirbase", (e: any) => {
|
||||
this.showSpawnMenu();
|
||||
@ -19,8 +18,7 @@ export class AirbaseContextMenu extends ContextMenu {
|
||||
})
|
||||
}
|
||||
|
||||
setAirbase(airbase: Airbase)
|
||||
{
|
||||
setAirbase(airbase: Airbase) {
|
||||
this.#airbase = airbase;
|
||||
this.setName(airbase.getName());
|
||||
this.setProperties(airbase.getProperties());
|
||||
@ -29,24 +27,21 @@ export class AirbaseContextMenu extends ContextMenu {
|
||||
this.enableLandButton(getUnitsManager().getSelectedUnitsType() === "Aircraft" && (getUnitsManager().getSelectedUnitsCoalition() === airbase.getCoalition() || airbase.getCoalition() === "neutral"))
|
||||
}
|
||||
|
||||
setName(airbaseName: string)
|
||||
{
|
||||
setName(airbaseName: string) {
|
||||
var nameDiv = <HTMLElement>this.getContainer()?.querySelector("#airbase-name");
|
||||
if (nameDiv != null)
|
||||
nameDiv.innerText = airbaseName;
|
||||
nameDiv.innerText = airbaseName;
|
||||
}
|
||||
|
||||
setProperties(airbaseProperties: string[])
|
||||
{
|
||||
setProperties(airbaseProperties: string[]) {
|
||||
this.getContainer()?.querySelector("#airbase-properties")?.replaceChildren(...airbaseProperties.map((property: string) => {
|
||||
var div = document.createElement("div");
|
||||
div.innerText = property;
|
||||
return div;
|
||||
}), );
|
||||
}),);
|
||||
}
|
||||
|
||||
setParkings(airbaseParkings: string[])
|
||||
{
|
||||
setParkings(airbaseParkings: string[]) {
|
||||
this.getContainer()?.querySelector("#airbase-parking")?.replaceChildren(...airbaseParkings.map((parking: string) => {
|
||||
var div = document.createElement("div");
|
||||
div.innerText = parking;
|
||||
@ -54,22 +49,18 @@ export class AirbaseContextMenu extends ContextMenu {
|
||||
}));
|
||||
}
|
||||
|
||||
setCoalition(coalition: string)
|
||||
{
|
||||
setCoalition(coalition: string) {
|
||||
(<HTMLElement>this.getContainer()?.querySelector("#spawn-airbase-aircraft-button")).dataset.activeCoalition = coalition;
|
||||
}
|
||||
|
||||
enableLandButton(enableLandButton: boolean)
|
||||
{
|
||||
enableLandButton(enableLandButton: boolean) {
|
||||
this.getContainer()?.querySelector("#land-here-button")?.classList.toggle("hide", !enableLandButton);
|
||||
}
|
||||
|
||||
showSpawnMenu()
|
||||
{
|
||||
if (this.#airbase != null)
|
||||
{
|
||||
showSpawnMenu() {
|
||||
if (this.#airbase != null) {
|
||||
setActiveCoalition(this.#airbase.getCoalition());
|
||||
getMap().showMapContextMenu({originalEvent: {x: this.getX(), y: this.getY(), latlng: this.getLatLng()}});
|
||||
getMap().showMapContextMenu({ originalEvent: { x: this.getX(), y: this.getY(), latlng: this.getLatLng() } });
|
||||
getMap().getMapContextMenu().hideUpperBar();
|
||||
getMap().getMapContextMenu().showSubMenu("aircraft");
|
||||
getMap().getMapContextMenu().setAirbaseName(this.#airbase.getName());
|
||||
|
||||
@ -23,28 +23,23 @@ export class ContextMenu {
|
||||
this.#container?.classList.toggle("hide", true);
|
||||
}
|
||||
|
||||
getContainer()
|
||||
{
|
||||
getContainer() {
|
||||
return this.#container;
|
||||
}
|
||||
|
||||
getLatLng()
|
||||
{
|
||||
getLatLng() {
|
||||
return this.#latlng;
|
||||
}
|
||||
|
||||
getX()
|
||||
{
|
||||
getX() {
|
||||
return this.#x;
|
||||
}
|
||||
|
||||
getY()
|
||||
{
|
||||
getY() {
|
||||
return this.#y;
|
||||
}
|
||||
|
||||
clip()
|
||||
{
|
||||
clip() {
|
||||
if (this.#container != null) {
|
||||
if (this.#x + this.#container.offsetWidth < window.innerWidth)
|
||||
this.#container.style.left = this.#x + "px";
|
||||
|
||||