diff --git a/app/components/Map.js b/app/components/Map.js deleted file mode 100644 index d63f936..0000000 --- a/app/components/Map.js +++ /dev/null @@ -1,31 +0,0 @@ -import { MapContainer, TileLayer, Marker, Popup } from 'react-leaflet'; -import 'leaflet/dist/leaflet.css'; -import L from 'leaflet'; - -// Убедитесь, что иконка маркера отображается правильно -delete L.Icon.Default.prototype._getIconUrl; -L.Icon.Default.mergeOptions({ - iconRetinaUrl: '/leaflet/images/marker-icon-2x.png', - iconUrl: '/leaflet/images/marker-icon.png', - shadowUrl: '/leaflet/images/marker-shadow.png', -}); - -const Map = () => { - const position = [51.505, -0.09]; // Координаты для центра карты - - return ( - - - - - A pretty CSS3 popup.
Easily customizable. -
-
-
- ); -}; - -export default Map; \ No newline at end of file diff --git a/app/index.tsx b/app/index.tsx new file mode 100644 index 0000000..0d99ef6 --- /dev/null +++ b/app/index.tsx @@ -0,0 +1,50 @@ +import { useState } from 'react'; + +const Home: React.FC = () => { + const [fileContent, setFileContent] = useState(''); + const [previewHtml, setPreviewHtml] = useState(''); + + const handleFileChange = (event: React.ChangeEvent) => { + const file = event.target.files?.[0]; + if (file) { + const reader = new FileReader(); + reader.onload = (e) => { + const xmlString = e.target?.result as string; + setFileContent(xmlString); + // Преобразование XML в HTML + const htmlString = convertXmlToHtml(xmlString); + setPreviewHtml(htmlString); + }; + reader.readAsText(file); + } + }; + + const convertXmlToHtml = (xml: string): string => { + // Простой пример преобразования XML в HTML + return xml.replace(/<(\w+)>(.*?)<\/\1>/g, '
$1: $2
'); + }; + + const handleDownload = () => { + const blob = new Blob([previewHtml], { type: 'text/html' }); + const link = document.createElement('a'); + link.href = URL.createObjectURL(blob); + link.download = 'converted.html'; + link.click(); + }; + + return ( +
+

Конвертер XML в HTML

+ +
+ + +

Предварительный просмотр:

+
+
+ ); +}; + +export default Home; \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index 925cf1d..1afbb1b 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,4 +1,5 @@ import Image from "next/image"; +import { useState } from 'react'; export default function Home() { return ( @@ -102,4 +103,4 @@ export default function Home() {
); -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 021cdb6..6b09755 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "leaflet": "^1.9.4", + "marked": "^15.0.8", "next": "15.2.3", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -4171,6 +4172,18 @@ "loose-envify": "cli.js" } }, + "node_modules/marked": { + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.8.tgz", + "integrity": "sha512-rli4l2LyZqpQuRve5C0rkn6pj3hT8EWPC+zkAxFTAJLxRbENfTAhEQq9itrmf1Y81QtAX5D/MYlGlIomNgj9lA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", diff --git a/package.json b/package.json index f10a18a..939ba37 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "leaflet": "^1.9.4", + "marked": "^15.0.8", "next": "15.2.3", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/tsconfig.json b/tsconfig.json index d8b9323..ab0435e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,6 +22,6 @@ "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "app/page", " map/ page/inde"], "exclude": ["node_modules"] }