@dxos/react-ui-geo 0.8.3 → 0.8.4-main.1068cf700f
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/data/airports.ts +1 -1
- package/data/cities.ts +1 -1
- package/data/countries-110m.ts +1 -1
- package/data/countries-dots-3.ts +1 -1
- package/data/countries-dots-4.ts +1 -1
- package/dist/lib/browser/chunk-GMWLKTLN.mjs +9 -0
- package/dist/lib/browser/{countries-110m-WI4PCLDF.mjs → countries-110m-ZM3ZIEFS.mjs} +2 -2
- package/dist/lib/browser/countries-110m-ZM3ZIEFS.mjs.map +7 -0
- package/dist/lib/browser/data.mjs +1 -1
- package/dist/lib/browser/index.mjs +404 -458
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/{chunk-PIIEDZEU.mjs → chunk-JODBF4CC.mjs} +3 -3
- package/dist/lib/node-esm/{countries-110m-DQ4XRC4B.mjs → countries-110m-3SFASWVD.mjs} +2 -2
- package/dist/lib/node-esm/countries-110m-3SFASWVD.mjs.map +7 -0
- package/dist/lib/node-esm/data.mjs +1 -1
- package/dist/lib/node-esm/index.mjs +404 -458
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/Globe/Globe.d.ts +1 -1
- package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
- package/dist/types/src/components/Globe/Globe.stories.d.ts +25 -9
- package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
- package/dist/types/src/components/Map/Map.d.ts +28 -18
- package/dist/types/src/components/Map/Map.d.ts.map +1 -1
- package/dist/types/src/components/Map/Map.stories.d.ts +14 -8
- package/dist/types/src/components/Map/Map.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Controls.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/context.d.ts +7 -7
- package/dist/types/src/hooks/context.d.ts.map +1 -1
- package/dist/types/src/hooks/useGlobeZoomHandler.d.ts +1 -1
- package/dist/types/src/hooks/useGlobeZoomHandler.d.ts.map +1 -1
- package/dist/types/src/hooks/useMapZoomHandler.d.ts +1 -1
- package/dist/types/src/hooks/useMapZoomHandler.d.ts.map +1 -1
- package/dist/types/src/hooks/useSpinner.d.ts +1 -1
- package/dist/types/src/hooks/useSpinner.d.ts.map +1 -1
- package/dist/types/src/hooks/useTour.d.ts +4 -3
- package/dist/types/src/hooks/useTour.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +12 -0
- package/dist/types/src/translations.d.ts.map +1 -0
- package/dist/types/src/types.d.ts +2 -1
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util/path.d.ts +5 -8
- package/dist/types/src/util/path.d.ts.map +1 -1
- package/dist/types/src/util/render.d.ts +4 -4
- package/dist/types/src/util/render.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +29 -23
- package/src/components/Globe/Globe.stories.tsx +85 -37
- package/src/components/Globe/Globe.tsx +80 -63
- package/src/components/Map/Map.stories.tsx +25 -14
- package/src/components/Map/Map.tsx +183 -96
- package/src/components/Toolbar/Controls.tsx +14 -20
- package/src/components/index.ts +0 -2
- package/src/hooks/context.tsx +22 -16
- package/src/hooks/useGlobeZoomHandler.ts +9 -3
- package/src/hooks/useMapZoomHandler.ts +1 -1
- package/src/hooks/useSpinner.ts +2 -1
- package/src/hooks/useTour.ts +10 -8
- package/src/index.ts +2 -1
- package/src/translations.ts +20 -0
- package/src/types.ts +3 -1
- package/src/util/inertia.ts +1 -1
- package/src/util/path.ts +5 -6
- package/src/util/render.ts +5 -3
- package/dist/lib/browser/chunk-ENCWOTYX.mjs +0 -9
- package/dist/lib/browser/countries-110m-WI4PCLDF.mjs.map +0 -7
- package/dist/lib/node/chunk-LAICG6L2.cjs +0 -40
- package/dist/lib/node/chunk-LAICG6L2.cjs.map +0 -7
- package/dist/lib/node/countries-110m-KQ5WAB2O.cjs +0 -37877
- package/dist/lib/node/countries-110m-KQ5WAB2O.cjs.map +0 -7
- package/dist/lib/node/data.cjs +0 -28
- package/dist/lib/node/data.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -1187
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node-esm/countries-110m-DQ4XRC4B.mjs.map +0 -7
- package/dist/types/src/components/types.d.ts +0 -15
- package/dist/types/src/components/types.d.ts.map +0 -1
- package/src/components/types.ts +0 -19
- /package/dist/lib/browser/{chunk-ENCWOTYX.mjs.map → chunk-GMWLKTLN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-PIIEDZEU.mjs.map → chunk-JODBF4CC.mjs.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
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 {\n type GeoProjection,\n geoMercator,\n geoOrthographic,\n geoPath,\n geoTransverseMercator,\n interpolateNumber,\n transition,\n easeLinear,\n easeSinOut,\n} 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, type ThemeMode, useDynamicRef, useThemeContext } 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 StyleSet,\n createLayers,\n geoToPosition,\n positionToRotation,\n renderLayers,\n timer,\n} from '../../util';\nimport { ZoomControls, ActionControls, type ControlProps, controlPositions } from '../Toolbar';\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nconst defaultStyles: Record<ThemeMode, StyleSet> = {\n light: {\n background: {\n fillStyle: '#EEE',\n },\n\n water: {\n fillStyle: '#555',\n },\n\n land: {\n fillStyle: '#999',\n },\n\n line: {\n strokeStyle: 'darkred',\n },\n\n point: {\n fillStyle: '#111111',\n strokeStyle: '#111111',\n strokeWidth: 1,\n pointRadius: 0.5,\n },\n },\n dark: {\n background: {\n fillStyle: '#111111',\n },\n\n water: {\n fillStyle: '#123E6A',\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};\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: geoOrthographic,\n mercator: geoMercator,\n 'transverse-mercator': geoTransverseMercator,\n};\n\nconst getProjection = (type: GlobeCanvasProps['projection'] = 'orthographic'): GeoProjection => {\n if (typeof type === 'string') {\n const constructor = projectionMap[type] ?? geoOrthographic;\n return constructor();\n }\n\n return type ?? 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: _styles }, forwardRef) => {\n const { themeMode } = useThemeContext();\n const styles = useMemo(() => _styles ?? defaultStyles[themeMode], [_styles, themeMode]);\n\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 = interpolateNumber(scaleRef.current, s(scaleRef.current));\n // Stop easing if already zooming.\n transition()\n .ease(zooming.current ? easeLinear : 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 && 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, styles);\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 { useControlledState } 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] = useControlledState(_center);\n const [scale, setScale] = useControlledState(_scale);\n const [translation, setTranslation] = useControlledState<Point>(_translation);\n const [rotation, setRotation] = useControlledState<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 { select } 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 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(select(canvas));\n };\n }, [controller, JSON.stringify(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\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 { select, drag, timer } 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 = 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(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: 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 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 { type GeoGeometryObjects, geoCircle as d3GeoCircle } 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\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 d3GeoCircle().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 { type GeoPath, type GeoPermissibleObjects, geoGraticule } from 'd3';\nimport { feature, mesh } 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 =\n | 'background'\n | 'water'\n | 'graticule'\n | 'land'\n | 'border'\n | 'dots'\n | 'point'\n | 'line'\n | 'cursor'\n | '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: 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: feature(topology, topology.objects.land),\n });\n }\n\n if (topology.objects.countries && styles.border) {\n layers.push({\n styles: styles.border,\n path: 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, styles: StyleSet) => {\n const context: CanvasRenderingContext2D = generator.context();\n const {\n canvas: { width, height },\n } = context;\n context.reset();\n\n // Clear background.\n if (styles.background) {\n context.fillStyle = styles.background.fillStyle;\n context.fillRect(0, 0, width, height);\n } else {\n context.clearRect(0, 0, width, height);\n }\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 { timer as d3Timer } 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 = d3Timer((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 { geoPath, geoInterpolate, geoDistance, selection as d3Selection } from 'd3';\nimport { type SetStateAction, type Dispatch, useEffect, useState, useMemo } from 'react';\nimport versor from 'versor';\n\nimport type { GlobeController } from '../components';\nimport { geoToPosition, type LatLng, positionToRotation, type StyleSet } from '../util';\n\nconst TRANSITION_NAME = 'globe-tour';\n\nconst defaultDuration = 1_500;\n\nexport type TourOptions = {\n running?: boolean;\n disabled?: boolean;\n duration?: number;\n loop?: boolean;\n tilt?: number;\n autoRotate?: boolean;\n styles?: StyleSet;\n};\n\n/**\n * Iterates between points.\n * Inspired by: https://observablehq.com/@mbostock/top-100-cities\n */\nexport const useTour = (\n controller?: GlobeController | null,\n points?: LatLng[],\n options: TourOptions = {},\n): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const selection = useMemo(() => d3Selection(), []);\n const [running, setRunning] = useState(options.running ?? 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 = geoPath(projection, context).pointRadius(2);\n\n const tilt = options.tilt ?? 0;\n let last: LatLng;\n try {\n const p = [...points];\n if (options.loop) {\n p.push(p[0]);\n }\n\n for (const next of p) {\n if (!running) {\n break;\n }\n\n // Points.\n const p1 = last ? geoToPosition(last) : undefined;\n const p2 = geoToPosition(next);\n const ip = geoInterpolate(p1 || p2, p2);\n const distance = 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 // Ignore.\n } finally {\n setRunning(false);\n }\n });\n\n return () => {\n clearTimeout(t);\n selection.interrupt(TRANSITION_NAME);\n };\n }\n }, [controller, running, JSON.stringify(options)]);\n\n return [running, setRunning];\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 L, { Control, DomEvent, DomUtil, latLngBounds, type ControlPosition, type LatLngExpression } from 'leaflet';\nimport React, { forwardRef, useEffect, useImperativeHandle, type PropsWithChildren } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport type { MapContainerProps } from 'react-leaflet';\nimport { MapContainer, Marker, Popup, TileLayer, useMap } from 'react-leaflet';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { debounce } from '@dxos/async';\nimport { ThemeProvider, Tooltip, 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 grid 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>(({ 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 {markers?.map(({ id, title, location: { lat, lng } }) => {\n return (\n <Marker\n key={id}\n position={{ lat, lng }}\n icon={\n // TODO(burdon): Create custom icon from bundled assets.\n new L.Icon({\n iconUrl: 'https://dxos.network/marker-icon.png',\n iconRetinaUrl: 'https://dxos.network/marker-icon-2x.png',\n shadowUrl: 'https://dxos.network/marker-shadow.png',\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n shadowSize: [41, 41],\n })\n }\n >\n {title && <Popup>{title}</Popup>}\n </Marker>\n );\n })}\n </div>\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,gBAUO;AAEP,mBAQO;AACP,mCAAkC;AAGlC,sBAAqF;AACrF,4BAAmB;;ACzBnB,IAAAA,gBAA6G;AAE7G,mBAAsB;AACtB,IAAAC,mBAAmC;ACHnC,IAAAC,aAAuB;AACvB,IAAAF,gBAA0B;AEC1B,IAAAE,aAAoC;AACpC,oBAAmB;ACHnB,IAAAA,aAAkE;ACAlE,IAAAA,aAAuE;AACvE,6BAA8B;ACD9B,IAAAF,gBAA4B;ACA5B,IAAAA,gBAA4B;ACA5B,IAAAE,aAAiC;AAEjC,IAAAF,gBAAoC;ACFpC,IAAAE,aAA+E;AAC/E,IAAAF,gBAAiF;AACjF,IAAAG,iBAAmB;;ACDnB,IAAAH,gBAAkB;AAElB,IAAAC,mBAA0D;;ACF1D,qBAAO;AAEP,IAAAG,kBAAyG;AACzG,IAAAJ,gBAA0F;AAC1F,oBAA2B;AAE3B,2BAA+D;AAC/D,IAAAK,gCAAkC;AAElC,mBAAyB;AACzB,IAAAJ,mBAA6D;AAC7D,IAAAK,yBAA8B;AXY9B,IAAMC,eAAeC,iDAAgCC,MAAAA;AAM9C,IAAMC,uBAAuB,CAAC,EACnCC,UACAC,MACAC,QAAQC,SACRC,OAAOC,QACPC,aAAaC,cACbC,UAAUC,UAAS,MACO;;;AAC1B,UAAM,CAACP,QAAQQ,SAAAA,QAAaC,qCAAmBR,OAAAA;AAC/C,UAAM,CAACC,OAAOQ,QAAAA,QAAYD,qCAAmBN,MAAAA;AAC7C,UAAM,CAACC,aAAaO,cAAAA,QAAkBF,qCAA0BJ,YAAAA;AAChE,UAAM,CAACC,UAAUM,WAAAA,QAAeH,qCAA2BF,SAAAA;AAE3D,WACE,8BAAAM,QAAA,cAACnB,aAAaoB,UAAQ;MACpBC,OAAO;QAAEhB;QAAMC;QAAQE;QAAOE;QAAaE;QAAUE;QAAWE;QAAUC;QAAgBC;MAAY;OAErGd,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;AAEA,SAAOA;AACT;ACPO,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,eAASK,mBAAOL,MAAAA;AAGhB,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,SAAKC,iBAAAA,EAAOC,GAAG,SAASZ,QAAQrB,KAAK,EAAEiC,GAAG,QAAQZ,QAAQI,IAAI,EAAEQ,GAAG,OAAOZ,QAAQK,GAAG,CAAA;AAC5F,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,WAAOA,WAAAA,OAAM,MAAA;IAAO,CAAA;IACpB+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;;AAC3B,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;ACxLO,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,YAAY,CAAC,EAAEP,KAAKD,IAAG,GAAYS,eAC9CC,WAAAA,WAAAA,EAAcD,OAAOA,MAAAA,EAAQ3G,OAAO;EAACkG;EAAKC;CAAI,EAAA;AAEzC,IAAMU,UAAU,CAACC,IAAYC,QAAoC;EACtEP,MAAM;EACNC,aAAa;IACX;MAACK,GAAGZ;MAAKY,GAAGX;;IACZ;MAACY,GAAGb;MAAKa,GAAGZ;;;AAEhB;AAEO,IAAMa,eAAe,CAACC,QAAoB3E,WAAAA;AAC/C,MAAI2E,OAAOC,WAAW,GAAG;AACvB,WAAO5E;EACT;AAEA,MAAI0E,gBAAeC,OAAO,CAAA;AAC1B,MAAIE,cAAcC,YAAYH,OAAO,CAAA,GAAI3E,MAAAA;AAEzC,aAAWiE,SAASU,QAAQ;AAC1B,UAAMI,WAAWD,YAAYb,OAAOjE,MAAAA;AACpC,QAAI+E,WAAWF,aAAa;AAC1BA,oBAAcE;AACdL,sBAAeT;IACjB;EACF;AAEA,SAAOS;AACT;AAEO,IAAMI,cAAc,CAACE,QAAkBC,WAAAA;AAC5C,QAAMC,KAAKF,OAAO,CAAA,IAAKC,OAAO,CAAA;AAC9B,QAAME,KAAKH,OAAO,CAAA,IAAKC,OAAO,CAAA;AAC9B,SAAOtC,KAAKyC,KAAKF,KAAKA,KAAKC,KAAKA,EAAAA;AAClC;ACbO,IAAME,eAAe,CAACC,UAAoBC,UAAoBC,WAAAA;AACnE,QAAMC,SAAkB,CAAA;AAExB,MAAID,OAAOE,OAAO;AAChBD,WAAOE,KAAK;MACVH,QAAQA,OAAOE;MACfE,MAAM;QACJ1B,MAAM;MACR;IACF,CAAA;EACF;AAEA,MAAIsB,OAAOK,WAAW;AACpBJ,WAAOE,KAAK;MACVH,QAAQA,OAAOK;MACfD,UAAME,yBAAAA,EAAeC,KAAK;QAAC;QAAG;OAAE,EAAA;IAClC,CAAA;EACF;AAMA,MAAIT,UAAU;AACZ,QAAIA,SAASU,QAAQC,QAAQT,OAAOS,MAAM;AACxCR,aAAOE,KAAK;QACVH,QAAQA,OAAOS;QACfL,UAAMM,gCAAQZ,UAAUA,SAASU,QAAQC,IAAI;MAC/C,CAAA;IACF;AAEA,QAAIX,SAASU,QAAQG,aAAaX,OAAOY,QAAQ;AAC/CX,aAAOE,KAAK;QACVH,QAAQA,OAAOY;QACfR,UAAMS,6BAAKf,UAAUA,SAASU,QAAQG,WAAW,CAACG,GAAQC,MAAWD,MAAMC,CAAAA;MAC7E,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,OAAOvB,OAAO;AAC1BwB,aAAOE,KAAK;QACVH,QAAQA,OAAOvB;QACf2B,MAAM;UACJ1B,MAAM;UACNwC,YAAY/B,OAAO/E,IAAI,CAACqE,UAAUD,SAASC,KAAAA,CAAAA;QAC7C;MACF,CAAA;IACF;AAEA,QAAIwC,SAASjB,OAAOmB,MAAM;AACxBlB,aAAOE,KAAK;QACVH,QAAQA,OAAOmB;QACff,MAAM;UACJ1B,MAAM;UACNwC,YAAYD,MAAM7G,IAAI,CAAC,EAAEgH,QAAQ5G,OAAM,MAAOuE,QAAQqC,QAAQ5G,MAAAA,CAAAA;QAChE;MACF,CAAA;IACF;EACF;AAEA,SAAOyF;AACT;AAKO,IAAMoB,eAAe,CAACC,WAAoBrB,SAAkB,CAAA,GAAI7H,OAAe4H,WAAAA;AACpF,QAAMuB,UAAoCD,UAAUC,QAAO;AAC3D,QAAM,EACJC,QAAQ,EAAEC,OAAOC,OAAM,EAAE,IACvBH;AACJA,UAAQI,MAAK;AAGb,MAAI3B,OAAO4B,YAAY;AACrBL,YAAQM,YAAY7B,OAAO4B,WAAWC;AACtCN,YAAQO,SAAS,GAAG,GAAGL,OAAOC,MAAAA;EAChC,OAAO;AACLH,YAAQQ,UAAU,GAAG,GAAGN,OAAOC,MAAAA;EACjC;AAIAzB,SAAO+B,QAAQ,CAAC,EAAE5B,MAAMJ,QAAAA,QAAM,MAAE;AAC9BuB,YAAQU,KAAI;AACZ,QAAIC,OAAO;AACX,QAAIC,SAAS;AACb,QAAInC,SAAQ;AACVoC,aAAOC,QAAQrC,OAAAA,EAAQgC,QAAQ,CAAC,CAACM,KAAKrJ,KAAAA,MAAM;AAC1C,YAAIqJ,QAAQ,eAAe;AACzBhB,oBAAUiB,YAAYtJ,QAAQb,KAAAA;QAChC,OAAO;AACLmJ,kBAAQe,GAAAA,IAAOrJ;AACfiJ,mBAASI,QAAQ;AACjBH,qBAAWG,QAAQ;QACrB;MACF,CAAA;IACF;AAEAf,YAAQiB,UAAS;AAEjBlB,cAAUlB,IAAAA;AACV8B,YAAQX,QAAQW,KAAI;AACpBC,cAAUZ,QAAQY,OAAM;AACxBZ,YAAQkB,QAAO;EACjB,CAAA;AAEA,SAAOlB;AACT;AJxIO,IAAMmB,UAAU,CAACC,YAAqChI,UAAuB,CAAC,MAAC;AACpFiI,+BAAU,MAAA;AACR,UAAMpB,SAASmB,YAAYnB;AAC3B,QAAI,CAACA,UAAU7G,QAAQkI,UAAU;AAC/B;IACF;AAEAtI,uBACEM,WAAAA,QAAO2G,MAAAA,GACP,MAAA;AACEmB,iBAAW7J,YAAY6J,WAAWjI,WAAWM,OAAM,CAAA;AACnDL,cAAQmI,WAAW;QAAEpE,MAAM;QAAQiE;MAAW,CAAA;IAChD,GACAA,WAAWjI,YACX;MACEO,OAAON,QAAQM;MACfK,MAAM;MACN7B,OAAO,MAAMkB,QAAQmI,WAAW;QAAEpE,MAAM;QAASiE;MAAW,CAAA;MAC5DtH,QAAQ,MAAMV,QAAQmI,WAAW;QAAEpE,MAAM;QAAOiE;MAAW,CAAA;IAC7D,CAAA;AAIF,WAAO,MAAA;AACLI,qBAAWlI,WAAAA,QAAO2G,MAAAA,CAAAA;IACpB;EACF,GAAG;IAACmB;IAAYK,KAAKC,UAAUtI,OAAAA;GAAS;AAC1C;AAEA,IAAMoI,aAAa,CAACnI,SAASA,KAAKc,GAAG,SAAS,IAAA;AK9CvC,IAAMwH,sBAAsB,CAACP,eAAAA;AAClC,aAAOQ,2BACL,CAACC,UAAAA;AACC,QAAI,CAACT,YAAY;AACf;IACF;AAEA,YAAQS,OAAAA;MACN,KAAK,WAAW;AACdT,mBAAW/J,SAAS,CAACR,UAAUA,QAAQ,GAAA;AACvC;MACF;MACA,KAAK,YAAY;AACfuK,mBAAW/J,SAAS,CAACR,UAAUA,QAAQ,GAAA;AACvC;MACF;IACF;EACF,GACA;IAACuK;GAAW;AAEhB;ACpBO,IAAMU,oBAAoB,CAACV,eAAAA;AAChC,aAAOQ,cAAAA,aACL,CAACC,UAAAA;AACC,QAAI,CAACT,YAAY;AACf;IACF;AAEA,YAAQS,OAAAA;MACN,KAAK,WAAW;AACdT,mBAAWW,QAAQ,CAAClL,UAAUA,QAAQ,CAAA;AACtC;MACF;MACA,KAAK,YAAY;AACfuK,mBAAWW,QAAQ,CAAClL,UAAUA,QAAQ,CAAA;AACtC;MACF;IACF;EACF,GACA;IAACuK;GAAW;AAEhB;ACTO,IAAMY,aAAa,CAACZ,YAAqChI,UAA0B,CAAC,MAAC;AAC1F,QAAM,CAAC6I,SAASC,UAAAA,QAAcC,wBAAS,KAAA;AACvCd,oBAAAA,WAAU,MAAA;AACR,QAAIrJ;AAEJ,UAAME,QAAQ,MAAA;AACZ,YAAMmD,QAAgBjC,QAAQiC,SAAS;QAAC;QAAO;QAAG;;AAElD,UAAI/C,IAAI;AACR,UAAI8J,eAAehB,WAAWjI,WAAWM,OAAM;AAC/CzB,mBAAQqK,WAAAA,OAAQ,CAACC,YAAAA;AACf,cAAMC,KAAKD,UAAUhK;AACrBA,YAAIgK;AAEJ,cAAMrL,WAAmB;UACvBmL,aAAa,CAAA,IAAK/G,MAAM,CAAA,IAAKkH;UAC7BH,aAAa,CAAA,IAAK/G,MAAM,CAAA,IAAKkH;UAC7BH,aAAa,CAAA,IAAK/G,MAAM,CAAA,IAAKkH;;AAG/BH,uBAAenL;AACfmK,mBAAW7J,YAAYN,QAAAA;MACzB,CAAA;IACF;AAEA,UAAM4C,OAAO,MAAA;AACX,UAAI7B,QAAO;AACTA,eAAM6B,KAAI;AACV7B,iBAAQzB;MACV;IACF;AAEA,QAAI6K,cAAca,SAAS;AACzB/J,YAAAA;IACF,OAAO;AACL2B,WAAAA;IACF;AAEA,WAAO,MAAMA,KAAAA;EACf,GAAG;IAACuH;IAAYa;GAAQ;AAExB,SAAO;IACL,MAAA;AACE,UAAI,CAAC7I,QAAQkI,UAAU;AACrBY,mBAAW,IAAA;MACb;IACF;IACA,MAAMA,WAAW,KAAA;;AAErB;ACzDA,IAAMM,kBAAkB;AAExB,IAAMC,kBAAkB;AAgBjB,IAAMC,UAAU,CACrBtB,YACAxD,QACAxE,UAAuB,CAAC,MAAC;AAEzB,QAAMuJ,gBAAYC,uBAAQ,UAAMC,WAAAA,WAAAA,GAAe,CAAA,CAAE;AACjD,QAAM,CAACZ,SAASC,UAAAA,QAAcC,cAAAA,UAAS/I,QAAQ6I,WAAW,KAAA;AAC1DZ,oBAAAA,WAAU,MAAA;AACR,QAAI,CAACY,SAAS;AACZU,gBAAUG,UAAUN,eAAAA;AACpB;IACF;AAEA,QAAIlK;AACJ,QAAI8I,cAAca,SAAS;AACzB3J,UAAIyK,WAAW,YAAA;AACb,cAAM,EAAE9C,QAAQ9G,YAAY5B,YAAW,IAAK6J;AAC5C,cAAMpB,UAAUC,OAAO+C,WAAW,MAAM;UAAEC,OAAO;QAAM,CAAA;AACvD,cAAMpE,WAAOqE,oBAAQ/J,YAAY6G,OAAAA,EAASgB,YAAY,CAAA;AAEtD,cAAMjE,OAAO3D,QAAQ2D,QAAQ;AAC7B,YAAIoG;AACJ,YAAI;AACF,gBAAMC,IAAI;eAAIxF;;AACd,cAAIxE,QAAQiK,MAAM;AAChBD,cAAExE,KAAKwE,EAAE,CAAA,CAAE;UACb;AAEA,qBAAWE,QAAQF,GAAG;AACpB,gBAAI,CAACnB,SAAS;AACZ;YACF;AAGA,kBAAMxE,KAAK0F,OAAOnG,cAAcmG,IAAAA,IAAQ5M;AACxC,kBAAMmH,KAAKV,cAAcsG,IAAAA;AACzB,kBAAMC,SAAKC,2BAAe/F,MAAMC,IAAIA,EAAAA;AACpC,kBAAMM,eAAWyF,wBAAYhG,MAAMC,IAAIA,EAAAA;AAGvC,kBAAMpC,KAAKmC,KAAKb,mBAAmBa,IAAIV,IAAAA,IAAQqE,WAAWjI,WAAWM,OAAM;AAC3E,kBAAM8B,KAAKqB,mBAAmBc,IAAIX,IAAAA;AAClC,kBAAM2G,KAAK9I,eAAAA,QAAO+I,YAAYrI,IAAIC,EAAAA;AAElC,kBAAMqI,cAAajB,UAChBiB,WAAWpB,eAAAA,EACXqB,SAASjI,KAAKkI,IAAI1K,QAAQyK,YAAYpB,iBAAiBzE,WAAW,GAAA,CAAA,EAClE+F,MAAM,UAAU,MAAM,CAACzL,OAAAA;AACtB,oBAAM0L,KAAKpI,KAAKkI,IAAI,GAAGlI,KAAKqI,IAAI,GAAG3L,KAAI,IAAI,CAAA,CAAA;AAC3C,oBAAM4L,MAAKtI,KAAKqI,IAAI,GAAG3L,KAAI,CAAA;AAE3B0H,sBAAQU,KAAI;AACZ;AACEV,wBAAQiB,UAAS;AACjBjB,wBAAQmE,cAAc/K,SAASqF,QAAQ2F,KAAKD,eAAe;AAC3DnE,wBAAQqE,aAAajL,SAASqF,QAAQ2F,KAAKC,aAAa,QAAQjD,YAAYvK,SAAS;AACrFmJ,wBAAQsE,YAAYlL,SAASqF,QAAQ2F,KAAKG,YAAY,CAAA,CAAE;AACxD1F,qBAAK;kBAAE1B,MAAM;kBAAcC,aAAa;oBAACmG,GAAGS,EAAAA;oBAAKT,GAAGW,GAAAA;;gBAAK,CAAA;AACzDlE,wBAAQY,OAAM;AAEdZ,wBAAQiB,UAAS;AACjBjB,wBAAQM,YAAYlH,SAASqF,QAAQ+F,QAAQlE,aAAa;AAC1DzB,qBAAKmC,aAAa5H,SAASqF,QAAQ+F,QAAQxD,eAAe,MAAMI,YAAYvK,SAAS,EAAA;AACrFgI,qBAAK;kBAAE1B,MAAM;kBAASC,aAAamG,GAAGW,GAAAA;gBAAI,CAAA;AAC1ClE,wBAAQW,KAAI;cACd;AACAX,sBAAQkB,QAAO;AAGf/H,yBAAWM,OAAOiK,GAAGpL,EAAAA,CAAAA;AACrBf,0BAAY4B,WAAWM,OAAM,CAAA;YAC/B,CAAA;AAGF,kBAAMmK,YAAWhK,IAAG;AACpBuJ,mBAAOG;UACT;QACF,SAASmB,KAAK;QAEd,UAAA;AACEvC,qBAAW,KAAA;QACb;MACF,CAAA;AAEA,aAAO,MAAA;AACLwC,qBAAapM,CAAAA;AACbqK,kBAAUG,UAAUN,eAAAA;MACtB;IACF;EACF,GAAG;IAACpB;IAAYa;IAASR,KAAKC,UAAUtI,OAAAA;GAAS;AAEjD,SAAO;IAAC6I;IAASC;;AACnB;AC1GO,IAAMyC,mBAAoD;EAC/DC,SAAS;EACTC,UAAU;EACVC,YAAY;EACZC,aAAa;AACf;AAEO,IAAMC,eAAe,CAAC,EAAEC,YAAYC,SAAQ,MAAgB;;;AACjE,WACE1N,8BAAAA,QAAA,cAAC2N,yBAAQC,MAAI;MAACH,YAAY;QAAC;QAASA;;OAClCzN,8BAAAA,QAAA,cAAC6N,6BAAAA;;MAECC,MAAK;MACLC,OAAM;MACNC,UAAAA;MACA9O,MAAM;MACNuO,YAAW;MACXQ,SAAS,MAAMP,WAAW,SAAA;QAE5B1N,8BAAAA,QAAA,cAAC6N,6BAAAA;;MAECC,MAAK;MACLC,OAAM;MACNC,UAAAA;MACA9O,MAAM;MACNuO,YAAW;MACXQ,SAAS,MAAMP,WAAW,UAAA;;;;;AAIlC;AAEO,IAAMQ,iBAAiB,CAAC,EAAET,YAAYC,SAAQ,MAAgB;;;AACnE,WACE1N,8BAAAA,QAAA,cAAC2N,yBAAQC,MAAI;MAACH,YAAY;QAAC;QAASA;;OAClCzN,8BAAAA,QAAA,cAAC6N,6BAAAA;;MAECC,MAAK;MACLC,OAAM;MACNC,UAAAA;MACA9O,MAAM;MACNuO,YAAW;MACXQ,SAAS,MAAMP,WAAW,OAAA;QAE5B1N,8BAAAA,QAAA,cAAC6N,6BAAAA;;MAECC,MAAK;MACLC,OAAM;MACNC,UAAAA;MACA9O,MAAM;MACNuO,YAAW;MACXQ,SAAS,MAAMP,WAAW,QAAA;;;;;AAIlC;AXnBA,IAAMS,gBAA6C;EACjDC,OAAO;IACLvF,YAAY;MACVC,WAAW;IACb;IAEA3B,OAAO;MACL2B,WAAW;IACb;IAEApB,MAAM;MACJoB,WAAW;IACb;IAEAV,MAAM;MACJuE,aAAa;IACf;IAEAjH,OAAO;MACLoD,WAAW;MACX6D,aAAa;MACb0B,aAAa;MACb7E,aAAa;IACf;EACF;EACA8E,MAAM;IACJzF,YAAY;MACVC,WAAW;IACb;IAEA3B,OAAO;MACL2B,WAAW;IACb;IAEApB,MAAM;MACJoB,WAAW;IACb;IAEAV,MAAM;MACJuE,aAAa;IACf;IAEAjH,OAAO;MACLoD,WAAW;MACX6D,aAAa;MACb0B,aAAa;MACb7E,aAAa;IACf;EACF;AACF;AASA,IAAM+E,gBAA6D;EACjEC,cAAcC;EACdC,UAAUC;EACV,uBAAuBC;AACzB;AAEA,IAAMC,gBAAgB,CAAClJ,OAAuC,mBAAc;AAC1E,MAAI,OAAOA,SAAS,UAAU;AAC5B,UAAMmJ,cAAcP,cAAc5I,IAAAA,KAAS8I;AAC3C,WAAOK,YAAAA;EACT;AAEA,SAAOnJ,YAAQ8I,2BAAAA;AACjB;AAQA,IAAMM,YAAY,CAAC,EAAEtB,YAAYxO,UAAU,GAAG+P,MAAAA,MAAuB;;;AACnE,UAAM,EAAEC,KAAKvG,OAAOC,OAAM,QAAKuG,gDAAAA;AAC/B,WACElP,6BAAAA,QAAA,cAACmP,OAAAA;MAAIF;MAAUG,eAAWC,0BAAG,sCAAsC5B,UAAAA;OACjEzN,6BAAAA,QAAA,cAAChB,sBAAAA;MAAqBE,MAAM;QAAEwJ;QAAOC;MAAO;MAAI,GAAGqG;OAChD/P,QAAAA,CAAAA;;;;AAIT;AAiBA,IAAMqQ,cAAcC,6CAClB,CAAC,EAAE5N,YAAY6N,aAAazI,UAAUC,UAAUC,QAAQwI,QAAO,GAAIF,gBAAAA;;;AACjE,UAAM,EAAEG,UAAS,QAAKC,iCAAAA;AACtB,UAAM1I,aAASmE,aAAAA,SAAQ,MAAMqE,WAAWtB,cAAcuB,SAAAA,GAAY;MAACD;MAASC;KAAU;AAGtF,UAAM,CAACjH,QAAQmH,SAAAA,QAAajF,aAAAA,UAA4B,IAAA;AACxD,UAAMkF,YAAY,CAACpH,YAA8BmH,UAAUnH,OAAAA;AAG3D,UAAM9G,iBAAayJ,aAAAA,SAAQ,MAAMyD,cAAcW,WAAAA,GAAc;MAACA;KAAY;AAI1E,UAAMtI,aAASkE,aAAAA,SAAQ,MAAA;AACrB,aAAO5K,MAAM,MAAMsG,aAAaC,UAAsBC,UAAUC,MAAAA,CAAAA;IAClE,GAAG;MAACF;MAAUC;MAAUC;KAAO;AAG/B,UAAM,EAAE/H,MAAMC,QAAQE,OAAOE,aAAaE,UAAUE,WAAWE,UAAUC,gBAAgBC,YAAW,IAClGI,gBAAAA;AAEF,UAAM2P,eAAWC,+BAAc1Q,KAAAA;AAG/BwK,qBAAAA,WAAU,MAAA;AACR,UAAI1K,QAAQ;AACVU,iBAAS,CAAA;AACTE,oBAAYqF,mBAAmBI,cAAcrG,MAAAA,CAAAA,CAAAA;MAC/C;IACF,GAAG;MAACA;KAAO;AAGX,UAAM6Q,cAAUC,qBAAO,KAAA;AACvBC,0CACEX,aACA,MAAA;AACE,aAAO;QACL9G;QACA9G;QACAxC;QACA,IAAIE,QAAQ;AACV,iBAAOyQ,SAAS1O;QAClB;QACA7B;QACAE;QACAE;QACAE,UAAU,CAACsQ,MAAAA;AACT,cAAI,OAAOA,MAAM,YAAY;AAC3B,kBAAMC,SAAKC,6BAAkBP,SAAS1O,SAAS+O,EAAEL,SAAS1O,OAAO,CAAA;AAEjEgL,sCAAAA,EACGkE,KAAKN,QAAQ5O,UAAUmP,uBAAaC,oBAAAA,EACpCnE,SAAS,GAAA,EACTE,MAAM,SAAS,MAAM,CAACzL,MAAMjB,SAASuQ,GAAGtP,CAAAA,CAAAA,CAAAA,EACxC6B,GAAG,OAAO,MAAA;AACTqN,sBAAQ5O,UAAU;YACpB,CAAA;UACJ,OAAO;AACLvB,qBAASsQ,CAAAA;UACX;QACF;QACArQ;QACAC;MACF;IACF,GACA;MAAC0I;KAAO;AAKV,UAAMF,gBAAY6C,aAAAA,SAChB,MAAM3C,UAAU9G,kBAAc+J,UAAAA,SAAQ/J,YAAY8G,OAAO+C,WAAW,MAAM;MAAEC,OAAO;IAAM,CAAA,CAAA,GACzF;MAAChD;MAAQ9G;KAAW;AAItBkI,qBAAAA,WAAU,MAAA;AACR,UAAIpB,UAAU9G,YAAY;AACxBnB,cAAM,MAAA;AAEJmB,qBACGtC,MAAO+E,KAAKqI,IAAIvN,KAAKwJ,OAAOxJ,KAAKyJ,MAAM,IAAI,IAAKtJ,KAAAA,EAChDoR,UAAU;YAACvR,KAAKwJ,QAAQ,KAAKnJ,aAAa+E,KAAK;YAAIpF,KAAKyJ,SAAS,KAAKpJ,aAAagF,KAAK;WAAG,EAC3FtC,OAAOxC,YAAY;YAAC;YAAG;YAAG;WAAE;AAE/B6I,uBAAaC,WAAWrB,QAAQ7H,OAAO4H,MAAAA;QACzC,CAAA;MACF;IACF,GAAG;MAACsB;MAAWrJ;MAAMG;MAAOE;MAAaE;MAAUyH;KAAO;AAE1D,QAAI,CAAChI,KAAKwJ,SAAS,CAACxJ,KAAKyJ,QAAQ;AAC/B,aAAO;IACT;AAEA,WAAO3I,6BAAAA,QAAA,cAACyI,UAAAA;MAAOwG,KAAKY;MAAWnH,OAAOxJ,KAAKwJ;MAAOC,QAAQzJ,KAAKyJ;;;;;AACjE,CAAA;AAGF,IAAM+H,aAAa,CAAC,EAAEnN,WAAW,UAAS,MAAkC;;;AAC1E,UAAM,EAAErE,MAAMG,OAAOE,aAAaE,SAAQ,IAAKU,gBAAAA;AAC/C,WACEH,6BAAAA,QAAA,cAACmP,OAAAA;MACCC,eAAWC,0BACT,0EACAlC,iBAAiB5J,QAAAA,CAAS;OAG5BvD,6BAAAA,QAAA,cAAC2Q,OAAAA;MAAIvB,WAAU;OACZnF,KAAKC,UAAU;MAAEhL;MAAMG;MAAOE;MAAaE;IAAS,GAAG,MAAM,CAAA,CAAA,CAAA;;;;AAItE;AAEA,IAAMmR,aAAa,CAAC,EAClBrN,UACAkK,YACAxO,SAAQ,MAC4D;;;AACpE,WAAOe,6BAAAA,QAAA,cAACmP,OAAAA;MAAIC,eAAWC,0BAAG,iCAAiClC,iBAAiB5J,QAAAA,GAAWkK,UAAAA;OAAcxO,QAAAA;;;;AACvG;AAEA,IAAM4R,gBAAgB,CAAC,EAAEtN,UAAUtE,SAAQ,MAAoD;;;AAC7F,WAAOe,6BAAAA,QAAA,cAACmP,OAAAA;MAAIC,eAAWC,0BAAG,iCAAiClC,iBAAiB5J,QAAAA,CAAS;OAAItE,QAAAA;;;;AAC3F;AAIO,IAAM6R,QAAQ;EACnBlD,MAAMmB;EACNgC,QAAQzB;EACR0B,MAAM,CAAC,EAAEtD,UAAUnK,WAAW,cAAc,GAAGyL,MAAAA,MAA0B;;;aACvEhP,6BAAAA,QAAA,cAAC6Q,eAAAA;QAActN;QAAqB,GAAGyL;SACrChP,6BAAAA,QAAA,cAACwN,cAAAA;QAAaE;;;;;;EAGlBuD,QAAQ,CAAC,EAAEvD,UAAUnK,WAAW,eAAe,GAAGyL,MAAAA,MAA0B;;;aAC1EhP,6BAAAA,QAAA,cAAC6Q,eAAAA;QAActN;QAAqB,GAAGyL;SACrChP,6BAAAA,QAAA,cAACkO,gBAAAA;QAAeR;;;;;;EAGpBwD,OAAOR;EACPS,OAAOP;AACT;AYpRA,IAAMQ,WAAW;;EAEfjS,QAAQ;IAAEmG,KAAK;IAAID,KAAK;EAAE;EAC1BgM,MAAM;AACR;AASA,IAAMC,UAAU,CAAC,EAAE7D,YAAYtO,SAASiS,SAASjS,QAAQkS,OAAOD,SAASC,MAAM,GAAGrC,MAAAA,MAAqB;;;AACrG,WACEhP,8BAAAA,QAAA,cAACuR,mCAAAA;MACCnC,eAAWC,uBAAAA,IAAG,qCAAqC5B,UAAAA;MACnD+D,oBAAoB;;MAEpBC,iBAAiB;MACjBC,aAAa;MACbvS;MACAkS;MACC,GAAGrC;;;;;AAGV;AAYA,IAAM2C,YAAYpC,kCAAAA,YAA0C,CAAC,EAAEqC,SAASzS,QAAQkS,MAAMQ,SAAQ,GAAIC,iBAAAA;;;AAChG,UAAM,EAAE7C,KAAKvG,OAAOC,OAAM,QAAKuG,8BAAAA,mBAAkB;MAAE6C,aAAa;IAAI,CAAA;AACpE,UAAM1Q,UAAM2Q,6BAAAA;AAEZ9B,sBAAAA,qBACE4B,cACA,OAAO;MACLnS,WAAW,CAACR,SAA0BkS,UAAAA;AACpChQ,YAAI4Q,QAAQ9S,SAAQkS,KAAAA;MACtB;MACA9G,SAAS,CAAC9J,OAAAA;AACRY,YAAIkJ,QAAQ9J,GAAGY,IAAI6Q,QAAO,CAAA,CAAA;MAC5B;IACF,IACA;MAAC7Q;KAAI;AAIPwI,sBAAAA,WAAU,MAAA;AACR,UAAInB,SAASC,QAAQ;AACnBtH,YAAI8Q,eAAc;MACpB;IACF,GAAG;MAACzJ;MAAOC;KAAO;AAGlBkB,sBAAAA,WAAU,MAAA;AACR,UAAI1K,QAAQ;AACVkC,YAAI4Q,QAAQ9S,QAAQkS,IAAAA;MACtB,WAAWA,SAAStS,QAAW;AAC7BsC,YAAIkJ,QAAQ8G,IAAAA;MACd;IACF,GAAG;MAAClS;MAAQkS;KAAK;AAGjBxH,sBAAAA,WAAU,MAAA;AACR,YAAMuI,cAAUC,uBAAS,MAAA;AACvBR,mBAAW;UAAE1S,QAAQkC,IAAIiR,UAAS;UAAIjB,MAAMhQ,IAAI6Q,QAAO;QAAG,CAAA;MAC5D,GAAG,GAAA;AACH7Q,UAAIsB,GAAG,QAAQyP,OAAAA;AACf/Q,UAAIsB,GAAG,QAAQyP,OAAAA;AACf,aAAO,MAAA;AACL/Q,YAAIkR,IAAI,QAAQH,OAAAA;AAChB/Q,YAAIkR,IAAI,QAAQH,OAAAA;MAClB;IACF,GAAG;MAAC/Q;MAAKwQ;KAAS;AAGlBhI,sBAAAA,WAAU,MAAA;AACR,UAAI+H,QAAQvL,SAAS,GAAG;AACtB,cAAMmM,aAASC,8BAAab,QAAQvQ,IAAI,CAACqR,WAAWA,OAAOC,QAAQ,CAAA;AACnEtR,YAAIuR,UAAUJ,MAAAA;MAChB,OAAO;AACLnR,YAAI4Q,QAAQb,SAASjS,QAAQiS,SAASC,IAAI;MAC5C;IACF,GAAG;MAACO;KAAQ;AAEZ,WACE5R,8BAAAA,QAAA,cAACmP,OAAAA;MAAIF;MAAUG,WAAU;OAEvBpP,8BAAAA,QAAA,cAAC6S,gCAAAA;MACCzD,WAAU;MACV0D,KAAI;QAILlB,SAASvQ,IAAI,CAAC,EAAE0R,IAAIC,OAAOL,UAAU,EAAErN,KAAKD,IAAG,EAAE,MAAE;AAClD,aACErF,8BAAAA,QAAA,cAACiT,6BAAAA;QACC1J,KAAKwJ;QACLxP,UAAU;UAAE+B;UAAKD;QAAI;QACrByI;;UAEE,IAAIoF,gBAAAA,QAAEC,KAAK;YACTC,SAAS;YACTC,eAAe;YACfC,WAAW;YACXC,UAAU;cAAC;cAAI;;YACfC,YAAY;cAAC;cAAI;;YACjBC,aAAa;cAAC;cAAG;;YACjBC,YAAY;cAAC;cAAI;;UACnB,CAAA;;SAGDV,SAAShT,8BAAAA,QAAA,cAAC2T,4BAAAA,MAAOX,KAAAA,CAAAA;IAGxB,CAAA,CAAA;;;;AAGN,CAAA;AAOA,IAAMnC,iBAAgB,CAAC,EACrBtN,UACAtE,SAAQ,MAGR;;;AACA,UAAMoC,UAAM2Q,6BAAAA;AAEZnI,sBAAAA,WAAU,MAAA;AACR,YAAM+J,UAAU,IAAIC,wBAAQ;QAAEtQ;MAAS,CAAA;AACvCqQ,cAAQE,QAAQ,MAAA;AACd,cAAMC,YAAYC,wBAAQC,OAAO,WAAO5E,uBAAAA,IAAG,QAAQlC,iBAAiB5J,QAAAA,CAAS,CAAA;AAC7E2Q,iCAASC,wBAAwBJ,SAAAA;AACjCG,iCAASE,yBAAyBL,SAAAA;AAElC,cAAMM,WAAOC,0BAAWP,SAAAA;AACxBM,aAAK3S,OACH1B,8BAAAA,QAAA,cAACuU,gCAAAA;UAAcC,IAAIC;WACjBzU,8BAAAA,QAAA,cAAC0U,yBAAQzU,UAAQ,MAAEhB,QAAAA,CAAAA,CAAAA;AAIvB,eAAO8U;MACT;AAEAH,cAAQe,MAAMtT,GAAAA;AACd,aAAO,MAAA;AACLuS,gBAAQnP,OAAM;MAChB;IACF,GAAG;MAACpD;MAAKkC;MAAUtE;KAAS;AAE5B,WAAO;;;;AACT;AAQO,IAAM2V,MAAM;EACjBhH,MAAM0D;EACNP,QAAQY;EACRX,MAAM,CAAC,EAAEtD,UAAUnK,WAAW,cAAc,GAAGyL,MAAAA,MAAwB;;;aACrEhP,8BAAAA,QAAA,cAAC6Q,gBAAAA;QAActN;QAAqB,GAAGyL;SACrChP,8BAAAA,QAAA,cAACwN,cAAAA;QAAaE;;;;;;EAGlBuD,QAAQ,CAAC,EAAEvD,UAAUnK,WAAW,eAAe,GAAGyL,MAAAA,MAAwB;;;aACxEhP,8BAAAA,QAAA,cAAC6Q,gBAAAA;QAActN;QAAqB,GAAGyL;SACrChP,8BAAAA,QAAA,cAACkO,gBAAAA;QAAeR;;;;;;AAGtB;",
|
|
6
|
-
"names": ["import_react", "import_react_ui", "import_d3", "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", "useControlledState", "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", "d3GeoCircle", "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", "background", "fillStyle", "fillRect", "clearRect", "forEach", "save", "fill", "stroke", "Object", "entries", "key", "pointRadius", "beginPath", "restore", "useDrag", "controller", "useEffect", "disabled", "onUpdate", "cancelDrag", "JSON", "stringify", "useGlobeZoomHandler", "useCallback", "event", "useMapZoomHandler", "setZoom", "useSpinner", "running", "setRunning", "useState", "lastRotation", "d3Timer", "elapsed", "dt", "TRANSITION_NAME", "defaultDuration", "useTour", "selection", "useMemo", "d3Selection", "interrupt", "setTimeout", "getContext", "alpha", "geoPath", "last", "p", "loop", "next", "ip", "geoInterpolate", "geoDistance", "iv", "interpolate", "transition", "duration", "max", "tween", "t1", "min", "t2", "strokeStyle", "arc", "lineWidth", "setLineDash", "lineDash", "cursor", "err", "clearTimeout", "controlPositions", "topleft", "topright", "bottomleft", "bottomright", "ZoomControls", "classNames", "onAction", "Toolbar", "Root", "IconButton", "icon", "label", "iconOnly", "onClick", "ActionControls", "defaultStyles", "light", "strokeWidth", "dark", "projectionMap", "orthographic", "geoOrthographic", "mercator", "geoMercator", "geoTransverseMercator", "getProjection", "constructor", "GlobeRoot", "props", "ref", "useResizeDetector", "div", "className", "mx", "GlobeCanvas", "forwardRef", "_projection", "_styles", "themeMode", "useThemeContext", "setCanvas", "canvasRef", "scaleRef", "useDynamicRef", "zooming", "useRef", "useImperativeHandle", "s", "is", "interpolateNumber", "ease", "easeLinear", "easeSinOut", "translate", "GlobeDebug", "pre", "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", "L", "Icon", "iconUrl", "iconRetinaUrl", "shadowUrl", "iconSize", "iconAnchor", "popupAnchor", "shadowSize", "Popup", "control", "Control", "onAdd", "container", "DomUtil", "create", "DomEvent", "disableClickPropagation", "disableScrollPropagation", "root", "createRoot", "ThemeProvider", "tx", "defaultTx", "Tooltip", "addTo", "Map"]
|
|
7
|
-
}
|
package/dist/lib/node/meta.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"packages/ui/react-ui-geo/data/countries-110m.ts":{"bytes":1301791,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/data.ts":{"bytes":882,"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":955,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/context.tsx":{"bytes":5394,"imports":[{"path":"@preact-signals/safe-react/tracking","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}],"format":"esm"},"packages/ui/react-ui-geo/src/util/debug.ts":{"bytes":1458,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/util/inertia.ts":{"bytes":21703,"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":5691,"imports":[{"path":"d3","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/util/render.ts":{"bytes":12175,"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":711,"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":4572,"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":2336,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/useMapZoomHandler.ts":{"bytes":2302,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-geo/src/hooks/useSpinner.ts":{"bytes":5267,"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":14850,"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":961,"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":6275,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"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":483,"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":27710,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"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":474,"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":21566,"imports":[{"path":"@preact-signals/safe-react/tracking","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},{"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":470,"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":715,"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":592,"imports":[],"format":"esm"},"packages/ui/react-ui-geo/src/index.ts":{"bytes":788,"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":65802},"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":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"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":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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":6787},"packages/ui/react-ui-geo/src/hooks/context.tsx":{"bytesInOutput":1149},"packages/ui/react-ui-geo/src/hooks/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/hooks/useDrag.ts":{"bytesInOutput":862},"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":4562},"packages/ui/react-ui-geo/src/util/path.ts":{"bytesInOutput":1068},"packages/ui/react-ui-geo/src/util/render.ts":{"bytesInOutput":2469},"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":1151},"packages/ui/react-ui-geo/src/hooks/useTour.ts":{"bytesInOutput":3314},"packages/ui/react-ui-geo/src/components/Toolbar/Controls.tsx":{"bytesInOutput":1841},"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":5646},"packages/ui/react-ui-geo/src/components/Map/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-geo/src/index.ts":{"bytesInOutput":0}},"bytes":31201},"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}}}
|