@macrostrat/map-interface 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/index.cjs +147 -139
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +7 -5
- package/dist/index.css.map +1 -1
- package/dist/index.js +157 -149
- package/dist/index.js.map +1 -1
- package/dist/main.css +945 -0
- package/dist/main.css.map +1 -0
- package/dist/main.js +1924 -0
- package/dist/main.js.map +1 -0
- package/dist/module.css +945 -0
- package/dist/module.css.map +1 -0
- package/dist/module.js +1915 -0
- package/dist/module.js.map +1 -0
- package/dist/types.d.ts +50 -18
- package/dist/types.d.ts.map +1 -1
- package/package.json +15 -11
- package/src/container.ts +66 -31
- package/src/context-panel/index.ts +2 -1
- package/src/context-panel/main.module.sass +7 -6
- package/src/controls.ts +12 -1
- package/src/dev/main.module.sass +1 -1
- package/src/expansion-panel/main.module.sass +8 -4
- package/src/helpers.ts +2 -2
- package/src/location-info/hash-string.ts +102 -0
- package/src/location-info/index.ts +6 -4
- package/src/location-info/utils.ts +0 -20
- package/src/location-panel/header.ts +19 -6
- package/src/location-panel/index.ts +32 -5
- package/src/location-panel/main.module.sass +3 -3
- package/src/main.module.sass +169 -82
- package/src/map-view/index.ts +6 -4
- package/src/map-view/terrain.ts +8 -5
- package/src/main.module.ref.styl +0 -407
- package/src/map-view/main.module.sass +0 -23
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/map-interface/src/index.ts","packages/map-interface/src/context-panel/index.ts","packages/map-interface/src/context-panel/main.module.sass","packages/map-interface/src/location-panel/index.ts","packages/map-interface/src/location-panel/header.ts","packages/map-interface/src/location-panel/main.module.sass","packages/map-interface/src/location-info/index.ts","packages/map-interface/src/location-info/utils.ts","packages/map-interface/src/dev/index.ts","packages/map-interface/src/dev/map-page.ts","packages/map-interface/src/dev/xray.ts","packages/map-interface/src/container.ts","packages/map-interface/src/main.module.sass","packages/map-interface/src/controls.ts","packages/map-interface/src/helpers.ts","packages/map-interface/src/utils.ts","packages/map-interface/src/map-view/index.ts","packages/map-interface/src/map-view/main.module.sass","packages/map-interface/src/map-view/terrain.ts","packages/map-interface/src/dev/main.module.sass","packages/map-interface/src/dev/tile-extent.ts","packages/map-interface/src/dev/vector-tile-features.ts","packages/map-interface/src/expansion-panel/index.ts","packages/map-interface/src/expansion-panel/main.module.sass","packages/map-interface/src/expansion-panel/headers.ts"],"sourcesContent":["export * from \"./context-panel\";\nexport * from \"./location-panel\";\nexport * from \"./dev\";\nexport * from \"./container\";\nexport * from \"./map-view\";\nexport * from \"./controls\";\nexport * from \"./helpers\";\nexport * from \"./utils\";\nexport * from \"./location-info\";\nexport * from \"./expansion-panel\";\n","import { useMemo } from \"react\";\nimport { Navbar, Button, InputGroup, Spinner, Card } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useMapStatus } from \"@macrostrat/mapbox-react\";\n\nconst h = hyper.styled(styles);\n\nconst spinnerElement = h(Spinner, { size: 16 });\n\nexport function LoadingButton({\n isLoading = false,\n onClick,\n active = false,\n icon = \"menu\",\n}) {\n return h(Button, {\n icon: isLoading ? spinnerElement : icon,\n large: true,\n minimal: true,\n onClick,\n active: active && !isLoading,\n });\n}\n\nexport function MapLoadingButton(props) {\n const { isLoading } = useMapStatus();\n const mapIsLoading = useMemo(() => isLoading, [isLoading]);\n return h(LoadingButton, { ...props, isLoading: mapIsLoading });\n}\n\ntype AnyChildren = React.ReactNode | React.ReactFragment;\n\nexport function FloatingNavbar({\n className,\n children,\n statusElement = null,\n}: {\n className?: string;\n children?: AnyChildren;\n statusElement?: AnyChildren;\n}) {\n return h(\"div.searchbar-holder\", { className }, [\n h(\"div.navbar-holder\", [\n h(Navbar, { className: \"searchbar panel\" }, children),\n ]),\n h.if(statusElement != null)(\n Card,\n { className: \"status-tongue\" },\n statusElement\n ),\n ]);\n}\n",".searchbar-holder\n transition: margin 300ms\n display: flex\n flex-direction: column\n margin: 0\n .navbar-holder\n display: flex\n flex-direction: row\n .searchbar\n width: 100%\n background-color: var(--panel-background-color)\n border-radius: 3px\n padding: 0 5px\n display: flex\n flex-direction: row\n align-items: center\n :global(.bp4-input-group)\n flex-grow: 1\n cursor: text\n &>*\n margin-right: 5px\n &:last-child\n margin-right: 0\n\n.status-tongue\n background-color: var(--panel-background-color)\n margin: 5px\n margin-top: -12px\n padding: 0\n padding-top: 12px\n\n@media screen and (max-width: 768px)\n .status-tongue\n max-width: 100vw\n margin: 0\n border-radius: 0\n margin-top: -3px\n","import { Card } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport { InfoDrawerHeader } from \"./header\";\nimport classNames from \"classnames\";\nimport styles from \"./main.module.sass\";\nimport { ErrorBoundary } from \"@macrostrat/ui-components\";\n\nconst h = hyper.styled(styles);\n\nexport function InfoDrawerContainer(props) {\n const className = classNames(\"infodrawer\", props.className);\n return h(Card, { ...props, className });\n}\n\nexport function LocationPanel(props) {\n const { children, className, loading = false, ...rest } = props;\n const cls = classNames(\"location-panel\", className, { loading });\n return h(InfoDrawerContainer, { className: cls }, [\n h(InfoDrawerHeader, rest),\n h(\"div.infodrawer-body\", h(\"div.infodrawer-contents\", h(ErrorBoundary, null, children))),\n ]);\n}\n","import { Icon, Button } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useToaster } from \"@macrostrat/ui-components\";\nimport { LngLatCoords, Elevation } from \"../location-info\";\nimport {\n LocationFocusButton,\n useFocusState,\n isCentered,\n} from \"@macrostrat/mapbox-react\";\n\nconst h = hyper.styled(styles);\n\nfunction PositionButton({ position }) {\n const focusState = useFocusState(position);\n\n return h(\"div.position-controls\", [\n h(LocationFocusButton, { location: position, focusState }, []),\n isCentered(focusState) ? h(CopyLinkButton, { itemName: \"position\" }) : null,\n ]);\n}\n\nfunction CopyLinkButton({ itemName, children, onClick, ...rest }) {\n const toaster = useToaster();\n\n let message = `Copied link`;\n if (itemName != null) {\n message += ` to ${itemName}`;\n }\n message += \"!\";\n\n return h(\n Button,\n {\n className: \"copy-link-button\",\n rightIcon: h(Icon, { icon: \"link\", size: 12 }),\n minimal: true,\n small: true,\n onClick() {\n navigator.clipboard.writeText(window.location.href).then(\n () => {\n toaster?.show({\n message,\n intent: \"success\",\n icon: \"clipboard\",\n timeout: 1000,\n });\n onClick?.();\n },\n () => {\n toaster?.show({\n message: \"Failed to copy link\",\n intent: \"danger\",\n icon: \"error\",\n timeout: 1000,\n });\n }\n );\n },\n ...rest,\n },\n children ?? \"Copy link\"\n );\n}\n\ninterface InfoDrawerHeaderProps {\n onClose: () => void;\n position: mapboxgl.LngLat;\n zoom?: number;\n elevation?: number;\n}\n\nexport function InfoDrawerHeader(props: InfoDrawerHeaderProps) {\n const { onClose, position, zoom = 7, elevation } = props;\n\n return h(\"header.location-panel-header\", [\n h(PositionButton, { position }),\n h(\"div.spacer\"),\n h(LngLatCoords, { position, zoom, className: \"infodrawer-header-item\" }),\n h.if(elevation != null)(Elevation, {\n elevation,\n className: \"infodrawer-header-item\",\n }),\n h(Button, { minimal: true, icon: \"cross\", onClick: onClose }),\n ]);\n}\n",".copy-link-button:global(.bp4-minimal.bp4-button)\n color: var(--text-subtle-color)\n svg\n fill: var(--text-subtle-color)\n\n.location-panel-header\n padding: 5px\n display: flex\n flex-direction: row\n align-items: center\n gap: 1em\n border-bottom: 1px solid var(--panel-rule-color)\n .spacer\n flex-grow: 1\n .left-icon\n padding: 7px\n\n .position-controls :global(.bp4-button)\n font-size: 12px !important\n\n.infodrawer-header-item\n font-size: 12px\n :global(.secondary)\n font-size: 0.9em\n color: var(--text-subtle-color)\n\n.infodrawer\n pointer-events: all\n max-height: 100%\n max-width: 100%\n height: fit-content\n display: flex\n flex-direction: column\n overflow: hidden\n &:global(.bp4-card)\n padding: 0\n\n &.loading\n .infodrawer-body\n overflow-y: hidden\n min-height: 70px\n\n.infodrawer-contents\n padding: 0 1em 1em\n\n.infodrawer-body\n flex-shrink: 1\n min-height: 0\n transition: min-height 0.5s ease\n overflow-y: scroll\n position: relative\n\n// TODO: remove this when we have a better way to handle card media queries\n@media screen and (max-width: 768px)\n .infodrawer\n border-radius: var(--panel-border-radius, 0px)\n","import h from \"@macrostrat/hyper\";\nimport {\n formatValue,\n normalizeLng,\n metersToFeet,\n formatCoordForZoomLevel,\n} from \"./utils\";\n\nexport function ValueWithUnit(props) {\n const { value, unit } = props;\n return h(\"span.value-with-unit\", [\n h(\"span.value\", [value]),\n h(\"span.spacer\", [\" \"]),\n h(\"span.unit\", [unit]),\n ]);\n}\n\nexport function DegreeCoord(props) {\n const { value, labels, precision = 3, format = formatValue } = props;\n const direction = value < 0 ? labels[1] : labels[0];\n\n return h(ValueWithUnit, {\n value: format(Math.abs(value), precision) + \"°\",\n unit: direction,\n });\n}\n\nexport interface LngLatProps {\n /** Map position */\n position: [number, number] | { lat: number; lng: number };\n className?: string;\n /** Zoom level (used to infer coordinate rounding if provided) */\n zoom?: number | null;\n /** Number of decimal places to round coordinates to */\n precision: number | null;\n /** Function to format coordinates */\n format?: (val: number, precision: number) => string;\n}\n\nexport function LngLatCoords(props: LngLatProps) {\n /** Formatted geographic coordinates */\n const { position, className, precision, zoom } = props;\n let { format } = props;\n if (position == null) {\n return null;\n }\n let lat, lng;\n if (Array.isArray(position)) {\n [lng, lat] = position;\n } else {\n ({ lat, lng } = position);\n }\n\n if (zoom != null && format == null && precision == null) {\n format = (val, _) => formatCoordForZoomLevel(val, zoom);\n }\n\n return h(\"div.lnglat-container\", { className }, [\n h(\"span.lnglat\", [\n h(DegreeCoord, {\n value: lat,\n labels: [\"N\", \"S\"],\n precision,\n format,\n }),\n \", \",\n h(DegreeCoord, {\n value: normalizeLng(lng),\n labels: [\"E\", \"W\"],\n precision,\n format,\n }),\n ]),\n ]);\n}\n\nexport function Elevation(props) {\n /** Renders an elevation value in meters and a parenthetical conversion to feet. */\n const { elevation, className, includeFeet = true } = props;\n if (elevation == null) return null;\n return h(\"div.elevation\", { className }, [\n h(ValueWithUnit, { value: elevation, unit: \"m\" }),\n h.if(includeFeet)(\"span.secondary\", [\n \" (\",\n h(ValueWithUnit, { value: metersToFeet(elevation), unit: \"ft\" }),\n \")\",\n ]),\n ]);\n}\n","import { format } from \"d3-format\";\n\nexport function formatCoordForZoomLevel(val: number, zoom: number): string {\n if (zoom < 2) {\n return fmt1(val);\n } else if (zoom < 4) {\n return fmt2(val);\n } else if (zoom < 7) {\n return fmt3(val);\n }\n return fmt4(val);\n}\n\nexport function normalizeLng(lng) {\n // via https://github.com/Leaflet/Leaflet/blob/32c9156cb1d1c9bd53130639ec4d8575fbeef5a6/src/core/Util.js#L87\n return (((((lng - 180) % 360) + 360) % 360) - 180).toFixed(4);\n}\n\nexport const fmt4 = format(\".4~f\");\nexport const fmt3 = format(\".3~f\");\nexport const fmt2 = format(\".2~f\");\nexport const fmt1 = format(\".1~f\");\nexport const fmtInt = format(\".0f\");\n\nexport function formatValue(val: number, precision: number = 0): string {\n switch (precision) {\n case 4:\n return fmt4(val);\n case 3:\n return fmt3(val);\n case 2:\n return fmt2(val);\n case 1:\n return fmt1(val);\n case 0:\n return fmtInt(val);\n default:\n return fmt4(val);\n }\n}\n\nexport function metersToFeet(meters, precision = 0) {\n return (meters * 3.28084).toFixed(precision);\n}\n","export * from \"./map-page\";\nexport * from \"./tile-extent\";\nexport * from \"./vector-tile-features\";\nexport * from \"./xray\";\n","// Import other components\nimport { Switch } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport { Spacer, useDarkMode, useStoredState } from \"@macrostrat/ui-components\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useCallback, useState, useEffect } from \"react\";\nimport { buildInspectorStyle, buildXRayStyle } from \"./xray\";\nimport { MapAreaContainer, PanelCard } from \"../container\";\nimport { FloatingNavbar, MapLoadingButton } from \"../context-panel\";\nimport { MapMarker } from \"../helpers\";\nimport { LocationPanel } from \"../location-panel\";\nimport { MapView } from \"../map-view\";\nimport styles from \"./main.module.sass\";\nimport { TileExtentLayer } from \"./tile-extent\";\nimport {\n FeaturePanel,\n FeatureSelectionHandler,\n TileInfo,\n} from \"./vector-tile-features\";\nimport { MapPosition } from \"@macrostrat/mapbox-utils\";\n\nexport enum MacrostratVectorTileset {\n Carto = \"carto\",\n CartoSlim = \"carto-slim\",\n IGCPOrogens = \"igcp-orogens\",\n}\n\nexport enum MacrostratRasterTileset {\n Carto = \"carto\",\n Emphasized = \"emphasized\",\n}\n\nexport const h = hyper.styled(styles);\n\nexport function DevMapPage({\n title = \"Map inspector\",\n headerElement = null,\n transformRequest = null,\n mapPosition = null,\n mapboxToken = null,\n overlayStyle = null,\n children,\n style,\n focusedSource = null,\n focusedSourceTitle = null,\n projection = null,\n}: {\n headerElement?: React.ReactElement;\n transformRequest?: mapboxgl.TransformRequestFunction;\n title?: string;\n style: mapboxgl.Style | string;\n children?: React.ReactNode;\n mapboxToken?: string;\n overlayStyle?: mapboxgl.Style | string;\n focusedSource?: string;\n focusedSourceTitle?: string;\n projection?: string;\n mapPosition?: MapPosition;\n}) {\n /* We apply a custom style to the panel container when we are interacting\n with the search bar, so that we can block map interactions until search\n bar focus is lost.\n We also apply a custom style when the infodrawer is open so we can hide\n the search bar on mobile platforms\n */\n\n const dark = useDarkMode();\n const isEnabled = dark?.isEnabled;\n\n if (mapboxToken != null) {\n mapboxgl.accessToken = mapboxToken;\n }\n\n style ??= isEnabled\n ? \"mapbox://styles/mapbox/dark-v10\"\n : \"mapbox://styles/mapbox/light-v10\";\n\n const [isOpen, setOpen] = useState(false);\n\n const [state, setState] = useStoredState(\"macrostrat:dev-map-page\", {\n showTileExtent: false,\n xRay: false,\n });\n const { showTileExtent, xRay } = state;\n\n const [actualStyle, setActualStyle] = useState(style);\n\n useEffect(() => {\n buildInspectorStyle(style, overlayStyle, {\n mapboxToken,\n inDarkMode: isEnabled,\n xRay,\n }).then(setActualStyle);\n }, [style, xRay, mapboxToken, isEnabled, overlayStyle]);\n\n const [inspectPosition, setInspectPosition] =\n useState<mapboxgl.LngLat | null>(null);\n\n const [data, setData] = useState(null);\n\n const onSelectPosition = useCallback((position: mapboxgl.LngLat) => {\n setInspectPosition(position);\n }, []);\n\n let detailElement = null;\n if (inspectPosition != null) {\n detailElement = h(\n LocationPanel,\n {\n onClose() {\n setInspectPosition(null);\n },\n position: inspectPosition,\n },\n [\n h(TileInfo, {\n feature: data?.[0] ?? null,\n showExtent: showTileExtent,\n setShowExtent() {\n setState({ ...state, showTileExtent: !showTileExtent });\n },\n }),\n h(FeaturePanel, { features: data, focusedSource, focusedSourceTitle }),\n ]\n );\n }\n\n let tile = null;\n if (showTileExtent && data?.[0] != null) {\n let f = data[0];\n tile = { x: f._x, y: f._y, z: f._z };\n }\n\n console.log(\"Style\", actualStyle);\n\n return h(\n MapAreaContainer,\n {\n navbar: h(FloatingNavbar, [\n headerElement ?? h(\"h2\", title),\n h(Spacer),\n h(MapLoadingButton, {\n active: isOpen,\n onClick: () => setOpen(!isOpen),\n }),\n ]),\n contextPanel: h(PanelCard, [\n h(Switch, {\n checked: xRay,\n label: \"X-ray mode\",\n onChange() {\n setState({ ...state, xRay: !xRay });\n },\n }),\n children,\n ]),\n detailPanel: detailElement,\n contextPanelOpen: isOpen,\n },\n h(\n MapView,\n {\n style: actualStyle,\n transformRequest,\n mapPosition,\n projection: \"globe\",\n },\n [\n h(FeatureSelectionHandler, {\n selectedLocation: inspectPosition,\n setFeatures: setData,\n }),\n h(MapMarker, {\n position: inspectPosition,\n setPosition: onSelectPosition,\n }),\n h(TileExtentLayer, { tile, color: isEnabled ? \"white\" : \"black\" }),\n ]\n )\n );\n}\n","import { getMapboxStyle, mergeStyles } from \"@macrostrat/mapbox-utils\";\nimport chroma from \"chroma-js\";\nimport mapboxgl from \"mapbox-gl\";\n\ninterface XRayOptions {\n color?: string;\n inDarkMode?: boolean;\n mapboxToken?: string;\n xRaySources?: string[];\n}\n\nexport async function buildXRayStyle(\n baseStyle: string | object,\n params: XRayOptions = null\n) {\n const {\n inDarkMode = false,\n color = \"rgb(74, 242, 161)\",\n mapboxToken,\n xRaySources\n } = params;\n const style = await getMapboxStyle(baseStyle, { access_token: mapboxToken });\n const sources = xRaySources ?? Object.keys(style.sources);\n\n let layers = [];\n for (let layer of style.layers) {\n if (!sources.includes(layer.source)) {\n layers.push(layer);\n continue;\n }\n let newLayer = transformMapboxLayer(layer, color, inDarkMode);\n if (newLayer != null) {\n layers.push(newLayer);\n }\n }\n\n return {\n ...style,\n layers,\n };\n}\n\nfunction transformMapboxLayer(layer, color, inDarkMode) {\n const c = chroma(color);\n const xRayColor = (opacity = 1, darken = 0) => {\n if (!inDarkMode) {\n return chroma(color)\n .darken(2 - darken)\n .alpha(opacity)\n .css();\n }\n return c.alpha(opacity).darken(darken).css();\n };\n\n if (layer.type == \"background\") {\n return null;\n }\n\n let newLayer = { ...layer };\n\n if (layer.type == \"fill\") {\n newLayer.paint = {\n \"fill-color\": xRayColor(0.1),\n \"fill-outline-color\": xRayColor(0.5),\n };\n } else if (layer.type == \"line\") {\n newLayer.paint = {\n \"line-color\": xRayColor(0.5, 0),\n \"line-width\": 1.5,\n };\n } else if (layer.type == \"symbol\") {\n newLayer.paint = {\n \"text-color\": xRayColor(1, -0.5),\n \"text-halo-color\": \"#000\",\n };\n } else if (layer.type == \"circle\") {\n newLayer.paint = {\n \"circle-color\": xRayColor(0.5, 0),\n \"circle-stroke-color\": xRayColor(0.5, 1),\n \"circle-radius\": 2,\n };\n }\n\n return newLayer;\n}\n\ntype InspectorStyleOptions = XRayOptions & {\n xRay?: boolean;\n};\n\nexport async function buildInspectorStyle(\n baseStyle: mapboxgl.Style | string,\n overlayStyle: mapboxgl.Style | string | null = null,\n params: InspectorStyleOptions = {}\n) {\n const { mapboxToken, xRay = false, xRaySources: _xRaySources, ...rest } = params;\n let xRaySources = _xRaySources;\n let style = await getMapboxStyle(baseStyle, {\n access_token: mapboxToken,\n });\n\n if (overlayStyle != null) {\n const overlay = await getMapboxStyle(overlayStyle, {\n access_token: mapboxToken,\n });\n style = mergeStyles(style, overlay);\n xRaySources ??= Object.keys(overlay.sources);\n }\n\n\n if (xRay) {\n // If we haven't specified sources, then we'll use all of them\n xRaySources ??= Object.keys(style.sources);\n\n style = await buildXRayStyle(style, { ...rest, mapboxToken, xRaySources });\n }\n return style;\n}\n","import hyper from \"@macrostrat/hyper\";\nimport { HTMLDivProps } from \"@blueprintjs/core\";\nimport styles from \"./main.module.sass\";\nimport classNames from \"classnames\";\nimport { useTransition } from \"transition-hook\";\nimport {\n MapboxMapProvider,\n ZoomControl,\n useMapPosition,\n} from \"@macrostrat/mapbox-react\";\nimport { ToasterContext } from \"@macrostrat/ui-components\";\nimport { MapBottomControls } from \"./controls\";\nimport { mapViewInfo, MapPosition } from \"@macrostrat/mapbox-utils\";\nimport { Card } from \"@blueprintjs/core\";\n\nimport { ReactNode } from \"react\";\n\nexport function MapInterface() {\n return h(\"div\", \"Hello world\");\n}\n\nconst h = hyper.styled(styles);\n\ntype AnyElement = React.ReactNode | React.ReactElement | React.ReactFragment;\n\nexport const PanelCard = (props) =>\n h(Card, { ...props, className: classNames(\"panel-card\", props.className) });\n\nfunction _MapAreaContainer({\n children,\n className,\n navbar,\n contextPanel = null,\n detailPanel = null,\n detailPanelOpen,\n contextPanelOpen = true,\n bottomPanel = null,\n mainPanel,\n mapControls = h(MapBottomControls),\n contextStackProps = null,\n detailStackProps = null,\n mapPosition = null,\n fitViewport = true,\n ...rest\n}: {\n navbar: AnyElement;\n children?: AnyElement;\n mapControls?: AnyElement;\n contextPanel?: AnyElement;\n contextStack?: AnyElement;\n mainPanel?: AnyElement;\n detailPanel?: AnyElement;\n bottomPanel?: AnyElement;\n className?: string;\n detailPanelOpen?: boolean;\n contextPanelOpen?: boolean;\n contextStackProps?: HTMLDivProps;\n detailStackProps?: HTMLDivProps;\n mapPosition?: MapPosition;\n fitViewport?: boolean;\n}) {\n const _detailPanelOpen = detailPanelOpen ?? detailPanel != null;\n const contextPanelTrans = useTransition(contextPanelOpen, 800);\n const detailPanelTrans = useTransition(_detailPanelOpen, 800);\n\n /*- We apply a custom style to the panel container when we are interacting\n with the search bar, so that we can block map interactions until search\n bar focus is lost.\n - We also apply a custom style when the infodrawer is open so we can hide\n the search bar on mobile platforms\n - These styles are doubly applied so we can have both namespaced and\n outside-accessible styles for each case.\n */\n const mainUIClassName = classNames(\n {\n \"detail-panel-open\": _detailPanelOpen,\n \"map-context-open\": contextPanelOpen,\n },\n `context-panel-${contextPanelTrans.stage}`,\n `map-context-${contextPanelTrans.stage}`,\n `detail-panel-${detailPanelTrans.stage}`,\n `map-detail-${detailPanelTrans.stage}`\n );\n\n return h(\n MapStyledContainer,\n {\n className: classNames(\"map-page\", className, {\n \"fit-viewport\": fitViewport,\n }),\n mapPosition,\n },\n [\n h(\"div.main-ui\", { className: mainUIClassName, ...rest }, [\n h(\"div.context-stack\", [\n navbar,\n h(\"div.context-panel-holder\", [\n h.if(contextPanelTrans.shouldMount)([contextPanel]),\n ]),\n h(\"div.spacer\"),\n ]),\n //h(MapView),\n children ?? mainPanel,\n h(\"div.detail-stack.infodrawer-container\", detailStackProps, [\n detailPanel,\n h(ZoomControl, { className: \"zoom-control\" }),\n h(\"div.spacer\"),\n mapControls,\n ]),\n ]),\n h(\"div.bottom\", null, bottomPanel),\n ]\n );\n}\n\nconst MapProviders = ({ children }) =>\n h(ToasterContext, h(MapboxMapProvider, children));\n\nexport const MapAreaContainer = (props) =>\n h(MapProviders, h(_MapAreaContainer, props));\n\ninterface MapContainerProps {\n className?: string;\n mapPosition?: MapPosition;\n children?: ReactNode;\n}\n\nexport function MapStyledContainer({ className, children }: MapContainerProps) {\n const mapPosition = useMapPosition();\n if (mapPosition != null) {\n const { mapIsRotated, mapUse3D, mapIsGlobal } = mapViewInfo(mapPosition);\n className = classNames(className, {\n \"map-is-rotated\": mapIsRotated,\n \"map-3d-available\": mapUse3D,\n \"map-is-global\": mapIsGlobal,\n });\n }\n\n return h(\"div\", { className }, children);\n}\n\n//const _MapPage = compose(HotkeysProvider, MapPage);\n",".map-page\n display: flex\n flex-direction: column\n position: relative\n width: 100%\n height: 100%\n overflow: hidden\n &.fit-viewport\n height: 100vh\n width: 100vw\n /* mobile viewport bug fix */\n max-height: -webkit-fill-available\n\n // Compass display\n .compass-control\n display: none\n &.map-is-rotated\n .compass-control\n display: block\n\n .map-3d-control\n display: none\n &.map-3d-available .map-3d-control\n display: block\n &.map-is-rotated.map-3d-available .map-3d-control\n display: none\n\n .globe-control\n display: none\n svg\n color: var(--secondary-color)\n &.map-is-global .globe-control\n display: block\n\n.main-ui\n flex: 1\n position: relative\n display: flex\n flex-direction: column\n max-height: 100%\n height: 100%\n box-shadow: 0 0 10px 4px var(--card-shadow-color)\n\n.panel-card\n padding: 10px\n background-color: var(--panel-background-color)\n overflow: hidden\n\n & >:last-child\n margin-bottom: 0\n\n:global(.bp4-dark) .panel-card\n background-color: var(--panel-background-color)\n\n.context-stack\n display: flex\n flex-direction: column\n max-height: 100%\n\n &>div\n flex-shrink: 1\n\n &>.searchbar\n flex: 0\n\n.context-stack,\n.detail-stack\n z-index: 100\n\n.panel-container\n display: flex\n flex-direction: column\n\n &>div\n pointer-events: all\n\n.panel-title\n font-size: 16px\n\n.spacer\n flex-grow: 1\n pointer-events: none\n\n.map-view-container\n flex-grow: 1\n position: relative\n overflow: hidden\n\n.searchbar-holder\n margin-bottom: 0.5em\n\n.right-panel\n width: 24em\n\n.buttons\n display: flex\n flex-direction: row\n flex: 1\n min-width: 0\n\n.tab-button\n flex-shrink: 1\n min-width: 40px\n overflow: hidden\n text-align: right\n\n & :global(.bp4-button-text)\n transition: all 0.2s\n transition-delay: 0.1s\n\n .menu-card.narrow-card .panel-header:not(.minimal) &:global(.bp4-active) ~ & :global(.bp4-button-text)\n width: 0\n opacity: 0\n margin-left: -7px\n\n .context-panel-leave .menu-card .panel-header & :global(.bp4-button-text)\n opacity: 0\n width: 0\n\n.narrow-card.narrow-enter .panel-header .buttons\n margin-right: -500px\n\n.panel-header.minimal .tab-button:not(:hover):not(:global(.bp4-active))\n padding-left: 0\n padding-right: 0\n min-width: 30px\n width: 30px\n\n.panel-header.minimal .tab-button:not(:hover) :global(.bp4-button-text)\n width: 0\n opacity: 0\n margin-left: -7px\n\n.menu-group\n margin-bottom: 0.5em\n margin-top: 0.2em\n\n.menu-card :global .bp4-text ul,\n.menu-card :global .text-panel ul\n padding-left: 1em\n\n.menu-content\n display: flex\n flex-direction: column\n margin-bottom: -8px\n\n & .bp4-button-group\n margin-bottom: 4px\n\n & hr\n width: 100%\n\n:global\n .mapbox-map\n .mapbox-compass, .mapbox-3d\n display: none\n\n .mapboxgl-ctrl.mapbox-3d.mapbox-control\n width: unset\n\n .mapboxgl-ctrl.mapbox-3d.mapbox-control button\n width: unset\n padding-inline: 4px\n\n .mapboxgl-canvas-container\n width: 100%\n height: 100%\n\n .mapboxgl-ctrl.mapboxgl-ctrl-attrib\n background-color: var(--translucent-panel-background-color) !important\n\n .mapboxgl-ctrl.mapboxgl-ctrl-attrib a\n color: var(--text-color)\n\n .mapboxgl-marker svg path\n fill: var(--panel-background-color) !important\n\n .mapboxgl-marker svg circle\n fill: var(--secondary-color) !important\n\n .mapbox-control.mapbox-zoom\n background: var(--translucent-panel-background-inner)\n\n .mapbox-control.mapbox-zoom svg\n fill: var(--text-color) !important\n\n .mapboxgl-ctrl-logo\n transform: scale(0.9) translate(-8px, 2px)\n\n .bp4-dark .mapboxgl-ctrl-logo\n filter: invert(100%)\n\n .mapboxgl-ctrl-group button + button\n border-top: 1px solid var(--panel-rule-color) !important\n\n .bp4-dark .mapboxgl-ctrl-group .mapboxgl-ctrl-icon\n filter: invert(40%)\n\n .bp4-dark .mapboxgl-ctrl-group .mapboxgl-ctrl-icon:hover\n filter: invert(50%)\n\n .mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon\n filter: invert(40%)\n\n .mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon:hover\n filter: invert(50%)\n\n.detail-stack\n position: relative\n\n.main-ui.detail-panel-open .zoom-control\n opacity: 0\n display: none\n\n.zoom-control\n transition: opacity 1s ease-in-out\n width: 30px\n position: absolute\n top: 0\n right: 0\n\n.main-ui.searching .map-view-container\n pointer-events: none\n\n.map-controls\n display: flex\n flex-direction: row\n justify-content: right\n margin-bottom: 0\n\n &>*\n margin-left: 0.5em\n\n.map-controls :global(.mapbox-control),\n.map-controls :global(.map-control-wrapper),\n.map-controls .map-control\n min-width: 22px\n min-height: 22px\n border-radius: 4px\n background-color: var(--panel-background-color)\n box-shadow: 0 0 0 1px var(--card-shadow-color)\n\n.map-controls :global(.mapbox-control) button,\n.map-controls :global(.map-control-wrapper) button,\n.map-controls .map-control button\n width: 22px\n height: 22px\n background-position: center center\n padding: 0\n background-color: var(--panel-background-color)\n color: var(--text-color)\n\n.map-controls :global(.mapbox-control) button:hover,\n.map-controls :global(.map-control-wrapper) button:hover,\n.map-controls .map-control button:hover\n background-color: var(--panel-background-color) !important\n\n.map-controls .map-scale-control\n background: none\n box-shadow: none\n padding-top: 8px\n\n :global(.mapboxgl-ctrl-scale)\n background-color: var(--translucent-panel-background-color)\n border-color: var(--secondary-text-color)\n color: var(--secondary-text-color)\n\n/* For mobile phones, we want to make the most of screen space,\n which in some cases means adding complications to the basic page. */\n@media only screen and (max-width: 768px)\n .main-ui.detail-panel-enter .context-stack\n height: 0\n visibility: hidden\n transition: height 0.5s ease-in-out\n\n .detail-stack\n height: fit-content\n position: inherit\n max-height: 70%\n\n .infodrawer-stack\n max-height: 70%\n &:global(.exit-active)\n max-height: 0\n\n :global(.mapbox-control.mapbox-zoom)\n display: none\n\n .map-controls\n position: absolute\n top: -60px\n right: 10px\n\n .detail-panel\n border-radius: 0px\n\n/* Desktop styling is necessarily much more complicated than mobile\n to handle a two-column layout. */\n@media screen and (min-width: 768px)\n .main-ui\n flex-direction: row\n padding: 1em 1em 2em\n min-height: 80px\n &>*\n margin-right: 0.5em\n &>*:last-child\n margin-right: 0\n\n .context-stack\n max-width: 34em\n min-width: 14em\n transition: width 300ms ease\n padding-bottom: 0.5em\n width: var(--map-context-stack-width, 16em)\n margin-right: 0.5em\n display: flex\n flex-direction: column\n\n &>.spacer\n flex-grow: 0\n\n .context-panel-holder\n min-height: 0\n position: relative\n &>div\n max-height: 100%\n\n .main-ui.detail-panel-open .detail-stack\n width: var(--map-detail-stack-width, 30em)\n\n .detail-stack\n width: 30em\n pointer-events: none\n display: flex\n flex-direction: column\n\n .context-stack, .detail-stack\n pointer-events: none\n z-index: 100\n\n &>div\n pointer-events: all\n margin-bottom: 0.5em\n\n &:last-child\n margin-bottom: 0\n\n &.spacer\n pointer-events: none\n\n .context-stack .spacer\n min-height: 1em\n\n /* Make map fill page rather than containing div,\n by unsetting map position */\n .map-view-container\n position: unset\n\n.main-ui .detail-panel\n transition: opacity 0.8s ease, height 0.8s ease, max-height 0.8s ease\n\n.main-ui.detail-panel-from .detail-panel\n opacity: 0\n\n.main-ui.detail-panel-enter .detail-panel\n opacity: 1\n\n.main-ui.detail-panel-leave .detail-panel\n opacity: 0\n\n.main-ui .context-panel-holder\n pointer-events: none\n flex: 1\n &>div\n pointer-events: all\n transition: opacity 0.8s ease //, height 0.8s ease, max-height 0.8s ease, padding 0.8s ease\n\n.main-ui.context-panel-from .context-panel-holder>div\n opacity: 0\n\n.main-ui.context-panel-enter .context-panel-holder>div\n opacity: 1\n\n.main-ui.context-panel-leave .context-panel-holder>div\n opacity: 0\n // The max-height transition is a bit jerky because of panel padding.\n // We could probably fix this by pulling the panel container itself into\n // the class.\n //max-height: 0\n //padding: 0\n\n@media only screen and (max-width: 768px)\n .main-ui .detail-stack\n transition: opacity 0.8s ease, height 0.8s ease, max-height 0.8s ease\n\n .main-ui.detail-panel-from .detail-stack\n max-height: 0\n height: 0\n\n .main-ui.detail-panel-leave .detail-stack\n max-height: 0\n max-height: 0\n\n .main-ui.context-panel-from .context-panel\n max-height: 0\n height: 0\n\n .main-ui.context-panel-leave\n .context-stack\n .context-panel-holder\n flex: 0\n .spacer\n flex: 1\n\n// Shift UI around to center elements if we're in the global view \n@media only screen and (min-width: 768px)\n .map-page .main-ui.detail-panel-leave .map-view-container\n margin-right: -14em\n\n .map-page.map-is-global .main-ui.detail-panel-leave .map-view-container\n margin-right: -30em\n\n .map-page.map-is-global .main-ui.context-panel-leave .map-view-container\n margin-left: -16em\n","import { useRef } from \"react\";\nimport { GeolocateControl } from \"mapbox-gl\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport {\n CompassControl,\n GlobeControl,\n ThreeDControl,\n MapControlWrapper,\n} from \"@macrostrat/mapbox-react\";\nimport { ScaleControl as BaseScaleControl } from \"mapbox-gl\";\n\nconst h = hyper.styled(styles);\n\nfunction ScaleControl(props) {\n const optionsRef = useRef({\n maxWidth: 200,\n unit: \"metric\",\n });\n return h(MapControlWrapper, {\n className: \"map-scale-control\",\n control: BaseScaleControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nfunction GeolocationControl(props) {\n const optionsRef = useRef({\n showAccuracyCircle: true,\n showUserLocation: true,\n trackUserLocation: true,\n positionOptions: {\n enableHighAccuracy: true,\n },\n });\n return h(MapControlWrapper, {\n control: GeolocateControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nexport function MapBottomControls() {\n return h(\"div.map-controls\", [\n h(ScaleControl),\n h(ThreeDControl, { className: \"map-3d-control\" }),\n h(CompassControl, { className: \"compass-control\" }),\n h(GlobeControl, { className: \"globe-control\" }),\n h(GeolocationControl, { className: \"geolocation-control\" }),\n ]);\n}\n","import {\n useMapRef,\n useMapEaseToCenter,\n useMapDispatch,\n useMapStatus,\n} from \"@macrostrat/mapbox-react\";\nimport { useRef } from \"react\";\nimport { debounce } from \"underscore\";\nimport useResizeObserver from \"use-resize-observer\";\n\nimport { getMapPosition } from \"@macrostrat/mapbox-utils\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { getMapPadding, useMapMarker } from \"./utils\";\n\nexport function MapResizeManager({ containerRef }) {\n const mapRef = useMapRef();\n\n const debouncedResize = useRef(\n debounce(() => {\n mapRef.current?.resize();\n }, 100)\n );\n\n useResizeObserver({\n ref: containerRef,\n onResize: debouncedResize.current,\n });\n\n return null;\n}\n\ninterface MapPaddingManagerProps {\n containerRef: React.RefObject<HTMLDivElement>;\n parentRef: React.RefObject<HTMLDivElement>;\n infoMarkerPosition: mapboxgl.LngLatLike;\n}\n\nexport function MapPaddingManager({\n containerRef,\n parentRef,\n infoMarkerPosition,\n}: MapPaddingManagerProps) {\n const mapRef = useMapRef();\n\n const [padding, setPadding] = useState(\n getMapPadding(containerRef, parentRef)\n );\n\n const updateMapPadding = useCallback(() => {\n const newPadding = getMapPadding(containerRef, parentRef);\n setPadding(newPadding);\n }, [containerRef.current, parentRef.current]);\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n // Update map padding on load\n updateMapPadding();\n }, [mapRef.current]);\n\n useResizeObserver({\n ref: parentRef,\n onResize(sz) {\n updateMapPadding();\n },\n });\n\n useMapEaseToCenter(infoMarkerPosition, padding);\n\n return null;\n}\n\nexport function MapMovedReporter({ onMapMoved = null }) {\n const mapRef = useMapRef();\n const dispatch = useMapDispatch();\n\n const mapMovedCallback = useCallback(() => {\n const map = mapRef.current;\n if (map == null) return;\n const mapPosition = getMapPosition(map);\n dispatch({ type: \"map-moved\", payload: mapPosition });\n onMapMoved?.(mapPosition, map);\n }, [mapRef.current, onMapMoved, dispatch]);\n\n useEffect(() => {\n // Get the current value of the map. Useful for gradually moving away\n // from class component\n const map = mapRef.current;\n if (map == null) return;\n // Update the URI when the map moves\n mapMovedCallback();\n const cb = debounce(mapMovedCallback, 100);\n map.on(\"moveend\", cb);\n return () => {\n map?.off(\"moveend\", cb);\n };\n }, [mapMovedCallback]);\n return null;\n}\n\nexport function MapLoadingReporter({\n ignoredSources,\n onMapLoading = null,\n onMapIdle = null,\n mapIsLoading,\n}) {\n const mapRef = useMapRef();\n const loadingRef = useRef(false);\n const dispatch = useMapDispatch();\n\n useEffect(() => {\n const map = mapRef.current;\n const mapIsLoading = loadingRef.current;\n if (map == null) return;\n\n let didSendLoading = false;\n\n const loadingCallback = (evt) => {\n if (ignoredSources.includes(evt.sourceId) || mapIsLoading) return;\n if (didSendLoading) return;\n onMapLoading?.(evt);\n dispatch({ type: \"set-loading\", payload: true });\n loadingRef.current = true;\n didSendLoading = true;\n };\n const idleCallback = (evt) => {\n if (!mapIsLoading) return;\n dispatch({ type: \"set-loading\", payload: false });\n loadingRef.current = false;\n onMapIdle?.(evt);\n };\n map.on(\"sourcedataloading\", loadingCallback);\n map.on(\"idle\", idleCallback);\n return () => {\n map?.off(\"sourcedataloading\", loadingCallback);\n map?.off(\"idle\", idleCallback);\n };\n }, [ignoredSources, mapRef.current, mapIsLoading]);\n return null;\n}\n\nexport function MapMarker({ position, setPosition, centerMarker = true }) {\n const mapRef = useMapRef();\n const markerRef = useRef(null);\n\n useMapMarker(mapRef, markerRef, position);\n\n const handleMapClick = useCallback(\n (event: mapboxgl.MapMouseEvent) => {\n setPosition(event.lngLat, event, mapRef.current);\n // We should integrate this with the \"easeToCenter\" hook\n if (centerMarker) {\n mapRef.current?.flyTo({ center: event.lngLat, duration: 800 });\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [mapRef.current, setPosition]\n );\n\n useEffect(() => {\n const map = mapRef.current;\n if (map != null && setPosition != null) {\n map.on(\"click\", handleMapClick);\n }\n return () => {\n map?.off(\"click\", handleMapClick);\n };\n }, [mapRef.current, setPosition]);\n\n return null;\n}\n","import { useEffect } from \"react\";\nimport { Marker } from \"mapbox-gl\";\n\nfunction calcMapPadding(rect, childRect) {\n return {\n left: Math.max(rect.left - childRect.left, 0),\n top: Math.max(rect.top - childRect.top, 0),\n right: Math.max(childRect.right - rect.right, 0),\n bottom: Math.max(childRect.bottom - rect.bottom, 0),\n };\n}\n\nexport function getMapPadding(ref, parentRef) {\n const rect = parentRef.current?.getBoundingClientRect();\n const childRect = ref.current?.getBoundingClientRect();\n if (rect == null || childRect == null) return;\n return calcMapPadding(rect, childRect);\n}\n\nexport function useMapMarker(mapRef, markerRef, markerPosition) {\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n if (markerPosition == null) {\n markerRef.current?.remove();\n return;\n }\n const marker = markerRef.current ?? new Marker();\n marker.setLngLat(markerPosition).addTo(map);\n markerRef.current = marker;\n return () => marker.remove();\n }, [mapRef.current, markerPosition]);\n}\n","import hyper from \"@macrostrat/hyper\";\nimport {\n useMapRef,\n useMapDispatch,\n useMapPosition,\n} from \"@macrostrat/mapbox-react\";\nimport {\n mapViewInfo,\n MapPosition,\n setMapPosition,\n} from \"@macrostrat/mapbox-utils\";\nimport classNames from \"classnames\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useEffect, useRef, useCallback } from \"react\";\nimport styles from \"./main.module.sass\";\nimport rootStyles from \"../main.module.sass\";\nimport { enable3DTerrain } from \"./terrain\";\nimport {\n MapLoadingReporter,\n MapMovedReporter,\n MapPaddingManager,\n MapResizeManager,\n} from \"../helpers\";\nimport \"mapbox-gl/dist/mapbox-gl.css\";\n\nconst h = hyper.styled({ ...styles, ...rootStyles });\n\ntype MapboxCoreOptions = Omit<mapboxgl.MapboxOptions, \"container\">;\n\nexport interface MapViewProps extends MapboxCoreOptions {\n showLineSymbols?: boolean;\n children?: React.ReactNode;\n accessToken?: string;\n terrainSourceID?: string;\n enableTerrain?: boolean;\n infoMarkerPosition?: mapboxgl.LngLatLike;\n //style: mapboxgl.Style | string;\n //transformRequest?: mapboxgl.TransformRequestFunction;\n mapPosition?: MapPosition;\n onMapLoad?: (map: mapboxgl.Map) => void;\n}\n\nexport interface MapboxOptionsExt extends MapboxCoreOptions {\n mapPosition?: MapPosition;\n}\n\nfunction defaultInitializeMap(container, args: MapboxOptionsExt = {}) {\n const { mapPosition, ...rest } = args;\n\n const map = new mapboxgl.Map({\n container,\n maxZoom: 18,\n //maxTileCacheSize: 0,\n logoPosition: \"bottom-left\",\n trackResize: true,\n antialias: true,\n optimizeForTerrain: true,\n ...rest,\n });\n\n // set initial map position\n if (mapPosition != null) {\n setMapPosition(map, mapPosition);\n }\n\n //setMapPosition(map, mapPosition);\n return map;\n}\n\nconst defaultMapPosition: MapPosition = {\n camera: {\n lat: 34,\n lng: -120,\n altitude: 300000,\n },\n};\n\nexport function MapView(props: MapViewProps) {\n let { terrainSourceID } = props;\n const {\n enableTerrain = true,\n style,\n mapPosition = defaultMapPosition,\n initializeMap = defaultInitializeMap,\n children,\n accessToken,\n infoMarkerPosition,\n transformRequest,\n projection,\n onMapLoaded = null,\n onStyleLoaded = null,\n ...rest\n } = props;\n if (enableTerrain) {\n terrainSourceID ??= \"mapbox-3d-dem\";\n }\n\n if (accessToken != null) {\n mapboxgl.accessToken = accessToken;\n }\n\n const dispatch = useMapDispatch();\n let mapRef = useMapRef();\n const ref = useRef<HTMLDivElement>();\n const parentRef = useRef<HTMLDivElement>();\n\n // Keep track of map position for reloads\n\n useEffect(() => {\n if (style == null) return;\n if (mapRef.current != null) {\n console.log(\"Setting style\", style);\n mapRef.current.setStyle(style);\n return;\n }\n const map = initializeMap(ref.current, {\n style,\n projection,\n mapPosition,\n ...rest,\n });\n map.on(\"style.load\", () => {\n onStyleLoaded?.(map);\n dispatch({ type: \"set-style-loaded\", payload: true });\n });\n onMapLoaded?.(map);\n dispatch({ type: \"set-map\", payload: map });\n }, [style]);\n\n // Map style updating\n // useEffect(() => {\n // if (mapRef?.current == null || style == null) return;\n // mapRef?.current?.setStyle(style);\n // }, [mapRef.current, style]);\n\n // Set map position if it changes\n // useEffect(() => {\n // const map = mapRef.current;\n // if (map == null || mapPosition == null) return;\n // setMapPosition(map, mapPosition);\n // }, [mapPosition]);\n\n const _computedMapPosition = useMapPosition();\n const { mapUse3D, mapIsRotated } = mapViewInfo(_computedMapPosition);\n\n // Get map projection\n const _projection = mapRef.current?.getProjection()?.name ?? \"mercator\";\n\n const className = classNames(\n {\n \"is-rotated\": mapIsRotated ?? false,\n \"is-3d-available\": mapUse3D ?? false,\n },\n `${_projection}-projection`\n );\n\n return h(\"div.map-view-container.main-view\", { ref: parentRef }, [\n h(\"div.mapbox-map#map\", { ref, className }),\n h(MapLoadingReporter, {\n ignoredSources: [\"elevationMarker\", \"crossSectionEndpoints\"],\n }),\n h(MapMovedReporter),\n h(MapResizeManager, { containerRef: ref }),\n h(MapPaddingManager, { containerRef: ref, parentRef, infoMarkerPosition }),\n h(MapTerrainManager, { mapUse3D, terrainSourceID }),\n children,\n ]);\n}\n\nexport function MapTerrainManager({\n mapUse3D,\n terrainSourceID,\n}: {\n mapUse3D?: boolean;\n terrainSourceID?: string;\n}) {\n const mapRef = useMapRef();\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n enable3DTerrain(map, mapUse3D, terrainSourceID);\n }, [mapRef.current, mapUse3D]);\n return null;\n}\n",".map-view-container\n flex-grow: 1\n position: relative\n overflow: hidden\n\n.mapbox-map\n position: absolute\n top: 0\n bottom: 0\n left: 0\n right: 0\n\n/* Desktop styling is necessarily much more complicated than mobile\n to handle a two-column layout. */\n@media screen and (min-width: 768px)\n /* Make map fill page rather than containing div,\n by unsetting map position */\n // We should move this to another file.\n .map-view-container\n position: unset\n","// We should merge this with code in @macrostrat/mapbox-react/src/terrain.ts:\n\nexport function enable3DTerrain(\n map,\n shouldEnable: boolean,\n sourceID: string | null = null\n) {\n let demSourceID = sourceID ?? getTerrainSourceID(map) ?? \"mapbox-dem\";\n\n console.log(\"Enabling 3D terrain with source\", demSourceID);\n\n if (!map.style?._loaded) {\n map.once(\"style.load\", () => {\n enable3DTerrain(map, shouldEnable, demSourceID);\n });\n return;\n }\n\n // Enable or disable terrain depending on our current desires...\n const currentTerrain = map.getTerrain();\n if (!shouldEnable) {\n if (currentTerrain != null) map.setTerrain(null);\n return;\n }\n if (currentTerrain != null) return;\n\n // Add a DEM source if one is not found already.\n if (map.getSource(demSourceID) == null) {\n map.addSource(demSourceID, {\n type: \"raster-dem\",\n url: \"mapbox://mapbox.mapbox-terrain-dem-v1\",\n tileSize: 512,\n maxzoom: 14,\n });\n }\n\n // add a sky layer that will show when the map is highly pitched\n if (map.getLayer(\"sky\") == null) {\n map.addLayer({\n id: \"sky\",\n type: \"sky\",\n paint: {\n \"sky-type\": \"atmosphere\",\n \"sky-atmosphere-sun\": [0.0, 0.0],\n \"sky-atmosphere-sun-intensity\": 15,\n },\n });\n }\n\n map.setTerrain({ source: demSourceID, exaggeration: 1 });\n}\n\nfunction getTerrainSourceID(map) {\n for (const [key, source] of Object.entries(map.getStyle().sources)) {\n if (source.type == \"raster-dem\") {\n return key;\n }\n }\n return null;\n}\n",".feature-panel\n position: relative\n overflow-x: hidden\n\n.key-value\n display: inline-block\n margin-right: 1em\n .key\n font-weight: bold\n font-size: 0.9em\n &:after\n content: ': '\n .value\n font-size: 0.9em\n\n.feature-properties\n position: relative\n &:before\n content: \"–\"\n position: absolute\n top: 4px\n left: 0\n\n.feature-header h3\n margin-bottom: 0\n margin-top: 0.5em\n\n.feature-group\n border-bottom: 1px solid var(--panel-rule-inner)\n padding: 0 1em\n margin-left: -1em\n margin-right: -1em\n margin-bottom: 0.5em\n &:last-child\n border-bottom: none\n\n.tile-info\n display: flex\n flex-direction: row\n align-items: baseline\n padding: 0 1em\n h3\n margin-right: 0.5em\n\n.opacity-slider\n margin: 0 1em 0.5em\n :global\n .bp4-slider-handle .bp4-slider-label\n background-color: var(--secondary-color)\n color: var(--text-color)\n\n.unit-number\n .unit\n font-size: 0.9em\n margin-left: 0.2em\n font-weight: bold\n\n.page\n margin: 2em auto\n max-width: 50em\n\n.dev-index-page\n overflow-y: scroll\n","import { useMapConditionalStyle, useMapRef } from \"@macrostrat/mapbox-react\";\nimport { tileToGeoJSON } from \"@mapbox/tilebelt\";\nimport { useCallback } from \"react\";\n\ntype TileIndex = { x: number; y: number; z: number };\n\nexport function TileExtentLayer({\n tile,\n color = \"red\",\n}: {\n tile: TileIndex | null;\n color?: string;\n}) {\n const styleCallback = useCallback(\n (map, val: TileIndex) => {\n const style = map.getStyle();\n if (style.layers == null) return;\n style.layers = style.layers.filter((l) => l.id != \"tile-extent\");\n if (val == null) {\n return map.setStyle(style);\n }\n const { x, y, z } = val;\n const extent = tileToGeoJSON([x, y, z]);\n const source = {\n type: \"geojson\",\n data: extent,\n };\n const layer = {\n id: \"tile-extent\",\n type: \"line\",\n source: \"tile-extent\",\n paint: {\n \"line-color\": color,\n \"line-width\": 2,\n },\n };\n style.sources[\"tile-extent\"] = source;\n style.layers.push(layer);\n map.setStyle(style);\n },\n [color]\n );\n const map = useMapRef();\n useMapConditionalStyle(map, tile, styleCallback);\n return null;\n}\n","import { Spinner, Switch } from \"@blueprintjs/core\";\nimport { useMapRef, useMapStatus } from \"@macrostrat/mapbox-react\";\nimport mapboxgl from \"mapbox-gl\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useEffect, useState } from \"react\";\nimport { JSONView, usePrevious } from \"@macrostrat/ui-components\";\nimport { group } from \"d3-array\";\nimport { ExpansionPanel } from \"../expansion-panel\";\n\nconst h = hyper.styled(styles);\n\nexport function FeatureProperties({ data, ...rest }) {\n return h(\"div.feature-properties\", [\n h(JSONView, {\n data,\n hideRoot: true,\n ...rest,\n }),\n ]);\n}\n\nexport function FeatureRecord({ feature }) {\n const props = feature.properties;\n return h(\"div.feature-record\", [\n h.if(Object.keys(props).length > 0)(FeatureProperties, { data: props }),\n ]);\n}\n\nexport function FeatureSelectionHandler({\n selectedLocation,\n setFeatures,\n radius = 2,\n}: {\n selectedLocation: mapboxgl.LngLat;\n setFeatures: (features: mapboxgl.MapboxGeoJSONFeature[]) => void;\n radius?: number;\n}) {\n const mapRef = useMapRef();\n const { isLoading } = useMapStatus();\n const prevLocation = usePrevious(selectedLocation);\n\n useEffect(() => {\n const map = mapRef?.current;\n if (map == null) return;\n if (selectedLocation == null) {\n setFeatures(null);\n return;\n }\n\n // Don't update if the location hasn't changed\n if (selectedLocation == prevLocation) return;\n\n const r = radius;\n const pt = map.project(selectedLocation);\n\n const bbox: [mapboxgl.PointLike, mapboxgl.PointLike] = [\n [pt.x - r, pt.y - r],\n [pt.x + r, pt.y + r],\n ];\n const features = map.queryRenderedFeatures(bbox);\n setFeatures(features);\n }, [mapRef?.current, selectedLocation, isLoading]);\n\n return null;\n}\n\nfunction FeatureHeader({ feature }) {\n return h(\"div.feature-header\", [\n h(\"h3\", [\n h(KeyValue, { label: \"Source\", value: feature.source }),\n h(KeyValue, { label: \"Source layer\", value: feature.sourceLayer }),\n ]),\n ]);\n}\n\nfunction KeyValue({ label, value }) {\n return h(\"span.key-value\", [h(\"span.key\", label), h(\"code.value\", value)]);\n}\n\nfunction LoadingAwareFeatureSet({ features, sourceID }) {\n const map = useMapRef();\n if (map?.current == null) return null;\n const [isLoaded, setIsLoaded] = useState(false);\n\n const sourceFeatures = features.filter((d) => d.source == \"burwell\");\n\n useEffect(() => {\n if (sourceFeatures.length > 0) {\n setIsLoaded(true);\n return;\n }\n\n const isLoaded = map.current.isSourceLoaded(sourceID);\n setIsLoaded(isLoaded);\n if (!isLoaded) {\n map.current.once(\"sourcedata\", (e) => {\n if (e.sourceId == sourceID) {\n setIsLoaded(true);\n }\n });\n }\n }, [map.current, sourceID, sourceFeatures.length]);\n\n if (!isLoaded) return h(Spinner);\n return h(Features, { features: sourceFeatures });\n}\n\nexport function TileInfo({ feature, showExtent, setShowExtent }) {\n if (feature == null) return null;\n const size = feature._vectorTileFeature._pbf.length;\n return h(\"div.tile-info\", [\n h(\"h3\", \"Tile\"),\n h(\"div.tile-index\", [\n h(KeyValue, { label: \"x\", value: feature._x }),\n h(KeyValue, { label: \"y\", value: feature._y }),\n h(KeyValue, { label: \"z\", value: feature._z }),\n ]),\n h(\"div.spacer\"),\n h(KeyValue, { label: \"Size\", value: formatSize(size) }),\n h(Switch, {\n label: \"Show extent\",\n alignIndicator: \"right\",\n checked: showExtent,\n onChange() {\n setShowExtent(!showExtent);\n },\n }),\n ]);\n}\n\nfunction formatSize(size: number) {\n if (size > 1000000)\n return h(UnitNumber, { value: size / 1000000, unit: \"Mb\" });\n if (size > 1000) return h(UnitNumber, { value: size / 1000, unit: \"Kb\" });\n return `${size} bytes`;\n}\n\nfunction UnitNumber({ value, unit, precision = 1 }) {\n return h(\"span.unit-number\", [\n h(\"span.number\", value.toFixed(precision)),\n h(\"span.unit\", unit),\n ]);\n}\n\nexport function FeaturePanel({\n features,\n focusedSource = null,\n focusedSourceTitle = null,\n}) {\n if (features == null) return null;\n\n let focusedSourcePanel = null;\n let filteredFeatures = features;\n let title = \"Features\";\n\n if (focusedSource != null) {\n title = \"Basemap features\";\n focusedSourcePanel = h(\n ExpansionPanel,\n {\n title: \"Macrostrat features\",\n className: \"macrostrat-features\",\n expanded: true,\n },\n [\n h(LoadingAwareFeatureSet, {\n features,\n sourceID: focusedSource,\n }),\n ]\n );\n filteredFeatures = features.filter((d) => d.source != focusedSource);\n }\n\n return h(\"div.feature-panel\", [\n focusedSourcePanel,\n h(\n ExpansionPanel,\n { title, className: \"basemap-features\", expanded: focusedSource == null },\n [\n h(FeatureGroups, {\n features: filteredFeatures,\n }),\n ]\n ),\n ]);\n}\n\nfunction FeatureGroups({ features }) {\n /** Group features by source and sourceLayer */\n if (features == null) return null;\n\n const groups = group(features, (d) => `${d.source} - ${d.sourceLayer}`);\n\n return h(\n \"div.feature-groups\",\n Array.from(groups).map(([key, features]) => {\n return h(\"div.feature-group\", [\n h(FeatureHeader, { feature: features[0] }),\n h(Features, { features }),\n ]);\n })\n );\n}\n\nexport function Features({ features }) {\n return h(\n \"div.features\",\n features.map((feature, i) => h(FeatureRecord, { key: i, feature }))\n );\n}\n","import { useState } from \"react\";\nimport { Collapse, Icon } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport classNames from \"classnames\";\nimport { Button } from \"@blueprintjs/core\";\nimport { PanelSubhead } from \"./headers\";\n\nconst h = hyper.styled(styles);\n\nfunction ExpansionPanelSummary(props) {\n const { expanded, children, onChange, className, title, titleComponent } =\n props;\n const icon = expanded ? \"chevron-up\" : \"chevron-down\";\n return h(\n PanelSubhead,\n {\n className: classNames(\"expansion-panel-header\", className),\n onClick: onChange,\n title,\n component: titleComponent,\n },\n [children, h(Icon, { icon })]\n );\n}\n\nfunction ExpansionPanelBase(props) {\n let {\n title,\n titleComponent = \"h3\",\n children,\n expanded,\n helpText,\n onChange = () => {},\n sideComponent = null,\n className,\n } = props;\n const [isOpen, setOpen] = useState(expanded || false);\n\n const onChange_ = () => {\n onChange();\n setOpen(!isOpen);\n };\n\n return h(\n \"div.expansion-panel-base\",\n {\n className: classNames(className, {\n expanded: isOpen,\n collapsed: !isOpen,\n }),\n },\n [\n h(\n ExpansionPanelSummary,\n {\n onChange: onChange_,\n expanded: isOpen,\n title,\n titleComponent,\n },\n h(\"div.expansion-summary-title-help\", [\n h(\"span.expansion-panel-subtext\", helpText),\n \" \",\n sideComponent,\n ])\n ),\n h(Collapse, { isOpen }, h(\"div.expansion-children\", null, children)),\n ]\n );\n}\n\nexport function InfoPanelSection(props) {\n let { title, children, className, headerElement = null } = props;\n return h(\"div.info-panel-section\", { className }, [\n h(\"div.panel-subhead\", null, headerElement ?? h(\"h3\", title)),\n h(\"div.panel-content\", null, children),\n ]);\n}\n\nfunction ExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel\",\n });\n}\n\nfunction SubExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel sub-expansion-panel\",\n titleComponent: \"h4\",\n });\n}\n\nfunction ExpandableDetailsPanel(props) {\n let { title, children, value, headerElement, className } = props;\n const [isOpen, setIsOpen] = useState(false);\n headerElement ??= h([h(\"div.title\", title), value]);\n return h(\"div.expandable-details\", { className }, [\n h(\"div.expandable-details-main\", [\n h(\"div.expandable-details-header\", headerElement),\n h(\"div.expandable-details-toggle\", [\n h(Button, {\n small: true,\n minimal: true,\n active: isOpen,\n onClick: () => setIsOpen(!isOpen),\n icon: \"more\",\n }),\n ]),\n ]),\n h(\n Collapse,\n { isOpen },\n h(\"div.expandable-details-children\", null, children)\n ),\n ]);\n}\n\nfunction ExpansionBody({ title, className, children }) {\n return h(\"div.expansion-body\", { className }, [\n h(\"div.expansion-panel-detail-header\", title),\n h(\"div.expansion-panel-detail-body\", null, children),\n ]);\n}\n\nexport {\n ExpansionPanel,\n ExpansionPanelSummary,\n ExpandableDetailsPanel,\n SubExpansionPanel,\n ExpansionBody,\n PanelSubhead,\n};\n","\n.panel-subhead\n padding: 0.2em var(--box-horizontal-padding)\n border-top: 1px solid var(--panel-rule-color)\n border-bottom: 1px solid var(--panel-rule-color)\n background-color: var(--accent-color)\n display: flex\n flex-direction: row\n align-items: center\n z-index: 1\n gap: var(--box-horizontal-padding)\n top: -1px\n position: sticky\n h1, h2, h3, h4\n font-family: Montserrat,sans-serif\n font-weight: 700\n margin: 0.2em 0\n h4\n font-weight: 600\n .title\n flex-grow: 1\n\n// :global(.bp4-dark) .panel-subhead\n// margin 0 1px\n\n.expansion-panel\n padding: 0\n flex-wrap: wrap\n margin-top: -1px\n // &.collapsed\n // .expansion-panel-header\n // border-bottom-width: 0;\n\n.sub-expansion-panel\n margin: -1px calc(var(--panel-padding-h) * -0.5) 0\n overflow: hidden\n &:first-child\n .expansion-panel-header\n border-top-width: 0\n .panel-subhead\n border-top: none\n border-bottom: none\n\n .expansion-panel-header\n background-color: var(--accent-secondary-color)\n cursor: pointer\n &:hover\n background-color: var(--accent-secondary-hover-color)\n h2, h3, h4\n font-weight: 500\n border-bottom: 1px solid var(--tertiary-border-color)\n border-top: 1px solid var(--tertiary-border-color)\n margin-top: -1px\n padding: 5px 1em 5px\n align-items: center\n\n.expansion-summary-title-help\n margin-left: 5px\n :global(.bp4-icon)\n margin-left: 5px\n\n.expansion-panel-header\n cursor: pointer\n &:hover\n background-color: var(--accent-hover-color)\n :global(.bp4-icon)\n transform: translate(0,3px)\n\n.expansion-children\n padding: 5px 1em 10px\n .expansion-panel\n margin-left: -1em\n margin-right: -1em\n &:first-child\n margin-top: -5px\n\n.expansion-panel-subtext\n font-size: 85%\n font-weight: 400\n\n:global\n .expansion-panel-root\n padding-left: 15px !important\n\n .expansion-panel-detail\n display: block !important\n padding: 0 !important\n\n .expansion-panel-detail-sub\n display: block !important\n\n// New expandable panel for details\n.expandable-details-main\n display: flex\n flex-direction: row\n align-items: center\n justify-content: space-between\n margin: 3px 0\n\n.expandable-details-header\n display: inline-flex\n flex-direction: row\n align-items: baseline\n flex-grow: 1\n\n.expandable-details-children\n position: relative\n\n.expandable-details-toggle\n :global(.bp4-button)\n font-size: 10px\n\n.expandable-details\n &.macrostrat-unit\n .title:after\n content: none\n .title\n margin-right: 1em\n &:after\n content: \":\"\n\n.expansion-body\n display: inline-block\n //flex-direction row\n align-items: baseline\n background-color: var(--tertiary-background)\n padding: 2px 6px\n border-radius: 4px\n width: 100%\n box-shadow: 0px 1px 2px 1px rgba(0,0,0,0.2)\n margin-bottom: 6px\n\n.expansion-panel-detail-header\n font-size: 90%\n font-style: italic\n margin-right: 1em\n display: inline\n color: var(--secondary-color)\n &:after\n content: \":\"\n\n.expansion-panel-detail-body\n display: inline\n","import hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\n\nconst h = hyper.styled(styles);\n\nexport function PanelSubhead(props) {\n const { title, component = \"h3\", children, ...rest } = props;\n return h(\"div.panel-subhead\", rest, [\n h(\n component,\n {\n className: \"title\",\n },\n title\n ),\n children,\n ]);\n}\n"],"names":[],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/map-interface/src/index.ts","packages/map-interface/src/context-panel/index.ts","packages/map-interface/src/context-panel/main.module.sass","packages/map-interface/src/location-panel/index.ts","packages/map-interface/src/location-panel/header.ts","packages/map-interface/src/location-panel/main.module.sass","packages/map-interface/src/location-info/index.ts","packages/map-interface/src/location-info/utils.ts","packages/map-interface/src/dev/index.ts","packages/map-interface/src/dev/map-page.ts","packages/map-interface/src/dev/xray.ts","packages/map-interface/src/container.ts","packages/map-interface/src/main.module.sass","packages/map-interface/src/controls.ts","packages/map-interface/src/helpers.ts","packages/map-interface/src/utils.ts","packages/map-interface/src/map-view/index.ts","packages/map-interface/src/map-view/main.module.sass","packages/map-interface/src/map-view/terrain.ts","packages/map-interface/src/dev/main.module.sass","packages/map-interface/src/dev/tile-extent.ts","packages/map-interface/src/dev/vector-tile-features.ts","packages/map-interface/src/expansion-panel/index.ts","packages/map-interface/src/expansion-panel/main.module.sass","packages/map-interface/src/expansion-panel/headers.ts"],"sourcesContent":["export * from \"./context-panel\";\nexport * from \"./location-panel\";\nexport * from \"./dev\";\nexport * from \"./container\";\nexport * from \"./map-view\";\nexport * from \"./controls\";\nexport * from \"./helpers\";\nexport * from \"./utils\";\nexport * from \"./location-info\";\nexport * from \"./expansion-panel\";\n","import { useMemo } from \"react\";\nimport { Navbar, Button, InputGroup, Spinner, Card } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useMapStatus } from \"@macrostrat/mapbox-react\";\n\nconst h = hyper.styled(styles);\n\nconst spinnerElement = h(Spinner, { size: 16 });\n\nexport function LoadingButton({\n isLoading = false,\n onClick,\n active = false,\n icon = \"menu\",\n}) {\n return h(Button, {\n icon: isLoading ? spinnerElement : icon,\n large: true,\n minimal: true,\n onClick,\n active: active && !isLoading,\n });\n}\n\nexport function MapLoadingButton(props) {\n const { isLoading } = useMapStatus();\n const mapIsLoading = useMemo(() => isLoading, [isLoading]);\n return h(LoadingButton, { ...props, isLoading: mapIsLoading });\n}\n\ntype AnyChildren = React.ReactNode | React.ReactFragment;\n\nexport function FloatingNavbar({\n className,\n children,\n statusElement = null,\n}: {\n className?: string;\n children?: AnyChildren;\n statusElement?: AnyChildren;\n}) {\n return h(\"div.searchbar-holder\", { className }, [\n h(\"div.navbar-holder\", [\n h(Navbar, { className: \"searchbar panel\" }, children),\n ]),\n h.if(statusElement != null)(\n Card,\n { className: \"status-tongue\" },\n statusElement\n ),\n ]);\n}\n",".searchbar-holder\n transition: margin 300ms\n display: flex\n flex-direction: column\n margin: 0\n .navbar-holder\n display: flex\n flex-direction: row\n .searchbar\n width: 100%\n background-color: var(--panel-background-color)\n border-radius: 3px\n padding: 0 5px\n display: flex\n flex-direction: row\n align-items: center\n :global(.bp4-input-group)\n flex-grow: 1\n cursor: text\n &>*\n margin-right: 5px\n &:last-child\n margin-right: 0\n\n.status-tongue\n background-color: var(--panel-background-color)\n margin: 5px\n margin-top: -12px\n padding: 0\n padding-top: 12px\n\n@media screen and (max-width: 768px)\n .status-tongue\n max-width: 100vw\n margin: 0\n border-radius: 0\n margin-top: -3px\n","import { Card } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport { InfoDrawerHeader } from \"./header\";\nimport classNames from \"classnames\";\nimport styles from \"./main.module.sass\";\nimport { ErrorBoundary } from \"@macrostrat/ui-components\";\n\nconst h = hyper.styled(styles);\n\nexport function InfoDrawerContainer(props) {\n const className = classNames(\"infodrawer\", props.className);\n return h(Card, { ...props, className });\n}\n\nexport function LocationPanel(props) {\n const { children, className, loading = false, ...rest } = props;\n const cls = classNames(\"location-panel\", className, { loading });\n return h(InfoDrawerContainer, { className: cls }, [\n h(InfoDrawerHeader, rest),\n h(\"div.infodrawer-body\", h(\"div.infodrawer-contents\", h(ErrorBoundary, null, children))),\n ]);\n}\n","import { Icon, Button } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useToaster } from \"@macrostrat/ui-components\";\nimport { LngLatCoords, Elevation } from \"../location-info\";\nimport {\n LocationFocusButton,\n useFocusState,\n isCentered,\n} from \"@macrostrat/mapbox-react\";\n\nconst h = hyper.styled(styles);\n\nfunction PositionButton({ position }) {\n const focusState = useFocusState(position);\n\n return h(\"div.position-controls\", [\n h(LocationFocusButton, { location: position, focusState }, []),\n isCentered(focusState) ? h(CopyLinkButton, { itemName: \"position\" }) : null,\n ]);\n}\n\nfunction CopyLinkButton({ itemName, children, onClick, ...rest }) {\n const toaster = useToaster();\n\n let message = `Copied link`;\n if (itemName != null) {\n message += ` to ${itemName}`;\n }\n message += \"!\";\n\n return h(\n Button,\n {\n className: \"copy-link-button\",\n rightIcon: h(Icon, { icon: \"link\", size: 12 }),\n minimal: true,\n small: true,\n onClick() {\n navigator.clipboard.writeText(window.location.href).then(\n () => {\n toaster?.show({\n message,\n intent: \"success\",\n icon: \"clipboard\",\n timeout: 1000,\n });\n onClick?.();\n },\n () => {\n toaster?.show({\n message: \"Failed to copy link\",\n intent: \"danger\",\n icon: \"error\",\n timeout: 1000,\n });\n }\n );\n },\n ...rest,\n },\n children ?? \"Copy link\"\n );\n}\n\ninterface InfoDrawerHeaderProps {\n onClose: () => void;\n position: mapboxgl.LngLat;\n zoom?: number;\n elevation?: number;\n}\n\nexport function InfoDrawerHeader(props: InfoDrawerHeaderProps) {\n const { onClose, position, zoom = 7, elevation } = props;\n\n return h(\"header.location-panel-header\", [\n h(PositionButton, { position }),\n h(\"div.spacer\"),\n h(LngLatCoords, { position, zoom, className: \"infodrawer-header-item\" }),\n h.if(elevation != null)(Elevation, {\n elevation,\n className: \"infodrawer-header-item\",\n }),\n h(Button, { minimal: true, icon: \"cross\", onClick: onClose }),\n ]);\n}\n",".copy-link-button:global(.bp4-minimal.bp4-button)\n color: var(--text-subtle-color)\n svg\n fill: var(--text-subtle-color)\n\n.location-panel-header\n padding: 5px\n display: flex\n flex-direction: row\n align-items: center\n gap: 1em\n border-bottom: 1px solid var(--panel-rule-color)\n .spacer\n flex-grow: 1\n .left-icon\n padding: 7px\n\n .position-controls :global(.bp4-button)\n font-size: 12px !important\n\n.infodrawer-header-item\n font-size: 12px\n :global(.secondary)\n font-size: 0.9em\n color: var(--text-subtle-color)\n\n.infodrawer\n pointer-events: all\n max-height: 100%\n max-width: 100%\n height: fit-content\n display: flex\n flex-direction: column\n overflow: hidden\n &:global(.bp4-card)\n padding: 0\n\n &.loading\n .infodrawer-body\n overflow-y: hidden\n min-height: 70px\n\n.infodrawer-contents\n padding: 0 1em 1em\n\n.infodrawer-body\n flex-shrink: 1\n min-height: 0\n transition: min-height 0.5s ease\n overflow-y: scroll\n position: relative\n\n// TODO: remove this when we have a better way to handle card media queries\n@media screen and (max-width: 768px)\n .infodrawer\n border-radius: var(--panel-border-radius, 0px)\n","import h from \"@macrostrat/hyper\";\nimport {\n formatValue,\n normalizeLng,\n metersToFeet,\n formatCoordForZoomLevel,\n} from \"./utils\";\n\nexport function ValueWithUnit(props) {\n const { value, unit } = props;\n return h(\"span.value-with-unit\", [\n h(\"span.value\", [value]),\n h(\"span.spacer\", [\" \"]),\n h(\"span.unit\", [unit]),\n ]);\n}\n\nexport function DegreeCoord(props) {\n const { value, labels, precision = 3, format = formatValue } = props;\n const direction = value < 0 ? labels[1] : labels[0];\n\n return h(ValueWithUnit, {\n value: format(Math.abs(value), precision) + \"°\",\n unit: direction,\n });\n}\n\nexport interface LngLatProps {\n /** Map position */\n position: [number, number] | { lat: number; lng: number };\n className?: string;\n /** Zoom level (used to infer coordinate rounding if provided) */\n zoom?: number | null;\n /** Number of decimal places to round coordinates to */\n precision: number | null;\n /** Function to format coordinates */\n format?: (val: number, precision: number) => string;\n}\n\nexport function LngLatCoords(props: LngLatProps) {\n /** Formatted geographic coordinates */\n const { position, className, precision, zoom } = props;\n let { format } = props;\n if (position == null) {\n return null;\n }\n let lat, lng;\n if (Array.isArray(position)) {\n [lng, lat] = position;\n } else {\n ({ lat, lng } = position);\n }\n\n if (zoom != null && format == null && precision == null) {\n format = (val, _) => formatCoordForZoomLevel(val, zoom);\n }\n\n return h(\"div.lnglat-container\", { className }, [\n h(\"span.lnglat\", [\n h(DegreeCoord, {\n value: lat,\n labels: [\"N\", \"S\"],\n precision,\n format,\n }),\n \", \",\n h(DegreeCoord, {\n value: normalizeLng(lng),\n labels: [\"E\", \"W\"],\n precision,\n format,\n }),\n ]),\n ]);\n}\n\nexport function Elevation(props) {\n /** Renders an elevation value in meters and a parenthetical conversion to feet. */\n const { elevation, className, includeFeet = true } = props;\n if (elevation == null) return null;\n return h(\"div.elevation\", { className }, [\n h(ValueWithUnit, { value: elevation, unit: \"m\" }),\n h.if(includeFeet)(\"span.secondary\", [\n \" (\",\n h(ValueWithUnit, { value: metersToFeet(elevation), unit: \"ft\" }),\n \")\",\n ]),\n ]);\n}\n","import { format } from \"d3-format\";\n\nexport function formatCoordForZoomLevel(val: number, zoom: number): string {\n if (zoom < 2) {\n return fmt1(val);\n } else if (zoom < 4) {\n return fmt2(val);\n } else if (zoom < 7) {\n return fmt3(val);\n }\n return fmt4(val);\n}\n\nexport function normalizeLng(lng) {\n // via https://github.com/Leaflet/Leaflet/blob/32c9156cb1d1c9bd53130639ec4d8575fbeef5a6/src/core/Util.js#L87\n return (((((lng - 180) % 360) + 360) % 360) - 180).toFixed(4);\n}\n\nexport const fmt4 = format(\".4~f\");\nexport const fmt3 = format(\".3~f\");\nexport const fmt2 = format(\".2~f\");\nexport const fmt1 = format(\".1~f\");\nexport const fmtInt = format(\".0f\");\n\nexport function formatValue(val: number, precision: number = 0): string {\n switch (precision) {\n case 4:\n return fmt4(val);\n case 3:\n return fmt3(val);\n case 2:\n return fmt2(val);\n case 1:\n return fmt1(val);\n case 0:\n return fmtInt(val);\n default:\n return fmt4(val);\n }\n}\n\nexport function metersToFeet(meters, precision = 0) {\n return (meters * 3.28084).toFixed(precision);\n}\n","export * from \"./map-page\";\nexport * from \"./tile-extent\";\nexport * from \"./vector-tile-features\";\nexport * from \"./xray\";\n","// Import other components\nimport { Switch } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport { Spacer, useDarkMode, useStoredState } from \"@macrostrat/ui-components\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useCallback, useState, useEffect } from \"react\";\nimport { buildInspectorStyle, buildXRayStyle } from \"./xray\";\nimport { MapAreaContainer, PanelCard } from \"../container\";\nimport { FloatingNavbar, MapLoadingButton } from \"../context-panel\";\nimport { MapMarker } from \"../helpers\";\nimport { LocationPanel } from \"../location-panel\";\nimport { MapView } from \"../map-view\";\nimport styles from \"./main.module.sass\";\nimport { TileExtentLayer } from \"./tile-extent\";\nimport {\n FeaturePanel,\n FeatureSelectionHandler,\n TileInfo,\n} from \"./vector-tile-features\";\nimport { MapPosition } from \"@macrostrat/mapbox-utils\";\n\nexport enum MacrostratVectorTileset {\n Carto = \"carto\",\n CartoSlim = \"carto-slim\",\n IGCPOrogens = \"igcp-orogens\",\n}\n\nexport enum MacrostratRasterTileset {\n Carto = \"carto\",\n Emphasized = \"emphasized\",\n}\n\nexport const h = hyper.styled(styles);\n\nexport function DevMapPage({\n title = \"Map inspector\",\n headerElement = null,\n transformRequest = null,\n mapPosition = null,\n mapboxToken = null,\n overlayStyle = null,\n children,\n style,\n focusedSource = null,\n focusedSourceTitle = null,\n projection = null,\n}: {\n headerElement?: React.ReactElement;\n transformRequest?: mapboxgl.TransformRequestFunction;\n title?: string;\n style?: mapboxgl.Style | string;\n children?: React.ReactNode;\n mapboxToken?: string;\n overlayStyle?: mapboxgl.Style | string;\n focusedSource?: string;\n focusedSourceTitle?: string;\n projection?: string;\n mapPosition?: MapPosition;\n}) {\n /* We apply a custom style to the panel container when we are interacting\n with the search bar, so that we can block map interactions until search\n bar focus is lost.\n We also apply a custom style when the infodrawer is open so we can hide\n the search bar on mobile platforms\n */\n\n const dark = useDarkMode();\n const isEnabled = dark?.isEnabled;\n\n if (mapboxToken != null) {\n mapboxgl.accessToken = mapboxToken;\n }\n\n style ??= isEnabled\n ? \"mapbox://styles/mapbox/dark-v10\"\n : \"mapbox://styles/mapbox/light-v10\";\n\n const [isOpen, setOpen] = useState(false);\n\n const [state, setState] = useStoredState(\"macrostrat:dev-map-page\", {\n showTileExtent: false,\n xRay: false,\n });\n const { showTileExtent, xRay } = state;\n\n const [actualStyle, setActualStyle] = useState(style);\n\n useEffect(() => {\n buildInspectorStyle(style, overlayStyle, {\n mapboxToken,\n inDarkMode: isEnabled,\n xRay,\n }).then(setActualStyle);\n }, [style, xRay, mapboxToken, isEnabled, overlayStyle]);\n\n const [inspectPosition, setInspectPosition] =\n useState<mapboxgl.LngLat | null>(null);\n\n const [data, setData] = useState(null);\n\n const onSelectPosition = useCallback((position: mapboxgl.LngLat) => {\n setInspectPosition(position);\n }, []);\n\n let detailElement = null;\n if (inspectPosition != null) {\n detailElement = h(\n LocationPanel,\n {\n onClose() {\n setInspectPosition(null);\n },\n position: inspectPosition,\n },\n [\n h(TileInfo, {\n feature: data?.[0] ?? null,\n showExtent: showTileExtent,\n setShowExtent() {\n setState({ ...state, showTileExtent: !showTileExtent });\n },\n }),\n h(FeaturePanel, { features: data, focusedSource, focusedSourceTitle }),\n ]\n );\n }\n\n let tile = null;\n if (showTileExtent && data?.[0] != null) {\n let f = data[0];\n tile = { x: f._x, y: f._y, z: f._z };\n }\n\n return h(\n MapAreaContainer,\n {\n navbar: h(FloatingNavbar, [\n headerElement ?? h(\"h2\", title),\n h(Spacer),\n h(MapLoadingButton, {\n active: isOpen,\n onClick: () => setOpen(!isOpen),\n }),\n ]),\n contextPanel: h(PanelCard, [\n h(Switch, {\n checked: xRay,\n label: \"X-ray mode\",\n onChange() {\n setState({ ...state, xRay: !xRay });\n },\n }),\n children,\n ]),\n detailPanel: detailElement,\n contextPanelOpen: isOpen,\n },\n h(\n MapView,\n {\n style: actualStyle,\n transformRequest,\n mapPosition,\n projection: { name: \"globe\" },\n mapboxToken,\n },\n [\n h(FeatureSelectionHandler, {\n selectedLocation: inspectPosition,\n setFeatures: setData,\n }),\n h(MapMarker, {\n position: inspectPosition,\n setPosition: onSelectPosition,\n }),\n h(TileExtentLayer, { tile, color: isEnabled ? \"white\" : \"black\" }),\n ]\n )\n );\n}\n","import { getMapboxStyle, mergeStyles } from \"@macrostrat/mapbox-utils\";\nimport chroma from \"chroma-js\";\nimport mapboxgl from \"mapbox-gl\";\n\ninterface XRayOptions {\n color?: string;\n inDarkMode?: boolean;\n mapboxToken?: string;\n xRaySources?: string[];\n}\n\nexport async function buildXRayStyle(\n baseStyle: string | object,\n params: XRayOptions = null\n) {\n const {\n inDarkMode = false,\n color = \"rgb(74, 242, 161)\",\n mapboxToken,\n xRaySources\n } = params;\n const style = await getMapboxStyle(baseStyle, { access_token: mapboxToken });\n const sources = xRaySources ?? Object.keys(style.sources);\n\n let layers = [];\n for (let layer of style.layers) {\n if (!sources.includes(layer.source)) {\n layers.push(layer);\n continue;\n }\n let newLayer = transformMapboxLayer(layer, color, inDarkMode);\n if (newLayer != null) {\n layers.push(newLayer);\n }\n }\n\n return {\n ...style,\n layers,\n };\n}\n\nfunction transformMapboxLayer(layer, color, inDarkMode) {\n const c = chroma(color);\n const xRayColor = (opacity = 1, darken = 0) => {\n if (!inDarkMode) {\n return chroma(color)\n .darken(2 - darken)\n .alpha(opacity)\n .css();\n }\n return c.alpha(opacity).darken(darken).css();\n };\n\n if (layer.type == \"background\") {\n return null;\n }\n\n let newLayer = { ...layer };\n\n if (layer.type == \"fill\") {\n newLayer.paint = {\n \"fill-color\": xRayColor(0.1),\n \"fill-outline-color\": xRayColor(0.5),\n };\n } else if (layer.type == \"line\") {\n newLayer.paint = {\n \"line-color\": xRayColor(0.5, 0),\n \"line-width\": 1.5,\n };\n } else if (layer.type == \"symbol\") {\n newLayer.paint = {\n \"text-color\": xRayColor(1, -0.5),\n \"text-halo-color\": \"#000\",\n };\n } else if (layer.type == \"circle\") {\n newLayer.paint = {\n \"circle-color\": xRayColor(0.5, 0),\n \"circle-stroke-color\": xRayColor(0.5, 1),\n \"circle-radius\": 2,\n };\n }\n\n return newLayer;\n}\n\ntype InspectorStyleOptions = XRayOptions & {\n xRay?: boolean;\n};\n\nexport async function buildInspectorStyle(\n baseStyle: mapboxgl.Style | string,\n overlayStyle: mapboxgl.Style | string | null = null,\n params: InspectorStyleOptions = {}\n) {\n const { mapboxToken, xRay = false, xRaySources: _xRaySources, ...rest } = params;\n let xRaySources = _xRaySources;\n let style = await getMapboxStyle(baseStyle, {\n access_token: mapboxToken,\n });\n\n if (overlayStyle != null) {\n const overlay = await getMapboxStyle(overlayStyle, {\n access_token: mapboxToken,\n });\n style = mergeStyles(style, overlay);\n xRaySources ??= Object.keys(overlay.sources);\n }\n\n\n if (xRay) {\n // If we haven't specified sources, then we'll use all of them\n xRaySources ??= Object.keys(style.sources);\n\n style = await buildXRayStyle(style, { ...rest, mapboxToken, xRaySources });\n }\n return style;\n}\n","import hyper from \"@macrostrat/hyper\";\nimport { HTMLDivProps } from \"@blueprintjs/core\";\nimport styles from \"./main.module.sass\";\nimport classNames from \"classnames\";\nimport { useTransition } from \"transition-hook\";\nimport {\n MapboxMapProvider,\n ZoomControl,\n useMapPosition,\n} from \"@macrostrat/mapbox-react\";\nimport { ToasterContext } from \"@macrostrat/ui-components\";\nimport { MapBottomControls } from \"./controls\";\nimport { mapViewInfo, MapPosition } from \"@macrostrat/mapbox-utils\";\nimport { Card } from \"@blueprintjs/core\";\n\nimport { ReactNode } from \"react\";\n\nconst h = hyper.styled(styles);\n\ntype AnyElement = React.ReactNode | React.ReactElement | React.ReactFragment;\n\nexport const PanelCard = (props) =>\n h(Card, { ...props, className: classNames(\"panel-card\", props.className) });\n\nfunction _MapAreaContainer({\n children,\n className,\n navbar,\n contextPanel = null,\n detailPanel = null,\n detailPanelOpen,\n contextPanelOpen = true,\n bottomPanel = null,\n mainPanel,\n mapControls = h(MapBottomControls),\n contextStackProps = null,\n detailStackProps = null,\n fitViewport = true,\n ...rest\n}: {\n navbar: AnyElement;\n children?: AnyElement;\n mapControls?: AnyElement;\n contextPanel?: AnyElement;\n contextStack?: AnyElement;\n mainPanel?: AnyElement;\n detailPanel?: AnyElement;\n bottomPanel?: AnyElement;\n className?: string;\n detailPanelOpen?: boolean;\n contextPanelOpen?: boolean;\n contextStackProps?: HTMLDivProps;\n detailStackProps?: HTMLDivProps;\n fitViewport?: boolean;\n}) {\n const _detailPanelOpen = detailPanelOpen ?? detailPanel != null;\n const contextPanelTrans = useTransition(contextPanelOpen, 800);\n const detailPanelTrans = useTransition(_detailPanelOpen, 800);\n\n /*- We apply a custom style to the panel container when we are interacting\n with the search bar, so that we can block map interactions until search\n bar focus is lost.\n - We also apply a custom style when the infodrawer is open so we can hide\n the search bar on mobile platforms\n - These styles are doubly applied so we can have both namespaced and\n outside-accessible styles for each case.\n */\n const mainUIClassName = classNames(\n {\n \"detail-panel-open\": _detailPanelOpen,\n \"map-context-open\": contextPanelOpen,\n },\n `context-panel-${contextPanelTrans.stage}`,\n `map-context-${contextPanelTrans.stage}`,\n `detail-panel-${detailPanelTrans.stage}`,\n `map-detail-${detailPanelTrans.stage}`\n );\n\n return h(\n MapStyledContainer,\n {\n className: classNames(\"map-page\", className, {\n \"fit-viewport\": fitViewport,\n }),\n },\n [\n h(\"div.main-ui\", { className: mainUIClassName, ...rest }, [\n h(\"div.context-stack\", [\n navbar,\n h(\"div.context-panel-holder\", [\n h.if(contextPanelTrans.shouldMount)([contextPanel]),\n ]),\n h(\"div.spacer\"),\n ]),\n //h(MapView),\n children ?? mainPanel,\n h(\"div.detail-stack.infodrawer-container\", detailStackProps, [\n detailPanel,\n h(ZoomControl, { className: \"zoom-control\" }),\n h(\"div.spacer\"),\n mapControls,\n ]),\n ]),\n h(\"div.bottom\", null, bottomPanel),\n ]\n );\n}\n\nconst MapProviders = ({ children }) =>\n h(ToasterContext, h(MapboxMapProvider, children));\n\nexport const MapAreaContainer = (props) =>\n h(MapProviders, h(_MapAreaContainer, props));\n\ninterface MapContainerProps {\n className?: string;\n children?: ReactNode;\n}\n\nexport function MapStyledContainer({ className, children }: MapContainerProps) {\n const mapPosition = useMapPosition();\n if (mapPosition != null) {\n const { mapIsRotated, mapUse3D, mapIsGlobal } = mapViewInfo(mapPosition);\n className = classNames(className, {\n \"map-is-rotated\": mapIsRotated,\n \"map-3d-available\": mapUse3D,\n \"map-is-global\": mapIsGlobal,\n });\n }\n\n return h(\"div\", { className }, children);\n}\n\n//const _MapPage = compose(HotkeysProvider, MapPage);\n",".map-page\n display: flex\n flex-direction: column\n position: relative\n width: 100%\n height: 100%\n overflow: hidden\n &.fit-viewport\n height: 100vh\n width: 100vw\n /* mobile viewport bug fix */\n max-height: -webkit-fill-available\n\n // Compass display\n .compass-control\n display: none\n &.map-is-rotated\n .compass-control\n display: block\n\n .map-3d-control\n display: none\n &.map-3d-available .map-3d-control\n display: block\n &.map-is-rotated.map-3d-available .map-3d-control\n display: none\n\n .globe-control\n display: none\n svg\n color: var(--secondary-color)\n &.map-is-global .globe-control\n display: block\n\n.main-ui\n flex: 1\n position: relative\n display: flex\n flex-direction: column\n max-height: 100%\n height: 100%\n box-shadow: 0 0 10px 4px var(--card-shadow-color)\n\n.panel-card\n padding: 10px\n background-color: var(--panel-background-color)\n overflow: hidden\n\n & >:last-child\n margin-bottom: 0\n\n:global(.bp4-dark) .panel-card\n background-color: var(--panel-background-color)\n\n.context-stack\n display: flex\n flex-direction: column\n max-height: 100%\n\n &>div\n flex-shrink: 1\n\n &>.searchbar\n flex: 0\n\n.context-stack,\n.detail-stack\n z-index: 100\n\n.panel-container\n display: flex\n flex-direction: column\n\n &>div\n pointer-events: all\n\n.panel-title\n font-size: 16px\n\n.spacer\n flex-grow: 1\n pointer-events: none\n\n.map-view-container\n flex-grow: 1\n position: relative\n overflow: hidden\n\n.searchbar-holder\n margin-bottom: 0.5em\n\n.right-panel\n width: 24em\n\n.buttons\n display: flex\n flex-direction: row\n flex: 1\n min-width: 0\n\n.tab-button\n flex-shrink: 1\n min-width: 40px\n overflow: hidden\n text-align: right\n\n & :global(.bp4-button-text)\n transition: all 0.2s\n transition-delay: 0.1s\n\n .menu-card.narrow-card .panel-header:not(.minimal) &:global(.bp4-active) ~ & :global(.bp4-button-text)\n width: 0\n opacity: 0\n margin-left: -7px\n\n .context-panel-leave .menu-card .panel-header & :global(.bp4-button-text)\n opacity: 0\n width: 0\n\n.narrow-card.narrow-enter .panel-header .buttons\n margin-right: -500px\n\n.panel-header.minimal .tab-button:not(:hover):not(:global(.bp4-active))\n padding-left: 0\n padding-right: 0\n min-width: 30px\n width: 30px\n\n.panel-header.minimal .tab-button:not(:hover) :global(.bp4-button-text)\n width: 0\n opacity: 0\n margin-left: -7px\n\n.menu-group\n margin-bottom: 0.5em\n margin-top: 0.2em\n\n.menu-card :global .bp4-text ul,\n.menu-card :global .text-panel ul\n padding-left: 1em\n\n.menu-content\n display: flex\n flex-direction: column\n margin-bottom: -8px\n\n & .bp4-button-group\n margin-bottom: 4px\n\n & hr\n width: 100%\n\n:global\n .mapbox-map\n .mapbox-compass, .mapbox-3d\n display: none\n\n .mapboxgl-ctrl.mapbox-3d.mapbox-control\n width: unset\n\n .mapboxgl-ctrl.mapbox-3d.mapbox-control button\n width: unset\n padding-inline: 4px\n\n .mapboxgl-canvas-container\n width: 100%\n height: 100%\n\n .mapboxgl-ctrl.mapboxgl-ctrl-attrib\n background-color: var(--translucent-panel-background-color) !important\n\n .mapboxgl-ctrl.mapboxgl-ctrl-attrib a\n color: var(--text-color)\n\n .mapboxgl-marker svg path\n fill: var(--panel-background-color) !important\n\n .mapboxgl-marker svg circle\n fill: var(--secondary-color) !important\n\n .mapbox-control.mapbox-zoom\n background: var(--translucent-panel-background-inner)\n\n .mapbox-control.mapbox-zoom svg\n fill: var(--text-color) !important\n\n .mapboxgl-ctrl-logo\n transform: scale(0.9) translate(-8px, 2px)\n\n .bp4-dark .mapboxgl-ctrl-logo\n filter: invert(100%)\n\n .mapboxgl-ctrl-group button + button\n border-top: 1px solid var(--panel-rule-color) !important\n\n .bp4-dark .mapboxgl-ctrl-group .mapboxgl-ctrl-icon\n filter: invert(40%)\n\n .bp4-dark .mapboxgl-ctrl-group .mapboxgl-ctrl-icon:hover\n filter: invert(50%)\n\n .mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon\n filter: invert(40%)\n\n .mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon:hover\n filter: invert(50%)\n\n.detail-stack\n position: relative\n\n.main-ui.detail-panel-open .zoom-control\n opacity: 0\n display: none\n\n.zoom-control\n transition: opacity 1s ease-in-out\n width: 30px\n position: absolute\n top: 0\n right: 0\n\n.main-ui.searching .map-view-container\n pointer-events: none\n\n.map-controls\n display: flex\n flex-direction: row\n justify-content: right\n margin-bottom: 0\n\n &>*\n margin-left: 0.5em\n\n.map-controls :global(.mapbox-control),\n.map-controls :global(.map-control-wrapper),\n.map-controls .map-control\n min-width: 22px\n min-height: 22px\n border-radius: 4px\n background-color: var(--panel-background-color)\n box-shadow: 0 0 0 1px var(--card-shadow-color)\n\n.map-controls :global(.mapbox-control) button,\n.map-controls :global(.map-control-wrapper) button,\n.map-controls .map-control button\n width: 22px\n height: 22px\n background-position: center center\n padding: 0\n background-color: var(--panel-background-color)\n color: var(--text-color)\n\n.map-controls :global(.mapbox-control) button:hover,\n.map-controls :global(.map-control-wrapper) button:hover,\n.map-controls .map-control button:hover\n background-color: var(--panel-background-color) !important\n\n.map-controls .map-scale-control\n background: none\n box-shadow: none\n padding-top: 8px\n\n :global(.mapboxgl-ctrl-scale)\n background-color: var(--translucent-panel-background-color)\n border-color: var(--secondary-text-color)\n color: var(--secondary-text-color)\n\n/* For mobile phones, we want to make the most of screen space,\n which in some cases means adding complications to the basic page. */\n@media only screen and (max-width: 768px)\n .main-ui.detail-panel-enter .context-stack\n height: 0\n visibility: hidden\n transition: height 0.5s ease-in-out\n\n .detail-stack\n height: fit-content\n position: inherit\n max-height: 70%\n\n .infodrawer-stack\n max-height: 70%\n &:global(.exit-active)\n max-height: 0\n\n :global(.mapbox-control.mapbox-zoom)\n display: none\n\n .map-controls\n position: absolute\n top: -60px\n right: 10px\n\n .detail-panel\n border-radius: 0px\n\n/* Desktop styling is necessarily much more complicated than mobile\n to handle a two-column layout. */\n@media screen and (min-width: 768px)\n .main-ui\n flex-direction: row\n padding: 1em 1em 2em\n min-height: 80px\n &>*\n margin-right: 0.5em\n &>*:last-child\n margin-right: 0\n\n .context-stack\n max-width: 34em\n min-width: 14em\n transition: width 300ms ease\n padding-bottom: 0.5em\n width: var(--map-context-stack-width, 16em)\n margin-right: 0.5em\n display: flex\n flex-direction: column\n\n &>.spacer\n flex-grow: 0\n\n .context-panel-holder\n min-height: 0\n position: relative\n &>div\n max-height: 100%\n\n .main-ui.detail-panel-open .detail-stack\n width: var(--map-detail-stack-width, 30em)\n\n .detail-stack\n width: 30em\n pointer-events: none\n display: flex\n flex-direction: column\n\n .context-stack, .detail-stack\n pointer-events: none\n z-index: 100\n\n &>div\n pointer-events: all\n margin-bottom: 0.5em\n\n &:last-child\n margin-bottom: 0\n\n &.spacer\n pointer-events: none\n\n .context-stack .spacer\n min-height: 1em\n\n /* Make map fill page rather than containing div,\n by unsetting map position */\n .map-view-container\n position: unset\n\n.main-ui .detail-panel\n transition: opacity 0.8s ease, height 0.8s ease, max-height 0.8s ease\n\n.main-ui.detail-panel-from .detail-panel\n opacity: 0\n\n.main-ui.detail-panel-enter .detail-panel\n opacity: 1\n\n.main-ui.detail-panel-leave .detail-panel\n opacity: 0\n\n.main-ui .context-panel-holder\n pointer-events: none\n flex: 1\n &>div\n pointer-events: all\n transition: opacity 0.8s ease //, height 0.8s ease, max-height 0.8s ease, padding 0.8s ease\n\n.main-ui.context-panel-from .context-panel-holder>div\n opacity: 0\n\n.main-ui.context-panel-enter .context-panel-holder>div\n opacity: 1\n\n.main-ui.context-panel-leave .context-panel-holder>div\n opacity: 0\n // The max-height transition is a bit jerky because of panel padding.\n // We could probably fix this by pulling the panel container itself into\n // the class.\n //max-height: 0\n //padding: 0\n\n@media only screen and (max-width: 768px)\n .main-ui .detail-stack\n transition: opacity 0.8s ease, height 0.8s ease, max-height 0.8s ease\n\n .main-ui.detail-panel-from .detail-stack\n max-height: 0\n height: 0\n\n .main-ui.detail-panel-leave .detail-stack\n max-height: 0\n max-height: 0\n\n .main-ui.context-panel-from .context-panel\n max-height: 0\n height: 0\n\n .main-ui.context-panel-leave\n .context-stack\n .context-panel-holder\n flex: 0\n .spacer\n flex: 1\n\n// Shift UI around to center elements if we're in the global view \n@media only screen and (min-width: 768px)\n .map-page .main-ui.detail-panel-leave .map-view-container\n margin-right: -14em\n\n .map-page.map-is-global .main-ui.detail-panel-leave .map-view-container\n margin-right: -30em\n\n .map-page.map-is-global .main-ui.context-panel-leave .map-view-container\n margin-left: -16em\n","import { useRef } from \"react\";\nimport { GeolocateControl } from \"mapbox-gl\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport {\n CompassControl,\n GlobeControl,\n ThreeDControl,\n MapControlWrapper,\n} from \"@macrostrat/mapbox-react\";\nimport { ScaleControl as BaseScaleControl } from \"mapbox-gl\";\n\nconst h = hyper.styled(styles);\n\nfunction ScaleControl(props) {\n const optionsRef = useRef({\n maxWidth: 200,\n unit: \"metric\",\n });\n return h(MapControlWrapper, {\n className: \"map-scale-control\",\n control: BaseScaleControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nfunction GeolocationControl(props) {\n const optionsRef = useRef({\n showAccuracyCircle: true,\n showUserLocation: true,\n trackUserLocation: true,\n positionOptions: {\n enableHighAccuracy: true,\n },\n });\n return h(MapControlWrapper, {\n control: GeolocateControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nexport function MapBottomControls() {\n return h(\"div.map-controls\", [\n h(ScaleControl),\n h(ThreeDControl, { className: \"map-3d-control\" }),\n h(CompassControl, { className: \"compass-control\" }),\n h(GlobeControl, { className: \"globe-control\" }),\n h(GeolocationControl, { className: \"geolocation-control\" }),\n ]);\n}\n","import {\n useMapRef,\n useMapEaseToCenter,\n useMapDispatch,\n useMapStatus,\n} from \"@macrostrat/mapbox-react\";\nimport { useRef } from \"react\";\nimport { debounce } from \"underscore\";\nimport useResizeObserver from \"use-resize-observer\";\n\nimport { getMapPosition } from \"@macrostrat/mapbox-utils\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { getMapPadding, useMapMarker } from \"./utils\";\n\nexport function MapResizeManager({ containerRef }) {\n const mapRef = useMapRef();\n\n const debouncedResize = useRef(\n debounce(() => {\n mapRef.current?.resize();\n }, 100)\n );\n\n useResizeObserver({\n ref: containerRef,\n onResize: debouncedResize.current,\n });\n\n return null;\n}\n\ninterface MapPaddingManagerProps {\n containerRef: React.RefObject<HTMLDivElement>;\n parentRef: React.RefObject<HTMLDivElement>;\n infoMarkerPosition: mapboxgl.LngLatLike;\n}\n\nexport function MapPaddingManager({\n containerRef,\n parentRef,\n infoMarkerPosition,\n}: MapPaddingManagerProps) {\n const mapRef = useMapRef();\n\n const [padding, setPadding] = useState(\n getMapPadding(containerRef, parentRef)\n );\n\n const updateMapPadding = useCallback(() => {\n const newPadding = getMapPadding(containerRef, parentRef);\n setPadding(newPadding);\n }, [containerRef.current, parentRef.current]);\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n // Update map padding on load\n updateMapPadding();\n }, [mapRef.current]);\n\n useResizeObserver({\n ref: parentRef,\n onResize(sz) {\n updateMapPadding();\n },\n });\n\n // Ideally, we would not have to do this when we know the infobox is loaded\n useMapEaseToCenter(infoMarkerPosition, padding);\n\n return null;\n}\n\nexport function MapMovedReporter({ onMapMoved = null }) {\n const mapRef = useMapRef();\n const dispatch = useMapDispatch();\n\n const mapMovedCallback = useCallback(() => {\n const map = mapRef.current;\n if (map == null) return;\n const mapPosition = getMapPosition(map);\n dispatch({ type: \"map-moved\", payload: mapPosition });\n onMapMoved?.(mapPosition, map);\n }, [mapRef.current, onMapMoved, dispatch]);\n\n useEffect(() => {\n // Get the current value of the map. Useful for gradually moving away\n // from class component\n const map = mapRef.current;\n if (map == null) return;\n // Update the URI when the map moves\n mapMovedCallback();\n const cb = debounce(mapMovedCallback, 100);\n map.on(\"moveend\", cb);\n return () => {\n map?.off(\"moveend\", cb);\n };\n }, [mapMovedCallback]);\n return null;\n}\n\nexport function MapLoadingReporter({\n ignoredSources,\n onMapLoading = null,\n onMapIdle = null,\n mapIsLoading,\n}) {\n const mapRef = useMapRef();\n const loadingRef = useRef(false);\n const dispatch = useMapDispatch();\n\n useEffect(() => {\n const map = mapRef.current;\n const mapIsLoading = loadingRef.current;\n if (map == null) return;\n\n let didSendLoading = false;\n\n const loadingCallback = (evt) => {\n if (ignoredSources.includes(evt.sourceId) || mapIsLoading) return;\n if (didSendLoading) return;\n onMapLoading?.(evt);\n dispatch({ type: \"set-loading\", payload: true });\n loadingRef.current = true;\n didSendLoading = true;\n };\n const idleCallback = (evt) => {\n if (!mapIsLoading) return;\n dispatch({ type: \"set-loading\", payload: false });\n loadingRef.current = false;\n onMapIdle?.(evt);\n };\n map.on(\"sourcedataloading\", loadingCallback);\n map.on(\"idle\", idleCallback);\n return () => {\n map?.off(\"sourcedataloading\", loadingCallback);\n map?.off(\"idle\", idleCallback);\n };\n }, [ignoredSources, mapRef.current, mapIsLoading]);\n return null;\n}\n\nexport function MapMarker({ position, setPosition, centerMarker = true }) {\n const mapRef = useMapRef();\n const markerRef = useRef(null);\n\n useMapMarker(mapRef, markerRef, position);\n\n const handleMapClick = useCallback(\n (event: mapboxgl.MapMouseEvent) => {\n setPosition(event.lngLat, event, mapRef.current);\n // We should integrate this with the \"easeToCenter\" hook\n if (centerMarker) {\n mapRef.current?.flyTo({ center: event.lngLat, duration: 800 });\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [mapRef.current, setPosition]\n );\n\n useEffect(() => {\n const map = mapRef.current;\n if (map != null && setPosition != null) {\n map.on(\"click\", handleMapClick);\n }\n return () => {\n map?.off(\"click\", handleMapClick);\n };\n }, [mapRef.current, setPosition]);\n\n return null;\n}\n","import { useEffect } from \"react\";\nimport { Marker } from \"mapbox-gl\";\n\nfunction calcMapPadding(rect, childRect) {\n return {\n left: Math.max(rect.left - childRect.left, 0),\n top: Math.max(rect.top - childRect.top, 0),\n right: Math.max(childRect.right - rect.right, 0),\n bottom: Math.max(childRect.bottom - rect.bottom, 0),\n };\n}\n\nexport function getMapPadding(ref, parentRef) {\n const rect = parentRef.current?.getBoundingClientRect();\n const childRect = ref.current?.getBoundingClientRect();\n if (rect == null || childRect == null) return;\n return calcMapPadding(rect, childRect);\n}\n\nexport function useMapMarker(mapRef, markerRef, markerPosition) {\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n if (markerPosition == null) {\n markerRef.current?.remove();\n return;\n }\n const marker = markerRef.current ?? new Marker();\n marker.setLngLat(markerPosition).addTo(map);\n markerRef.current = marker;\n return () => marker.remove();\n }, [mapRef.current, markerPosition]);\n}\n","import hyper from \"@macrostrat/hyper\";\nimport {\n useMapRef,\n useMapDispatch,\n useMapPosition,\n} from \"@macrostrat/mapbox-react\";\nimport {\n mapViewInfo,\n MapPosition,\n setMapPosition,\n} from \"@macrostrat/mapbox-utils\";\nimport classNames from \"classnames\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useEffect, useRef, useCallback } from \"react\";\nimport styles from \"./main.module.sass\";\nimport rootStyles from \"../main.module.sass\";\nimport { enable3DTerrain } from \"./terrain\";\nimport {\n MapLoadingReporter,\n MapMovedReporter,\n MapPaddingManager,\n MapResizeManager,\n} from \"../helpers\";\nimport \"mapbox-gl/dist/mapbox-gl.css\";\nimport { getMapPadding } from \"../utils\";\n\nconst h = hyper.styled({ ...styles, ...rootStyles });\n\ntype MapboxCoreOptions = Omit<mapboxgl.MapboxOptions, \"container\">;\n\nexport interface MapViewProps extends MapboxCoreOptions {\n showLineSymbols?: boolean;\n children?: React.ReactNode;\n mapboxToken?: string;\n // Deprecated\n accessToken?: string;\n terrainSourceID?: string;\n enableTerrain?: boolean;\n infoMarkerPosition?: mapboxgl.LngLatLike;\n mapPosition?: MapPosition;\n initializeMap?: (\n container: HTMLElement,\n args: MapboxOptionsExt\n ) => mapboxgl.Map;\n onMapLoaded?: (map: mapboxgl.Map) => void;\n onStyleLoaded?: (map: mapboxgl.Map) => void;\n}\n\nexport interface MapboxOptionsExt extends MapboxCoreOptions {\n mapPosition?: MapPosition;\n}\n\nfunction defaultInitializeMap(container, args: MapboxOptionsExt = {}) {\n const { mapPosition, ...rest } = args;\n\n const map = new mapboxgl.Map({\n container,\n maxZoom: 18,\n //maxTileCacheSize: 0,\n logoPosition: \"bottom-left\",\n trackResize: true,\n antialias: true,\n optimizeForTerrain: true,\n ...rest,\n });\n\n // set initial map position\n if (mapPosition != null) {\n setMapPosition(map, mapPosition);\n }\n\n //setMapPosition(map, mapPosition);\n return map;\n}\n\nconst defaultMapPosition: MapPosition = {\n camera: {\n lat: 34,\n lng: -120,\n altitude: 300000,\n },\n};\n\nexport function MapView(props: MapViewProps) {\n let { terrainSourceID } = props;\n const {\n enableTerrain = true,\n style,\n mapPosition = defaultMapPosition,\n initializeMap = defaultInitializeMap,\n children,\n mapboxToken,\n // Deprecated\n accessToken,\n infoMarkerPosition,\n transformRequest,\n projection,\n onMapLoaded = null,\n onStyleLoaded = null,\n ...rest\n } = props;\n if (enableTerrain) {\n terrainSourceID ??= \"mapbox-3d-dem\";\n }\n\n const _mapboxToken = mapboxToken ?? accessToken;\n\n if (_mapboxToken != null) {\n mapboxgl.accessToken = _mapboxToken;\n }\n\n const dispatch = useMapDispatch();\n let mapRef = useMapRef();\n const ref = useRef<HTMLDivElement>();\n const parentRef = useRef<HTMLDivElement>();\n\n // Keep track of map position for reloads\n useEffect(() => {\n console.log(\"Map updated\", mapRef.current);\n }, [mapRef.current]);\n\n useEffect(() => {\n if (style == null) return;\n if (mapRef.current != null) {\n console.log(\"Setting style\", style);\n mapRef.current.setStyle(style);\n return;\n }\n const map = initializeMap(ref.current, {\n style,\n projection,\n mapPosition,\n ...rest,\n });\n map.setPadding(getMapPadding(ref, parentRef), { animate: false });\n map.on(\"style.load\", () => {\n onStyleLoaded?.(map);\n dispatch({ type: \"set-style-loaded\", payload: true });\n });\n onMapLoaded?.(map);\n dispatch({ type: \"set-map\", payload: map });\n }, [style]);\n\n // Map style updating\n // useEffect(() => {\n // if (mapRef?.current == null || style == null) return;\n // mapRef?.current?.setStyle(style);\n // }, [mapRef.current, style]);\n\n // Set map position if it changes\n // useEffect(() => {\n // const map = mapRef.current;\n // if (map == null || mapPosition == null) return;\n // setMapPosition(map, mapPosition);\n // }, [mapPosition]);\n\n const _computedMapPosition = useMapPosition();\n const { mapUse3D, mapIsRotated } = mapViewInfo(_computedMapPosition);\n\n // Get map projection\n const _projection = mapRef.current?.getProjection()?.name ?? \"mercator\";\n\n const className = classNames(\n {\n \"is-rotated\": mapIsRotated ?? false,\n \"is-3d-available\": mapUse3D ?? false,\n },\n `${_projection}-projection`\n );\n\n return h(\"div.map-view-container.main-view\", { ref: parentRef }, [\n h(\"div.mapbox-map#map\", { ref, className }),\n h(MapLoadingReporter, {\n ignoredSources: [\"elevationMarker\", \"crossSectionEndpoints\"],\n }),\n h(MapMovedReporter),\n h(MapResizeManager, { containerRef: ref }),\n h(MapPaddingManager, { containerRef: ref, parentRef, infoMarkerPosition }),\n h(MapTerrainManager, { mapUse3D, terrainSourceID }),\n children,\n ]);\n}\n\nexport function MapTerrainManager({\n mapUse3D,\n terrainSourceID,\n}: {\n mapUse3D?: boolean;\n terrainSourceID?: string;\n}) {\n const mapRef = useMapRef();\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n enable3DTerrain(map, mapUse3D, terrainSourceID);\n }, [mapRef.current, mapUse3D]);\n return null;\n}\n",".map-view-container\n flex-grow: 1\n position: relative\n overflow: hidden\n\n.mapbox-map\n position: absolute\n top: 0\n bottom: 0\n left: 0\n right: 0\n &:global(.mapboxgl-map)\n // override the default mapbox position: relative in all cases\n position: absolute\n\n/* Desktop styling is necessarily much more complicated than mobile\n to handle a two-column layout. */\n@media screen and (min-width: 768px)\n /* Make map fill page rather than containing div,\n by unsetting map position */\n // We should move this to another file.\n .map-view-container\n position: unset\n","// We should merge this with code in @macrostrat/mapbox-react/src/terrain.ts:\n\nexport function enable3DTerrain(\n map,\n shouldEnable: boolean,\n sourceID: string | null = null\n) {\n let demSourceID = sourceID ?? getTerrainSourceID(map) ?? \"mapbox-dem\";\n\n console.log(\"Enabling 3D terrain with source\", demSourceID);\n\n if (!map.style?._loaded) {\n map.once(\"style.load\", () => {\n enable3DTerrain(map, shouldEnable, demSourceID);\n });\n return;\n }\n\n // Enable or disable terrain depending on our current desires...\n const currentTerrain = map.getTerrain();\n if (!shouldEnable) {\n if (currentTerrain != null) map.setTerrain(null);\n return;\n }\n if (currentTerrain != null) return;\n\n // Add a DEM source if one is not found already.\n if (map.getSource(demSourceID) == null) {\n map.addSource(demSourceID, {\n type: \"raster-dem\",\n url: \"mapbox://mapbox.mapbox-terrain-dem-v1\",\n tileSize: 512,\n maxzoom: 14,\n });\n }\n\n // add a sky layer that will show when the map is highly pitched\n if (map.getLayer(\"sky\") == null) {\n map.addLayer({\n id: \"sky\",\n type: \"sky\",\n paint: {\n \"sky-type\": \"atmosphere\",\n \"sky-atmosphere-sun\": [0.0, 0.0],\n \"sky-atmosphere-sun-intensity\": 15,\n },\n });\n }\n\n map.setTerrain({ source: demSourceID, exaggeration: 1 });\n}\n\nfunction getTerrainSourceID(map) {\n for (const [key, source] of Object.entries(map.getStyle().sources)) {\n if (source.type == \"raster-dem\") {\n return key;\n }\n }\n return null;\n}\n",".feature-panel\n position: relative\n margin: 0 -1em\n\n.key-value\n display: inline-block\n margin-right: 1em\n .key\n font-weight: bold\n font-size: 0.9em\n &:after\n content: ': '\n .value\n font-size: 0.9em\n\n.feature-properties\n position: relative\n &:before\n content: \"–\"\n position: absolute\n top: 4px\n left: 0\n\n.feature-header h3\n margin-bottom: 0\n margin-top: 0.5em\n\n.feature-group\n border-bottom: 1px solid var(--panel-rule-inner)\n margin-bottom: 0.5em\n &:last-child\n border-bottom: none\n\n.tile-info\n display: flex\n flex-direction: row\n align-items: baseline\n h3\n margin-right: 0.5em\n\n.opacity-slider\n margin: 0 1em 0.5em\n :global\n .bp4-slider-handle .bp4-slider-label\n background-color: var(--secondary-color)\n color: var(--text-color)\n\n.unit-number\n .unit\n font-size: 0.9em\n margin-left: 0.2em\n font-weight: bold\n\n.page\n margin: 2em auto\n max-width: 50em\n\n.dev-index-page\n overflow-y: scroll\n","import { useMapConditionalStyle, useMapRef } from \"@macrostrat/mapbox-react\";\nimport { tileToGeoJSON } from \"@mapbox/tilebelt\";\nimport { useCallback } from \"react\";\n\ntype TileIndex = { x: number; y: number; z: number };\n\nexport function TileExtentLayer({\n tile,\n color = \"red\",\n}: {\n tile: TileIndex | null;\n color?: string;\n}) {\n const styleCallback = useCallback(\n (map, val: TileIndex) => {\n const style = map.getStyle();\n if (style.layers == null) return;\n style.layers = style.layers.filter((l) => l.id != \"tile-extent\");\n if (val == null) {\n return map.setStyle(style);\n }\n const { x, y, z } = val;\n const extent = tileToGeoJSON([x, y, z]);\n const source = {\n type: \"geojson\",\n data: extent,\n };\n const layer = {\n id: \"tile-extent\",\n type: \"line\",\n source: \"tile-extent\",\n paint: {\n \"line-color\": color,\n \"line-width\": 2,\n },\n };\n style.sources[\"tile-extent\"] = source;\n style.layers.push(layer);\n map.setStyle(style);\n },\n [color]\n );\n const map = useMapRef();\n useMapConditionalStyle(map, tile, styleCallback);\n return null;\n}\n","import { Spinner, Switch } from \"@blueprintjs/core\";\nimport { useMapRef, useMapStatus } from \"@macrostrat/mapbox-react\";\nimport mapboxgl from \"mapbox-gl\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useEffect, useState } from \"react\";\nimport { JSONView, usePrevious } from \"@macrostrat/ui-components\";\nimport { group } from \"d3-array\";\nimport { ExpansionPanel } from \"../expansion-panel\";\n\nconst h = hyper.styled(styles);\n\nexport function FeatureProperties({ data, ...rest }) {\n return h(\"div.feature-properties\", [\n h(JSONView, {\n data,\n hideRoot: true,\n ...rest,\n }),\n ]);\n}\n\nexport function FeatureRecord({ feature }) {\n const props = feature.properties;\n return h(\"div.feature-record\", [\n h.if(Object.keys(props).length > 0)(FeatureProperties, { data: props }),\n ]);\n}\n\nexport function FeatureSelectionHandler({\n selectedLocation,\n setFeatures,\n radius = 2,\n}: {\n selectedLocation: mapboxgl.LngLat;\n setFeatures: (features: mapboxgl.MapboxGeoJSONFeature[]) => void;\n radius?: number;\n}) {\n const mapRef = useMapRef();\n const { isLoading } = useMapStatus();\n const prevLocation = usePrevious(selectedLocation);\n\n useEffect(() => {\n const map = mapRef?.current;\n if (map == null) return;\n if (selectedLocation == null) {\n setFeatures(null);\n return;\n }\n\n // Don't update if the location hasn't changed\n if (selectedLocation == prevLocation) return;\n\n const r = radius;\n const pt = map.project(selectedLocation);\n\n const bbox: [mapboxgl.PointLike, mapboxgl.PointLike] = [\n [pt.x - r, pt.y - r],\n [pt.x + r, pt.y + r],\n ];\n const features = map.queryRenderedFeatures(bbox);\n setFeatures(features);\n }, [mapRef?.current, selectedLocation, isLoading]);\n\n return null;\n}\n\nfunction FeatureHeader({ feature }) {\n return h(\"div.feature-header\", [\n h(\"h3\", [\n h(KeyValue, { label: \"Source\", value: feature.source }),\n h(KeyValue, { label: \"Source layer\", value: feature.sourceLayer }),\n ]),\n ]);\n}\n\nfunction KeyValue({ label, value }) {\n return h(\"span.key-value\", [h(\"span.key\", label), h(\"code.value\", value)]);\n}\n\nfunction LoadingAwareFeatureSet({ features, sourceID }) {\n const map = useMapRef();\n if (map?.current == null) return null;\n const [isLoaded, setIsLoaded] = useState(false);\n\n const sourceFeatures = features.filter((d) => d.source == \"burwell\");\n\n useEffect(() => {\n if (sourceFeatures.length > 0) {\n setIsLoaded(true);\n return;\n }\n\n const isLoaded = map.current.isSourceLoaded(sourceID);\n setIsLoaded(isLoaded);\n if (!isLoaded) {\n map.current.once(\"sourcedata\", (e) => {\n if (e.sourceId == sourceID) {\n setIsLoaded(true);\n }\n });\n }\n }, [map.current, sourceID, sourceFeatures.length]);\n\n if (!isLoaded) return h(Spinner);\n return h(Features, { features: sourceFeatures });\n}\n\nexport function TileInfo({ feature, showExtent, setShowExtent }) {\n if (feature == null) return null;\n const size = feature._vectorTileFeature._pbf.length;\n return h(\"div.tile-info\", [\n h(\"h3\", \"Tile\"),\n h(\"div.tile-index\", [\n h(KeyValue, { label: \"x\", value: feature._x }),\n h(KeyValue, { label: \"y\", value: feature._y }),\n h(KeyValue, { label: \"z\", value: feature._z }),\n ]),\n h(\"div.spacer\"),\n h(KeyValue, { label: \"Size\", value: formatSize(size) }),\n h(Switch, {\n label: \"Show extent\",\n alignIndicator: \"right\",\n checked: showExtent,\n onChange() {\n setShowExtent(!showExtent);\n },\n }),\n ]);\n}\n\nfunction formatSize(size: number) {\n if (size > 1000000)\n return h(UnitNumber, { value: size / 1000000, unit: \"Mb\" });\n if (size > 1000) return h(UnitNumber, { value: size / 1000, unit: \"Kb\" });\n return `${size} bytes`;\n}\n\nfunction UnitNumber({ value, unit, precision = 1 }) {\n return h(\"span.unit-number\", [\n h(\"span.number\", value.toFixed(precision)),\n h(\"span.unit\", unit),\n ]);\n}\n\nexport function FeaturePanel({\n features,\n focusedSource = null,\n focusedSourceTitle = null,\n}) {\n if (features == null) return null;\n\n let focusedSourcePanel = null;\n let filteredFeatures = features;\n let title = \"Features\";\n\n if (focusedSource != null) {\n title = \"Basemap features\";\n focusedSourcePanel = h(\n ExpansionPanel,\n {\n title: \"Macrostrat features\",\n className: \"macrostrat-features\",\n expanded: true,\n },\n [\n h(LoadingAwareFeatureSet, {\n features,\n sourceID: focusedSource,\n }),\n ]\n );\n filteredFeatures = features.filter((d) => d.source != focusedSource);\n }\n\n return h(\"div.feature-panel\", [\n focusedSourcePanel,\n h(\n ExpansionPanel,\n { title, className: \"basemap-features\", expanded: focusedSource == null },\n [\n h(FeatureGroups, {\n features: filteredFeatures,\n }),\n ]\n ),\n ]);\n}\n\nfunction FeatureGroups({ features }) {\n /** Group features by source and sourceLayer */\n if (features == null) return null;\n\n const groups = group(features, (d) => `${d.source} - ${d.sourceLayer}`);\n\n return h(\n \"div.feature-groups\",\n Array.from(groups).map(([key, features]) => {\n return h(\"div.feature-group\", [\n h(FeatureHeader, { feature: features[0] }),\n h(Features, { features }),\n ]);\n })\n );\n}\n\nexport function Features({ features }) {\n return h(\n \"div.features\",\n features.map((feature, i) => h(FeatureRecord, { key: i, feature }))\n );\n}\n","import { useState } from \"react\";\nimport { Collapse, Icon } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport classNames from \"classnames\";\nimport { Button } from \"@blueprintjs/core\";\nimport { PanelSubhead } from \"./headers\";\n\nconst h = hyper.styled(styles);\n\nfunction ExpansionPanelSummary(props) {\n const { expanded, children, onChange, className, title, titleComponent } =\n props;\n const icon = expanded ? \"chevron-up\" : \"chevron-down\";\n return h(\n PanelSubhead,\n {\n className: classNames(\"expansion-panel-header\", className),\n onClick: onChange,\n title,\n component: titleComponent,\n },\n [children, h(Icon, { icon })]\n );\n}\n\nfunction ExpansionPanelBase(props) {\n let {\n title,\n titleComponent = \"h3\",\n children,\n expanded,\n helpText,\n onChange = () => {},\n sideComponent = null,\n className,\n } = props;\n const [isOpen, setOpen] = useState(expanded || false);\n\n const onChange_ = () => {\n onChange();\n setOpen(!isOpen);\n };\n\n return h(\n \"div.expansion-panel-base\",\n {\n className: classNames(className, {\n expanded: isOpen,\n collapsed: !isOpen,\n }),\n },\n [\n h(\n ExpansionPanelSummary,\n {\n onChange: onChange_,\n expanded: isOpen,\n title,\n titleComponent,\n },\n h(\"div.expansion-summary-title-help\", [\n h(\"span.expansion-panel-subtext\", helpText),\n \" \",\n sideComponent,\n ])\n ),\n h(Collapse, { isOpen }, h(\"div.expansion-children\", null, children)),\n ]\n );\n}\n\nexport function InfoPanelSection(props) {\n let { title, children, className, headerElement = null } = props;\n return h(\"div.info-panel-section\", { className }, [\n h(\"div.panel-subhead\", null, headerElement ?? h(\"h3\", title)),\n h(\"div.panel-content\", null, children),\n ]);\n}\n\nfunction ExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel\",\n });\n}\n\nfunction SubExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel sub-expansion-panel\",\n titleComponent: \"h4\",\n });\n}\n\nfunction ExpandableDetailsPanel(props) {\n let { title, children, value, headerElement, className } = props;\n const [isOpen, setIsOpen] = useState(false);\n headerElement ??= h([h(\"div.title\", title), value]);\n return h(\"div.expandable-details\", { className }, [\n h(\"div.expandable-details-main\", [\n h(\"div.expandable-details-header\", headerElement),\n h(\"div.expandable-details-toggle\", [\n h(Button, {\n small: true,\n minimal: true,\n active: isOpen,\n onClick: () => setIsOpen(!isOpen),\n icon: \"more\",\n }),\n ]),\n ]),\n h(\n Collapse,\n { isOpen },\n h(\"div.expandable-details-children\", null, children)\n ),\n ]);\n}\n\nfunction ExpansionBody({ title, className, children }) {\n return h(\"div.expansion-body\", { className }, [\n h(\"div.expansion-panel-detail-header\", title),\n h(\"div.expansion-panel-detail-body\", null, children),\n ]);\n}\n\nexport {\n ExpansionPanel,\n ExpansionPanelSummary,\n ExpandableDetailsPanel,\n SubExpansionPanel,\n ExpansionBody,\n PanelSubhead,\n};\n","\n.panel-subhead\n padding: 0.2em var(--box-horizontal-padding)\n border-top: 1px solid var(--panel-rule-color)\n border-bottom: 1px solid var(--panel-rule-color)\n background-color: var(--accent-color)\n display: flex\n flex-direction: row\n align-items: center\n z-index: 1\n gap: var(--box-horizontal-padding)\n top: -1px\n position: sticky\n h1, h2, h3, h4\n font-family: Montserrat,sans-serif\n font-weight: 700\n margin: 0.2em 0\n h4\n font-weight: 600\n .title\n flex-grow: 1\n\n// :global(.bp4-dark) .panel-subhead\n// margin 0 1px\n\n.expansion-panel\n padding: 0\n flex-wrap: wrap\n margin-top: -1px\n // &.collapsed\n // .expansion-panel-header\n // border-bottom-width: 0;\n\n.sub-expansion-panel\n margin: -1px calc(var(--panel-padding-h) * -0.5) 0\n overflow: hidden\n &:first-child\n .expansion-panel-header\n border-top-width: 0\n .panel-subhead\n border-top: none\n border-bottom: none\n\n .expansion-panel-header\n background-color: var(--accent-secondary-color)\n cursor: pointer\n &:hover\n background-color: var(--accent-secondary-hover-color)\n h2, h3, h4\n font-weight: 500\n border-bottom: 1px solid var(--tertiary-border-color)\n border-top: 1px solid var(--tertiary-border-color)\n margin-top: -1px\n padding: 5px 1em 5px\n align-items: center\n\n.expansion-summary-title-help\n margin-left: 5px\n :global(.bp4-icon)\n margin-left: 5px\n\n.expansion-panel-header\n cursor: pointer\n &:hover\n background-color: var(--accent-hover-color)\n :global(.bp4-icon)\n transform: translate(0,3px)\n\n.expansion-children\n padding: 5px 1em 10px\n .expansion-panel\n margin-left: -1em\n margin-right: -1em\n &:first-child\n margin-top: -5px\n\n.expansion-panel-subtext\n font-size: 85%\n font-weight: 400\n\n:global\n .expansion-panel-root\n padding-left: 15px !important\n\n .expansion-panel-detail\n display: block !important\n padding: 0 !important\n\n .expansion-panel-detail-sub\n display: block !important\n\n// New expandable panel for details\n.expandable-details-main\n display: flex\n flex-direction: row\n align-items: center\n justify-content: space-between\n margin: 3px 0\n\n.expandable-details-header\n display: inline-flex\n flex-direction: row\n align-items: baseline\n flex-grow: 1\n\n.expandable-details-children\n position: relative\n\n.expandable-details-toggle\n :global(.bp4-button)\n font-size: 10px\n\n.expandable-details\n &.macrostrat-unit\n .title:after\n content: none\n .title\n margin-right: 1em\n &:after\n content: \":\"\n\n.expansion-body\n display: inline-block\n //flex-direction row\n align-items: baseline\n background-color: var(--tertiary-background)\n padding: 2px 6px\n border-radius: 4px\n width: 100%\n box-shadow: 0px 1px 2px 1px rgba(0,0,0,0.2)\n margin-bottom: 6px\n\n.expansion-panel-detail-header\n font-size: 90%\n font-style: italic\n margin-right: 1em\n display: inline\n color: var(--secondary-color)\n &:after\n content: \":\"\n\n.expansion-panel-detail-body\n display: inline\n","import hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\n\nconst h = hyper.styled(styles);\n\nexport function PanelSubhead(props) {\n const { title, component = \"h3\", children, ...rest } = props;\n return h(\"div.panel-subhead\", rest, [\n h(\n component,\n {\n className: \"title\",\n },\n title\n ),\n children,\n ]);\n}\n"],"names":[],"version":3,"file":"index.js.map"}
|