Added export animation

+Added svg export animation
*Moved Constants.originalPublicBuildUrl to Constants.svgExport.originalPublicBuildUrl
This commit is contained in:
izawartka 2025-08-18 21:51:08 +02:00
parent 6f44d148ed
commit 9d2fef5e73
4 changed files with 38 additions and 5 deletions

View File

@ -6,6 +6,22 @@
background-color: var(--map-background-color);
}
.map.export-border::after {
border: 5px solid var(--map-text-color);
content: "";
position: absolute;
width: 100%;
width: -moz-available;
width: -webkit-fill-available;
width: stretch;
height: 100%;
height: -moz-available;
height: -webkit-fill-available;
height: stretch;
}
.export-container {
position: relative;
width: 100%;

View File

@ -1,14 +1,27 @@
import { useContext } from "react";
import { useCallback, useContext } from "react";
import SceneryContext from "../../contexts/SceneryContext";
import SideMenuContext from "../../contexts/SideMenuContext";
import ExportHelper from "../../helpers/exportHelper";
import Constants from "../../helpers/constants";
export default function ExportViewButton() {
const { scenery } = useContext(SceneryContext);
const { setSideMenuOpen } = useContext(SideMenuContext);
const onButtonClick = useCallback(async () => {
const mapElement = document.querySelector('.map');
setSideMenuOpen(false);
await new Promise(resolve => setTimeout(resolve, Constants.svgExport.hidePanelDuration));
mapElement.classList.add('export-border');
await new Promise(resolve => setTimeout(resolve, Constants.svgExport.borderDuration));
mapElement.classList.remove('export-border');
const onButtonClick = () => {
const filename = (scenery.getName() || 'export') + '.svg';
ExportHelper.exportSvg(filename);
};
setSideMenuOpen(true);
}, [scenery, setSideMenuOpen]);
return (
<div className="export-view-button">

View File

@ -1,6 +1,5 @@
const Constants = {
buildVersion: '1.6.2',
originalPublicBuildUrl: 'https://maseuko.pl/soft/td2-visualizer-2/', // do NOT change
map: {
zoomSensitivity: 0.002,
zoomMin: 0.03,
@ -31,6 +30,11 @@ const Constants = {
skipPlatforms: false,
resolveElectrificationStepMode: false,
},
svgExport: {
hidePanelDuration: 500,
borderDuration: 100,
originalPublicBuildUrl: 'https://maseuko.pl/soft/td2-visualizer-2/', // do NOT change
},
warnings: {
all: false, // enable all warnings
trackObjectCannotBeApplied: false,

View File

@ -116,7 +116,7 @@ function addMetadata(svg) {
const description = document.createElementNS('http://purl.org/dc/elements/1.1/', 'dc:description');
description.textContent = `Exported using TD2 Visualizer v${Constants.buildVersion}`;
const source = document.createElementNS('http://purl.org/dc/elements/1.1/', 'dc:source');
source.textContent = Constants.originalPublicBuildUrl;
source.textContent = Constants.svgExport.originalPublicBuildUrl;
rdf.appendChild(description);
rdf.appendChild(source);