@dxos/react-ui-geo 0.7.5-labs.071a3e2
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/LICENSE +8 -0
- package/README.md +3 -0
- package/data/airports.ts +52524 -0
- package/data/cities.ts +1211 -0
- package/data/countries-110m.ts +10587 -0
- package/data/countries-dots-3.ts +42989 -0
- package/data/countries-dots-4.ts +300941 -0
- package/data/raw/airports.json +39386 -0
- package/data/raw/countries-10m.json +1 -0
- package/data/raw/countries-110m.json +1 -0
- package/data/raw/countries-50m.json +1 -0
- package/data/raw/countries.json +1 -0
- package/dist/lib/browser/chunk-ENCWOTYX.mjs +9 -0
- package/dist/lib/browser/chunk-ENCWOTYX.mjs.map +7 -0
- package/dist/lib/browser/countries-110m-WI4PCLDF.mjs +37859 -0
- package/dist/lib/browser/countries-110m-WI4PCLDF.mjs.map +7 -0
- package/dist/lib/browser/data.mjs +7 -0
- package/dist/lib/browser/data.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1020 -0
- package/dist/lib/browser/index.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -0
- package/dist/lib/node/chunk-LAICG6L2.cjs +40 -0
- package/dist/lib/node/chunk-LAICG6L2.cjs.map +7 -0
- package/dist/lib/node/countries-110m-KQ5WAB2O.cjs +37877 -0
- package/dist/lib/node/countries-110m-KQ5WAB2O.cjs.map +7 -0
- package/dist/lib/node/data.cjs +28 -0
- package/dist/lib/node/data.cjs.map +7 -0
- package/dist/lib/node/index.cjs +1045 -0
- package/dist/lib/node/index.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -0
- package/dist/lib/node-esm/chunk-PIIEDZEU.mjs +11 -0
- package/dist/lib/node-esm/chunk-PIIEDZEU.mjs.map +7 -0
- package/dist/lib/node-esm/countries-110m-DQ4XRC4B.mjs +37861 -0
- package/dist/lib/node-esm/countries-110m-DQ4XRC4B.mjs.map +7 -0
- package/dist/lib/node-esm/data.mjs +8 -0
- package/dist/lib/node-esm/data.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1021 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/types/data/airports.d.ts +18 -0
- package/dist/types/data/airports.d.ts.map +1 -0
- package/dist/types/data/cities.d.ts +17 -0
- package/dist/types/data/cities.d.ts.map +1 -0
- package/dist/types/data/countries-110m.d.ts +36 -0
- package/dist/types/data/countries-110m.d.ts.map +1 -0
- package/dist/types/data/countries-dots-3.d.ts +9 -0
- package/dist/types/data/countries-dots-3.d.ts.map +1 -0
- package/dist/types/data/countries-dots-4.d.ts +9 -0
- package/dist/types/data/countries-dots-4.d.ts.map +1 -0
- package/dist/types/src/components/Globe/Globe.d.ts +37 -0
- package/dist/types/src/components/Globe/Globe.d.ts.map +1 -0
- package/dist/types/src/components/Globe/Globe.stories.d.ts +15 -0
- package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -0
- package/dist/types/src/components/Globe/index.d.ts +2 -0
- package/dist/types/src/components/Globe/index.d.ts.map +1 -0
- package/dist/types/src/components/Map/Map.d.ts +34 -0
- package/dist/types/src/components/Map/Map.d.ts.map +1 -0
- package/dist/types/src/components/Map/Map.stories.d.ts +7 -0
- package/dist/types/src/components/Map/Map.stories.d.ts.map +1 -0
- package/dist/types/src/components/Map/index.d.ts +2 -0
- package/dist/types/src/components/Map/index.d.ts.map +1 -0
- package/dist/types/src/components/Toolbar/Controls.d.ts +11 -0
- package/dist/types/src/components/Toolbar/Controls.d.ts.map +1 -0
- package/dist/types/src/components/Toolbar/index.d.ts +2 -0
- package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +5 -0
- package/dist/types/src/components/index.d.ts.map +1 -0
- package/dist/types/src/components/types.d.ts +14 -0
- package/dist/types/src/components/types.d.ts.map +1 -0
- package/dist/types/src/data.d.ts +3 -0
- package/dist/types/src/data.d.ts.map +1 -0
- package/dist/types/src/hooks/context.d.ts +26 -0
- package/dist/types/src/hooks/context.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +7 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -0
- package/dist/types/src/hooks/useDrag.d.ts +16 -0
- package/dist/types/src/hooks/useDrag.d.ts.map +1 -0
- package/dist/types/src/hooks/useGlobeZoomHandler.d.ts +3 -0
- package/dist/types/src/hooks/useGlobeZoomHandler.d.ts.map +1 -0
- package/dist/types/src/hooks/useMapZoomHandler.d.ts +3 -0
- package/dist/types/src/hooks/useMapZoomHandler.d.ts.map +1 -0
- package/dist/types/src/hooks/useSpinner.d.ts +11 -0
- package/dist/types/src/hooks/useSpinner.d.ts.map +1 -0
- package/dist/types/src/hooks/useTour.d.ts +13 -0
- package/dist/types/src/hooks/useTour.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +6 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/types.d.ts +7 -0
- package/dist/types/src/types.d.ts.map +1 -0
- package/dist/types/src/util/debug.d.ts +2 -0
- package/dist/types/src/util/debug.d.ts.map +1 -0
- package/dist/types/src/util/index.d.ts +5 -0
- package/dist/types/src/util/index.d.ts.map +1 -0
- package/dist/types/src/util/inertia.d.ts +16 -0
- package/dist/types/src/util/inertia.d.ts.map +1 -0
- package/dist/types/src/util/path.d.ts +15 -0
- package/dist/types/src/util/path.d.ts.map +1 -0
- package/dist/types/src/util/render.d.ts +26 -0
- package/dist/types/src/util/render.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +83 -0
- package/src/components/Globe/Globe.stories.tsx +318 -0
- package/src/components/Globe/Globe.tsx +270 -0
- package/src/components/Globe/index.ts +5 -0
- package/src/components/Map/Map.stories.tsx +39 -0
- package/src/components/Map/Map.tsx +203 -0
- package/src/components/Map/index.ts +5 -0
- package/src/components/Toolbar/Controls.tsx +71 -0
- package/src/components/Toolbar/index.ts +5 -0
- package/src/components/index.ts +9 -0
- package/src/components/types.ts +18 -0
- package/src/data.ts +9 -0
- package/src/hooks/context.tsx +59 -0
- package/src/hooks/index.ts +10 -0
- package/src/hooks/useDrag.ts +55 -0
- package/src/hooks/useGlobeZoomHandler.ts +29 -0
- package/src/hooks/useMapZoomHandler.ts +29 -0
- package/src/hooks/useSpinner.ts +69 -0
- package/src/hooks/useTour.ts +114 -0
- package/src/index.ts +9 -0
- package/src/types.ts +11 -0
- package/src/util/debug.ts +16 -0
- package/src/util/index.ts +8 -0
- package/src/util/inertia.ts +197 -0
- package/src/util/path.ts +56 -0
- package/src/util/render.ts +149 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/Globe/Globe.tsx", "../../../src/hooks/context.tsx", "../../../src/hooks/useDrag.ts", "../../../src/util/debug.ts", "../../../src/util/inertia.ts", "../../../src/util/path.ts", "../../../src/util/render.ts", "../../../src/hooks/useGlobeZoomHandler.ts", "../../../src/hooks/useMapZoomHandler.ts", "../../../src/hooks/useSpinner.ts", "../../../src/hooks/useTour.ts", "../../../src/components/Toolbar/Controls.tsx", "../../../src/components/Map/Map.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2018 DXOS.org\n//\n\nimport * as d3 from 'd3';\nimport { type GeoProjection } from 'd3';\nimport { type ControlPosition } from 'leaflet';\nimport React, {\n type PropsWithChildren,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { type Topology } from 'topojson-specification';\n\nimport { type ThemedClassName, useDynamicRef } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport {\n GlobeContextProvider,\n type GlobeContextProviderProps,\n type GlobeContextType,\n useGlobeContext,\n} from '../../hooks';\nimport {\n type Features,\n type Styles,\n type StyleSet,\n createLayers,\n geoToPosition,\n positionToRotation,\n renderLayers,\n timer,\n} from '../../util';\nimport { ZoomControls, ActionControls, type ControlProps, controlPositions } from '../Toolbar';\n\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\nconst defaultStyles: Styles = {\n background: {\n fillStyle: '#111111',\n },\n\n water: {\n fillStyle: '#123E6A',\n },\n\n hex: {\n strokeStyle: 'green',\n fillStyle: 'gray',\n pointRadius: 1,\n },\n\n land: {\n fillStyle: '#032153',\n },\n\n line: {\n strokeStyle: '#111111',\n },\n\n point: {\n fillStyle: '#111111',\n strokeStyle: '#111111',\n strokeWidth: 1,\n pointRadius: 0.5,\n },\n};\n\nexport type GlobeController = {\n canvas: HTMLCanvasElement;\n projection: GeoProjection;\n} & Pick<GlobeContextType, 'scale' | 'translation' | 'rotation' | 'setScale' | 'setTranslation' | 'setRotation'>;\n\nexport type ProjectionType = 'orthographic' | 'mercator' | 'transverse-mercator';\n\nconst projectionMap: Record<ProjectionType, () => GeoProjection> = {\n orthographic: d3.geoOrthographic,\n mercator: d3.geoMercator,\n 'transverse-mercator': d3.geoTransverseMercator,\n};\n\nconst getProjection = (type: GlobeCanvasProps['projection'] = 'orthographic'): GeoProjection => {\n if (typeof type === 'string') {\n const constructor = projectionMap[type] ?? d3.geoOrthographic;\n return constructor();\n }\n\n return type ?? d3.geoOrthographic();\n};\n\n//\n// Root\n//\n\ntype GlobeRootProps = PropsWithChildren<ThemedClassName<GlobeContextProviderProps>>;\n\nconst GlobeRoot = ({ classNames, children, ...props }: GlobeRootProps) => {\n const { ref, width, height } = useResizeDetector<HTMLDivElement>();\n return (\n <div ref={ref} className={mx('relative flex grow overflow-hidden', classNames)}>\n <GlobeContextProvider size={{ width, height }} {...props}>\n {children}\n </GlobeContextProvider>\n </div>\n );\n};\n\n//\n// Canvas\n//\n\ntype GlobeCanvasProps = {\n projection?: ProjectionType | GeoProjection;\n topology?: Topology;\n features?: Features;\n styles?: StyleSet;\n};\n\n/**\n * Basic globe renderer.\n * https://github.com/topojson/world-atlas\n */\nconst GlobeCanvas = forwardRef<GlobeController, GlobeCanvasProps>(\n ({ projection: _projection, topology, features, styles = defaultStyles }, forwardRef) => {\n // Canvas.\n const [canvas, setCanvas] = useState<HTMLCanvasElement>(null);\n const canvasRef = (canvas: HTMLCanvasElement) => setCanvas(canvas);\n\n // Projection.\n const projection = useMemo(() => getProjection(_projection), [_projection]);\n\n // Layers.\n // TODO(burdon): Generate on the fly based on what is visible.\n const layers = useMemo(() => {\n return timer(() => createLayers(topology as Topology, features, styles));\n }, [topology, features, styles]);\n\n // State.\n const { size, center, scale, translation, rotation, setCenter, setScale, setTranslation, setRotation } =\n useGlobeContext();\n\n const scaleRef = useDynamicRef(scale);\n\n // Update rotation.\n useEffect(() => {\n if (center) {\n setScale(1);\n setRotation(positionToRotation(geoToPosition(center)));\n }\n }, [center]);\n\n // External controller.\n const zooming = useRef(false);\n useImperativeHandle<GlobeController, GlobeController>(\n forwardRef,\n () => {\n return {\n canvas,\n projection,\n center,\n get scale() {\n return scaleRef.current;\n },\n translation,\n rotation,\n setCenter,\n setScale: (s) => {\n if (typeof s === 'function') {\n const is = d3.interpolateNumber(scaleRef.current, s(scaleRef.current));\n // Stop easing if already zooming.\n d3.transition()\n .ease(zooming.current ? d3.easeLinear : d3.easeSinOut)\n .duration(200)\n .tween('scale', () => (t) => setScale(is(t)))\n .on('end', () => {\n zooming.current = false;\n });\n } else {\n setScale(s);\n }\n },\n setTranslation,\n setRotation,\n };\n },\n [canvas],\n );\n\n // https://d3js.org/d3-geo/path#geoPath\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n const generator = useMemo(\n () => canvas && projection && d3.geoPath(projection, canvas.getContext('2d', { alpha: false })),\n [canvas, projection],\n );\n\n // Render on change.\n useEffect(() => {\n if (canvas && projection) {\n timer(() => {\n // https://d3js.org/d3-geo/projection\n projection\n .scale((Math.min(size.width, size.height) / 2) * scale)\n .translate([size.width / 2 + (translation?.x ?? 0), size.height / 2 + (translation?.y ?? 0)])\n .rotate(rotation ?? [0, 0, 0]);\n\n renderLayers(generator, layers, scale);\n });\n }\n }, [generator, size, scale, translation, rotation, layers]);\n\n if (!size.width || !size.height) {\n return null;\n }\n\n return <canvas ref={canvasRef} width={size.width} height={size.height} />;\n },\n);\n\nconst GlobeDebug = ({ position = 'topleft' }: { position?: ControlPosition }) => {\n const { size, scale, translation, rotation } = useGlobeContext();\n return (\n <div\n className={mx(\n 'z-10 absolute w-96 p-2 overflow-hidden border border-green-700 rounded',\n controlPositions[position],\n )}\n >\n <pre className='font-mono text-xs text-green-700'>\n {JSON.stringify({ size, scale, translation, rotation }, null, 2)}\n </pre>\n </div>\n );\n};\n\nconst GlobePanel = ({\n position,\n classNames,\n children,\n}: ThemedClassName<PropsWithChildren & { position?: ControlPosition }>) => {\n return <div className={mx('z-10 absolute overflow-hidden', controlPositions[position], classNames)}>{children}</div>;\n};\n\nconst CustomControl = ({ position, children }: PropsWithChildren<{ position: ControlPosition }>) => {\n return <div className={mx('z-10 absolute overflow-hidden', controlPositions[position])}>{children}</div>;\n};\n\ntype GlobeControlProps = { position?: ControlPosition } & Pick<ControlProps, 'onAction'>;\n\nexport const Globe = {\n Root: GlobeRoot,\n Canvas: GlobeCanvas,\n Zoom: ({ onAction, position = 'bottomleft', ...props }: GlobeControlProps) => (\n <CustomControl position={position} {...props}>\n <ZoomControls onAction={onAction} />\n </CustomControl>\n ),\n Action: ({ onAction, position = 'bottomright', ...props }: GlobeControlProps) => (\n <CustomControl position={position} {...props}>\n <ActionControls onAction={onAction} />\n </CustomControl>\n ),\n Debug: GlobeDebug,\n Panel: GlobePanel,\n};\n\nexport type { GlobeRootProps, GlobeCanvasProps };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { createContext, type Dispatch, type PropsWithChildren, type SetStateAction, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\nimport { useControlledValue } from '@dxos/react-ui';\n\nimport { type LatLng } from '../util';\n\n// TODO(burdon): Factor out common geometry types.\nexport type Size = { width: number; height: number };\nexport type Point = { x: number; y: number };\nexport type Vector = [number, number, number];\n\nexport type GlobeContextType = {\n size: Size;\n center: LatLng;\n scale: number;\n translation: Point;\n rotation: Vector;\n setCenter: Dispatch<SetStateAction<LatLng>>;\n setScale: Dispatch<SetStateAction<number>>;\n setTranslation: Dispatch<SetStateAction<Point>>;\n setRotation: Dispatch<SetStateAction<Vector>>;\n};\n\nconst GlobeContext = createContext<GlobeContextType>(undefined);\n\nexport type GlobeContextProviderProps = PropsWithChildren<\n Partial<Pick<GlobeContextType, 'size' | 'center' | 'scale' | 'translation' | 'rotation'>>\n>;\n\nexport const GlobeContextProvider = ({\n children,\n size,\n center: _center,\n scale: _scale,\n translation: _translation,\n rotation: _rotation,\n}: GlobeContextProviderProps) => {\n const [center, setCenter] = useControlledValue(_center);\n const [scale, setScale] = useControlledValue(_scale);\n const [translation, setTranslation] = useControlledValue<Point>(_translation);\n const [rotation, setRotation] = useControlledValue<Vector>(_rotation);\n\n return (\n <GlobeContext.Provider\n value={{ size, center, scale, translation, rotation, setCenter, setScale, setTranslation, setRotation }}\n >\n {children}\n </GlobeContext.Provider>\n );\n};\n\nexport const useGlobeContext = () => {\n return useContext(GlobeContext) ?? raise(new Error('Missing GlobeContext'));\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as d3 from 'd3';\nimport { useEffect } from 'react';\n\nimport { type GlobeController } from '../components';\nimport { geoInertiaDrag } from '../util';\n\nexport type GlobeDragEvent = {\n type: 'start' | 'move' | 'end';\n controller: GlobeController;\n};\n\nexport type DragOptions = {\n disabled?: boolean;\n duration?: number;\n xAxis?: boolean; // TODO(burdon): Generalize.\n onUpdate?: (event: GlobeDragEvent) => void;\n};\n\n/**\n * Allows user to drag globe.\n */\nexport const useDrag = (controller?: GlobeController | null, options: DragOptions = {}) => {\n useEffect(() => {\n const canvas = controller?.canvas;\n if (!canvas || options.disabled) {\n return;\n }\n\n geoInertiaDrag(\n d3.select(canvas),\n () => {\n controller.setRotation(controller.projection.rotate());\n options.onUpdate?.({ type: 'move', controller });\n },\n controller.projection,\n {\n xAxis: options.xAxis,\n time: 3_000,\n start: () => options.onUpdate?.({ type: 'start', controller }),\n finish: () => options.onUpdate?.({ type: 'end', controller }),\n },\n );\n\n // TODO(burdon): Cancel drag timer.\n return () => {\n cancelDrag(d3.select(canvas));\n };\n }, [controller, options]);\n};\n\nconst cancelDrag = (node) => node.on('.drag', null);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nconst debug = false;\n\nexport const timer = <T = void>(cb: () => T): T => {\n const start = Date.now();\n const data = cb();\n const t = Date.now() - start / 1_000;\n if (debug) {\n // eslint-disable-next-line no-console\n console.log({ t, data });\n }\n return data;\n};\n", "//\n// Copyright 2017 Philippe Rivière\n// Copyright 2024 DXOS.org\n// https://github.com/Fil/d3-inertia\n//\n\nimport * as d3 from 'd3';\nimport versor from 'versor';\n\nexport const restrictAxis =\n (axis: boolean[]) =>\n (original: number[], current: number[]): number[] =>\n current.map((d, i) => (axis[i] ? d : original[i]));\n\n/**\n * Applies a drag handler to the specified target element.\n */\n// TODO(burdon): Define type.\nexport const geoInertiaDrag = (target, render, projection, options) => {\n if (!options) {\n options = {};\n }\n\n // Target can be an element, a selector, a function, or a selection\n // but in case of a selection we make sure to reselect it with d3-selection.\n if (target.node) {\n target = target.node();\n }\n target = d3.select(target);\n\n // Complete params: (projection, render, startDrag, dragging, endDrag).\n const inertia = geoInertiaDragHelper({\n projection,\n render: (rotation) => {\n projection.rotate(rotation);\n render && render();\n },\n axis: restrictAxis(options.xAxis ? [true, false, false] : [true, true, true]),\n start: options.start,\n move: options.move,\n end: options.end,\n stop: options.stop,\n finish: options.finish,\n time: options.time,\n hold: options.hold,\n });\n\n target.call(d3.drag().on('start', inertia.start).on('drag', inertia.move).on('end', inertia.end));\n return inertia;\n};\n\n/**\n * A versor is a compact way to describe a rotation in 3D space.\n * It consists of four components [𝑤,x,y,z], where:\n * 𝑤 is a scalar representing the angle of rotation.\n * x, y, z are the vector components, representing the axis of rotation.\n */\nconst geoInertiaDragHelper = (opt) => {\n const projection = opt.projection;\n\n let v0; // Mouse position in Cartesian coordinates at start of drag gesture.\n let r0; // Projection rotation as Euler angles at start.\n let q0; // Projection rotation as versor at start.\n let v10; // Mouse position in Cartesian coordinates just before end of drag gesture.\n let v11; // Mouse position in Cartesian coordinates at end.\n let q10; // Projection rotation as versor at end.\n\n const inertia = inertiaHelper({\n axis: opt.axis,\n\n start: () => {\n v0 = versor.cartesian(projection.invert(inertia.position));\n r0 = projection.rotate();\n q0 = versor(r0);\n opt.start && opt.start();\n },\n\n move: () => {\n const inv = projection.rotate(r0).invert(inertia.position);\n if (isNaN(inv[0])) {\n return;\n }\n const v1 = versor.cartesian(inv);\n const q1 = versor.multiply(q0, versor.delta(v0, v1));\n const r1 = versor.rotation(q1);\n const r2 = opt.axis(r0, r1);\n opt.render(r2);\n opt.move && opt.move();\n },\n\n end: () => {\n // Velocity.\n v10 = versor.cartesian(projection.invert(inertia.position.map((d, i) => d - inertia.velocity[i] / 1_000)));\n q10 = versor(projection.rotate());\n v11 = versor.cartesian(projection.invert(inertia.position));\n opt.end && opt.end();\n },\n\n stop: opt.stop,\n\n finish: opt.finish,\n\n render: (t) => {\n const r1 = versor.rotation(versor.multiply(q10, versor.delta(v10, v11, t * 1_000)));\n const r2 = opt.axis(r0, r1);\n opt.render && opt.render(r2);\n },\n\n time: opt.time,\n });\n\n return inertia;\n};\n\nfunction inertiaHelper(opt) {\n const A = opt.time || 5_000; // Reference time in ms.\n const limit = 1.0001;\n const B = -Math.log(1 - 1 / limit);\n const inertia = {\n position: [0, 0],\n velocity: [0, 0], // Velocity in pixels/s.\n timer: d3.timer(() => {}),\n time: 0,\n t: 0,\n\n start: function (ev) {\n const position = [ev.x, ev.y];\n inertia.position = position;\n inertia.velocity = [0, 0];\n inertia.timer.stop();\n this.classList.remove('inertia');\n this.classList.add('dragging');\n opt.start && opt.start.call(this, position);\n },\n\n move: function (ev) {\n const position = [ev.x, ev.y];\n\n const time = performance.now();\n const deltaTime = time - inertia.time;\n const decay = 1 - Math.exp(-deltaTime / 1_000);\n inertia.velocity = inertia.velocity.map((d, i) => {\n const deltaPos = position[i] - inertia.position[i];\n const deltaTime = time - inertia.time;\n return (1_000 * (1 - decay) * deltaPos) / deltaTime + d * decay;\n });\n\n // Clamp velocity axis.\n inertia.velocity = opt.axis([0, 0], inertia.velocity);\n\n inertia.time = time;\n inertia.position = position;\n opt.move && opt.move.call(this, position);\n },\n\n end: function (ev) {\n this.classList.remove('dragging', 'inertia');\n\n const v = inertia.velocity;\n if (v[0] * v[0] + v[1] * v[1] < 100) {\n inertia.timer.stop();\n return opt.stop && opt.stop();\n }\n\n const time = performance.now();\n const deltaTime = time - inertia.time;\n\n if (opt.hold === undefined) {\n opt.hold = 100;\n } // Default flick->drag threshold time (0 disables inertia).\n\n if (deltaTime >= opt.hold) {\n inertia.timer.stop();\n return opt.stop && opt.stop();\n }\n\n this.classList.add('inertia');\n opt.end && opt.end();\n\n const self = this;\n inertia.timer.restart((e) => {\n inertia.t = limit * (1 - Math.exp((-B * e) / A));\n opt.render && opt.render(inertia.t);\n if (inertia.t > 1) {\n inertia.timer.stop();\n self.classList.remove('inertia');\n inertia.velocity = [0, 0];\n inertia.t = 1;\n opt.finish && opt.finish();\n }\n });\n },\n };\n\n inertia.timer.stop();\n return inertia;\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport * as d3 from 'd3';\nimport { type GeoGeometryObjects } from 'd3';\nimport { type Point, type Polygon, type Position } from 'geojson';\n\nimport type { Vector } from '../hooks';\n\nexport type LatLng = { lat: number; lng: number };\n\n// TODO(burdon): Clean-up.\n\nexport const positionToRotation = ([lng, lat]: [number, number], tilt = 0): Vector => [-lng, tilt - lat, 0];\n\nexport const geoToPosition = ({ lat, lng }: LatLng): [number, number] => [lng, lat];\n\nexport const geoPoint = (point: LatLng): Point => ({ type: 'Point', coordinates: geoToPosition(point) });\n\n// https://github.com/d3/d3-geo#geoCircle\nexport const geoCircle = ({ lat, lng }: LatLng, radius: number): Polygon =>\n d3.geoCircle().radius(radius).center([lng, lat])();\n\nexport const geoLine = (p1: LatLng, p2: LatLng): GeoGeometryObjects => ({\n type: 'LineString',\n coordinates: [\n [p1.lng, p1.lat],\n [p2.lng, p2.lat],\n ],\n});\n\nexport const closestPoint = (points: Position[], target: Position): Position | null => {\n if (points.length === 0) {\n return target;\n }\n\n let closestPoint = points[0];\n let minDistance = getDistance(points[0], target);\n\n for (const point of points) {\n const distance = getDistance(point, target);\n if (distance < minDistance) {\n minDistance = distance;\n closestPoint = point;\n }\n }\n\n return closestPoint;\n};\n\nexport const getDistance = (point1: Position, point2: Position): number => {\n const dx = point1[0] - point2[0];\n const dy = point1[1] - point2[1];\n return Math.sqrt(dx * dx + dy * dy);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport * as d3 from 'd3';\nimport { type GeoPath, type GeoPermissibleObjects } from 'd3';\nimport * as topojson from 'topojson-client';\nimport { type Topology } from 'topojson-specification';\n\nimport { type LatLng, geoLine, geoPoint } from './path';\n\nexport type Styles = Record<string, any>;\n\nexport type Style = 'water' | 'graticule' | 'land' | 'border' | 'dots' | 'point' | 'line' | 'cursor' | 'arc';\n\nexport type StyleSet = Partial<Record<Style, Styles>>;\n\nexport type Features = {\n points?: LatLng[];\n lines?: { source: LatLng; target: LatLng }[];\n};\n\nexport type Layer = {\n styles: Styles;\n path: GeoPermissibleObjects;\n};\n\n/**\n * Create rendering layers.\n */\nexport const createLayers = (topology: Topology, features: Features, styles: StyleSet): Layer[] => {\n const layers: Layer[] = [];\n\n if (styles.water) {\n layers.push({\n styles: styles.water,\n path: {\n type: 'Sphere',\n },\n });\n }\n\n if (styles.graticule) {\n layers.push({\n styles: styles.graticule,\n path: d3.geoGraticule().step([6, 6])(),\n });\n }\n\n //\n // Topology.\n //\n\n if (topology) {\n if (topology.objects.land && styles.land) {\n layers.push({\n styles: styles.land,\n path: topojson.feature(topology, topology.objects.land),\n });\n }\n\n if (topology.objects.countries && styles.border) {\n layers.push({\n styles: styles.border,\n path: topojson.mesh(topology, topology.objects.countries, (a: any, b: any) => a !== b),\n });\n }\n\n if (topology.objects.dots && styles.dots) {\n layers.push({\n styles: styles.dots,\n path: topology.objects.dots as any, // TODO(burdon): Type.\n });\n }\n }\n\n //\n // Features.\n //\n\n if (features) {\n const { points, lines } = features;\n\n if (points && styles.point) {\n layers.push({\n styles: styles.point,\n path: {\n type: 'GeometryCollection',\n geometries: points.map((point) => geoPoint(point)),\n },\n });\n }\n\n if (lines && styles.line) {\n layers.push({\n styles: styles.line,\n path: {\n type: 'GeometryCollection',\n geometries: lines.map(({ source, target }) => geoLine(source, target)),\n },\n });\n }\n }\n\n return layers;\n};\n\n/**\n * Render layers created above.\n */\nexport const renderLayers = (generator: GeoPath, layers: Layer[] = [], scale: number) => {\n const context: CanvasRenderingContext2D = generator.context();\n const {\n canvas: { width, height },\n } = context;\n context.reset();\n\n // TODO(burdon): Option.\n // Clear background.\n context.clearRect(0, 0, width, height);\n\n // Render features.\n // https://github.com/d3/d3-geo#_path\n layers.forEach(({ path, styles }) => {\n context.save();\n let fill = false;\n let stroke = false;\n if (styles) {\n Object.entries(styles).forEach(([key, value]) => {\n if (key === 'pointRadius') {\n generator.pointRadius(value * scale);\n } else {\n context[key] = value;\n fill ||= key === 'fillStyle';\n stroke ||= key === 'strokeStyle';\n }\n });\n }\n\n context.beginPath();\n\n generator(path);\n fill && context.fill();\n stroke && context.stroke();\n context.restore();\n });\n\n return context;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { type GlobeController, type ControlProps } from '../components';\n\nexport const useGlobeZoomHandler = (controller: GlobeController | null | undefined): ControlProps['onAction'] => {\n return useCallback<ControlProps['onAction']>(\n (event) => {\n if (!controller) {\n return;\n }\n\n switch (event) {\n case 'zoom-in': {\n controller.setScale((scale) => scale * 1.1);\n break;\n }\n case 'zoom-out': {\n controller.setScale((scale) => scale * 0.9);\n break;\n }\n }\n },\n [controller],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { type MapController, type ControlProps } from '../components';\n\nexport const useMapZoomHandler = (controller: MapController | null | undefined): ControlProps['onAction'] => {\n return useCallback<ControlProps['onAction']>(\n (event) => {\n if (!controller) {\n return;\n }\n\n switch (event) {\n case 'zoom-in': {\n controller.setZoom((scale) => scale + 1);\n break;\n }\n case 'zoom-out': {\n controller.setZoom((scale) => scale - 1);\n break;\n }\n }\n },\n [controller],\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as d3 from 'd3';\nimport { type Timer } from 'd3';\nimport { useEffect, useState } from 'react';\n\nimport { type Vector } from './context';\nimport { type GlobeController } from '../components';\n\nexport type SpinnerOptions = {\n disabled?: boolean;\n delta?: Vector;\n};\n\n/**\n * Rotates globe.\n */\nexport const useSpinner = (controller?: GlobeController | null, options: SpinnerOptions = {}) => {\n const [running, setRunning] = useState(false);\n useEffect(() => {\n let timer: Timer | undefined;\n\n const start = () => {\n const delta: Vector = options.delta ?? [0.001, 0, 0];\n\n let t = 0;\n let lastRotation = controller.projection.rotate();\n timer = d3.timer((elapsed) => {\n const dt = elapsed - t;\n t = elapsed;\n\n const rotation: Vector = [\n lastRotation[0] + delta[0] * dt,\n lastRotation[1] + delta[1] * dt,\n lastRotation[2] + delta[2] * dt,\n ];\n\n lastRotation = rotation;\n controller.setRotation(rotation);\n });\n };\n\n const stop = () => {\n if (timer) {\n timer.stop();\n timer = undefined;\n }\n };\n\n if (controller && running) {\n start();\n } else {\n stop();\n }\n\n return () => stop();\n }, [controller, running]);\n\n return [\n () => {\n if (!options.disabled) {\n setRunning(true);\n }\n },\n () => setRunning(false),\n ];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as d3 from 'd3';\nimport { useEffect, useState } from 'react';\nimport versor from 'versor';\n\nimport type { GlobeController } from '../components';\nimport { type Features, geoToPosition, type LatLng, positionToRotation, type StyleSet } from '../util';\n\nconst TRANSITION_NAME = 'globe-tour';\n\nconst defaultDuration = 1_500;\n\nexport type TourOptions = {\n disabled?: boolean;\n styles?: StyleSet;\n duration?: number;\n};\n\n/**\n * Iterates between points.\n * Inspired by: https://observablehq.com/@mbostock/top-100-cities\n */\nexport const useTour = (controller?: GlobeController | null, features?: Features, options: TourOptions = {}) => {\n const selection = d3.selection();\n const [running, setRunning] = useState(false);\n useEffect(() => {\n if (!running) {\n selection.interrupt(TRANSITION_NAME);\n return;\n }\n\n let t: ReturnType<typeof setTimeout>;\n if (controller && running) {\n t = setTimeout(async () => {\n const { canvas, projection, setRotation } = controller;\n const context = canvas.getContext('2d', { alpha: false });\n const path = d3.geoPath(projection, context).pointRadius(2);\n\n const tilt = 0;\n let last: LatLng;\n try {\n for (const next of features.points) {\n if (!running) {\n break;\n }\n\n // Points.\n const p1 = last ? geoToPosition(last) : undefined;\n const p2 = geoToPosition(next);\n const ip = d3.geoInterpolate(p1 || p2, p2);\n const distance = d3.geoDistance(p1 || p2, p2);\n\n // Rotation.\n const r1 = p1 ? positionToRotation(p1, tilt) : controller.projection.rotate();\n const r2 = positionToRotation(p2, tilt);\n const iv = versor.interpolate(r1, r2);\n\n const transition = selection\n .transition(TRANSITION_NAME)\n .duration(Math.max(options.duration ?? defaultDuration, distance * 2_000))\n .tween('render', () => (t) => {\n const t1 = Math.max(0, Math.min(1, t * 2 - 1));\n const t2 = Math.min(1, t * 2);\n\n context.save();\n {\n context.beginPath();\n context.strokeStyle = options?.styles?.arc?.strokeStyle ?? 'yellow';\n context.lineWidth = (options?.styles?.arc?.lineWidth ?? 1.5) * (controller?.scale ?? 1);\n context.setLineDash(options?.styles?.arc?.lineDash ?? []);\n path({ type: 'LineString', coordinates: [ip(t1), ip(t2)] });\n context.stroke();\n\n context.beginPath();\n context.fillStyle = options?.styles?.cursor?.fillStyle ?? 'orange';\n path.pointRadius((options?.styles?.cursor?.pointRadius ?? 2) * (controller?.scale ?? 1));\n path({ type: 'Point', coordinates: ip(t2) });\n context.fill();\n }\n context.restore();\n\n // TODO(burdon): This has to come after rendering above. Add to features to correct order?\n projection.rotate(iv(t));\n setRotation(projection.rotate());\n });\n\n // Throws if interrupted.\n await transition.end();\n last = next;\n }\n } catch (err) {\n setRunning(false);\n }\n });\n\n return () => {\n clearTimeout(t);\n selection.interrupt(TRANSITION_NAME);\n };\n }\n }, [controller, running]);\n\n return [\n () => {\n if (!options.disabled) {\n setRunning(true);\n }\n },\n () => setRunning(false),\n ];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ControlPosition } from 'leaflet';\nimport React from 'react';\n\nimport { IconButton, type ThemedClassName, Toolbar } from '@dxos/react-ui';\n\nexport type ControlAction = 'toggle' | 'start' | 'zoom-in' | 'zoom-out';\n\nexport type ControlProps = ThemedClassName<{\n onAction?: (action: ControlAction) => void;\n}>;\n\nexport const controlPositions: Record<ControlPosition, string> = {\n topleft: 'top-2 left-2',\n topright: 'top-2 right-2',\n bottomleft: 'bottom-2 left-2',\n bottomright: 'bottom-2 right-2',\n};\n\nexport const ZoomControls = ({ classNames, onAction }: ControlProps) => {\n return (\n <Toolbar.Root classNames={['gap-1', classNames]}>\n <IconButton\n //\n icon='ph--plus--regular'\n label='zoom in'\n iconOnly\n size={5}\n classNames='px-0 aspect-square'\n onClick={() => onAction?.('zoom-in')}\n />\n <IconButton\n //\n icon='ph--minus--regular'\n label='zoom out'\n iconOnly\n size={5}\n classNames='px-0 aspect-square'\n onClick={() => onAction?.('zoom-out')}\n />\n </Toolbar.Root>\n );\n};\n\nexport const ActionControls = ({ classNames, onAction }: ControlProps) => {\n return (\n <Toolbar.Root classNames={['gap-1', classNames]}>\n <IconButton\n //\n icon='ph--play--regular'\n label='start'\n iconOnly\n size={5}\n classNames='px-0 aspect-square'\n onClick={() => onAction?.('start')}\n />\n <IconButton\n //\n icon='ph--globe-hemisphere-west--regular'\n label='toggle'\n iconOnly\n size={5}\n classNames='px-0 aspect-square'\n onClick={() => onAction?.('toggle')}\n />\n </Toolbar.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// eslint-disable-next-line no-restricted-imports\nimport 'leaflet/dist/leaflet.css';\n\nimport type L from 'leaflet';\nimport { type ControlPosition, Control, DomEvent, DomUtil, type LatLngExpression, latLngBounds } from 'leaflet';\nimport React, { forwardRef, type PropsWithChildren, useEffect, useImperativeHandle } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { MapContainer, Marker, Popup, TileLayer, useMap } from 'react-leaflet';\nimport { type MapContainerProps } from 'react-leaflet/lib/MapContainer';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { debounce } from '@dxos/async';\nimport { Tooltip, ThemeProvider, type ThemedClassName } from '@dxos/react-ui';\nimport { defaultTx, mx } from '@dxos/react-ui-theme';\n\nimport { ActionControls, controlPositions, ZoomControls, type ControlProps } from '../Toolbar';\nimport { type MapCanvasProps } from '../types';\n\n// TODO(burdon): Explore plugins: https://www.npmjs.com/search?q=keywords%3Areact-leaflet-v4\n// TODO(burdon): react-leaflet v5 is not compatible with react 18.\n\nconst defaults = {\n // TODO(burdon): Guess location.\n center: { lat: 51, lng: 0 } as L.LatLngExpression,\n zoom: 4,\n};\n\n//\n// Root\n//\n\ntype MapRootProps = ThemedClassName<MapContainerProps>;\n\n// https://react-leaflet.js.org/docs/api-map\nconst MapRoot = ({ classNames, center = defaults.center, zoom = defaults.zoom, ...props }: MapRootProps) => {\n return (\n <MapContainer\n className={mx('relative flex w-full h-full grow bg-baseSurface', classNames)}\n attributionControl={false}\n // TODO(burdon): Only if attention.\n scrollWheelZoom={true}\n zoomControl={false}\n center={center}\n zoom={zoom}\n {...props}\n />\n );\n};\n\n//\n// Control\n//\n\n// TODO(burdon): Normalize with Globe.\ntype MapController = {\n setCenter: (center: LatLngExpression, zoom?: number) => void;\n setZoom: (cb: (zoom: number) => number) => void;\n};\n\nconst MapCanvas = forwardRef<MapController, MapCanvasProps>(\n ({ markers = [], center, zoom, onChange }, forwardedRef) => {\n const { ref, width, height } = useResizeDetector({ refreshRate: 200 });\n const map = useMap();\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n setCenter: (center: LatLngExpression, zoom?: number) => {\n map.setView(center, zoom);\n },\n setZoom: (cb) => {\n map.setZoom(cb(map.getZoom()));\n },\n }),\n [map],\n );\n\n // Resize.\n useEffect(() => {\n if (width && height) {\n map.invalidateSize();\n }\n }, [width, height]);\n\n // Position.\n useEffect(() => {\n if (center) {\n map.setView(center, zoom);\n } else if (zoom !== undefined) {\n map.setZoom(zoom);\n }\n }, [center, zoom]);\n\n // Events.\n useEffect(() => {\n const handler = debounce(() => {\n onChange?.({ center: map.getCenter(), zoom: map.getZoom() });\n }, 100);\n map.on('move', handler);\n map.on('zoom', handler);\n return () => {\n map.off('move', handler);\n map.off('zoom', handler);\n };\n }, [map, onChange]);\n\n // Set the viewport around the markers, or show the whole world map if `markers` is empty.\n useEffect(() => {\n if (markers.length > 0) {\n const bounds = latLngBounds(markers.map((marker) => marker.location));\n map.fitBounds(bounds);\n } else {\n map.setView(defaults.center, defaults.zoom);\n }\n }, [markers]);\n\n return (\n <div ref={ref} className='flex w-full h-full overflow-hidden bg-baseSurface'>\n {/* Map tiles. */}\n <TileLayer\n className='dark:filter dark:grayscale dark:invert'\n url='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'\n />\n\n {/* Markers. */}\n {/* TODO(burdon): Marker icon doesn't load on mobile? */}\n {markers.map(({ id, title, location: { lat, lng } }) => {\n return (\n <Marker key={id} position={{ lat, lng }}>\n {title && <Popup>{title}</Popup>}\n </Marker>\n );\n })}\n </div>\n );\n },\n);\n\n//\n// Controls\n// Integrates with Leaflet custom controls.\n//\n\nconst CustomControl = ({\n position,\n children,\n}: PropsWithChildren<{\n position: ControlPosition;\n}>) => {\n const map = useMap();\n\n useEffect(() => {\n const control = new Control({ position });\n control.onAdd = () => {\n const container = DomUtil.create('div', mx('!m-0', controlPositions[position]));\n DomEvent.disableClickPropagation(container);\n DomEvent.disableScrollPropagation(container);\n\n const root = createRoot(container);\n root.render(\n <ThemeProvider tx={defaultTx}>\n <Tooltip.Provider>{children}</Tooltip.Provider>\n </ThemeProvider>,\n );\n\n return container;\n };\n\n control.addTo(map);\n return () => {\n control.remove();\n };\n }, [map, position, children]);\n\n return null;\n};\n\ntype MapControlProps = { position?: ControlPosition } & Pick<ControlProps, 'onAction'>;\n\n//\n// Map\n//\n\nexport const Map = {\n Root: MapRoot,\n Canvas: MapCanvas,\n Zoom: ({ onAction, position = 'bottomleft', ...props }: MapControlProps) => (\n <CustomControl position={position} {...props}>\n <ZoomControls onAction={onAction} />\n </CustomControl>\n ),\n Action: ({ onAction, position = 'bottomright', ...props }: MapControlProps) => (\n <CustomControl position={position} {...props}>\n <ActionControls onAction={onAction} />\n </CustomControl>\n ),\n};\n\nexport { type MapCanvasProps, type MapController };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,UAAoB;AAGpB,mBAQO;AACP,mCAAkC;AAGlC,sBAAoD;AACpD,4BAAmB;AChBnB,IAAAA,gBAA6G;AAE7G,mBAAsB;AACtB,IAAAC,mBAAmC;ACHnC,UAAoB;AACpB,IAAAD,gBAA0B;AEC1B,SAAoB;AACpB,oBAAmB;ACHnB,UAAoB;ACApB,UAAoB;AAEpB,eAA0B;ACF1B,IAAAA,gBAA4B;ACA5B,IAAAA,gBAA4B;ACA5B,UAAoB;AAEpB,IAAAA,gBAAoC;ACFpC,UAAoB;AACpB,IAAAA,gBAAoC;AACpC,IAAAE,iBAAmB;ACDnB,IAAAF,gBAAkB;AAElB,IAAAC,mBAA0D;ACF1D,qBAAO;AAGP,IAAAE,kBAAsG;AACtG,IAAAH,gBAA0F;AAC1F,oBAA2B;AAC3B,2BAA+D;AAE/D,IAAAI,gCAAkC;AAElC,mBAAyB;AACzB,IAAAH,mBAA6D;AAC7D,IAAAI,yBAA8B;AXW9B,IAAMC,eAAeC,iDAAgCC,MAAAA;AAM9C,IAAMC,uBAAuB,CAAC,EACnCC,UACAC,MACAC,QAAQC,SACRC,OAAOC,QACPC,aAAaC,cACbC,UAAUC,UAAS,MACO;AAC1B,QAAM,CAACP,QAAQQ,SAAAA,QAAaC,qCAAmBR,OAAAA;AAC/C,QAAM,CAACC,OAAOQ,QAAAA,QAAYD,qCAAmBN,MAAAA;AAC7C,QAAM,CAACC,aAAaO,cAAAA,QAAkBF,qCAA0BJ,YAAAA;AAChE,QAAM,CAACC,UAAUM,WAAAA,QAAeH,qCAA2BF,SAAAA;AAE3D,SACE,8BAAAM,QAAA,cAACnB,aAAaoB,UAAQ;IACpBC,OAAO;MAAEhB;MAAMC;MAAQE;MAAOE;MAAaE;MAAUE;MAAWE;MAAUC;MAAgBC;IAAY;KAErGd,QAAAA;AAGP;AAEO,IAAMkB,kBAAkB,MAAA;AAC7B,aAAOC,0BAAWvB,YAAAA,SAAiBwB,oBAAM,IAAIC,MAAM,sBAAA,CAAA;AACrD;AEtDA,IAAMC,QAAQ;AAEP,IAAMC,QAAQ,CAAWC,OAAAA;AAC9B,QAAMC,QAAQC,KAAKC,IAAG;AACtB,QAAMC,OAAOJ,GAAAA;AACb,QAAMK,IAAIH,KAAKC,IAAG,IAAKF,QAAQ;AAC/B,MAAIH,OAAO;AAETQ,YAAQC,IAAI;MAAEF;MAAGD;IAAK,CAAA;EACxB;AACA,SAAOA;AACT;ACNO,IAAMI,eACX,CAACC,SACD,CAACC,UAAoBC,YACnBA,QAAQC,IAAI,CAACC,GAAGC,MAAOL,KAAKK,CAAAA,IAAKD,IAAIH,SAASI,CAAAA,CAAE;AAM7C,IAAMC,iBAAiB,CAACC,QAAQC,QAAQC,YAAYC,YAAAA;AACzD,MAAI,CAACA,SAAS;AACZA,cAAU,CAAC;EACb;AAIA,MAAIH,OAAOI,MAAM;AACfJ,aAASA,OAAOI,KAAI;EACtB;AACAJ,WAAYK,GAAAA,OAAOL,MAAAA;AAGnB,QAAMM,UAAUC,qBAAqB;IACnCL;IACAD,QAAQ,CAACjC,aAAAA;AACPkC,iBAAWM,OAAOxC,QAAAA;AAClBiC,gBAAUA,OAAAA;IACZ;IACAR,MAAMD,aAAaW,QAAQM,QAAQ;MAAC;MAAM;MAAO;QAAS;MAAC;MAAM;MAAM;KAAK;IAC5ExB,OAAOkB,QAAQlB;IACfyB,MAAMP,QAAQO;IACdC,KAAKR,QAAQQ;IACbC,MAAMT,QAAQS;IACdC,QAAQV,QAAQU;IAChBC,MAAMX,QAAQW;IACdC,MAAMZ,QAAQY;EAChB,CAAA;AAEAf,SAAOgB,KAAQC,GAAAA,KAAI,EAAGC,GAAG,SAASZ,QAAQrB,KAAK,EAAEiC,GAAG,QAAQZ,QAAQI,IAAI,EAAEQ,GAAG,OAAOZ,QAAQK,GAAG,CAAA;AAC/F,SAAOL;AACT;AAQA,IAAMC,uBAAuB,CAACY,QAAAA;AAC5B,QAAMjB,aAAaiB,IAAIjB;AAEvB,MAAIkB;AACJ,MAAIC;AACJ,MAAIC;AACJ,MAAIC;AACJ,MAAIC;AACJ,MAAIC;AAEJ,QAAMnB,UAAUoB,cAAc;IAC5BjC,MAAM0B,IAAI1B;IAEVR,OAAO,MAAA;AACLmC,WAAKO,cAAAA,QAAOC,UAAU1B,WAAW2B,OAAOvB,QAAQwB,QAAQ,CAAA;AACxDT,WAAKnB,WAAWM,OAAM;AACtBc,eAAKK,cAAAA,SAAON,EAAAA;AACZF,UAAIlC,SAASkC,IAAIlC,MAAK;IACxB;IAEAyB,MAAM,MAAA;AACJ,YAAMqB,MAAM7B,WAAWM,OAAOa,EAAAA,EAAIQ,OAAOvB,QAAQwB,QAAQ;AACzD,UAAIE,MAAMD,IAAI,CAAA,CAAE,GAAG;AACjB;MACF;AACA,YAAME,KAAKN,cAAAA,QAAOC,UAAUG,GAAAA;AAC5B,YAAMG,KAAKP,cAAAA,QAAOQ,SAASb,IAAIK,cAAAA,QAAOS,MAAMhB,IAAIa,EAAAA,CAAAA;AAChD,YAAMI,KAAKV,cAAAA,QAAO3D,SAASkE,EAAAA;AAC3B,YAAMI,KAAKnB,IAAI1B,KAAK4B,IAAIgB,EAAAA;AACxBlB,UAAIlB,OAAOqC,EAAAA;AACXnB,UAAIT,QAAQS,IAAIT,KAAI;IACtB;IAEAC,KAAK,MAAA;AAEHY,YAAMI,cAAAA,QAAOC,UAAU1B,WAAW2B,OAAOvB,QAAQwB,SAASlC,IAAI,CAACC,GAAGC,MAAMD,IAAIS,QAAQiC,SAASzC,CAAAA,IAAK,GAAA,CAAA,CAAA;AAClG2B,gBAAME,cAAAA,SAAOzB,WAAWM,OAAM,CAAA;AAC9BgB,YAAMG,cAAAA,QAAOC,UAAU1B,WAAW2B,OAAOvB,QAAQwB,QAAQ,CAAA;AACzDX,UAAIR,OAAOQ,IAAIR,IAAG;IACpB;IAEAC,MAAMO,IAAIP;IAEVC,QAAQM,IAAIN;IAEZZ,QAAQ,CAACZ,MAAAA;AACP,YAAMgD,KAAKV,cAAAA,QAAO3D,SAAS2D,cAAAA,QAAOQ,SAASV,KAAKE,cAAAA,QAAOS,MAAMb,KAAKC,KAAKnC,IAAI,GAAA,CAAA,CAAA;AAC3E,YAAMiD,KAAKnB,IAAI1B,KAAK4B,IAAIgB,EAAAA;AACxBlB,UAAIlB,UAAUkB,IAAIlB,OAAOqC,EAAAA;IAC3B;IAEAxB,MAAMK,IAAIL;EACZ,CAAA;AAEA,SAAOR;AACT;AAEA,SAASoB,cAAcP,KAAG;AACxB,QAAMqB,IAAIrB,IAAIL,QAAQ;AACtB,QAAM2B,QAAQ;AACd,QAAMC,IAAI,CAACC,KAAKpD,IAAI,IAAI,IAAIkD,KAAAA;AAC5B,QAAMnC,UAAU;IACdwB,UAAU;MAAC;MAAG;;IACdS,UAAU;MAAC;MAAG;;IACdxD,OAAUA,GAAAA,MAAM,MAAA;IAAO,CAAA;IACvB+B,MAAM;IACNzB,GAAG;IAEHJ,OAAO,SAAU2D,IAAE;AACjB,YAAMd,WAAW;QAACc,GAAGC;QAAGD,GAAGE;;AAC3BxC,cAAQwB,WAAWA;AACnBxB,cAAQiC,WAAW;QAAC;QAAG;;AACvBjC,cAAQvB,MAAM6B,KAAI;AAClB,WAAKmC,UAAUC,OAAO,SAAA;AACtB,WAAKD,UAAUE,IAAI,UAAA;AACnB9B,UAAIlC,SAASkC,IAAIlC,MAAM+B,KAAK,MAAMc,QAAAA;IACpC;IAEApB,MAAM,SAAUkC,IAAE;AAChB,YAAMd,WAAW;QAACc,GAAGC;QAAGD,GAAGE;;AAE3B,YAAMhC,OAAOoC,YAAY/D,IAAG;AAC5B,YAAMgE,YAAYrC,OAAOR,QAAQQ;AACjC,YAAMsC,QAAQ,IAAIT,KAAKU,IAAI,CAACF,YAAY,GAAA;AACxC7C,cAAQiC,WAAWjC,QAAQiC,SAAS3C,IAAI,CAACC,GAAGC,MAAAA;AAC1C,cAAMwD,WAAWxB,SAAShC,CAAAA,IAAKQ,QAAQwB,SAAShC,CAAAA;AAChD,cAAMqD,aAAYrC,OAAOR,QAAQQ;AACjC,eAAQ,OAAS,IAAIsC,SAASE,WAAYH,aAAYtD,IAAIuD;MAC5D,CAAA;AAGA9C,cAAQiC,WAAWpB,IAAI1B,KAAK;QAAC;QAAG;SAAIa,QAAQiC,QAAQ;AAEpDjC,cAAQQ,OAAOA;AACfR,cAAQwB,WAAWA;AACnBX,UAAIT,QAAQS,IAAIT,KAAKM,KAAK,MAAMc,QAAAA;IAClC;IAEAnB,KAAK,SAAUiC,IAAE;AACf,WAAKG,UAAUC,OAAO,YAAY,SAAA;AAElC,YAAMO,IAAIjD,QAAQiC;AAClB,UAAIgB,EAAE,CAAA,IAAKA,EAAE,CAAA,IAAKA,EAAE,CAAA,IAAKA,EAAE,CAAA,IAAK,KAAK;AACnCjD,gBAAQvB,MAAM6B,KAAI;AAClB,eAAOO,IAAIP,QAAQO,IAAIP,KAAI;MAC7B;AAEA,YAAME,OAAOoC,YAAY/D,IAAG;AAC5B,YAAMgE,YAAYrC,OAAOR,QAAQQ;AAEjC,UAAIK,IAAIJ,SAASzD,QAAW;AAC1B6D,YAAIJ,OAAO;MACb;AAEA,UAAIoC,aAAahC,IAAIJ,MAAM;AACzBT,gBAAQvB,MAAM6B,KAAI;AAClB,eAAOO,IAAIP,QAAQO,IAAIP,KAAI;MAC7B;AAEA,WAAKmC,UAAUE,IAAI,SAAA;AACnB9B,UAAIR,OAAOQ,IAAIR,IAAG;AAElB,YAAM6C,OAAO;AACblD,cAAQvB,MAAM0E,QAAQ,CAACC,MAAAA;AACrBpD,gBAAQjB,IAAIoD,SAAS,IAAIE,KAAKU,IAAK,CAACX,IAAIgB,IAAKlB,CAAAA;AAC7CrB,YAAIlB,UAAUkB,IAAIlB,OAAOK,QAAQjB,CAAC;AAClC,YAAIiB,QAAQjB,IAAI,GAAG;AACjBiB,kBAAQvB,MAAM6B,KAAI;AAClB4C,eAAKT,UAAUC,OAAO,SAAA;AACtB1C,kBAAQiC,WAAW;YAAC;YAAG;;AACvBjC,kBAAQjB,IAAI;AACZ8B,cAAIN,UAAUM,IAAIN,OAAM;QAC1B;MACF,CAAA;IACF;EACF;AAEAP,UAAQvB,MAAM6B,KAAI;AAClB,SAAON;AACT;ACtLO,IAAMqD,qBAAqB,CAAC,CAACC,KAAKC,GAAAA,GAAwBC,OAAO,MAAc;EAAC,CAACF;EAAKE,OAAOD;EAAK;;AAElG,IAAME,gBAAgB,CAAC,EAAEF,KAAKD,IAAG,MAAiC;EAACA;EAAKC;;AAExE,IAAMG,WAAW,CAACC,WAA0B;EAAEC,MAAM;EAASC,aAAaJ,cAAcE,KAAAA;AAAO;AAG/F,IAAMG,aAAY,CAAC,EAAEP,KAAKD,IAAG,GAAYS,WAC3CD,IAAAA,UAAS,EAAGC,OAAOA,MAAAA,EAAQ3G,OAAO;EAACkG;EAAKC;CAAI,EAAA;AAE1C,IAAMS,UAAU,CAACC,IAAYC,QAAoC;EACtEN,MAAM;EACNC,aAAa;IACX;MAACI,GAAGX;MAAKW,GAAGV;;IACZ;MAACW,GAAGZ;MAAKY,GAAGX;;;AAEhB;AAEO,IAAMY,eAAe,CAACC,QAAoB1E,WAAAA;AAC/C,MAAI0E,OAAOC,WAAW,GAAG;AACvB,WAAO3E;EACT;AAEA,MAAIyE,gBAAeC,OAAO,CAAA;AAC1B,MAAIE,cAAcC,YAAYH,OAAO,CAAA,GAAI1E,MAAAA;AAEzC,aAAWiE,SAASS,QAAQ;AAC1B,UAAMI,WAAWD,YAAYZ,OAAOjE,MAAAA;AACpC,QAAI8E,WAAWF,aAAa;AAC1BA,oBAAcE;AACdL,sBAAeR;IACjB;EACF;AAEA,SAAOQ;AACT;AAEO,IAAMI,cAAc,CAACE,QAAkBC,WAAAA;AAC5C,QAAMC,KAAKF,OAAO,CAAA,IAAKC,OAAO,CAAA;AAC9B,QAAME,KAAKH,OAAO,CAAA,IAAKC,OAAO,CAAA;AAC9B,SAAOrC,KAAKwC,KAAKF,KAAKA,KAAKC,KAAKA,EAAAA;AAClC;ACzBO,IAAME,eAAe,CAACC,UAAoBC,UAAoBC,WAAAA;AACnE,QAAMC,SAAkB,CAAA;AAExB,MAAID,OAAOE,OAAO;AAChBD,WAAOE,KAAK;MACVH,QAAQA,OAAOE;MACfE,MAAM;QACJzB,MAAM;MACR;IACF,CAAA;EACF;AAEA,MAAIqB,OAAOK,WAAW;AACpBJ,WAAOE,KAAK;MACVH,QAAQA,OAAOK;MACfD,MAASE,IAAAA,aAAY,EAAGC,KAAK;QAAC;QAAG;OAAE,EAAA;IACrC,CAAA;EACF;AAMA,MAAIT,UAAU;AACZ,QAAIA,SAASU,QAAQC,QAAQT,OAAOS,MAAM;AACxCR,aAAOE,KAAK;QACVH,QAAQA,OAAOS;QACfL,MAAeM,SAAAA,QAAQZ,UAAUA,SAASU,QAAQC,IAAI;MACxD,CAAA;IACF;AAEA,QAAIX,SAASU,QAAQG,aAAaX,OAAOY,QAAQ;AAC/CX,aAAOE,KAAK;QACVH,QAAQA,OAAOY;QACfR,MAAeS,SAAAA,KAAKf,UAAUA,SAASU,QAAQG,WAAW,CAACG,GAAQC,MAAWD,MAAMC,CAAAA;MACtF,CAAA;IACF;AAEA,QAAIjB,SAASU,QAAQQ,QAAQhB,OAAOgB,MAAM;AACxCf,aAAOE,KAAK;QACVH,QAAQA,OAAOgB;QACfZ,MAAMN,SAASU,QAAQQ;MACzB,CAAA;IACF;EACF;AAMA,MAAIjB,UAAU;AACZ,UAAM,EAAEZ,QAAQ8B,MAAK,IAAKlB;AAE1B,QAAIZ,UAAUa,OAAOtB,OAAO;AAC1BuB,aAAOE,KAAK;QACVH,QAAQA,OAAOtB;QACf0B,MAAM;UACJzB,MAAM;UACNuC,YAAY/B,OAAO9E,IAAI,CAACqE,UAAUD,SAASC,KAAAA,CAAAA;QAC7C;MACF,CAAA;IACF;AAEA,QAAIuC,SAASjB,OAAOmB,MAAM;AACxBlB,aAAOE,KAAK;QACVH,QAAQA,OAAOmB;QACff,MAAM;UACJzB,MAAM;UACNuC,YAAYD,MAAM5G,IAAI,CAAC,EAAE+G,QAAQ3G,OAAM,MAAOsE,QAAQqC,QAAQ3G,MAAAA,CAAAA;QAChE;MACF,CAAA;IACF;EACF;AAEA,SAAOwF;AACT;AAKO,IAAMoB,eAAe,CAACC,WAAoBrB,SAAkB,CAAA,GAAI5H,UAAAA;AACrE,QAAMkJ,UAAoCD,UAAUC,QAAO;AAC3D,QAAM,EACJC,QAAQ,EAAEC,OAAOC,OAAM,EAAE,IACvBH;AACJA,UAAQI,MAAK;AAIbJ,UAAQK,UAAU,GAAG,GAAGH,OAAOC,MAAAA;AAI/BzB,SAAO4B,QAAQ,CAAC,EAAEzB,MAAMJ,OAAM,MAAE;AAC9BuB,YAAQO,KAAI;AACZ,QAAIC,OAAO;AACX,QAAIC,SAAS;AACb,QAAIhC,QAAQ;AACViC,aAAOC,QAAQlC,MAAAA,EAAQ6B,QAAQ,CAAC,CAACM,KAAKjJ,KAAAA,MAAM;AAC1C,YAAIiJ,QAAQ,eAAe;AACzBb,oBAAUc,YAAYlJ,QAAQb,KAAAA;QAChC,OAAO;AACLkJ,kBAAQY,GAAAA,IAAOjJ;AACf6I,mBAASI,QAAQ;AACjBH,qBAAWG,QAAQ;QACrB;MACF,CAAA;IACF;AAEAZ,YAAQc,UAAS;AAEjBf,cAAUlB,IAAAA;AACV2B,YAAQR,QAAQQ,KAAI;AACpBC,cAAUT,QAAQS,OAAM;AACxBT,YAAQe,QAAO;EACjB,CAAA;AAEA,SAAOf;AACT;AJ3HO,IAAMgB,UAAU,CAACC,YAAqC5H,UAAuB,CAAC,MAAC;AACpF6H,+BAAU,MAAA;AACR,UAAMjB,SAASgB,YAAYhB;AAC3B,QAAI,CAACA,UAAU5G,QAAQ8H,UAAU;AAC/B;IACF;AAEAlI,mBACKM,IAAAA,OAAO0G,MAAAA,GACV,MAAA;AACEgB,iBAAWzJ,YAAYyJ,WAAW7H,WAAWM,OAAM,CAAA;AACnDL,cAAQ+H,WAAW;QAAEhE,MAAM;QAAQ6D;MAAW,CAAA;IAChD,GACAA,WAAW7H,YACX;MACEO,OAAON,QAAQM;MACfK,MAAM;MACN7B,OAAO,MAAMkB,QAAQ+H,WAAW;QAAEhE,MAAM;QAAS6D;MAAW,CAAA;MAC5DlH,QAAQ,MAAMV,QAAQ+H,WAAW;QAAEhE,MAAM;QAAO6D;MAAW,CAAA;IAC7D,CAAA;AAIF,WAAO,MAAA;AACLI,iBAAc9H,IAAAA,OAAO0G,MAAAA,CAAAA;IACvB;EACF,GAAG;IAACgB;IAAY5H;GAAQ;AAC1B;AAEA,IAAMgI,aAAa,CAAC/H,SAASA,KAAKc,GAAG,SAAS,IAAA;AK9CvC,IAAMkH,sBAAsB,CAACL,eAAAA;AAClC,aAAOM,2BACL,CAACC,UAAAA;AACC,QAAI,CAACP,YAAY;AACf;IACF;AAEA,YAAQO,OAAAA;MACN,KAAK,WAAW;AACdP,mBAAW3J,SAAS,CAACR,UAAUA,QAAQ,GAAA;AACvC;MACF;MACA,KAAK,YAAY;AACfmK,mBAAW3J,SAAS,CAACR,UAAUA,QAAQ,GAAA;AACvC;MACF;IACF;EACF,GACA;IAACmK;GAAW;AAEhB;ACpBO,IAAMQ,oBAAoB,CAACR,eAAAA;AAChC,aAAOM,cAAAA,aACL,CAACC,UAAAA;AACC,QAAI,CAACP,YAAY;AACf;IACF;AAEA,YAAQO,OAAAA;MACN,KAAK,WAAW;AACdP,mBAAWS,QAAQ,CAAC5K,UAAUA,QAAQ,CAAA;AACtC;MACF;MACA,KAAK,YAAY;AACfmK,mBAAWS,QAAQ,CAAC5K,UAAUA,QAAQ,CAAA;AACtC;MACF;IACF;EACF,GACA;IAACmK;GAAW;AAEhB;ACTO,IAAMU,aAAa,CAACV,YAAqC5H,UAA0B,CAAC,MAAC;AAC1F,QAAM,CAACuI,SAASC,UAAAA,QAAcC,wBAAS,KAAA;AACvCZ,oBAAAA,WAAU,MAAA;AACR,QAAIjJ;AAEJ,UAAME,QAAQ,MAAA;AACZ,YAAMmD,QAAgBjC,QAAQiC,SAAS;QAAC;QAAO;QAAG;;AAElD,UAAI/C,IAAI;AACR,UAAIwJ,eAAed,WAAW7H,WAAWM,OAAM;AAC/CzB,eAAWA,IAAAA,MAAM,CAAC+J,YAAAA;AAChB,cAAMC,KAAKD,UAAUzJ;AACrBA,YAAIyJ;AAEJ,cAAM9K,WAAmB;UACvB6K,aAAa,CAAA,IAAKzG,MAAM,CAAA,IAAK2G;UAC7BF,aAAa,CAAA,IAAKzG,MAAM,CAAA,IAAK2G;UAC7BF,aAAa,CAAA,IAAKzG,MAAM,CAAA,IAAK2G;;AAG/BF,uBAAe7K;AACf+J,mBAAWzJ,YAAYN,QAAAA;MACzB,CAAA;IACF;AAEA,UAAM4C,OAAO,MAAA;AACX,UAAI7B,QAAO;AACTA,eAAM6B,KAAI;AACV7B,iBAAQzB;MACV;IACF;AAEA,QAAIyK,cAAcW,SAAS;AACzBzJ,YAAAA;IACF,OAAO;AACL2B,WAAAA;IACF;AAEA,WAAO,MAAMA,KAAAA;EACf,GAAG;IAACmH;IAAYW;GAAQ;AAExB,SAAO;IACL,MAAA;AACE,UAAI,CAACvI,QAAQ8H,UAAU;AACrBU,mBAAW,IAAA;MACb;IACF;IACA,MAAMA,WAAW,KAAA;;AAErB;ACzDA,IAAMK,kBAAkB;AAExB,IAAMC,kBAAkB;AAYjB,IAAMC,UAAU,CAACnB,YAAqCzC,UAAqBnF,UAAuB,CAAC,MAAC;AACzG,QAAMgJ,aAAeA,IAAAA,UAAS;AAC9B,QAAM,CAACT,SAASC,UAAAA,QAAcC,cAAAA,UAAS,KAAA;AACvCZ,oBAAAA,WAAU,MAAA;AACR,QAAI,CAACU,SAAS;AACZS,iBAAUC,UAAUJ,eAAAA;AACpB;IACF;AAEA,QAAI3J;AACJ,QAAI0I,cAAcW,SAAS;AACzBrJ,UAAIgK,WAAW,YAAA;AACb,cAAM,EAAEtC,QAAQ7G,YAAY5B,YAAW,IAAKyJ;AAC5C,cAAMjB,UAAUC,OAAOuC,WAAW,MAAM;UAAEC,OAAO;QAAM,CAAA;AACvD,cAAM5D,OAAU6D,IAAAA,QAAQtJ,YAAY4G,OAAAA,EAASa,YAAY,CAAA;AAEzD,cAAM7D,OAAO;AACb,YAAI2F;AACJ,YAAI;AACF,qBAAWC,QAAQpE,SAASZ,QAAQ;AAClC,gBAAI,CAACgE,SAAS;AACZ;YACF;AAGA,kBAAMnE,KAAKkF,OAAO1F,cAAc0F,IAAAA,IAAQnM;AACxC,kBAAMkH,KAAKT,cAAc2F,IAAAA;AACzB,kBAAMC,KAAQC,IAAAA,eAAerF,MAAMC,IAAIA,EAAAA;AACvC,kBAAMM,WAAc+E,IAAAA,YAAYtF,MAAMC,IAAIA,EAAAA;AAG1C,kBAAMnC,KAAKkC,KAAKZ,mBAAmBY,IAAIT,IAAAA,IAAQiE,WAAW7H,WAAWM,OAAM;AAC3E,kBAAM8B,KAAKqB,mBAAmBa,IAAIV,IAAAA;AAClC,kBAAMgG,KAAKnI,eAAAA,QAAOoI,YAAY1H,IAAIC,EAAAA;AAElC,kBAAM0H,cAAab,WAChBa,WAAWhB,eAAAA,EACXiB,SAAStH,KAAKuH,IAAI/J,QAAQ8J,YAAYhB,iBAAiBnE,WAAW,GAAA,CAAA,EAClEqF,MAAM,UAAU,MAAM,CAAC9K,OAAAA;AACtB,oBAAM+K,KAAKzH,KAAKuH,IAAI,GAAGvH,KAAK0H,IAAI,GAAGhL,KAAI,IAAI,CAAA,CAAA;AAC3C,oBAAMiL,MAAK3H,KAAK0H,IAAI,GAAGhL,KAAI,CAAA;AAE3ByH,sBAAQO,KAAI;AACZ;AACEP,wBAAQc,UAAS;AACjBd,wBAAQyD,cAAcpK,SAASoF,QAAQiF,KAAKD,eAAe;AAC3DzD,wBAAQ2D,aAAatK,SAASoF,QAAQiF,KAAKC,aAAa,QAAQ1C,YAAYnK,SAAS;AACrFkJ,wBAAQ4D,YAAYvK,SAASoF,QAAQiF,KAAKG,YAAY,CAAA,CAAE;AACxDhF,qBAAK;kBAAEzB,MAAM;kBAAcC,aAAa;oBAACwF,GAAGS,EAAAA;oBAAKT,GAAGW,GAAAA;;gBAAK,CAAA;AACzDxD,wBAAQS,OAAM;AAEdT,wBAAQc,UAAS;AACjBd,wBAAQ8D,YAAYzK,SAASoF,QAAQsF,QAAQD,aAAa;AAC1DjF,qBAAKgC,aAAaxH,SAASoF,QAAQsF,QAAQlD,eAAe,MAAMI,YAAYnK,SAAS,EAAA;AACrF+H,qBAAK;kBAAEzB,MAAM;kBAASC,aAAawF,GAAGW,GAAAA;gBAAI,CAAA;AAC1CxD,wBAAQQ,KAAI;cACd;AACAR,sBAAQe,QAAO;AAGf3H,yBAAWM,OAAOsJ,GAAGzK,EAAAA,CAAAA;AACrBf,0BAAY4B,WAAWM,OAAM,CAAA;YAC/B,CAAA;AAGF,kBAAMwJ,YAAWrJ,IAAG;AACpB8I,mBAAOC;UACT;QACF,SAASoB,KAAK;AACZnC,qBAAW,KAAA;QACb;MACF,CAAA;AAEA,aAAO,MAAA;AACLoC,qBAAa1L,CAAAA;AACb8J,mBAAUC,UAAUJ,eAAAA;MACtB;IACF;EACF,GAAG;IAACjB;IAAYW;GAAQ;AAExB,SAAO;IACL,MAAA;AACE,UAAI,CAACvI,QAAQ8H,UAAU;AACrBU,mBAAW,IAAA;MACb;IACF;IACA,MAAMA,WAAW,KAAA;;AAErB;AClGO,IAAMqC,mBAAoD;EAC/DC,SAAS;EACTC,UAAU;EACVC,YAAY;EACZC,aAAa;AACf;AAEO,IAAMC,eAAe,CAAC,EAAEC,YAAYC,SAAQ,MAAgB;AACjE,SACEhN,8BAAAA,QAAA,cAACiN,yBAAQC,MAAI;IAACH,YAAY;MAAC;MAASA;;KAClC/M,8BAAAA,QAAA,cAACmN,6BAAAA;;IAECC,MAAK;IACLC,OAAM;IACNC,UAAAA;IACApO,MAAM;IACN6N,YAAW;IACXQ,SAAS,MAAMP,WAAW,SAAA;MAE5BhN,8BAAAA,QAAA,cAACmN,6BAAAA;;IAECC,MAAK;IACLC,OAAM;IACNC,UAAAA;IACApO,MAAM;IACN6N,YAAW;IACXQ,SAAS,MAAMP,WAAW,UAAA;;AAIlC;AAEO,IAAMQ,iBAAiB,CAAC,EAAET,YAAYC,SAAQ,MAAgB;AACnE,SACEhN,8BAAAA,QAAA,cAACiN,yBAAQC,MAAI;IAACH,YAAY;MAAC;MAASA;;KAClC/M,8BAAAA,QAAA,cAACmN,6BAAAA;;IAECC,MAAK;IACLC,OAAM;IACNC,UAAAA;IACApO,MAAM;IACN6N,YAAW;IACXQ,SAAS,MAAMP,WAAW,OAAA;MAE5BhN,8BAAAA,QAAA,cAACmN,6BAAAA;;IAECC,MAAK;IACLC,OAAM;IACNC,UAAAA;IACApO,MAAM;IACN6N,YAAW;IACXQ,SAAS,MAAMP,WAAW,QAAA;;AAIlC;AX7BA,IAAMS,gBAAwB;EAC5BC,YAAY;IACVrB,WAAW;EACb;EAEAnF,OAAO;IACLmF,WAAW;EACb;EAEAsB,KAAK;IACH3B,aAAa;IACbK,WAAW;IACXjD,aAAa;EACf;EAEA3B,MAAM;IACJ4E,WAAW;EACb;EAEAlE,MAAM;IACJ6D,aAAa;EACf;EAEAtG,OAAO;IACL2G,WAAW;IACXL,aAAa;IACb4B,aAAa;IACbxE,aAAa;EACf;AACF;AASA,IAAMyE,gBAA6D;EACjEC,cAAiBC,IAAAA;EACjBC,UAAaC,IAAAA;EACb,uBAA0BC,IAAAA;AAC5B;AAEA,IAAMC,gBAAgB,CAACxI,OAAuC,mBAAc;AAC1E,MAAI,OAAOA,SAAS,UAAU;AAC5B,UAAMyI,cAAcP,cAAclI,IAAAA,KAAYoI,IAAAA;AAC9C,WAAOK,YAAAA;EACT;AAEA,SAAOzI,QAAWoI,IAAAA,gBAAe;AACnC;AAQA,IAAMM,YAAY,CAAC,EAAEtB,YAAY9N,UAAU,GAAGqP,MAAAA,MAAuB;AACnE,QAAM,EAAEC,KAAK9F,OAAOC,OAAM,QAAK8F,gDAAAA;AAC/B,SACExO,6BAAAA,QAAA,cAACyO,OAAAA;IAAIF;IAAUG,eAAWC,0BAAG,sCAAsC5B,UAAAA;KACjE/M,6BAAAA,QAAA,cAAChB,sBAAAA;IAAqBE,MAAM;MAAEuJ;MAAOC;IAAO;IAAI,GAAG4F;KAChDrP,QAAAA,CAAAA;AAIT;AAiBA,IAAM2P,cAAcC,6CAClB,CAAC,EAAElN,YAAYmN,aAAahI,UAAUC,UAAUC,SAASyG,cAAa,GAAIoB,gBAAAA;AAExE,QAAM,CAACrG,QAAQuG,SAAAA,QAAa1E,aAAAA,UAA4B,IAAA;AACxD,QAAM2E,YAAY,CAACxG,YAA8BuG,UAAUvG,OAAAA;AAG3D,QAAM7G,iBAAasN,sBAAQ,MAAMd,cAAcW,WAAAA,GAAc;IAACA;GAAY;AAI1E,QAAM7H,aAASgI,sBAAQ,MAAA;AACrB,WAAOzO,MAAM,MAAMqG,aAAaC,UAAsBC,UAAUC,MAAAA,CAAAA;EAClE,GAAG;IAACF;IAAUC;IAAUC;GAAO;AAG/B,QAAM,EAAE9H,MAAMC,QAAQE,OAAOE,aAAaE,UAAUE,WAAWE,UAAUC,gBAAgBC,YAAW,IAClGI,gBAAAA;AAEF,QAAM+O,eAAWC,+BAAc9P,KAAAA;AAG/BoK,mBAAAA,WAAU,MAAA;AACR,QAAItK,QAAQ;AACVU,eAAS,CAAA;AACTE,kBAAYqF,mBAAmBI,cAAcrG,MAAAA,CAAAA,CAAAA;IAC/C;EACF,GAAG;IAACA;GAAO;AAGX,QAAMiQ,cAAUC,qBAAO,KAAA;AACvBC,wCACET,aACA,MAAA;AACE,WAAO;MACLrG;MACA7G;MACAxC;MACA,IAAIE,QAAQ;AACV,eAAO6P,SAAS9N;MAClB;MACA7B;MACAE;MACAE;MACAE,UAAU,CAAC0P,MAAAA;AACT,YAAI,OAAOA,MAAM,YAAY;AAC3B,gBAAMC,KAAQC,IAAAA,kBAAkBP,SAAS9N,SAASmO,EAAEL,SAAS9N,OAAO,CAAA;AAEjEqK,cAAAA,WAAU,EACViE,KAAKN,QAAQhO,UAAauO,IAAAA,aAAgBC,IAAAA,UAAU,EACpDlE,SAAS,GAAA,EACTE,MAAM,SAAS,MAAM,CAAC9K,MAAMjB,SAAS2P,GAAG1O,CAAAA,CAAAA,CAAAA,EACxC6B,GAAG,OAAO,MAAA;AACTyM,oBAAQhO,UAAU;UACpB,CAAA;QACJ,OAAO;AACLvB,mBAAS0P,CAAAA;QACX;MACF;MACAzP;MACAC;IACF;EACF,GACA;IAACyI;GAAO;AAKV,QAAMF,gBAAY2G,sBAChB,MAAMzG,UAAU7G,cAAiBsJ,IAAAA,QAAQtJ,YAAY6G,OAAOuC,WAAW,MAAM;IAAEC,OAAO;EAAM,CAAA,CAAA,GAC5F;IAACxC;IAAQ7G;GAAW;AAItB8H,mBAAAA,WAAU,MAAA;AACR,QAAIjB,UAAU7G,YAAY;AACxBnB,YAAM,MAAA;AAEJmB,mBACGtC,MAAO+E,KAAK0H,IAAI5M,KAAKuJ,OAAOvJ,KAAKwJ,MAAM,IAAI,IAAKrJ,KAAAA,EAChDwQ,UAAU;UAAC3Q,KAAKuJ,QAAQ,KAAKlJ,aAAa+E,KAAK;UAAIpF,KAAKwJ,SAAS,KAAKnJ,aAAagF,KAAK;SAAG,EAC3FtC,OAAOxC,YAAY;UAAC;UAAG;UAAG;SAAE;AAE/B4I,qBAAaC,WAAWrB,QAAQ5H,KAAAA;MAClC,CAAA;IACF;EACF,GAAG;IAACiJ;IAAWpJ;IAAMG;IAAOE;IAAaE;IAAUwH;GAAO;AAE1D,MAAI,CAAC/H,KAAKuJ,SAAS,CAACvJ,KAAKwJ,QAAQ;AAC/B,WAAO;EACT;AAEA,SAAO1I,6BAAAA,QAAA,cAACwI,UAAAA;IAAO+F,KAAKS;IAAWvG,OAAOvJ,KAAKuJ;IAAOC,QAAQxJ,KAAKwJ;;AACjE,CAAA;AAGF,IAAMoH,aAAa,CAAC,EAAEvM,WAAW,UAAS,MAAkC;AAC1E,QAAM,EAAErE,MAAMG,OAAOE,aAAaE,SAAQ,IAAKU,gBAAAA;AAC/C,SACEH,6BAAAA,QAAA,cAACyO,OAAAA;IACCC,eAAWC,0BACT,0EACAlC,iBAAiBlJ,QAAAA,CAAS;KAG5BvD,6BAAAA,QAAA,cAAC+P,OAAAA;IAAIrB,WAAU;KACZsB,KAAKC,UAAU;IAAE/Q;IAAMG;IAAOE;IAAaE;EAAS,GAAG,MAAM,CAAA,CAAA,CAAA;AAItE;AAEA,IAAMyQ,aAAa,CAAC,EAClB3M,UACAwJ,YACA9N,SAAQ,MAC4D;AACpE,SAAOe,6BAAAA,QAAA,cAACyO,OAAAA;IAAIC,eAAWC,0BAAG,iCAAiClC,iBAAiBlJ,QAAAA,GAAWwJ,UAAAA;KAAc9N,QAAAA;AACvG;AAEA,IAAMkR,gBAAgB,CAAC,EAAE5M,UAAUtE,SAAQ,MAAoD;AAC7F,SAAOe,6BAAAA,QAAA,cAACyO,OAAAA;IAAIC,eAAWC,0BAAG,iCAAiClC,iBAAiBlJ,QAAAA,CAAS;KAAItE,QAAAA;AAC3F;AAIO,IAAMmR,QAAQ;EACnBlD,MAAMmB;EACNgC,QAAQzB;EACR0B,MAAM,CAAC,EAAEtD,UAAUzJ,WAAW,cAAc,GAAG+K,MAAAA,MAC7CtO,6BAAAA,QAAA,cAACmQ,eAAAA;IAAc5M;IAAqB,GAAG+K;KACrCtO,6BAAAA,QAAA,cAAC8M,cAAAA;IAAaE;;EAGlBuD,QAAQ,CAAC,EAAEvD,UAAUzJ,WAAW,eAAe,GAAG+K,MAAAA,MAChDtO,6BAAAA,QAAA,cAACmQ,eAAAA;IAAc5M;IAAqB,GAAG+K;KACrCtO,6BAAAA,QAAA,cAACwN,gBAAAA;IAAeR;;EAGpBwD,OAAOV;EACPW,OAAOP;AACT;AYlPA,IAAMQ,WAAW;;EAEfvR,QAAQ;IAAEmG,KAAK;IAAID,KAAK;EAAE;EAC1BsL,MAAM;AACR;AASA,IAAMC,UAAU,CAAC,EAAE7D,YAAY5N,SAASuR,SAASvR,QAAQwR,OAAOD,SAASC,MAAM,GAAGrC,MAAAA,MAAqB;AACrG,SACEtO,8BAAAA,QAAA,cAAC6Q,mCAAAA;IACCnC,eAAWC,uBAAAA,IAAG,mDAAmD5B,UAAAA;IACjE+D,oBAAoB;;IAEpBC,iBAAiB;IACjBC,aAAa;IACb7R;IACAwR;IACC,GAAGrC;;AAGV;AAYA,IAAM2C,YAAYpC,kCAAAA,YAChB,CAAC,EAAEqC,UAAU,CAAA,GAAI/R,QAAQwR,MAAMQ,SAAQ,GAAIC,iBAAAA;AACzC,QAAM,EAAE7C,KAAK9F,OAAOC,OAAM,QAAK8F,8BAAAA,mBAAkB;IAAE6C,aAAa;EAAI,CAAA;AACpE,QAAMhQ,UAAMiQ,6BAAAA;AAEZhC,oBAAAA,qBACE8B,cACA,OAAO;IACLzR,WAAW,CAACR,SAA0BwR,UAAAA;AACpCtP,UAAIkQ,QAAQpS,SAAQwR,KAAAA;IACtB;IACA1G,SAAS,CAACxJ,OAAAA;AACRY,UAAI4I,QAAQxJ,GAAGY,IAAImQ,QAAO,CAAA,CAAA;IAC5B;EACF,IACA;IAACnQ;GAAI;AAIPoI,oBAAAA,WAAU,MAAA;AACR,QAAIhB,SAASC,QAAQ;AACnBrH,UAAIoQ,eAAc;IACpB;EACF,GAAG;IAAChJ;IAAOC;GAAO;AAGlBe,oBAAAA,WAAU,MAAA;AACR,QAAItK,QAAQ;AACVkC,UAAIkQ,QAAQpS,QAAQwR,IAAAA;IACtB,WAAWA,SAAS5R,QAAW;AAC7BsC,UAAI4I,QAAQ0G,IAAAA;IACd;EACF,GAAG;IAACxR;IAAQwR;GAAK;AAGjBlH,oBAAAA,WAAU,MAAA;AACR,UAAMiI,cAAUC,uBAAS,MAAA;AACvBR,iBAAW;QAAEhS,QAAQkC,IAAIuQ,UAAS;QAAIjB,MAAMtP,IAAImQ,QAAO;MAAG,CAAA;IAC5D,GAAG,GAAA;AACHnQ,QAAIsB,GAAG,QAAQ+O,OAAAA;AACfrQ,QAAIsB,GAAG,QAAQ+O,OAAAA;AACf,WAAO,MAAA;AACLrQ,UAAIwQ,IAAI,QAAQH,OAAAA;AAChBrQ,UAAIwQ,IAAI,QAAQH,OAAAA;IAClB;EACF,GAAG;IAACrQ;IAAK8P;GAAS;AAGlB1H,oBAAAA,WAAU,MAAA;AACR,QAAIyH,QAAQ9K,SAAS,GAAG;AACtB,YAAM0L,aAASC,8BAAab,QAAQ7P,IAAI,CAAC2Q,WAAWA,OAAOC,QAAQ,CAAA;AACnE5Q,UAAI6Q,UAAUJ,MAAAA;IAChB,OAAO;AACLzQ,UAAIkQ,QAAQb,SAASvR,QAAQuR,SAASC,IAAI;IAC5C;EACF,GAAG;IAACO;GAAQ;AAEZ,SACElR,8BAAAA,QAAA,cAACyO,OAAAA;IAAIF;IAAUG,WAAU;KAEvB1O,8BAAAA,QAAA,cAACmS,gCAAAA;IACCzD,WAAU;IACV0D,KAAI;MAKLlB,QAAQ7P,IAAI,CAAC,EAAEgR,IAAIC,OAAOL,UAAU,EAAE3M,KAAKD,IAAG,EAAE,MAAE;AACjD,WACErF,8BAAAA,QAAA,cAACuS,6BAAAA;MAAOpJ,KAAKkJ;MAAI9O,UAAU;QAAE+B;QAAKD;MAAI;OACnCiN,SAAStS,8BAAAA,QAAA,cAACwS,4BAAAA,MAAOF,KAAAA,CAAAA;EAGxB,CAAA,CAAA;AAGN,CAAA;AAQF,IAAMnC,iBAAgB,CAAC,EACrB5M,UACAtE,SAAQ,MAGR;AACA,QAAMoC,UAAMiQ,6BAAAA;AAEZ7H,oBAAAA,WAAU,MAAA;AACR,UAAMgJ,UAAU,IAAIC,wBAAQ;MAAEnP;IAAS,CAAA;AACvCkP,YAAQE,QAAQ,MAAA;AACd,YAAMC,YAAYC,wBAAQC,OAAO,WAAOnE,uBAAAA,IAAG,QAAQlC,iBAAiBlJ,QAAAA,CAAS,CAAA;AAC7EwP,+BAASC,wBAAwBJ,SAAAA;AACjCG,+BAASE,yBAAyBL,SAAAA;AAElC,YAAMM,WAAOC,0BAAWP,SAAAA;AACxBM,WAAKxR,OACH1B,8BAAAA,QAAA,cAACoT,gCAAAA;QAAcC,IAAIC;SACjBtT,8BAAAA,QAAA,cAACuT,yBAAQtT,UAAQ,MAAEhB,QAAAA,CAAAA,CAAAA;AAIvB,aAAO2T;IACT;AAEAH,YAAQe,MAAMnS,GAAAA;AACd,WAAO,MAAA;AACLoR,cAAQhO,OAAM;IAChB;EACF,GAAG;IAACpD;IAAKkC;IAAUtE;GAAS;AAE5B,SAAO;AACT;AAQO,IAAMwU,MAAM;EACjBvG,MAAM0D;EACNP,QAAQY;EACRX,MAAM,CAAC,EAAEtD,UAAUzJ,WAAW,cAAc,GAAG+K,MAAAA,MAC7CtO,8BAAAA,QAAA,cAACmQ,gBAAAA;IAAc5M;IAAqB,GAAG+K;KACrCtO,8BAAAA,QAAA,cAAC8M,cAAAA;IAAaE;;EAGlBuD,QAAQ,CAAC,EAAEvD,UAAUzJ,WAAW,eAAe,GAAG+K,MAAAA,MAChDtO,8BAAAA,QAAA,cAACmQ,gBAAAA;IAAc5M;IAAqB,GAAG+K;KACrCtO,8BAAAA,QAAA,cAACwN,gBAAAA;IAAeR;;AAGtB;",
|
|
6
|
+
"names": ["import_react", "import_react_ui", "import_versor", "import_leaflet", "import_react_resize_detector", "import_react_ui_theme", "GlobeContext", "createContext", "undefined", "GlobeContextProvider", "children", "size", "center", "_center", "scale", "_scale", "translation", "_translation", "rotation", "_rotation", "setCenter", "useControlledValue", "setScale", "setTranslation", "setRotation", "React", "Provider", "value", "useGlobeContext", "useContext", "raise", "Error", "debug", "timer", "cb", "start", "Date", "now", "data", "t", "console", "log", "restrictAxis", "axis", "original", "current", "map", "d", "i", "geoInertiaDrag", "target", "render", "projection", "options", "node", "select", "inertia", "geoInertiaDragHelper", "rotate", "xAxis", "move", "end", "stop", "finish", "time", "hold", "call", "drag", "on", "opt", "v0", "r0", "q0", "v10", "v11", "q10", "inertiaHelper", "versor", "cartesian", "invert", "position", "inv", "isNaN", "v1", "q1", "multiply", "delta", "r1", "r2", "velocity", "A", "limit", "B", "Math", "ev", "x", "y", "classList", "remove", "add", "performance", "deltaTime", "decay", "exp", "deltaPos", "v", "self", "restart", "e", "positionToRotation", "lng", "lat", "tilt", "geoToPosition", "geoPoint", "point", "type", "coordinates", "geoCircle", "radius", "geoLine", "p1", "p2", "closestPoint", "points", "length", "minDistance", "getDistance", "distance", "point1", "point2", "dx", "dy", "sqrt", "createLayers", "topology", "features", "styles", "layers", "water", "push", "path", "graticule", "geoGraticule", "step", "objects", "land", "feature", "countries", "border", "mesh", "a", "b", "dots", "lines", "geometries", "line", "source", "renderLayers", "generator", "context", "canvas", "width", "height", "reset", "clearRect", "forEach", "save", "fill", "stroke", "Object", "entries", "key", "pointRadius", "beginPath", "restore", "useDrag", "controller", "useEffect", "disabled", "onUpdate", "cancelDrag", "useGlobeZoomHandler", "useCallback", "event", "useMapZoomHandler", "setZoom", "useSpinner", "running", "setRunning", "useState", "lastRotation", "elapsed", "dt", "TRANSITION_NAME", "defaultDuration", "useTour", "selection", "interrupt", "setTimeout", "getContext", "alpha", "geoPath", "last", "next", "ip", "geoInterpolate", "geoDistance", "iv", "interpolate", "transition", "duration", "max", "tween", "t1", "min", "t2", "strokeStyle", "arc", "lineWidth", "setLineDash", "lineDash", "fillStyle", "cursor", "err", "clearTimeout", "controlPositions", "topleft", "topright", "bottomleft", "bottomright", "ZoomControls", "classNames", "onAction", "Toolbar", "Root", "IconButton", "icon", "label", "iconOnly", "onClick", "ActionControls", "defaultStyles", "background", "hex", "strokeWidth", "projectionMap", "orthographic", "geoOrthographic", "mercator", "geoMercator", "geoTransverseMercator", "getProjection", "constructor", "GlobeRoot", "props", "ref", "useResizeDetector", "div", "className", "mx", "GlobeCanvas", "forwardRef", "_projection", "setCanvas", "canvasRef", "useMemo", "scaleRef", "useDynamicRef", "zooming", "useRef", "useImperativeHandle", "s", "is", "interpolateNumber", "ease", "easeLinear", "easeSinOut", "translate", "GlobeDebug", "pre", "JSON", "stringify", "GlobePanel", "CustomControl", "Globe", "Canvas", "Zoom", "Action", "Debug", "Panel", "defaults", "zoom", "MapRoot", "MapContainer", "attributionControl", "scrollWheelZoom", "zoomControl", "MapCanvas", "markers", "onChange", "forwardedRef", "refreshRate", "useMap", "setView", "getZoom", "invalidateSize", "handler", "debounce", "getCenter", "off", "bounds", "latLngBounds", "marker", "location", "fitBounds", "TileLayer", "url", "id", "title", "Marker", "Popup", "control", "Control", "onAdd", "container", "DomUtil", "create", "DomEvent", "disableClickPropagation", "disableScrollPropagation", "root", "createRoot", "ThemeProvider", "tx", "defaultTx", "Tooltip", "addTo", "Map"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"packages/ui/react-ui-geo/data/countries-110m.ts":{"bytes":1352295,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/data.ts":{"bytes":914,"imports":[{"path":"packages/ui/react-ui-geo/data/countries-110m.ts","kind":"dynamic-import","original":"../data/countries-110m.ts"}],"format":"esm"},"packages/ui/react-ui-geo/src/components/types.ts":{"bytes":951,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/context.tsx":{"bytes":5204,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/util/debug.ts":{"bytes":1506,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/util/inertia.ts":{"bytes":21992,"imports":[{"path":"d3","kind":"import-statement","external":true},{"path":"versor","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/util/path.ts":{"bytes":5846,"imports":[{"path":"d3","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/util/render.ts":{"bytes":11848,"imports":[{"path":"d3","kind":"import-statement","external":true},{"path":"topojson-client","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-geo/src/util/path.ts","kind":"import-statement","original":"./path"}],"format":"esm"},"packages/ui/react-ui-geo/src/util/index.ts":{"bytes":747,"imports":[{"path":"packages/ui/react-ui-geo/src/util/debug.ts","kind":"import-statement","original":"./debug"},{"path":"packages/ui/react-ui-geo/src/util/inertia.ts","kind":"import-statement","original":"./inertia"},{"path":"packages/ui/react-ui-geo/src/util/path.ts","kind":"import-statement","original":"./path"},{"path":"packages/ui/react-ui-geo/src/util/render.ts","kind":"import-statement","original":"./render"}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/useDrag.ts":{"bytes":4603,"imports":[{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-geo/src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/useGlobeZoomHandler.ts":{"bytes":2396,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/useMapZoomHandler.ts":{"bytes":2362,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/useSpinner.ts":{"bytes":5331,"imports":[{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/useTour.ts":{"bytes":14072,"imports":[{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"versor","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-geo/src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/index.ts":{"bytes":997,"imports":[{"path":"packages/ui/react-ui-geo/src/hooks/context.tsx","kind":"import-statement","original":"./context"},{"path":"packages/ui/react-ui-geo/src/hooks/useDrag.ts","kind":"import-statement","original":"./useDrag"},{"path":"packages/ui/react-ui-geo/src/hooks/useGlobeZoomHandler.ts","kind":"import-statement","original":"./useGlobeZoomHandler"},{"path":"packages/ui/react-ui-geo/src/hooks/useMapZoomHandler.ts","kind":"import-statement","original":"./useMapZoomHandler"},{"path":"packages/ui/react-ui-geo/src/hooks/useSpinner.ts","kind":"import-statement","original":"./useSpinner"},{"path":"packages/ui/react-ui-geo/src/hooks/useTour.ts","kind":"import-statement","original":"./useTour"}],"format":"esm"},"packages/ui/react-ui-geo/src/components/Toolbar/Controls.tsx":{"bytes":5932,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/components/Toolbar/index.ts":{"bytes":515,"imports":[{"path":"packages/ui/react-ui-geo/src/components/Toolbar/Controls.tsx","kind":"import-statement","original":"./Controls"}],"format":"esm"},"packages/ui/react-ui-geo/src/components/Globe/Globe.tsx":{"bytes":24734,"imports":[{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-resize-detector","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-geo/src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"packages/ui/react-ui-geo/src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"packages/ui/react-ui-geo/src/components/Toolbar/index.ts","kind":"import-statement","original":"../Toolbar"}],"format":"esm"},"packages/ui/react-ui-geo/src/components/Globe/index.ts":{"bytes":506,"imports":[{"path":"packages/ui/react-ui-geo/src/components/Globe/Globe.tsx","kind":"import-statement","original":"./Globe"}],"format":"esm"},"packages/ui/react-ui-geo/src/components/Map/Map.tsx":{"bytes":19049,"imports":[{"path":"leaflet/dist/leaflet.css","kind":"import-statement","external":true},{"path":"leaflet","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"react-leaflet","kind":"import-statement","external":true},{"path":"react-resize-detector","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-geo/src/components/Toolbar/index.ts","kind":"import-statement","original":"../Toolbar"}],"format":"esm"},"packages/ui/react-ui-geo/src/components/Map/index.ts":{"bytes":498,"imports":[{"path":"packages/ui/react-ui-geo/src/components/Map/Map.tsx","kind":"import-statement","original":"./Map"}],"format":"esm"},"packages/ui/react-ui-geo/src/components/index.ts":{"bytes":751,"imports":[{"path":"packages/ui/react-ui-geo/src/components/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/ui/react-ui-geo/src/components/Globe/index.ts","kind":"import-statement","original":"./Globe"},{"path":"packages/ui/react-ui-geo/src/components/Map/index.ts","kind":"import-statement","original":"./Map"},{"path":"packages/ui/react-ui-geo/src/components/Toolbar/index.ts","kind":"import-statement","original":"./Toolbar"}],"format":"esm"},"packages/ui/react-ui-geo/src/types.ts":{"bytes":624,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/index.ts":{"bytes":824,"imports":[{"path":"packages/ui/react-ui-geo/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-geo/src/data.ts","kind":"import-statement","original":"./data"},{"path":"packages/ui/react-ui-geo/src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"packages/ui/react-ui-geo/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/ui/react-ui-geo/src/util/index.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-geo/dist/lib/node/data.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/ui/react-ui-geo/dist/lib/node/data.cjs":{"imports":[{"path":"packages/ui/react-ui-geo/dist/lib/node/chunk-LAICG6L2.cjs","kind":"import-statement"}],"exports":["loadTopology"],"entryPoint":"packages/ui/react-ui-geo/src/data.ts","inputs":{},"bytes":116},"packages/ui/react-ui-geo/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":62927},"packages/ui/react-ui-geo/dist/lib/node/index.cjs":{"imports":[{"path":"packages/ui/react-ui-geo/dist/lib/node/chunk-LAICG6L2.cjs","kind":"import-statement"},{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-resize-detector","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"d3","kind":"import-statement","external":true},{"path":"versor","kind":"import-statement","external":true},{"path":"d3","kind":"import-statement","external":true},{"path":"d3","kind":"import-statement","external":true},{"path":"topojson-client","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"d3","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"versor","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"leaflet/dist/leaflet.css","kind":"import-statement","external":true},{"path":"leaflet","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"react-leaflet","kind":"import-statement","external":true},{"path":"react-resize-detector","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["ActionControls","Globe","GlobeContextProvider","Map","ZoomControls","closestPoint","controlPositions","createLayers","geoCircle","geoInertiaDrag","geoLine","geoPoint","geoToPosition","getDistance","loadTopology","positionToRotation","renderLayers","restrictAxis","timer","useDrag","useGlobeContext","useGlobeZoomHandler","useMapZoomHandler","useSpinner","useTour"],"entryPoint":"packages/ui/react-ui-geo/src/index.ts","inputs":{"packages/ui/react-ui-geo/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/components/Globe/Globe.tsx":{"bytesInOutput":5288},"packages/ui/react-ui-geo/src/hooks/context.tsx":{"bytesInOutput":960},"packages/ui/react-ui-geo/src/hooks/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/hooks/useDrag.ts":{"bytesInOutput":839},"packages/ui/react-ui-geo/src/util/debug.ts":{"bytesInOutput":211},"packages/ui/react-ui-geo/src/util/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/util/inertia.ts":{"bytesInOutput":4544},"packages/ui/react-ui-geo/src/util/path.ts":{"bytesInOutput":1051},"packages/ui/react-ui-geo/src/util/render.ts":{"bytesInOutput":2320},"packages/ui/react-ui-geo/src/hooks/useGlobeZoomHandler.ts":{"bytesInOutput":417},"packages/ui/react-ui-geo/src/hooks/useMapZoomHandler.ts":{"bytesInOutput":426},"packages/ui/react-ui-geo/src/hooks/useSpinner.ts":{"bytesInOutput":1141},"packages/ui/react-ui-geo/src/hooks/useTour.ts":{"bytesInOutput":3137},"packages/ui/react-ui-geo/src/components/Toolbar/Controls.tsx":{"bytesInOutput":1521},"packages/ui/react-ui-geo/src/components/Toolbar/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/components/Globe/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/components/Map/Map.tsx":{"bytesInOutput":4258},"packages/ui/react-ui-geo/src/components/Map/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/index.ts":{"bytesInOutput":0}},"bytes":27425},"packages/ui/react-ui-geo/dist/lib/node/chunk-LAICG6L2.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":430},"packages/ui/react-ui-geo/dist/lib/node/chunk-LAICG6L2.cjs":{"imports":[{"path":"packages/ui/react-ui-geo/dist/lib/node/countries-110m-KQ5WAB2O.cjs","kind":"dynamic-import"}],"exports":["loadTopology"],"inputs":{"packages/ui/react-ui-geo/src/data.ts":{"bytesInOutput":102}},"bytes":214},"packages/ui/react-ui-geo/dist/lib/node/countries-110m-KQ5WAB2O.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":352619},"packages/ui/react-ui-geo/dist/lib/node/countries-110m-KQ5WAB2O.cjs":{"imports":[],"exports":["default"],"entryPoint":"packages/ui/react-ui-geo/data/countries-110m.ts","inputs":{"packages/ui/react-ui-geo/data/countries-110m.ts":{"bytesInOutput":420420}},"bytes":420572}}}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// packages/ui/react-ui-geo/src/data.ts
|
|
4
|
+
var loadTopology = async () => {
|
|
5
|
+
return (await import("./countries-110m-DQ4XRC4B.mjs")).default;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
loadTopology
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=chunk-PIIEDZEU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/data.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Topology } from 'topojson-specification';\n\nexport const loadTopology = async (): Promise<Topology> => {\n return (await import('../data/countries-110m.ts')).default;\n};\n"],
|
|
5
|
+
"mappings": ";;;AAMO,IAAMA,eAAe,YAAA;AAC1B,UAAQ,MAAM,OAAO,+BAAA,GAA8BC;AACrD;",
|
|
6
|
+
"names": ["loadTopology", "default"]
|
|
7
|
+
}
|