import { useState, useEffect } from "react"; import { PMTiles, Header } from "../../js/index"; import { styled } from "./stitches.config"; import { JsonViewer } from "@textea/json-viewer"; const Padded = styled("div", { padding: "2rem", }); const Heading = styled("div", { paddingBottom: "2rem", fontFamily: "monospace" }); function Metadata(props: { file: PMTiles }) { let [metadata, setMetadata] = useState(); let [header, setHeader] = useState
(null); useEffect(() => { let pmtiles = props.file; const fetchData = async () => { setMetadata(await pmtiles.getMetadata()); setHeader(await pmtiles.getHeader()); }; fetchData(); }, [props.file]); return ( { header ?
root directory: offset={header.rootDirectoryOffset} len={header.rootDirectoryLength}
metadata: offset={header.jsonMetadataOffset} len={header.jsonMetadataLength}
leaf directories: offset={header.leafDirectoryOffset} len={header.leafDirectoryLength}
tile data: offset={header.tileDataOffset} len={header.tileDataLength}
num addressed tiles: {header.numAddressedTiles}
num tile entries: {header.numTileEntries}
num tile contents: {header.numTileContents}
clustered: {header.clustered ? "true" : "false"}
internal compression: {header.internalCompression}
tile compression: {header.tileCompression}
tile type: {header.tileType}
min zoom: {header.minZoom}
max zoom: {header.maxZoom}
min lon, min lat, max lon, max lat: {header.minLon}, {header.minLat}, {header.maxLon}, {header.maxLat}
center zoom: {header.centerZoom}
center lon, center lat: {header.centerLon}, {header.centerLat}
: null }
); } export default Metadata;