Refactoring: highlight the currently selected element
|
@ -107,7 +107,7 @@ export default class PerLayerFeatureSourceSplitter<T extends FeatureSource = Fea
|
|||
})
|
||||
}
|
||||
|
||||
public forEach(f: (featureSource: FeatureSource) => void) {
|
||||
public forEach(f: (featureSource: T) => void) {
|
||||
for (const fs of this.perLayer.values()) {
|
||||
f(fs)
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ export class UpdateLegacyLayer extends DesugaringStep<
|
|||
config.source = config.source ?? {
|
||||
osmTags: config["overpassTags"],
|
||||
}
|
||||
config.source.osmTags = config["overpassTags"]
|
||||
config.source["osmTags"] = config["overpassTags"]
|
||||
delete config["overpassTags"]
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import Combine from "../../UI/Base/Combine"
|
|||
import { VariableUiElement } from "../../UI/Base/VariableUIElement"
|
||||
|
||||
export default class PointRenderingConfig extends WithContextLoader {
|
||||
private static readonly allowed_location_codes = new Set<string>([
|
||||
static readonly allowed_location_codes: ReadonlySet<string> = new Set<string>([
|
||||
"point",
|
||||
"centroid",
|
||||
"start",
|
||||
|
|
|
@ -476,29 +476,45 @@ export default class ThemeViewState implements SpecialVisualizationState {
|
|||
* Setup various services for which no reference are needed
|
||||
*/
|
||||
private initActors() {
|
||||
this.selectedElement.addCallback((selected) => {
|
||||
Hash.hash.setData(selected?.properties?.id)
|
||||
})
|
||||
{
|
||||
// Set the hash based on the selected element...
|
||||
this.selectedElement.addCallback((selected) => {
|
||||
Hash.hash.setData(selected?.properties?.id)
|
||||
})
|
||||
// ... search and select an element based on the hash
|
||||
Hash.hash.mapD(
|
||||
(hash) => {
|
||||
console.log("Searching for an id:", hash)
|
||||
if (this.selectedElement.data?.properties?.id === hash) {
|
||||
// We already have the correct hash
|
||||
return
|
||||
}
|
||||
|
||||
Hash.hash.mapD(
|
||||
(hash) => {
|
||||
console.log("Searching for an id:", hash)
|
||||
if (this.selectedElement.data?.properties?.id === hash) {
|
||||
// We already have the correct hash
|
||||
const found = this.indexedFeatures.featuresById.data?.get(hash)
|
||||
if (!found) {
|
||||
return
|
||||
}
|
||||
const layer = this.layout.getMatchingLayer(found.properties)
|
||||
this.selectedElement.setData(found)
|
||||
this.selectedLayer.setData(layer)
|
||||
},
|
||||
[this.indexedFeatures.featuresById.stabilized(250)]
|
||||
)
|
||||
}
|
||||
|
||||
{
|
||||
// Unselect the selected element if it is panned out of view
|
||||
this.mapProperties.bounds.stabilized(250).addCallbackD((bounds) => {
|
||||
const selected = this.selectedElement.data
|
||||
if (selected === undefined) {
|
||||
return
|
||||
}
|
||||
|
||||
const found = this.indexedFeatures.featuresById.data?.get(hash)
|
||||
if (!found) {
|
||||
return
|
||||
const bbox = BBox.get(selected)
|
||||
if (!bbox.overlapsWith(bounds)) {
|
||||
this.selectedElement.setData(undefined)
|
||||
}
|
||||
const layer = this.layout.getMatchingLayer(found.properties)
|
||||
this.selectedElement.setData(found)
|
||||
this.selectedLayer.setData(layer)
|
||||
},
|
||||
[this.indexedFeatures.featuresById.stabilized(250)]
|
||||
)
|
||||
|
||||
})
|
||||
}
|
||||
new MetaTagging(this)
|
||||
new TitleHandler(this.selectedElement, this.selectedLayer, this.featureProperties, this)
|
||||
new ChangeToElementsActor(this.changes, this.featureProperties)
|
||||
|
|
|
@ -6,7 +6,7 @@ import { GeoOperations } from "../../Logic/GeoOperations"
|
|||
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
|
||||
import PointRenderingConfig from "../../Models/ThemeConfig/PointRenderingConfig"
|
||||
import { OsmTags } from "../../Models/OsmFeature"
|
||||
import { FeatureSource } from "../../Logic/FeatureSource/FeatureSource"
|
||||
import { FeatureSource, FeatureSourceForLayer } from "../../Logic/FeatureSource/FeatureSource"
|
||||
import { BBox } from "../../Logic/BBox"
|
||||
import { Feature, Point } from "geojson"
|
||||
import LineRenderingConfig from "../../Models/ThemeConfig/LineRenderingConfig"
|
||||
|
@ -15,7 +15,7 @@ import * as range_layer from "../../assets/layers/range/range.json"
|
|||
import { LayerConfigJson } from "../../Models/ThemeConfig/Json/LayerConfigJson"
|
||||
import PerLayerFeatureSourceSplitter from "../../Logic/FeatureSource/PerLayerFeatureSourceSplitter"
|
||||
import FilteredLayer from "../../Models/FilteredLayer"
|
||||
import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeatureSource"
|
||||
import SimpleFeatureSource from "../../Logic/FeatureSource/Sources/SimpleFeatureSource"
|
||||
|
||||
class PointRenderingLayer {
|
||||
private readonly _config: PointRenderingConfig
|
||||
|
@ -24,6 +24,8 @@ class PointRenderingLayer {
|
|||
private readonly _map: MlMap
|
||||
private readonly _onClick: (feature: Feature) => void
|
||||
private readonly _allMarkers: Map<string, Marker> = new Map<string, Marker>()
|
||||
private readonly _selectedElement: Store<{ properties: { id?: string } }>
|
||||
private readonly _markedAsSelected: HTMLElement[] = []
|
||||
private _dirty = false
|
||||
|
||||
constructor(
|
||||
|
@ -32,13 +34,15 @@ class PointRenderingLayer {
|
|||
config: PointRenderingConfig,
|
||||
visibility?: Store<boolean>,
|
||||
fetchStore?: (id: string) => Store<Record<string, string>>,
|
||||
onClick?: (feature: Feature) => void
|
||||
onClick?: (feature: Feature) => void,
|
||||
selectedElement?: Store<{ properties: { id?: string } }>
|
||||
) {
|
||||
this._visibility = visibility
|
||||
this._config = config
|
||||
this._map = map
|
||||
this._fetchStore = fetchStore
|
||||
this._onClick = onClick
|
||||
this._selectedElement = selectedElement
|
||||
const self = this
|
||||
|
||||
features.features.addCallbackAndRunD((features) => self.updateFeatures(features))
|
||||
|
@ -48,6 +52,24 @@ class PointRenderingLayer {
|
|||
}
|
||||
self.setVisibility(visible)
|
||||
})
|
||||
selectedElement?.addCallbackAndRun((selected) => {
|
||||
this._markedAsSelected.forEach((el) => el.classList.remove("selected"))
|
||||
this._markedAsSelected.splice(0, this._markedAsSelected.length)
|
||||
if (selected === undefined) {
|
||||
return
|
||||
}
|
||||
PointRenderingConfig.allowed_location_codes.forEach((code) => {
|
||||
const marker = this._allMarkers
|
||||
.get(selected.properties?.id + "-" + code)
|
||||
?.getElement()
|
||||
if (marker === undefined) {
|
||||
return
|
||||
}
|
||||
console.log("Marking", marker, "as selected for config", config)
|
||||
marker?.classList?.add("selected")
|
||||
this._markedAsSelected.push(marker)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
private updateFeatures(features: Feature[]) {
|
||||
|
@ -91,6 +113,10 @@ class PointRenderingLayer {
|
|||
}
|
||||
|
||||
const marker = this.addPoint(feature, loc)
|
||||
if (this._selectedElement?.data === feature.properties.id) {
|
||||
marker.getElement().classList.add("selected")
|
||||
this._markedAsSelected.push(marker.getElement())
|
||||
}
|
||||
cache.set(id, marker)
|
||||
}
|
||||
}
|
||||
|
@ -179,6 +205,7 @@ class LineRenderingLayer {
|
|||
private readonly _onClick?: (feature: Feature) => void
|
||||
private readonly _layername: string
|
||||
private readonly _listenerInstalledOn: Set<string> = new Set<string>()
|
||||
private currentSourceData
|
||||
|
||||
constructor(
|
||||
map: MlMap,
|
||||
|
@ -228,7 +255,6 @@ class LineRenderingLayer {
|
|||
return calculatedProps
|
||||
}
|
||||
|
||||
private currentSourceData
|
||||
private async update(featureSource: Store<Feature[]>) {
|
||||
const map = this._map
|
||||
while (!map.isStyleLoaded()) {
|
||||
|
@ -380,10 +406,14 @@ export default class ShowDataLayer {
|
|||
layers: LayerConfig[],
|
||||
options?: Partial<ShowDataLayerOptions>
|
||||
) {
|
||||
const perLayer = new PerLayerFeatureSourceSplitter(
|
||||
layers.filter((l) => l.source !== null).map((l) => new FilteredLayer(l)),
|
||||
new StaticFeatureSource(features)
|
||||
)
|
||||
const perLayer: PerLayerFeatureSourceSplitter<FeatureSourceForLayer> =
|
||||
new PerLayerFeatureSourceSplitter(
|
||||
layers.filter((l) => l.source !== null).map((l) => new FilteredLayer(l)),
|
||||
features,
|
||||
{
|
||||
constructStore: (features, layer) => new SimpleFeatureSource(layer, features),
|
||||
}
|
||||
)
|
||||
perLayer.forEach((fs) => {
|
||||
new ShowDataLayer(mlmap, {
|
||||
layer: fs.layer.layerDef,
|
||||
|
@ -445,7 +475,8 @@ export default class ShowDataLayer {
|
|||
pointRenderingConfig,
|
||||
doShowLayer,
|
||||
fetchStore,
|
||||
onClick
|
||||
onClick,
|
||||
selectedElement
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="375px" height="375px" viewBox="0 0 375 375" version="1.1">
|
||||
<g id="surface1">
|
||||
<rect x="0" y="0" width="375" height="375" style="fill:rgb(16.078432%,73.333335%,24.313726%);fill-opacity:1;stroke:none;"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 279.210938 32.8125 L 309.375 32.8125 L 309.375 63.179688 L 339.742188 63.179688 L 339.742188 93.34375 L 309.375 93.34375 L 309.375 123.710938 L 279.210938 123.710938 L 279.210938 93.34375 L 248.84375 93.34375 L 248.84375 63.179688 L 279.210938 63.179688 Z M 279.210938 32.8125 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 96.808594 114.742188 C 57.675781 115.148438 22.621094 154.074219 33.21875 205.433594 C 41.167969 244.769531 82.949219 295.71875 155.707031 345.039062 C 228.464844 295.515625 270.246094 244.566406 278.191406 205.433594 C 288.789062 153.871094 253.941406 115.148438 214.605469 114.742188 C 194.429688 114.335938 169.15625 125.136719 155.707031 150.816406 C 142.253906 125.136719 116.984375 114.335938 96.808594 114.742188 Z M 187.09375 145.925781 L 152.851562 216.238281 L 196.261719 216.238281 L 120.246094 304.6875 L 149.59375 235.394531 L 107.40625 235.394531 Z M 187.09375 145.925781 "/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.4 KiB |
|
@ -650,11 +650,11 @@
|
|||
"mapRendering": [
|
||||
{
|
||||
"icon": {
|
||||
"render": "./assets/themes/aed/aed.svg",
|
||||
"render": "square:#008754;./assets/layers/defibrillator/defibrillator.svg",
|
||||
"mappings": [
|
||||
{
|
||||
"if": "_recently_surveyed=true",
|
||||
"then": "./assets/layers/defibrillator/aed_checked.svg"
|
||||
"then": "square:#28ba3d;./assets/layers/defibrillator/defibrillator.svg"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -670,4 +670,4 @@
|
|||
"has_image",
|
||||
"open_now"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
45
assets/layers/defibrillator/defibrillator.svg
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="375px"
|
||||
height="375px"
|
||||
viewBox="0 0 375 375"
|
||||
version="1.1"
|
||||
id="svg9"
|
||||
sodipodi:docname="aed_checked.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
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="defs13" />
|
||||
<sodipodi:namedview
|
||||
id="namedview11"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.04"
|
||||
inkscape:cx="187.7451"
|
||||
inkscape:cy="187.5"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="995"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="surface1" />
|
||||
<g
|
||||
id="surface1">
|
||||
<path
|
||||
style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;"
|
||||
d="M 279.210938 32.8125 L 309.375 32.8125 L 309.375 63.179688 L 339.742188 63.179688 L 339.742188 93.34375 L 309.375 93.34375 L 309.375 123.710938 L 279.210938 123.710938 L 279.210938 93.34375 L 248.84375 93.34375 L 248.84375 63.179688 L 279.210938 63.179688 Z M 279.210938 32.8125 "
|
||||
id="path4" />
|
||||
<path
|
||||
style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;"
|
||||
d="M 96.808594 114.742188 C 57.675781 115.148438 22.621094 154.074219 33.21875 205.433594 C 41.167969 244.769531 82.949219 295.71875 155.707031 345.039062 C 228.464844 295.515625 270.246094 244.566406 278.191406 205.433594 C 288.789062 153.871094 253.941406 115.148438 214.605469 114.742188 C 194.429688 114.335938 169.15625 125.136719 155.707031 150.816406 C 142.253906 125.136719 116.984375 114.335938 96.808594 114.742188 Z M 187.09375 145.925781 L 152.851562 216.238281 L 196.261719 216.238281 L 120.246094 304.6875 L 149.59375 235.394531 L 107.40625 235.394531 Z M 187.09375 145.925781 "
|
||||
id="path6" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
|
@ -1,6 +1,6 @@
|
|||
[
|
||||
{
|
||||
"path": "aed_checked.svg",
|
||||
"path": "defibrillator.svg",
|
||||
"license": "CC0",
|
||||
"authors": [
|
||||
"MaxxL"
|
||||
|
|
|
@ -521,7 +521,7 @@
|
|||
"mapRendering": [
|
||||
{
|
||||
"icon": {
|
||||
"render": "./assets/themes/bookcases/bookcase.svg"
|
||||
"render": "circle:#ffffff;./assets/themes/bookcases/bookcase.svg"
|
||||
},
|
||||
"label": {
|
||||
"mappings": [
|
||||
|
@ -545,4 +545,4 @@
|
|||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -681,7 +681,7 @@
|
|||
"mapRendering": [
|
||||
{
|
||||
"icon": {
|
||||
"render": "./assets/layers/toilet/toilets.svg",
|
||||
"render": "circle:#ffffff;./assets/layers/toilet/toilets.svg",
|
||||
"mappings": [
|
||||
{
|
||||
"if": {
|
||||
|
@ -761,4 +761,4 @@
|
|||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="375px" height="375px" viewBox="0 0 375 375" version="1.1">
|
||||
<g id="surface1">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 370.085938 188.761719 C 370.085938 290.742188 287.238281 373.410156 185.042969 373.410156 C 82.847656 373.410156 0 290.742188 0 188.761719 C 0 86.78125 82.847656 4.113281 185.042969 4.113281 C 287.238281 4.113281 370.085938 86.78125 370.085938 188.761719 Z M 370.085938 188.761719 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(45.09804%,29.019609%,3.137255%);fill-opacity:1;" d="M 172.925781 76.054688 L 172.925781 302.253906 L 197.160156 302.253906 L 197.160156 76.054688 Z M 112.335938 92.214844 C 98.953125 92.214844 88.101562 103.0625 88.101562 116.449219 C 88.101562 129.832031 98.953125 140.683594 112.335938 140.683594 C 125.722656 140.683594 136.570312 129.832031 136.570312 116.449219 C 136.570312 103.0625 125.722656 92.214844 112.335938 92.214844 Z M 257.75 92.214844 C 244.363281 92.214844 233.511719 103.0625 233.511719 116.449219 C 233.511719 129.832031 244.363281 140.683594 257.75 140.683594 C 271.132812 140.683594 281.984375 129.832031 281.984375 116.449219 C 281.984375 103.0625 271.132812 92.214844 257.75 92.214844 Z M 96.179688 156.839844 C 86.488281 156.839844 80.023438 166.027344 80.023438 172.996094 C 80.023438 181.515625 100.21875 197.179688 100.21875 205.3125 C 100.21875 214.292969 71.945312 221.46875 71.945312 253.78125 L 100.21875 253.78125 L 100.21875 302.253906 L 124.453125 302.253906 L 124.453125 253.78125 L 152.730469 253.78125 C 152.730469 221.46875 124.453125 213.867188 124.453125 205.3125 C 124.453125 196.757812 144.648438 181.90625 144.648438 172.996094 C 144.648438 166.414062 137.789062 156.839844 128.492188 156.839844 Z M 233.511719 156.839844 C 224.992188 156.839844 217.355469 164.605469 217.355469 172.996094 C 217.355469 189.15625 245.628906 237.882812 245.628906 253.78125 L 245.628906 302.253906 L 269.867188 302.253906 L 269.867188 253.78125 C 269.867188 238.199219 298.140625 189.15625 298.140625 172.996094 C 298.140625 164.058594 290.890625 156.839844 281.984375 156.839844 Z M 233.511719 156.839844 "/>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
@ -1,6 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="375px" height="375px" viewBox="0 0 375 375" version="1.1">
|
||||
<g id="surface1">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 375 187.5 C 375 291.054688 291.054688 375 187.5 375 C 83.945312 375 0 291.054688 0 187.5 C 0 83.945312 83.945312 0 187.5 0 C 291.054688 0 375 83.945312 375 187.5 Z M 375 187.5 "/>
|
||||
</g>
|
||||
</svg>
|
||||
<g id="surface1">
|
||||
<path
|
||||
style="fill:#000000;"
|
||||
class="selectable"
|
||||
d="M 375 187.5 C 375 291.054688 291.054688 375 187.5 375 C 83.945312 375 0 291.054688 0 187.5 C 0 83.945312 83.945312 0 187.5 0 C 291.054688 0 375 83.945312 375 187.5 Z M 375 187.5 "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 486 B |
|
@ -11,6 +11,7 @@
|
|||
id="defs11" />
|
||||
<path
|
||||
id="path2"
|
||||
class="selectable"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
d="M 157 0 C 70.296875 1.8947806e-14 0.01171875 70.121098 0.01171875 156.62109 C 0.01171875 231.01726 52.025471 293.25325 121.74219 309.22266 L 147.24609 364.68359 C 152.95703 377.10547 170.65234 377.10547 176.36719 364.68359 L 203.19922 306.33398 C 267.35183 286.6535 313.98828 227.07489 313.98828 156.62109 C 313.98828 70.121098 243.70312 0 157 0 z " />
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 722 B After Width: | Height: | Size: 746 B |
|
@ -1,6 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="375px" height="375px" viewBox="0 0 375 375" version="1.1">
|
||||
<g id="surface1">
|
||||
<rect x="0" y="0" width="375" height="375" style="fill:rgb(0%,0%,0%);fill-opacity:1;stroke:none;"/>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="375px"
|
||||
height="375px"
|
||||
viewBox="0 0 375 375"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
sodipodi:docname="square.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
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">
|
||||
<g
|
||||
id="surface1">
|
||||
<path class="selectable"
|
||||
id="rect2"
|
||||
style="fill:#000000;"
|
||||
d="M 0,0 H 375 V 375 H 0 Z" />
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 299 B After Width: | Height: | Size: 608 B |
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="374px" height="374px" viewBox="0 0 374 374" version="1.1">
|
||||
<g id="surface1">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 197.824219 10.429688 C 193.816406 11.191406 188.988281 15.195312 184.570312 21.386719 C 178.515625 29.949219 173.335938 40.234375 161.109375 68.078125 C 150.957031 91.164062 146.890625 99.34375 141.597656 107.144531 C 135.421875 116.230469 131.152344 118.042969 115.910156 118.074219 C 107.046875 118.074219 99.144531 117.429688 77.4375 114.976562 C 68.371094 113.925781 57.953125 112.84375 50.230469 112.140625 C 44.644531 111.644531 27.0625 111.644531 23.753906 112.140625 C 13.253906 113.777344 8.394531 117.226562 8.015625 123.304688 C 7.8125 127.042969 9.273438 131.046875 12.726562 136.21875 C 18.488281 144.808594 27.761719 154.101562 51.253906 174.875 C 79.195312 199.5625 87.738281 209.175781 88.996094 217.300781 C 90.078125 224.136719 86.214844 236.46875 75.742188 259.902344 C 65.09375 283.742188 63.164062 288.039062 61.40625 292.332031 C 54.035156 310.1875 51.109375 321.492188 52.105469 328.449219 C 53.011719 334.933594 56.347656 338.179688 62.546875 338.558594 C 71.644531 339.171875 85.015625 333.621094 112.253906 317.988281 C 134.164062 305.394531 138.144531 303.144531 143 300.574219 C 156.195312 293.5625 164.003906 290.699219 170.03125 290.609375 C 173.570312 290.582031 174.742188 290.902344 179.101562 293.0625 C 186.855469 296.949219 195.894531 304.167969 217.132812 323.453125 C 246.5625 350.214844 258.238281 358.6875 268.386719 360.734375 C 271.371094 361.347656 273.449219 361.113281 275.847656 359.945312 C 278.863281 358.484375 280.527344 356 281.816406 351.0625 C 282.429688 348.695312 282.488281 347.820312 282.488281 341.859375 C 282.488281 338.207031 282.34375 334.058594 282.136719 332.507812 C 280.644531 321.433594 279.007812 312.816406 274.738281 293.503906 C 268.039062 263.289062 266.574219 254.730469 266.574219 245.378906 C 266.574219 240.644531 267.042969 237.78125 268.183594 235.269531 C 271.136719 228.8125 281.699219 220.953125 305.484375 207.453125 C 324.820312 196.496094 329.796875 193.632812 334.886719 190.566406 C 356.503906 177.53125 366.042969 168.328125 366.042969 160.558594 C 366.042969 156.027344 363.234375 152.582031 357.089844 149.511719 C 348.3125 145.128906 335.207031 142.617188 305.484375 139.519531 C 274.707031 136.363281 266.457031 135.195312 257.59375 132.945312 C 246.269531 130.023438 242.554688 127.074219 238.636719 117.898438 C 235.210938 109.832031 232.460938 99.519531 227.195312 74.59375 C 223.246094 55.777344 220.996094 46.164062 218.742188 38.453125 C 215.378906 26.824219 211.722656 18.933594 207.625 14.375 C 204.875 11.308594 201.160156 9.816406 197.824219 10.429688 Z M 197.824219 10.429688 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:#000000;fill-opacity:1;" class="selectable" d="M 197.824219 10.429688 C 193.816406 11.191406 188.988281 15.195312 184.570312 21.386719 C 178.515625 29.949219 173.335938 40.234375 161.109375 68.078125 C 150.957031 91.164062 146.890625 99.34375 141.597656 107.144531 C 135.421875 116.230469 131.152344 118.042969 115.910156 118.074219 C 107.046875 118.074219 99.144531 117.429688 77.4375 114.976562 C 68.371094 113.925781 57.953125 112.84375 50.230469 112.140625 C 44.644531 111.644531 27.0625 111.644531 23.753906 112.140625 C 13.253906 113.777344 8.394531 117.226562 8.015625 123.304688 C 7.8125 127.042969 9.273438 131.046875 12.726562 136.21875 C 18.488281 144.808594 27.761719 154.101562 51.253906 174.875 C 79.195312 199.5625 87.738281 209.175781 88.996094 217.300781 C 90.078125 224.136719 86.214844 236.46875 75.742188 259.902344 C 65.09375 283.742188 63.164062 288.039062 61.40625 292.332031 C 54.035156 310.1875 51.109375 321.492188 52.105469 328.449219 C 53.011719 334.933594 56.347656 338.179688 62.546875 338.558594 C 71.644531 339.171875 85.015625 333.621094 112.253906 317.988281 C 134.164062 305.394531 138.144531 303.144531 143 300.574219 C 156.195312 293.5625 164.003906 290.699219 170.03125 290.609375 C 173.570312 290.582031 174.742188 290.902344 179.101562 293.0625 C 186.855469 296.949219 195.894531 304.167969 217.132812 323.453125 C 246.5625 350.214844 258.238281 358.6875 268.386719 360.734375 C 271.371094 361.347656 273.449219 361.113281 275.847656 359.945312 C 278.863281 358.484375 280.527344 356 281.816406 351.0625 C 282.429688 348.695312 282.488281 347.820312 282.488281 341.859375 C 282.488281 338.207031 282.34375 334.058594 282.136719 332.507812 C 280.644531 321.433594 279.007812 312.816406 274.738281 293.503906 C 268.039062 263.289062 266.574219 254.730469 266.574219 245.378906 C 266.574219 240.644531 267.042969 237.78125 268.183594 235.269531 C 271.136719 228.8125 281.699219 220.953125 305.484375 207.453125 C 324.820312 196.496094 329.796875 193.632812 334.886719 190.566406 C 356.503906 177.53125 366.042969 168.328125 366.042969 160.558594 C 366.042969 156.027344 363.234375 152.582031 357.089844 149.511719 C 348.3125 145.128906 335.207031 142.617188 305.484375 139.519531 C 274.707031 136.363281 266.457031 135.195312 257.59375 132.945312 C 246.269531 130.023438 242.554688 127.074219 238.636719 117.898438 C 235.210938 109.832031 232.460938 99.519531 227.195312 74.59375 C 223.246094 55.777344 220.996094 46.164062 218.742188 38.453125 C 215.378906 26.824219 211.722656 18.933594 207.625 14.375 C 204.875 11.308594 201.160156 9.816406 197.824219 10.429688 Z M 197.824219 10.429688 "/>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="275px" height="374px" viewBox="0 0 275 374" version="1.1">
|
||||
<g id="surface1">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:0.988235;" d="M 137.433594 370.035156 C 136.605469 368.027344 119.402344 351.226562 107.082031 335.960938 C 34.097656 239.179688 -47.273438 149.257812 47.746094 39.980469 C 89.816406 -0.617188 141.691406 -2.933594 195.023438 15.992188 C 345.191406 102.777344 236.46875 244.351562 165.078125 337.421875 Z M 182.605469 221.6875 C 282.765625 150.148438 205.328125 12.386719 95.28125 58.183594 C 63.148438 75.296875 47.203125 105.070312 46.644531 140.195312 C 45.109375 174.359375 63.277344 202.929688 92.066406 220.429688 C 112.707031 231.652344 121.78125 233.675781 145.152344 232.285156 C 160.300781 231.386719 169.027344 228.914062 182.605469 221.6875 Z M 182.605469 221.6875 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:#000000;fill-opacity:0.988235;" class="selectable" d="M 137.433594 370.035156 C 136.605469 368.027344 119.402344 351.226562 107.082031 335.960938 C 34.097656 239.179688 -47.273438 149.257812 47.746094 39.980469 C 89.816406 -0.617188 141.691406 -2.933594 195.023438 15.992188 C 345.191406 102.777344 236.46875 244.351562 165.078125 337.421875 Z M 182.605469 221.6875 C 282.765625 150.148438 205.328125 12.386719 95.28125 58.183594 C 63.148438 75.296875 47.203125 105.070312 46.644531 140.195312 C 45.109375 174.359375 63.277344 202.929688 92.066406 220.429688 C 112.707031 231.652344 121.78125 233.675781 145.152344 232.285156 C 160.300781 231.386719 169.027344 228.914062 182.605469 221.6875 Z M 182.605469 221.6875 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:0.988235;" d="M 108.722656 255.84375 C 37.953125 241.132812 -7.363281 173.46875 7.277344 104.371094 C 21.914062 35.273438 91.019531 -9.34375 161.976562 4.492188 C 232.9375 18.328125 279.128906 85.421875 265.390625 154.699219 C 251.65625 223.972656 183.136719 269.4375 112.003906 256.484375 "/>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="375px" height="375px" viewBox="0 0 375 375" version="1.1">
|
||||
<g id="surface1">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 374.863281 188.140625 C 374.863281 291.519531 290.890625 375.324219 187.308594 375.324219 C 83.722656 375.324219 -0.25 291.519531 -0.25 188.140625 C -0.25 84.757812 83.722656 0.953125 187.308594 0.953125 C 290.890625 0.953125 374.863281 84.757812 374.863281 188.140625 Z M 374.863281 188.140625 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(45.09804%,29.019609%,3.137255%);fill-opacity:1;" d="M 188.226562 61.175781 L 50.847656 100.425781 L 50.847656 120.050781 L 188.226562 80.800781 L 325.605469 120.050781 L 325.605469 100.425781 Z M 120.265625 131.285156 C 117.203125 131.40625 114.164062 132.011719 111.140625 133.160156 L 111.140625 255.246094 C 111.140625 255.246094 160.289062 253.359375 172.816406 301.050781 L 172.816406 172.835938 C 163.257812 152.910156 141.691406 130.429688 120.265625 131.285156 Z M 172.816406 301.050781 C 141.011719 276.726562 95.695312 270.539062 95.695312 270.539062 L 95.695312 154.550781 L 80.285156 148.417969 L 80.285156 285.796875 L 172.816406 316.308594 L 203.636719 316.308594 L 296.164062 285.796875 L 296.164062 148.417969 L 280.757812 154.550781 L 280.757812 276.632812 L 203.636719 301.050781 C 193.355469 297.164062 181.394531 297.855469 172.816406 301.050781 Z M 265.308594 133.160156 C 234.585938 131.535156 199.136719 149.800781 180.519531 165.511719 L 180.519531 294.6875 C 197.710938 280.578125 228.511719 262.027344 265.308594 258.3125 Z M 265.308594 133.160156 "/>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.3 KiB |
|
@ -2094,6 +2094,31 @@ li::marker {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.selected svg path.selectable {
|
||||
stroke: white !important;
|
||||
stroke-width: 20px !important;
|
||||
/* filter: drop-shadow(5px 5px 40px rgb(0 0 0 / 0.6));*/
|
||||
overflow: visible !important;
|
||||
-webkit-animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
|
||||
animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
|
||||
}
|
||||
|
||||
.selected svg {
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
@-webkit-keyframes glowing-drop-shadow {
|
||||
from {
|
||||
-webkit-filter: drop-shadow(5px 5px 60px rgb(128 128 128 / 0.6));
|
||||
filter: drop-shadow(5px 5px 60px rgb(128 128 128 / 0.6));
|
||||
}
|
||||
|
||||
to {
|
||||
-webkit-filter: drop-shadow(5px 5px 80px rgb(0.5 0.5 0.5 / 0.8));
|
||||
filter: drop-shadow(5px 5px 80px rgb(0.5 0.5 0.5 / 0.8));
|
||||
}
|
||||
}
|
||||
|
||||
/**************** GENERIC ****************/
|
||||
|
||||
.alert {
|
||||
|
@ -2355,18 +2380,10 @@ input {
|
|||
height: 6rem;
|
||||
}
|
||||
|
||||
.sm\:h-6 {
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.sm\:w-24 {
|
||||
width: 6rem;
|
||||
}
|
||||
|
||||
.sm\:w-6 {
|
||||
width: 1.5rem;
|
||||
}
|
||||
|
||||
.sm\:max-w-xl {
|
||||
max-width: 36rem;
|
||||
}
|
||||
|
|
24
index.css
|
@ -304,6 +304,30 @@ li::marker {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.selected svg path.selectable {
|
||||
stroke: white !important;
|
||||
stroke-width: 20px !important;
|
||||
overflow: visible !important;
|
||||
-webkit-animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
|
||||
-moz-animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
|
||||
animation: glowing-drop-shadow 1s ease-in-out infinite alternate;
|
||||
}
|
||||
|
||||
.selected svg {
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
|
||||
@-webkit-keyframes glowing-drop-shadow {
|
||||
from {
|
||||
filter: drop-shadow(5px 5px 60px rgb(128 128 128 / 0.6));
|
||||
}
|
||||
to {
|
||||
filter: drop-shadow(5px 5px 80px rgb(0.5 0.5 0.5 / 0.8));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**************** GENERIC ****************/
|
||||
|
||||
.alert {
|
||||
|
|