@unovis/ts 1.5.1-xplg.5 → 1.5.1-xplg.7
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/components/annotations/style.js.map +1 -1
- package/components/area/style.js.map +1 -1
- package/components/axis/style.js.map +1 -1
- package/components/brush/style.js.map +1 -1
- package/components/bullet-legend/style.js.map +1 -1
- package/components/chord-diagram/style.js.map +1 -1
- package/components/crosshair/style.js.map +1 -1
- package/components/donut/style.js.map +1 -1
- package/components/flow-legend/style.js.map +1 -1
- package/components/free-brush/style.js.map +1 -1
- package/components/graph/config.d.ts +8 -0
- package/components/graph/config.js +1 -1
- package/components/graph/config.js.map +1 -1
- package/components/graph/index.d.ts +1 -0
- package/components/graph/index.js +17 -13
- package/components/graph/index.js.map +1 -1
- package/components/graph/modules/layout.js +31 -29
- package/components/graph/modules/layout.js.map +1 -1
- package/components/graph/modules/link/index.js +1 -1
- package/components/graph/modules/link/index.js.map +1 -1
- package/components/graph/modules/link/style.js.map +1 -1
- package/components/graph/modules/node/style.js.map +1 -1
- package/components/graph/modules/panel/style.js.map +1 -1
- package/components/graph/style.js.map +1 -1
- package/components/graph/types.d.ts +2 -1
- package/components/graph/types.js.map +1 -1
- package/components/grouped-bar/style.js.map +1 -1
- package/components/leaflet-flow-map/config.js +0 -1
- package/components/leaflet-flow-map/config.js.map +1 -1
- package/components/leaflet-flow-map/shaders.js.map +1 -1
- package/components/leaflet-map/config.js +0 -1
- package/components/leaflet-map/config.js.map +1 -1
- package/components/leaflet-map/modules/map.js +3 -3
- package/components/leaflet-map/modules/map.js.map +1 -1
- package/components/leaflet-map/renderer/leaflet-maplibre-gl.js.map +1 -1
- package/components/leaflet-map/style.js.map +1 -1
- package/components/line/style.js.map +1 -1
- package/components/nested-donut/style.js.map +1 -1
- package/components/rolling-pin-legend/style.js.map +1 -1
- package/components/sankey/modules/label.js.map +1 -1
- package/components/sankey/modules/link.js.map +1 -1
- package/components/sankey/style.js.map +1 -1
- package/components/scatter/index.d.ts +1 -0
- package/components/scatter/index.js +11 -1
- package/components/scatter/index.js.map +1 -1
- package/components/scatter/style.js.map +1 -1
- package/components/stacked-bar/style.js.map +1 -1
- package/components/timeline/style.js.map +1 -1
- package/components/tooltip/style.js.map +1 -1
- package/components/topojson-map/index.js.map +1 -1
- package/components/topojson-map/style.js.map +1 -1
- package/components/treemap/style.js.map +1 -1
- package/components/vis-controls/style.js.map +1 -1
- package/components/xy-labels/style.js.map +1 -1
- package/containers/xy-container/index.js.map +1 -1
- package/core/container/config.js +0 -1
- package/core/container/config.js.map +1 -1
- package/maps/ind-regions.json.js +1 -1
- package/maps/us-counties.json.js +8 -8
- package/package.json +2 -2
- package/styles/index.js.map +1 -1
- package/styles/patterns.js.map +1 -1
- package/styles/sizes.js.map +1 -1
- package/types.js +1 -2
- package/types.js.map +1 -1
- package/utils/path.js.map +1 -1
- package/utils/text.js.map +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { LeafletMapDefaultConfig } from '../leaflet-map/config.js';
|
|
2
2
|
|
|
3
3
|
/* eslint-disable dot-notation */
|
|
4
|
-
// Config
|
|
5
4
|
const LeafletFlowMapDefaultConfig = Object.assign(Object.assign({}, LeafletMapDefaultConfig), { sourceLongitude: (f) => f.sourceLongitude, sourceLatitude: (f) => f.sourceLatitude, targetLongitude: (f) => f.targetLongitude, targetLatitude: (f) => f.targetLatitude, sourcePointRadius: 3, sourcePointColor: '#88919f', flowParticleColor: '#949dad', flowParticleRadius: 1.1, flowParticleSpeed: 0.07, flowParticleDensity: 0.6, onSourcePointClick: undefined, onSourcePointMouseEnter: undefined, onSourcePointMouseLeave: undefined });
|
|
6
5
|
|
|
7
6
|
export { LeafletFlowMapDefaultConfig };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../../src/components/leaflet-flow-map/config.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n\n// Config\nimport { LeafletMapDefaultConfig, LeafletMapConfigInterface } from 'components/leaflet-map/config'\n\n// Types\nimport { ColorAccessor, NumericAccessor } from 'types/accessor'\nimport { GenericDataRecord } from 'types/data'\n\nexport interface LeafletFlowMapConfigInterface<PointDatum extends GenericDataRecord, FlowDatum extends GenericDataRecord> extends LeafletMapConfigInterface<PointDatum> {\n /** Flow source point longitude accessor function or value. Default:.`f => f.sourceLongitude` */\n sourceLongitude?: NumericAccessor<FlowDatum>;\n /** Flow source point latitude accessor function or value. Default: `f => f.sourceLatitude` */\n sourceLatitude?: NumericAccessor<FlowDatum>;\n /** Flow target point longitude accessor function or value. Default: `f => f.targetLongitude` */\n targetLongitude?: NumericAccessor<FlowDatum>;\n /** Flow target point latitude accessor function or value. Default: `f => f.targetLatitude` */\n targetLatitude?: NumericAccessor<FlowDatum>;\n /** Flow source point radius accessor function or value. Default: `3` */\n sourcePointRadius?: NumericAccessor<FlowDatum>;\n /** Source point color accessor function or value. Default: `'#88919f'` */\n sourcePointColor?: ColorAccessor<FlowDatum>;\n /** Flow particle color accessor function or value. Default: `'#949dad'` */\n flowParticleColor?: ColorAccessor<FlowDatum>;\n /** Flow particle radius accessor function or value. Default: `1.1` */\n flowParticleRadius?: NumericAccessor<FlowDatum>;\n /** Flow particle speed accessor function or value. The unit is arbitrary, recommended range is 0 – 0.2. Default: `0.07` */\n flowParticleSpeed?: NumericAccessor<FlowDatum>;\n /** Flow particle density accessor function or value on the range of [0, 1]. Default: `0.6` */\n flowParticleDensity?: NumericAccessor<FlowDatum>;\n\n // Events\n /** Flow source point click callback function. Default: `undefined` */\n onSourcePointClick?: (f: FlowDatum, x: number, y: number, event: MouseEvent) => void;\n /** Flow source point mouse over callback function. Default: `undefined` */\n onSourcePointMouseEnter?: (f: FlowDatum, x: number, y: number, event: MouseEvent) => void;\n /** Flow source point mouse leave callback function. Default: `undefined` */\n onSourcePointMouseLeave?: (f: FlowDatum, event: MouseEvent) => void;\n}\n\nexport const LeafletFlowMapDefaultConfig: LeafletFlowMapConfigInterface<GenericDataRecord, GenericDataRecord> = {\n ...LeafletMapDefaultConfig,\n sourceLongitude: (f: unknown): number => (f as { sourceLongitude: number }).sourceLongitude as number,\n sourceLatitude: (f: unknown): number => (f as { sourceLatitude: number }).sourceLatitude as number,\n targetLongitude: (f: unknown): number => (f as { targetLongitude: number }).targetLongitude as number,\n targetLatitude: (f: unknown): number => (f as { targetLatitude: number }).targetLatitude as number,\n sourcePointRadius: 3,\n sourcePointColor: '#88919f',\n flowParticleColor: '#949dad',\n flowParticleRadius: 1.1,\n flowParticleSpeed: 0.07,\n flowParticleDensity: 0.6,\n onSourcePointClick: undefined,\n onSourcePointMouseEnter: undefined,\n onSourcePointMouseLeave: undefined,\n}\n"],"names":[],"mappings":";;AAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/components/leaflet-flow-map/config.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n\n// Config\nimport { LeafletMapDefaultConfig, LeafletMapConfigInterface } from 'components/leaflet-map/config'\n\n// Types\nimport { ColorAccessor, NumericAccessor } from 'types/accessor'\nimport { GenericDataRecord } from 'types/data'\n\nexport interface LeafletFlowMapConfigInterface<PointDatum extends GenericDataRecord, FlowDatum extends GenericDataRecord> extends LeafletMapConfigInterface<PointDatum> {\n /** Flow source point longitude accessor function or value. Default:.`f => f.sourceLongitude` */\n sourceLongitude?: NumericAccessor<FlowDatum>;\n /** Flow source point latitude accessor function or value. Default: `f => f.sourceLatitude` */\n sourceLatitude?: NumericAccessor<FlowDatum>;\n /** Flow target point longitude accessor function or value. Default: `f => f.targetLongitude` */\n targetLongitude?: NumericAccessor<FlowDatum>;\n /** Flow target point latitude accessor function or value. Default: `f => f.targetLatitude` */\n targetLatitude?: NumericAccessor<FlowDatum>;\n /** Flow source point radius accessor function or value. Default: `3` */\n sourcePointRadius?: NumericAccessor<FlowDatum>;\n /** Source point color accessor function or value. Default: `'#88919f'` */\n sourcePointColor?: ColorAccessor<FlowDatum>;\n /** Flow particle color accessor function or value. Default: `'#949dad'` */\n flowParticleColor?: ColorAccessor<FlowDatum>;\n /** Flow particle radius accessor function or value. Default: `1.1` */\n flowParticleRadius?: NumericAccessor<FlowDatum>;\n /** Flow particle speed accessor function or value. The unit is arbitrary, recommended range is 0 – 0.2. Default: `0.07` */\n flowParticleSpeed?: NumericAccessor<FlowDatum>;\n /** Flow particle density accessor function or value on the range of [0, 1]. Default: `0.6` */\n flowParticleDensity?: NumericAccessor<FlowDatum>;\n\n // Events\n /** Flow source point click callback function. Default: `undefined` */\n onSourcePointClick?: (f: FlowDatum, x: number, y: number, event: MouseEvent) => void;\n /** Flow source point mouse over callback function. Default: `undefined` */\n onSourcePointMouseEnter?: (f: FlowDatum, x: number, y: number, event: MouseEvent) => void;\n /** Flow source point mouse leave callback function. Default: `undefined` */\n onSourcePointMouseLeave?: (f: FlowDatum, event: MouseEvent) => void;\n}\n\nexport const LeafletFlowMapDefaultConfig: LeafletFlowMapConfigInterface<GenericDataRecord, GenericDataRecord> = {\n ...LeafletMapDefaultConfig,\n sourceLongitude: (f: unknown): number => (f as { sourceLongitude: number }).sourceLongitude as number,\n sourceLatitude: (f: unknown): number => (f as { sourceLatitude: number }).sourceLatitude as number,\n targetLongitude: (f: unknown): number => (f as { targetLongitude: number }).targetLongitude as number,\n targetLatitude: (f: unknown): number => (f as { targetLatitude: number }).targetLatitude as number,\n sourcePointRadius: 3,\n sourcePointColor: '#88919f',\n flowParticleColor: '#949dad',\n flowParticleRadius: 1.1,\n flowParticleSpeed: 0.07,\n flowParticleDensity: 0.6,\n onSourcePointClick: undefined,\n onSourcePointMouseEnter: undefined,\n onSourcePointMouseLeave: undefined,\n}\n"],"names":[],"mappings":";;AAAA;AAwCa,MAAA,2BAA2B,mCACnC,uBAAuB,CAAA,EAAA,EAC1B,eAAe,EAAE,CAAC,CAAU,KAAc,CAAiC,CAAC,eAAyB,EACrG,cAAc,EAAE,CAAC,CAAU,KAAc,CAAgC,CAAC,cAAwB,EAClG,eAAe,EAAE,CAAC,CAAU,KAAc,CAAiC,CAAC,eAAyB,EACrG,cAAc,EAAE,CAAC,CAAU,KAAc,CAAgC,CAAC,cAAwB,EAClG,iBAAiB,EAAE,CAAC,EACpB,gBAAgB,EAAE,SAAS,EAC3B,iBAAiB,EAAE,SAAS,EAC5B,kBAAkB,EAAE,GAAG,EACvB,iBAAiB,EAAE,IAAI,EACvB,mBAAmB,EAAE,GAAG,EACxB,kBAAkB,EAAE,SAAS,EAC7B,uBAAuB,EAAE,SAAS,EAClC,uBAAuB,EAAE,SAAS;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaders.js","sources":["../../../src/components/leaflet-flow-map/shaders.ts"],"sourcesContent":["export const vertex = `\nattribute float size;\nattribute vec4 customColor;\nvarying vec4 vColor;\nvoid main() {\n vColor = customColor;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_PointSize = size * 2.0;\n gl_Position = projectionMatrix * mvPosition;\n}\n`\nexport const fragment = `\nuniform vec3 color;\nvarying vec4 vColor;\nvoid main() {\n // if ( length( gl_PointCoord - vec2( 0.5, 0.5 ) ) > 0.475 ) discard;\n // gl_FragColor = vec4(color * vColor.rgb, vColor.a);\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n\n float opacity = 1.0 - smoothstep(0.7, 1.0, r);\n gl_FragColor = vec4(color * vColor.rgb, vColor.a * opacity);\n}\n`\n"],"names":[],"mappings":"AAAa,MAAA,MAAM,GAAG;;;;;;;;;;EAUrB;AACY,MAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"shaders.js","sources":["../../../src/components/leaflet-flow-map/shaders.ts"],"sourcesContent":["export const vertex = `\nattribute float size;\nattribute vec4 customColor;\nvarying vec4 vColor;\nvoid main() {\n vColor = customColor;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_PointSize = size * 2.0;\n gl_Position = projectionMatrix * mvPosition;\n}\n`\nexport const fragment = `\nuniform vec3 color;\nvarying vec4 vColor;\nvoid main() {\n // if ( length( gl_PointCoord - vec2( 0.5, 0.5 ) ) > 0.475 ) discard;\n // gl_FragColor = vec4(color * vColor.rgb, vColor.a);\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n\n float opacity = 1.0 - smoothstep(0.7, 1.0, r);\n gl_FragColor = vec4(color * vColor.rgb, vColor.a * opacity);\n}\n`\n"],"names":[],"mappings":"AAAa,MAAA,MAAM,GAAG,CAAA;;;;;;;;;;EAUrB;AACY,MAAA,QAAQ,GAAG,CAAA;;;;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,6 @@ import { ComponentDefaultConfig } from '../../core/component/config.js';
|
|
|
2
2
|
import { LeafletMapRenderer } from './types.js';
|
|
3
3
|
|
|
4
4
|
/* eslint-disable no-irregular-whitespace */
|
|
5
|
-
// Core
|
|
6
5
|
const LeafletMapDefaultConfig = Object.assign(Object.assign({}, ComponentDefaultConfig), {
|
|
7
6
|
// General
|
|
8
7
|
width: undefined, height: undefined, flyToDuration: 1500, fitViewPadding: [150, 150], zoomDuration: 800, initialBounds: undefined, fitBoundsOnUpdate: undefined, fitViewOnInit: true, fitViewOnUpdate: false, attribution: ['<a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap contributors</a>'], accessToken: '', style: undefined, styleDarkTheme: undefined, renderer: LeafletMapRenderer.MapLibre,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../../src/components/leaflet-map/config.ts"],"sourcesContent":["/* eslint-disable no-irregular-whitespace */\n\n// Core\nimport { ComponentDefaultConfig, ComponentConfigInterface } from 'core/component/config'\nimport { Tooltip } from 'components/tooltip'\n\n// Types\nimport { ColorAccessor, GenericAccessor, NumericAccessor, StringAccessor } from 'types/accessor'\nimport { GenericDataRecord } from 'types/data'\n\n// Local Types\nimport {\n Bounds,\n LeafletMapPointStyles,\n MapZoomState,\n LeafletMapPointDatum,\n LeafletMapPointShape,\n LeafletMapClusterDatum,\n LeafletMapRenderer,\n} from './types'\n\n// Renderer settings\nimport { MapLibreStyleSpecs } from './renderer/map-style'\n\nexport interface LeafletMapConfigInterface<Datum extends GenericDataRecord> extends ComponentConfigInterface {\n // General\n /** Width in pixels or in CSS units. By default, the map will automatically fit to the size of the parent element. Default: `undefined`. */\n width?: number | string;\n /** Height in pixels or in CSS units. By default, the map will automatically fit to the size of the parent element. Default: `undefined`. */\n height?: number | string;\n /** Animation duration when the map is automatically panning or zooming to a point or area. Default: `1500` ms */\n flyToDuration?: number;\n /** Padding to be used when the `fitView` function has been called. The value is in pixels, [topLeft, bottomRight]. Default: `[150, 150]` */\n fitViewPadding?: [number, number];\n /** Animation duration for the `setZoom` function. Default: `800` ms */\n zoomDuration?: number;\n /** Default bounds that will be applied on the first map render if the bounds property is not set. Default: `undefined` */\n initialBounds?: Bounds;\n /** Force set map bounds on config and data updates. Default: `undefined` */\n fitBoundsOnUpdate?: Bounds;\n /** Fit the view to contain the data points on map initialization. Default: `true` */\n fitViewOnInit?: boolean;\n /** Fit the view to contain the data points on map config and data updates. Default: `false` */\n fitViewOnUpdate?: boolean;\n /** MapLibre `StyleSpecification` settings, or a URL to it. When renderer is set to`LeafletMapRenderer.Raster`, provide a template URL. Default: `undefined` */\n style: MapLibreStyleSpecs | string | undefined;\n /** MapLibre `StyleSpecification` settings or URL for dark theme. Default: `undefined` */\n styleDarkTheme?: MapLibreStyleSpecs | string | undefined;\n /** Tile server access token or API key. Default: `''` */\n accessToken?: string;\n /** Array of attribution labels. Default: `['<a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap contributors</a>']` */\n attribution?: string[];\n /** Rendering mode for map's tile layer. For raster files, use `LeafletMapRenderer.Raster`. Default: `LeafletMapRenderer.MapLibre` */\n renderer?: LeafletMapRenderer | string;\n\n // Map events\n /** Function to be called after the map's async initialization is done. Default: `undefined` */\n onMapInitialized?: (() => void);\n /** Map Move / Zoom unified callback function. Default: `undefined` */\n onMapMoveZoom?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Move Start callback function. Default: `undefined` */\n onMapMoveStart?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Move End callback function. Default: `undefined` */\n onMapMoveEnd?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Zoom Start callback function. Default: `undefined` */\n onMapZoomStart?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Zoom End callback function. Default: `undefined` */\n onMapZoomEnd?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Zoom Click callback function. Default: `undefined` */\n onMapClick?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n\n // Point\n /** Point longitude accessor function. Default: `d => d.longitude` */\n pointLongitude?: NumericAccessor<Datum>;\n /** Point latitude accessor function. Default: `d => d.latitude` */\n pointLatitude?: NumericAccessor<Datum>;\n /** Point id accessor function or constant value. Default: `d => d.id` */\n pointId?: StringAccessor<Datum>;\n /** Point shape accessor function or constant value. Default: `d => d.shape` */\n pointShape?: GenericAccessor<LeafletMapPointShape | string, Datum>;\n /** Point color accessor function or constant value. Default: `d => d.color` */\n pointColor?: ColorAccessor<LeafletMapPointDatum<Datum>>;\n /** Point radius accessor function or constant value. Default: `undefined` */\n pointRadius?: NumericAccessor<LeafletMapPointDatum<Datum>>;\n /** Point inner label accessor function. Default: `undefined` */\n pointLabel?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** Point inner label color accessor function or constant value.\n * By default, the label color will be set, depending on the point brightness, either to\n * `--vis-map-point-inner-label-text-color-light` or to `--vis-map-point-inner-label-text-color-dark` CSS variable.\n * Default: `undefined`\n */\n pointLabelColor?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** Point bottom label accessor function. Default: `''` */\n pointBottomLabel?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** Point cursor value or accessor function. Default: `null` */\n pointCursor?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** The width of the ring when a point has a `LeafletMapPointShape.Ring` shape. Default: `1.25` */\n pointRingWidth?: number;\n /** Set selected point by its unique id. Default: `undefined` */\n selectedPointId?: string;\n\n // Cluster\n /** Cluster color accessor function or constant value. Default: `undefined` */\n clusterColor?: ColorAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster radius accessor function or constant value. Default: `undefined` */\n clusterRadius?: NumericAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster inner label accessor function. Default: `d => d.point_count` */\n clusterLabel?: StringAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster inner label color accessor function or constant value.\n * By default, the label color will be set, depending on the point brightness, either to\n * `--vis-map-cluster-inner-label-text-color-light` or to `--vis-map-cluster-inner-label-text-color-dark` CSS variable.\n * Default: `undefined`\n */\n clusterLabelColor?: StringAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster bottom label accessor function. Default: `''` */\n clusterBottomLabel?: StringAccessor<LeafletMapClusterDatum<Datum>>;\n /** The width of the cluster point ring. Default: `1.25` */\n clusterRingWidth?: number;\n /** When cluster is expanded, show a background circle to better separate points from the base map. Default: `true` */\n clusterBackground?: boolean;\n /** Defines whether the cluster should expand on click or not. Default: `true` */\n clusterExpandOnClick?: boolean;\n /** Clustering distance in pixels. This value will be passed to Supercluster as the `radius` property https://github.com/mapbox/supercluster. Default: `55` */\n clusteringDistance?: number;\n /** A single map point can have multiple properties displayed as a small pie chart (or a donut chart for a cluster of points).\n * By setting the colorMap configuration you can specify data properties that should be mapped to various pie / donut segments.\n *\n * ```\n * {\n * [key in keyof Datum]?: { color: string, className?: string }\n * }\n * ```\n * e.g.:\n * ```\n * {\n * healthy: { color: 'green' },\n * warning: { color: 'orange' },\n * danger: { color: 'red' }\n * }\n * ```\n * where every data point has the `healthy`, `warning` and `danger` numerical or boolean property.\n */\n colorMap?: LeafletMapPointStyles<Datum>;\n\n // TopoJSON overlay\n /** A TopoJSON Geometry layer to be displayed on top of the map. Supports fill and stroke */\n topoJSONLayer?: {\n /** The TopoJSON.Topology object. Default: `undefined` */\n sources: any;\n /** Name of the geometry feature to be displayed. Default: `undefined` */\n featureName?: string;\n /** Name of the property to be used for defining the fill color of the geometry. Default: `undefined` */\n fillProperty?: string;\n /** Name of the property to be used for defining the stroke color of the geometry. Default: `undefined` */\n strokeProperty?: string;\n /** Geometry fill opacity value. Default: `0.6` */\n fillOpacity?: number;\n /** Geometry stroke opacity value. Default: `0.8` */\n strokeOpacity?: number;\n /** Geometry stroke width. Default: `2` */\n strokeWidth?: number;\n };\n\n // Misc\n /** Tooltip component. Default: `undefined` */\n tooltip?: Tooltip;\n\n /** Alternative text description of the chart for accessibility purposes. It will be applied as an\n * `aria-label` attribute to the div element containing your chart. Default: `undefined`.\n */\n ariaLabel?: string | null | undefined;\n}\n\nexport const LeafletMapDefaultConfig: LeafletMapConfigInterface<GenericDataRecord> = {\n ...ComponentDefaultConfig,\n // General\n width: undefined,\n height: undefined,\n flyToDuration: 1500,\n fitViewPadding: [150, 150],\n zoomDuration: 800,\n initialBounds: undefined,\n fitBoundsOnUpdate: undefined,\n fitViewOnInit: true,\n fitViewOnUpdate: false,\n attribution: ['<a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap contributors</a>'],\n accessToken: '',\n style: undefined,\n styleDarkTheme: undefined,\n renderer: LeafletMapRenderer.MapLibre,\n\n // Map events\n onMapInitialized: undefined,\n onMapMoveZoom: undefined,\n onMapMoveStart: undefined,\n onMapMoveEnd: undefined,\n onMapZoomStart: undefined,\n onMapZoomEnd: undefined,\n onMapClick: undefined,\n\n // Point\n pointLongitude: (d: unknown): number => (d as { longitude: number }).longitude,\n pointLatitude: (d: unknown): number => (d as { latitude: number }).latitude,\n pointId: (d: unknown): string => (d as { id: string }).id,\n pointShape: (d: unknown): string => (d as { shape: string }).shape,\n pointColor: (d: unknown): string => (d as { color: string }).color,\n pointRadius: undefined,\n pointLabel: undefined,\n pointLabelColor: undefined,\n pointBottomLabel: '',\n pointCursor: null,\n pointRingWidth: 1.25,\n selectedPointId: undefined,\n\n // Cluster\n clusterColor: undefined,\n clusterRadius: undefined,\n clusterLabel: <Datum extends GenericDataRecord>(d: LeafletMapClusterDatum<Datum>): string => `${d.point_count}`,\n clusterLabelColor: undefined,\n clusterBottomLabel: '',\n clusterRingWidth: 1.25,\n clusterBackground: true,\n clusterExpandOnClick: true,\n clusteringDistance: 55,\n colorMap: {},\n\n // TopoJSON Overlay\n topoJSONLayer: {\n sources: undefined,\n fillOpacity: 0.6,\n strokeOpacity: 0.8,\n strokeWidth: 1,\n featureName: undefined,\n fillProperty: undefined,\n strokeProperty: undefined,\n },\n\n // Misc\n tooltip: undefined,\n ariaLabel: undefined,\n}\n"],"names":[],"mappings":";;;AAAA;AAEA;AA2KO,MAAM,uBAAuB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC/B,sBAAsB,CAAA,EAAA;;AAEzB,IAAA,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,IAAI,EACnB,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1B,YAAY,EAAE,GAAG,EACjB,aAAa,EAAE,SAAS,EACxB,iBAAiB,EAAE,SAAS,EAC5B,aAAa,EAAE,IAAI,EACnB,eAAe,EAAE,KAAK,EACtB,WAAW,EAAE,CAAC,kGAAkG,CAAC,EACjH,WAAW,EAAE,EAAE,EACf,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,SAAS,EACzB,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;;IAGrC,gBAAgB,EAAE,SAAS,EAC3B,aAAa,EAAE,SAAS,EACxB,cAAc,EAAE,SAAS,EACzB,YAAY,EAAE,SAAS,EACvB,cAAc,EAAE,SAAS,EACzB,YAAY,EAAE,SAAS,EACvB,UAAU,EAAE,SAAS;;AAGrB,IAAA,cAAc,EAAE,CAAC,CAAU,KAAc,CAA2B,CAAC,SAAS,EAC9E,aAAa,EAAE,CAAC,CAAU,KAAc,CAA0B,CAAC,QAAQ,EAC3E,OAAO,EAAE,CAAC,CAAU,KAAc,CAAoB,CAAC,EAAE,EACzD,UAAU,EAAE,CAAC,CAAU,KAAc,CAAuB,CAAC,KAAK,EAClE,UAAU,EAAE,CAAC,CAAU,KAAc,CAAuB,CAAC,KAAK,EAClE,WAAW,EAAE,SAAS,EACtB,UAAU,EAAE,SAAS,EACrB,eAAe,EAAE,SAAS,EAC1B,gBAAgB,EAAE,EAAE,EACpB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,IAAI,EACpB,eAAe,EAAE,SAAS;;IAG1B,YAAY,EAAE,SAAS,EACvB,aAAa,EAAE,SAAS,EACxB,YAAY,EAAE,CAAkC,CAAgC,KAAa,CAAG,EAAA,CAAC,CAAC,WAAW,CAAA,CAAE,EAC/G,iBAAiB,EAAE,SAAS,EAC5B,kBAAkB,EAAE,EAAE,EACtB,gBAAgB,EAAE,IAAI,EACtB,iBAAiB,EAAE,IAAI,EACvB,oBAAoB,EAAE,IAAI,EAC1B,kBAAkB,EAAE,EAAE,EACtB,QAAQ,EAAE,EAAE;;AAGZ,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,aAAa,EAAE,GAAG;AAClB,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,cAAc,EAAE,SAAS;AAC1B,KAAA;;AAGD,IAAA,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,SAAS;;;;"}
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/components/leaflet-map/config.ts"],"sourcesContent":["/* eslint-disable no-irregular-whitespace */\n\n// Core\nimport { ComponentDefaultConfig, ComponentConfigInterface } from 'core/component/config'\nimport { Tooltip } from 'components/tooltip'\n\n// Types\nimport { ColorAccessor, GenericAccessor, NumericAccessor, StringAccessor } from 'types/accessor'\nimport { GenericDataRecord } from 'types/data'\n\n// Local Types\nimport {\n Bounds,\n LeafletMapPointStyles,\n MapZoomState,\n LeafletMapPointDatum,\n LeafletMapPointShape,\n LeafletMapClusterDatum,\n LeafletMapRenderer,\n} from './types'\n\n// Renderer settings\nimport { MapLibreStyleSpecs } from './renderer/map-style'\n\nexport interface LeafletMapConfigInterface<Datum extends GenericDataRecord> extends ComponentConfigInterface {\n // General\n /** Width in pixels or in CSS units. By default, the map will automatically fit to the size of the parent element. Default: `undefined`. */\n width?: number | string;\n /** Height in pixels or in CSS units. By default, the map will automatically fit to the size of the parent element. Default: `undefined`. */\n height?: number | string;\n /** Animation duration when the map is automatically panning or zooming to a point or area. Default: `1500` ms */\n flyToDuration?: number;\n /** Padding to be used when the `fitView` function has been called. The value is in pixels, [topLeft, bottomRight]. Default: `[150, 150]` */\n fitViewPadding?: [number, number];\n /** Animation duration for the `setZoom` function. Default: `800` ms */\n zoomDuration?: number;\n /** Default bounds that will be applied on the first map render if the bounds property is not set. Default: `undefined` */\n initialBounds?: Bounds;\n /** Force set map bounds on config and data updates. Default: `undefined` */\n fitBoundsOnUpdate?: Bounds;\n /** Fit the view to contain the data points on map initialization. Default: `true` */\n fitViewOnInit?: boolean;\n /** Fit the view to contain the data points on map config and data updates. Default: `false` */\n fitViewOnUpdate?: boolean;\n /** MapLibre `StyleSpecification` settings, or a URL to it. When renderer is set to`LeafletMapRenderer.Raster`, provide a template URL. Default: `undefined` */\n style: MapLibreStyleSpecs | string | undefined;\n /** MapLibre `StyleSpecification` settings or URL for dark theme. Default: `undefined` */\n styleDarkTheme?: MapLibreStyleSpecs | string | undefined;\n /** Tile server access token or API key. Default: `''` */\n accessToken?: string;\n /** Array of attribution labels. Default: `['<a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap contributors</a>']` */\n attribution?: string[];\n /** Rendering mode for map's tile layer. For raster files, use `LeafletMapRenderer.Raster`. Default: `LeafletMapRenderer.MapLibre` */\n renderer?: LeafletMapRenderer | string;\n\n // Map events\n /** Function to be called after the map's async initialization is done. Default: `undefined` */\n onMapInitialized?: (() => void);\n /** Map Move / Zoom unified callback function. Default: `undefined` */\n onMapMoveZoom?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Move Start callback function. Default: `undefined` */\n onMapMoveStart?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Move End callback function. Default: `undefined` */\n onMapMoveEnd?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Zoom Start callback function. Default: `undefined` */\n onMapZoomStart?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Zoom End callback function. Default: `undefined` */\n onMapZoomEnd?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n /** Map Zoom Click callback function. Default: `undefined` */\n onMapClick?: (({ mapCenter, zoomLevel, bounds }: MapZoomState) => void);\n\n // Point\n /** Point longitude accessor function. Default: `d => d.longitude` */\n pointLongitude?: NumericAccessor<Datum>;\n /** Point latitude accessor function. Default: `d => d.latitude` */\n pointLatitude?: NumericAccessor<Datum>;\n /** Point id accessor function or constant value. Default: `d => d.id` */\n pointId?: StringAccessor<Datum>;\n /** Point shape accessor function or constant value. Default: `d => d.shape` */\n pointShape?: GenericAccessor<LeafletMapPointShape | string, Datum>;\n /** Point color accessor function or constant value. Default: `d => d.color` */\n pointColor?: ColorAccessor<LeafletMapPointDatum<Datum>>;\n /** Point radius accessor function or constant value. Default: `undefined` */\n pointRadius?: NumericAccessor<LeafletMapPointDatum<Datum>>;\n /** Point inner label accessor function. Default: `undefined` */\n pointLabel?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** Point inner label color accessor function or constant value.\n * By default, the label color will be set, depending on the point brightness, either to\n * `--vis-map-point-inner-label-text-color-light` or to `--vis-map-point-inner-label-text-color-dark` CSS variable.\n * Default: `undefined`\n */\n pointLabelColor?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** Point bottom label accessor function. Default: `''` */\n pointBottomLabel?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** Point cursor value or accessor function. Default: `null` */\n pointCursor?: StringAccessor<LeafletMapPointDatum<Datum>>;\n /** The width of the ring when a point has a `LeafletMapPointShape.Ring` shape. Default: `1.25` */\n pointRingWidth?: number;\n /** Set selected point by its unique id. Default: `undefined` */\n selectedPointId?: string;\n\n // Cluster\n /** Cluster color accessor function or constant value. Default: `undefined` */\n clusterColor?: ColorAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster radius accessor function or constant value. Default: `undefined` */\n clusterRadius?: NumericAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster inner label accessor function. Default: `d => d.point_count` */\n clusterLabel?: StringAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster inner label color accessor function or constant value.\n * By default, the label color will be set, depending on the point brightness, either to\n * `--vis-map-cluster-inner-label-text-color-light` or to `--vis-map-cluster-inner-label-text-color-dark` CSS variable.\n * Default: `undefined`\n */\n clusterLabelColor?: StringAccessor<LeafletMapClusterDatum<Datum>>;\n /** Cluster bottom label accessor function. Default: `''` */\n clusterBottomLabel?: StringAccessor<LeafletMapClusterDatum<Datum>>;\n /** The width of the cluster point ring. Default: `1.25` */\n clusterRingWidth?: number;\n /** When cluster is expanded, show a background circle to better separate points from the base map. Default: `true` */\n clusterBackground?: boolean;\n /** Defines whether the cluster should expand on click or not. Default: `true` */\n clusterExpandOnClick?: boolean;\n /** Clustering distance in pixels. This value will be passed to Supercluster as the `radius` property https://github.com/mapbox/supercluster. Default: `55` */\n clusteringDistance?: number;\n /** A single map point can have multiple properties displayed as a small pie chart (or a donut chart for a cluster of points).\n * By setting the colorMap configuration you can specify data properties that should be mapped to various pie / donut segments.\n *\n * ```\n * {\n * [key in keyof Datum]?: { color: string, className?: string }\n * }\n * ```\n * e.g.:\n * ```\n * {\n * healthy: { color: 'green' },\n * warning: { color: 'orange' },\n * danger: { color: 'red' }\n * }\n * ```\n * where every data point has the `healthy`, `warning` and `danger` numerical or boolean property.\n */\n colorMap?: LeafletMapPointStyles<Datum>;\n\n // TopoJSON overlay\n /** A TopoJSON Geometry layer to be displayed on top of the map. Supports fill and stroke */\n topoJSONLayer?: {\n /** The TopoJSON.Topology object. Default: `undefined` */\n sources: any;\n /** Name of the geometry feature to be displayed. Default: `undefined` */\n featureName?: string;\n /** Name of the property to be used for defining the fill color of the geometry. Default: `undefined` */\n fillProperty?: string;\n /** Name of the property to be used for defining the stroke color of the geometry. Default: `undefined` */\n strokeProperty?: string;\n /** Geometry fill opacity value. Default: `0.6` */\n fillOpacity?: number;\n /** Geometry stroke opacity value. Default: `0.8` */\n strokeOpacity?: number;\n /** Geometry stroke width. Default: `2` */\n strokeWidth?: number;\n };\n\n // Misc\n /** Tooltip component. Default: `undefined` */\n tooltip?: Tooltip;\n\n /** Alternative text description of the chart for accessibility purposes. It will be applied as an\n * `aria-label` attribute to the div element containing your chart. Default: `undefined`.\n */\n ariaLabel?: string | null | undefined;\n}\n\nexport const LeafletMapDefaultConfig: LeafletMapConfigInterface<GenericDataRecord> = {\n ...ComponentDefaultConfig,\n // General\n width: undefined,\n height: undefined,\n flyToDuration: 1500,\n fitViewPadding: [150, 150],\n zoomDuration: 800,\n initialBounds: undefined,\n fitBoundsOnUpdate: undefined,\n fitViewOnInit: true,\n fitViewOnUpdate: false,\n attribution: ['<a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap contributors</a>'],\n accessToken: '',\n style: undefined,\n styleDarkTheme: undefined,\n renderer: LeafletMapRenderer.MapLibre,\n\n // Map events\n onMapInitialized: undefined,\n onMapMoveZoom: undefined,\n onMapMoveStart: undefined,\n onMapMoveEnd: undefined,\n onMapZoomStart: undefined,\n onMapZoomEnd: undefined,\n onMapClick: undefined,\n\n // Point\n pointLongitude: (d: unknown): number => (d as { longitude: number }).longitude,\n pointLatitude: (d: unknown): number => (d as { latitude: number }).latitude,\n pointId: (d: unknown): string => (d as { id: string }).id,\n pointShape: (d: unknown): string => (d as { shape: string }).shape,\n pointColor: (d: unknown): string => (d as { color: string }).color,\n pointRadius: undefined,\n pointLabel: undefined,\n pointLabelColor: undefined,\n pointBottomLabel: '',\n pointCursor: null,\n pointRingWidth: 1.25,\n selectedPointId: undefined,\n\n // Cluster\n clusterColor: undefined,\n clusterRadius: undefined,\n clusterLabel: <Datum extends GenericDataRecord>(d: LeafletMapClusterDatum<Datum>): string => `${d.point_count}`,\n clusterLabelColor: undefined,\n clusterBottomLabel: '',\n clusterRingWidth: 1.25,\n clusterBackground: true,\n clusterExpandOnClick: true,\n clusteringDistance: 55,\n colorMap: {},\n\n // TopoJSON Overlay\n topoJSONLayer: {\n sources: undefined,\n fillOpacity: 0.6,\n strokeOpacity: 0.8,\n strokeWidth: 1,\n featureName: undefined,\n fillProperty: undefined,\n strokeProperty: undefined,\n },\n\n // Misc\n tooltip: undefined,\n ariaLabel: undefined,\n}\n"],"names":[],"mappings":";;;AAAA;AA6KO,MAAM,uBAAuB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC/B,sBAAsB,CAAA,EAAA;;AAEzB,IAAA,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,IAAI,EACnB,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1B,YAAY,EAAE,GAAG,EACjB,aAAa,EAAE,SAAS,EACxB,iBAAiB,EAAE,SAAS,EAC5B,aAAa,EAAE,IAAI,EACnB,eAAe,EAAE,KAAK,EACtB,WAAW,EAAE,CAAC,kGAAkG,CAAC,EACjH,WAAW,EAAE,EAAE,EACf,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,SAAS,EACzB,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;;IAGrC,gBAAgB,EAAE,SAAS,EAC3B,aAAa,EAAE,SAAS,EACxB,cAAc,EAAE,SAAS,EACzB,YAAY,EAAE,SAAS,EACvB,cAAc,EAAE,SAAS,EACzB,YAAY,EAAE,SAAS,EACvB,UAAU,EAAE,SAAS;;AAGrB,IAAA,cAAc,EAAE,CAAC,CAAU,KAAc,CAA2B,CAAC,SAAS,EAC9E,aAAa,EAAE,CAAC,CAAU,KAAc,CAA0B,CAAC,QAAQ,EAC3E,OAAO,EAAE,CAAC,CAAU,KAAc,CAAoB,CAAC,EAAE,EACzD,UAAU,EAAE,CAAC,CAAU,KAAc,CAAuB,CAAC,KAAK,EAClE,UAAU,EAAE,CAAC,CAAU,KAAc,CAAuB,CAAC,KAAK,EAClE,WAAW,EAAE,SAAS,EACtB,UAAU,EAAE,SAAS,EACrB,eAAe,EAAE,SAAS,EAC1B,gBAAgB,EAAE,EAAE,EACpB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,IAAI,EACpB,eAAe,EAAE,SAAS;;IAG1B,YAAY,EAAE,SAAS,EACvB,aAAa,EAAE,SAAS,EACxB,YAAY,EAAE,CAAkC,CAAgC,KAAa,CAAG,EAAA,CAAC,CAAC,WAAW,CAAA,CAAE,EAC/G,iBAAiB,EAAE,SAAS,EAC5B,kBAAkB,EAAE,EAAE,EACtB,gBAAgB,EAAE,IAAI,EACtB,iBAAiB,EAAE,IAAI,EACvB,oBAAoB,EAAE,IAAI,EAC1B,kBAAkB,EAAE,EAAE,EACtB,QAAQ,EAAE,EAAE;;AAGZ,IAAA,aAAa,EAAE;AACb,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,WAAW,EAAE,GAAG;AAChB,QAAA,aAAa,EAAE,GAAG;AAClB,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,cAAc,EAAE,SAAS;AAC1B,KAAA;;AAGD,IAAA,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,SAAS;;;;"}
|
|
@@ -76,10 +76,10 @@ function updateTopoJson(maplibreMap, config) {
|
|
|
76
76
|
function setupMap(mapContainer, config) {
|
|
77
77
|
var _a, _b;
|
|
78
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
const { style
|
|
79
|
+
const { style, renderer, topoJSONLayer } = config;
|
|
80
80
|
const leaflet = yield import('leaflet');
|
|
81
81
|
const L = leaflet.default;
|
|
82
|
-
if (!style
|
|
82
|
+
if (!style) {
|
|
83
83
|
console.error('Unovis | Leaflet Map: Please provide style settings in the map configuration object');
|
|
84
84
|
return;
|
|
85
85
|
}
|
|
@@ -116,7 +116,7 @@ function setupMap(mapContainer, config) {
|
|
|
116
116
|
});
|
|
117
117
|
break;
|
|
118
118
|
case LeafletMapRenderer.Raster:
|
|
119
|
-
layer = L.tileLayer(style
|
|
119
|
+
layer = L.tileLayer(style);
|
|
120
120
|
layer.addTo(leafletMap);
|
|
121
121
|
break;
|
|
122
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sources":["../../../../src/components/leaflet-map/modules/map.ts"],"sourcesContent":["import type L from 'leaflet'\nimport { select, Selection } from 'd3-selection'\nimport type { GeoJSONSource, Map } from 'maplibre-gl'\nimport { feature } from 'topojson-client'\n\n// Types\nimport { GenericDataRecord } from 'types/data'\n\n// Config\nimport { LeafletMapConfigInterface } from '../config'\n\n// Local Types\n\n// Utils\nimport { constraintMapView, mapboxglWheelEventThrottled } from '../renderer/mapboxgl-utils'\n\n// Styles\nimport * as s from '../style'\nimport { LeafletMapRenderer } from '../types'\n\nexport const initialMapCenter: L.LatLngExpression = [36, 14]\nexport const initialMapZoom = 1.9\n\nexport function updateTopoJson<T extends GenericDataRecord> (maplibreMap: Map, config: LeafletMapConfigInterface<T>): void {\n const { topoJSONLayer } = config\n\n if (topoJSONLayer.sources) {\n const featureObject = topoJSONLayer.sources?.objects?.[topoJSONLayer.featureName]\n if (featureObject) {\n const mapSource = maplibreMap.getSource(topoJSONLayer.featureName) as GeoJSONSource\n const featureCollection = feature(topoJSONLayer.sources, featureObject)\n if (mapSource) {\n mapSource.setData(featureCollection)\n } else {\n maplibreMap.addSource(topoJSONLayer.featureName, { type: 'geojson', data: featureCollection })\n }\n }\n }\n\n const fillLayer = maplibreMap.getLayer(`${topoJSONLayer.featureName}-area`)\n if (topoJSONLayer.fillProperty) {\n if (!fillLayer) {\n maplibreMap.addLayer({\n id: `${topoJSONLayer.featureName}-area`,\n type: 'fill',\n source: topoJSONLayer.featureName,\n paint: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'fill-antialias': false,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'fill-opacity': topoJSONLayer.fillOpacity,\n },\n })\n }\n maplibreMap.setPaintProperty(`${topoJSONLayer.featureName}-area`, 'fill-color', [\n 'case',\n ['!', ['has', topoJSONLayer.fillProperty]],\n 'rgba(255, 255, 255, 0)',\n ['get', topoJSONLayer.fillProperty],\n ])\n } else if (fillLayer) maplibreMap.removeLayer(`${topoJSONLayer.featureName}-area`)\n\n const strokeLayer = maplibreMap.getLayer(`${topoJSONLayer.featureName}-stroke`)\n if (topoJSONLayer.strokeProperty) {\n if (!strokeLayer) {\n maplibreMap.addLayer({\n id: `${topoJSONLayer.featureName}-stroke`,\n type: 'line',\n source: topoJSONLayer.featureName,\n paint: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'line-opacity': topoJSONLayer.strokeOpacity,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'line-width': topoJSONLayer.strokeWidth,\n },\n })\n }\n maplibreMap.setPaintProperty(`${topoJSONLayer.featureName}-stroke`, 'line-color', [\n 'case',\n ['!', ['has', topoJSONLayer.strokeProperty]],\n 'rgba(255, 255, 255, 0)',\n ['get', topoJSONLayer.strokeProperty],\n ])\n } else if (strokeLayer) { maplibreMap.removeLayer(`${topoJSONLayer.featureName}-stroke`) }\n}\n\nexport async function setupMap<T extends GenericDataRecord> (mapContainer: HTMLElement, config: LeafletMapConfigInterface<T>): Promise<{\n leaflet: L.Map;\n layer: L.Layer;\n svgOverlay: Selection<SVGSVGElement, unknown, null, undefined>;\n svgGroup: Selection<SVGGElement, unknown, SVGElement, undefined>;\n}> {\n const { style, renderer, topoJSONLayer } = config\n const leaflet = await import('leaflet')\n const L = leaflet.default\n\n if (!style) {\n console.error('Unovis | Leaflet Map: Please provide style settings in the map configuration object')\n return\n }\n\n const leafletMap = L.map(mapContainer, {\n scrollWheelZoom: renderer === LeafletMapRenderer.Raster, // We define custom scroll event for MapboxGL to enabling smooth zooming\n zoomControl: false,\n zoomDelta: renderer === LeafletMapRenderer.Raster ? 1 : 0.5,\n zoomSnap: renderer === LeafletMapRenderer.Raster ? 1 : 0,\n attributionControl: true,\n center: initialMapCenter,\n zoom: initialMapZoom,\n minZoom: Math.sqrt(mapContainer.offsetWidth) / 17,\n maxZoom: 23,\n maxBounds: L.latLngBounds(\n [-75, -290],\n [85, 290]\n ),\n maxBoundsViscosity: 1,\n })\n\n for (const attr of config.attribution) {\n leafletMap.attributionControl.addAttribution(attr)\n }\n\n let layer: L.Layer | (L.Layer & { getMaplibreMap(): Map })\n let maplibreMap: Map = null\n\n switch (renderer) {\n case LeafletMapRenderer.MapLibre:\n // eslint-disable-next-line no-case-declarations\n const maplibre = await import('maplibre-gl')\n // eslint-disable-next-line no-case-declarations\n const { getMaplibreGLLayer } = await import('../renderer/mapboxgl-layer')\n layer = getMaplibreGLLayer(config, L, maplibre.default)\n layer.addTo(leafletMap)\n maplibreMap = (layer as ReturnType<typeof getMaplibreGLLayer>).getMaplibreMap?.()\n\n select(mapContainer).on('wheel', (event: WheelEvent) => {\n event.preventDefault()\n mapboxglWheelEventThrottled(leafletMap, layer as (L.Layer & { getMaplibreMap(): Map }), event)\n })\n break\n case LeafletMapRenderer.Raster:\n layer = L.tileLayer(style as string)\n layer.addTo(leafletMap)\n break\n }\n // leaflet-mapbox-gl has a layer positioning issue on far zoom levels which leads to having wrong\n // map points projection. We constrain the view to prevent that.\n constraintMapView(leafletMap)\n\n if (maplibreMap && topoJSONLayer?.sources) {\n const canvas = maplibreMap.getCanvas()\n const canvasSelection = select(canvas).classed(s.mapboxglCanvas, true)\n const tilePaneSelection = select(leafletMap.getPanes().tilePane)\n\n maplibreMap.on('mousemove', (event) => {\n const layerName = `${topoJSONLayer.featureName}-area`\n const layer = maplibreMap.getLayer(layerName)\n if (!layer) return\n\n const features = maplibreMap.queryRenderedFeatures(event.point, { layers: [layerName] })\n tilePaneSelection.datum(features[0])\n canvasSelection.classed(s.onFeatureHover, Boolean(features[0]))\n })\n\n maplibreMap.on('load', () => {\n updateTopoJson(maplibreMap, config)\n })\n }\n\n const svgOverlay = select(leafletMap.getPanes().overlayPane).append('svg')\n const svgGroup = svgOverlay.append('g')\n\n return {\n leaflet: leafletMap,\n layer,\n svgOverlay,\n svgGroup,\n }\n}\n"],"names":["style","s.mapboxglCanvas","s.onFeatureHover"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map.js","sources":["../../../../src/components/leaflet-map/modules/map.ts"],"sourcesContent":["import type L from 'leaflet'\nimport { select, Selection } from 'd3-selection'\nimport type { GeoJSONSource, Map } from 'maplibre-gl'\nimport { feature } from 'topojson-client'\n\n// Types\nimport { GenericDataRecord } from 'types/data'\n\n// Config\nimport { LeafletMapConfigInterface } from '../config'\n\n// Local Types\n\n// Utils\nimport { constraintMapView, mapboxglWheelEventThrottled } from '../renderer/mapboxgl-utils'\n\n// Styles\nimport * as s from '../style'\nimport { LeafletMapRenderer } from '../types'\n\nexport const initialMapCenter: L.LatLngExpression = [36, 14]\nexport const initialMapZoom = 1.9\n\nexport function updateTopoJson<T extends GenericDataRecord> (maplibreMap: Map, config: LeafletMapConfigInterface<T>): void {\n const { topoJSONLayer } = config\n\n if (topoJSONLayer.sources) {\n const featureObject = topoJSONLayer.sources?.objects?.[topoJSONLayer.featureName]\n if (featureObject) {\n const mapSource = maplibreMap.getSource(topoJSONLayer.featureName) as GeoJSONSource\n const featureCollection = feature(topoJSONLayer.sources, featureObject)\n if (mapSource) {\n mapSource.setData(featureCollection)\n } else {\n maplibreMap.addSource(topoJSONLayer.featureName, { type: 'geojson', data: featureCollection })\n }\n }\n }\n\n const fillLayer = maplibreMap.getLayer(`${topoJSONLayer.featureName}-area`)\n if (topoJSONLayer.fillProperty) {\n if (!fillLayer) {\n maplibreMap.addLayer({\n id: `${topoJSONLayer.featureName}-area`,\n type: 'fill',\n source: topoJSONLayer.featureName,\n paint: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'fill-antialias': false,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'fill-opacity': topoJSONLayer.fillOpacity,\n },\n })\n }\n maplibreMap.setPaintProperty(`${topoJSONLayer.featureName}-area`, 'fill-color', [\n 'case',\n ['!', ['has', topoJSONLayer.fillProperty]],\n 'rgba(255, 255, 255, 0)',\n ['get', topoJSONLayer.fillProperty],\n ])\n } else if (fillLayer) maplibreMap.removeLayer(`${topoJSONLayer.featureName}-area`)\n\n const strokeLayer = maplibreMap.getLayer(`${topoJSONLayer.featureName}-stroke`)\n if (topoJSONLayer.strokeProperty) {\n if (!strokeLayer) {\n maplibreMap.addLayer({\n id: `${topoJSONLayer.featureName}-stroke`,\n type: 'line',\n source: topoJSONLayer.featureName,\n paint: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'line-opacity': topoJSONLayer.strokeOpacity,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'line-width': topoJSONLayer.strokeWidth,\n },\n })\n }\n maplibreMap.setPaintProperty(`${topoJSONLayer.featureName}-stroke`, 'line-color', [\n 'case',\n ['!', ['has', topoJSONLayer.strokeProperty]],\n 'rgba(255, 255, 255, 0)',\n ['get', topoJSONLayer.strokeProperty],\n ])\n } else if (strokeLayer) { maplibreMap.removeLayer(`${topoJSONLayer.featureName}-stroke`) }\n}\n\nexport async function setupMap<T extends GenericDataRecord> (mapContainer: HTMLElement, config: LeafletMapConfigInterface<T>): Promise<{\n leaflet: L.Map;\n layer: L.Layer;\n svgOverlay: Selection<SVGSVGElement, unknown, null, undefined>;\n svgGroup: Selection<SVGGElement, unknown, SVGElement, undefined>;\n}> {\n const { style, renderer, topoJSONLayer } = config\n const leaflet = await import('leaflet')\n const L = leaflet.default\n\n if (!style) {\n console.error('Unovis | Leaflet Map: Please provide style settings in the map configuration object')\n return\n }\n\n const leafletMap = L.map(mapContainer, {\n scrollWheelZoom: renderer === LeafletMapRenderer.Raster, // We define custom scroll event for MapboxGL to enabling smooth zooming\n zoomControl: false,\n zoomDelta: renderer === LeafletMapRenderer.Raster ? 1 : 0.5,\n zoomSnap: renderer === LeafletMapRenderer.Raster ? 1 : 0,\n attributionControl: true,\n center: initialMapCenter,\n zoom: initialMapZoom,\n minZoom: Math.sqrt(mapContainer.offsetWidth) / 17,\n maxZoom: 23,\n maxBounds: L.latLngBounds(\n [-75, -290],\n [85, 290]\n ),\n maxBoundsViscosity: 1,\n })\n\n for (const attr of config.attribution) {\n leafletMap.attributionControl.addAttribution(attr)\n }\n\n let layer: L.Layer | (L.Layer & { getMaplibreMap(): Map })\n let maplibreMap: Map = null\n\n switch (renderer) {\n case LeafletMapRenderer.MapLibre:\n // eslint-disable-next-line no-case-declarations\n const maplibre = await import('maplibre-gl')\n // eslint-disable-next-line no-case-declarations\n const { getMaplibreGLLayer } = await import('../renderer/mapboxgl-layer')\n layer = getMaplibreGLLayer(config, L, maplibre.default)\n layer.addTo(leafletMap)\n maplibreMap = (layer as ReturnType<typeof getMaplibreGLLayer>).getMaplibreMap?.()\n\n select(mapContainer).on('wheel', (event: WheelEvent) => {\n event.preventDefault()\n mapboxglWheelEventThrottled(leafletMap, layer as (L.Layer & { getMaplibreMap(): Map }), event)\n })\n break\n case LeafletMapRenderer.Raster:\n layer = L.tileLayer(style as string)\n layer.addTo(leafletMap)\n break\n }\n // leaflet-mapbox-gl has a layer positioning issue on far zoom levels which leads to having wrong\n // map points projection. We constrain the view to prevent that.\n constraintMapView(leafletMap)\n\n if (maplibreMap && topoJSONLayer?.sources) {\n const canvas = maplibreMap.getCanvas()\n const canvasSelection = select(canvas).classed(s.mapboxglCanvas, true)\n const tilePaneSelection = select(leafletMap.getPanes().tilePane)\n\n maplibreMap.on('mousemove', (event) => {\n const layerName = `${topoJSONLayer.featureName}-area`\n const layer = maplibreMap.getLayer(layerName)\n if (!layer) return\n\n const features = maplibreMap.queryRenderedFeatures(event.point, { layers: [layerName] })\n tilePaneSelection.datum(features[0])\n canvasSelection.classed(s.onFeatureHover, Boolean(features[0]))\n })\n\n maplibreMap.on('load', () => {\n updateTopoJson(maplibreMap, config)\n })\n }\n\n const svgOverlay = select(leafletMap.getPanes().overlayPane).append('svg')\n const svgGroup = svgOverlay.append('g')\n\n return {\n leaflet: leafletMap,\n layer,\n svgOverlay,\n svgGroup,\n }\n}\n"],"names":["s.mapboxglCanvas","s.onFeatureHover"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-maplibre-gl.js","sources":["../../../../src/components/leaflet-map/renderer/leaflet-maplibre-gl.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function MaplibreGLLayer (leaflet, maplibre, options) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const Layer = leaflet.Layer.extend({\n options: {\n updateInterval: 32,\n // How much to extend the overlay view (relative to map size)\n // e.g. 0.1 would be 10% of map view in each direction\n padding: 0.1,\n // whether or not to register the mouse and keyboard\n // events on the maplibre overlay\n interactive: false,\n // set the tilepane as the default pane to draw gl tiles\n pane: 'tilePane',\n },\n\n initialize: function (options) {\n leaflet.setOptions(this, options)\n\n // setup throttling the update event when panning\n this._throttledUpdate = leaflet.Util.throttle(this._update, this.options.updateInterval, this)\n },\n\n onAdd: function (map) {\n if (!this._container) {\n this._initContainer()\n }\n\n const paneName = this.getPaneName()\n map.getPane(paneName).appendChild(this._container)\n\n this._initGL()\n\n this._offset = this._map.containerPointToLayerPoint([0, 0])\n\n // work around https://github.com/mapbox/mapbox-gl-leaflet/issues/47\n if (map.options.zoomAnimation) {\n leaflet.DomEvent.on(map._proxy, leaflet.DomUtil.TRANSITION_END, this._transitionEnd, this)\n }\n },\n\n onRemove: function (map) {\n if (this._map._proxy && this._map.options.zoomAnimation) {\n leaflet.DomEvent.off(this._map._proxy, leaflet.DomUtil.TRANSITION_END, this._transitionEnd, this)\n }\n const paneName = this.getPaneName()\n map.getPane(paneName).removeChild(this._container)\n\n this._glMap.remove()\n this._glMap = null\n },\n\n getEvents: function () {\n return {\n move: this._throttledUpdate, // sensibly throttle updating while panning\n zoomanim: this._animateZoom, // applys the zoom animation to the <canvas>\n zoom: this._pinchZoom, // animate every zoom event for smoother pinch-zooming\n zoomstart: this._zoomStart, // flag starting a zoom to disable panning\n zoomend: this._zoomEnd,\n resize: this._resize,\n }\n },\n\n getMaplibreMap: function () {\n return this._glMap\n },\n\n getCanvas: function () {\n return this._glMap.getCanvas()\n },\n\n getSize: function () {\n return this._map.getSize().multiplyBy(1 + this.options.padding * 2)\n },\n\n getBounds: function () {\n const halfSize = this.getSize().multiplyBy(0.5)\n const center = this._map.latLngToContainerPoint(this._map.getCenter())\n return leaflet.latLngBounds(\n this._map.containerPointToLatLng(center.subtract(halfSize)),\n this._map.containerPointToLatLng(center.add(halfSize))\n )\n },\n\n getContainer: function () {\n return this._container\n },\n\n // returns the pane name set in options if it is a valid pane, defaults to tilePane\n getPaneName: function () {\n return this._map.getPane(this.options.pane) ? this.options.pane : 'tilePane'\n },\n\n _initContainer: function () {\n const container = this._container = leaflet.DomUtil.create('div', 'leaflet-gl-layer')\n\n const size = this.getSize()\n const offset = this._map.getSize().multiplyBy(this.options.padding)\n container.style.width = `${size.x}px`\n container.style.height = `${size.y}px`\n\n const topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset)\n\n leaflet.DomUtil.setPosition(container, topLeft)\n },\n\n _initGL: function () {\n const center = this._map.getCenter()\n\n const options = leaflet.extend({}, this.options, {\n container: this._container,\n center: [center.lng, center.lat],\n zoom: this._map.getZoom() - 1,\n attributionControl: false,\n })\n\n this._glMap = new maplibre.Map(options)\n\n // allow GL base map to pan beyond min/max latitudes\n this._glMap.transform.latRange = null\n this._glMap.transform.maxValidLatitude = Infinity\n\n this._transformGL(this._glMap)\n\n if (this._glMap._canvas.canvas) {\n // older versions of mapbox-gl surfaced the canvas differently\n this._glMap._actualCanvas = this._glMap._canvas.canvas\n } else {\n this._glMap._actualCanvas = this._glMap._canvas\n }\n\n // treat child <canvas> element like leaflet.ImageOverlay\n const canvas = this._glMap._actualCanvas\n leaflet.DomUtil.addClass(canvas, 'leaflet-image-layer')\n leaflet.DomUtil.addClass(canvas, 'leaflet-zoom-animated')\n if (this.options.interactive) {\n leaflet.DomUtil.addClass(canvas, 'leaflet-interactive')\n }\n if (this.options.className) {\n leaflet.DomUtil.addClass(canvas, this.options.className)\n }\n },\n\n _update: function (e) {\n // update the offset so we can correct for it later when we zoom\n this._offset = this._map.containerPointToLayerPoint([0, 0])\n\n if (this._zooming) {\n return\n }\n\n const size = this.getSize()\n const container = this._container\n const gl = this._glMap\n const offset = this._map.getSize().multiplyBy(this.options.padding)\n const topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset)\n\n leaflet.DomUtil.setPosition(container, topLeft)\n\n this._transformGL(gl)\n\n if (gl.transform.width !== size.x || gl.transform.height !== size.y) {\n container.style.width = `${size.x}px`\n container.style.height = `${size.y}px`\n if (gl._resize !== null && gl._resize !== undefined) {\n gl._resize()\n } else {\n gl.resize()\n }\n } else {\n // older versions of mapbox-gl surfaced update publicly\n if (gl._update !== null && gl._update !== undefined) {\n gl._update()\n } else {\n gl.update()\n }\n }\n },\n\n _transformGL: function (gl) {\n const center = this._map.getCenter()\n\n // gl.setView([center.lat, center.lng], this._map.getZoom() - 1, 0);\n // calling setView directly causes sync issues because it uses requestAnimFrame\n\n const tr = gl.transform\n tr.center = maplibre.LngLat.convert([center.lng, center.lat])\n tr.zoom = this._map.getZoom() - 1\n },\n\n // update the map constantly during a pinch zoom\n _pinchZoom: function (e) {\n this._glMap.jumpTo({\n zoom: this._map.getZoom() - 1,\n center: this._map.getCenter(),\n })\n },\n\n // borrowed from leaflet.ImageOverlay\n // https://github.com/Leaflet/Leaflet/blob/master/src/layer/ImageOverlay.js#L139-L144\n _animateZoom: function (e) {\n const scale = this._map.getZoomScale(e.zoom)\n const padding = this._map.getSize().multiplyBy(this.options.padding * scale)\n const viewHalf = this.getSize()._divideBy(2)\n // corrections for padding (scaled), adapted from\n // https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L1490-L1508\n const topLeft = this._map.project(e.center, e.zoom)\n ._subtract(viewHalf)\n ._add(this._map._getMapPanePos()\n .add(padding))._round()\n const offset = this._map.project(this._map.getBounds().getNorthWest(), e.zoom)\n ._subtract(topLeft)\n\n leaflet.DomUtil.setTransform(\n this._glMap._actualCanvas,\n offset.subtract(this._offset),\n scale\n )\n },\n\n _zoomStart: function (e) {\n this._zooming = true\n },\n\n _zoomEnd: function () {\n const scale = this._map.getZoomScale(this._map.getZoom())\n\n leaflet.DomUtil.setTransform(\n this._glMap._actualCanvas,\n // https://github.com/mapbox/mapbox-gl-leaflet/pull/130\n null,\n scale\n )\n\n this._zooming = false\n\n this._update()\n },\n\n _transitionEnd: function (e) {\n leaflet.Util.requestAnimFrame(function () {\n const zoom = this._map.getZoom()\n const center = this._map.getCenter()\n const offset = this._map.latLngToContainerPoint(\n this._map.getBounds().getNorthWest()\n )\n\n // reset the scale and offset\n leaflet.DomUtil.setTransform(this._glMap._actualCanvas, offset, 1)\n\n // enable panning once the gl map is ready again\n this._glMap.once('moveend', leaflet.Util.bind(function () {\n this._zoomEnd()\n }, this))\n\n // update the map position\n this._glMap.jumpTo({\n center: center,\n zoom: zoom - 1,\n })\n }, this)\n },\n\n _resize: function (e) {\n this._transitionEnd(e)\n },\n })\n\n return new Layer(options)\n}\n\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-maplibre-gl.js","sources":["../../../../src/components/leaflet-map/renderer/leaflet-maplibre-gl.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function MaplibreGLLayer (leaflet, maplibre, options) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const Layer = leaflet.Layer.extend({\n options: {\n updateInterval: 32,\n // How much to extend the overlay view (relative to map size)\n // e.g. 0.1 would be 10% of map view in each direction\n padding: 0.1,\n // whether or not to register the mouse and keyboard\n // events on the maplibre overlay\n interactive: false,\n // set the tilepane as the default pane to draw gl tiles\n pane: 'tilePane',\n },\n\n initialize: function (options) {\n leaflet.setOptions(this, options)\n\n // setup throttling the update event when panning\n this._throttledUpdate = leaflet.Util.throttle(this._update, this.options.updateInterval, this)\n },\n\n onAdd: function (map) {\n if (!this._container) {\n this._initContainer()\n }\n\n const paneName = this.getPaneName()\n map.getPane(paneName).appendChild(this._container)\n\n this._initGL()\n\n this._offset = this._map.containerPointToLayerPoint([0, 0])\n\n // work around https://github.com/mapbox/mapbox-gl-leaflet/issues/47\n if (map.options.zoomAnimation) {\n leaflet.DomEvent.on(map._proxy, leaflet.DomUtil.TRANSITION_END, this._transitionEnd, this)\n }\n },\n\n onRemove: function (map) {\n if (this._map._proxy && this._map.options.zoomAnimation) {\n leaflet.DomEvent.off(this._map._proxy, leaflet.DomUtil.TRANSITION_END, this._transitionEnd, this)\n }\n const paneName = this.getPaneName()\n map.getPane(paneName).removeChild(this._container)\n\n this._glMap.remove()\n this._glMap = null\n },\n\n getEvents: function () {\n return {\n move: this._throttledUpdate, // sensibly throttle updating while panning\n zoomanim: this._animateZoom, // applys the zoom animation to the <canvas>\n zoom: this._pinchZoom, // animate every zoom event for smoother pinch-zooming\n zoomstart: this._zoomStart, // flag starting a zoom to disable panning\n zoomend: this._zoomEnd,\n resize: this._resize,\n }\n },\n\n getMaplibreMap: function () {\n return this._glMap\n },\n\n getCanvas: function () {\n return this._glMap.getCanvas()\n },\n\n getSize: function () {\n return this._map.getSize().multiplyBy(1 + this.options.padding * 2)\n },\n\n getBounds: function () {\n const halfSize = this.getSize().multiplyBy(0.5)\n const center = this._map.latLngToContainerPoint(this._map.getCenter())\n return leaflet.latLngBounds(\n this._map.containerPointToLatLng(center.subtract(halfSize)),\n this._map.containerPointToLatLng(center.add(halfSize))\n )\n },\n\n getContainer: function () {\n return this._container\n },\n\n // returns the pane name set in options if it is a valid pane, defaults to tilePane\n getPaneName: function () {\n return this._map.getPane(this.options.pane) ? this.options.pane : 'tilePane'\n },\n\n _initContainer: function () {\n const container = this._container = leaflet.DomUtil.create('div', 'leaflet-gl-layer')\n\n const size = this.getSize()\n const offset = this._map.getSize().multiplyBy(this.options.padding)\n container.style.width = `${size.x}px`\n container.style.height = `${size.y}px`\n\n const topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset)\n\n leaflet.DomUtil.setPosition(container, topLeft)\n },\n\n _initGL: function () {\n const center = this._map.getCenter()\n\n const options = leaflet.extend({}, this.options, {\n container: this._container,\n center: [center.lng, center.lat],\n zoom: this._map.getZoom() - 1,\n attributionControl: false,\n })\n\n this._glMap = new maplibre.Map(options)\n\n // allow GL base map to pan beyond min/max latitudes\n this._glMap.transform.latRange = null\n this._glMap.transform.maxValidLatitude = Infinity\n\n this._transformGL(this._glMap)\n\n if (this._glMap._canvas.canvas) {\n // older versions of mapbox-gl surfaced the canvas differently\n this._glMap._actualCanvas = this._glMap._canvas.canvas\n } else {\n this._glMap._actualCanvas = this._glMap._canvas\n }\n\n // treat child <canvas> element like leaflet.ImageOverlay\n const canvas = this._glMap._actualCanvas\n leaflet.DomUtil.addClass(canvas, 'leaflet-image-layer')\n leaflet.DomUtil.addClass(canvas, 'leaflet-zoom-animated')\n if (this.options.interactive) {\n leaflet.DomUtil.addClass(canvas, 'leaflet-interactive')\n }\n if (this.options.className) {\n leaflet.DomUtil.addClass(canvas, this.options.className)\n }\n },\n\n _update: function (e) {\n // update the offset so we can correct for it later when we zoom\n this._offset = this._map.containerPointToLayerPoint([0, 0])\n\n if (this._zooming) {\n return\n }\n\n const size = this.getSize()\n const container = this._container\n const gl = this._glMap\n const offset = this._map.getSize().multiplyBy(this.options.padding)\n const topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset)\n\n leaflet.DomUtil.setPosition(container, topLeft)\n\n this._transformGL(gl)\n\n if (gl.transform.width !== size.x || gl.transform.height !== size.y) {\n container.style.width = `${size.x}px`\n container.style.height = `${size.y}px`\n if (gl._resize !== null && gl._resize !== undefined) {\n gl._resize()\n } else {\n gl.resize()\n }\n } else {\n // older versions of mapbox-gl surfaced update publicly\n if (gl._update !== null && gl._update !== undefined) {\n gl._update()\n } else {\n gl.update()\n }\n }\n },\n\n _transformGL: function (gl) {\n const center = this._map.getCenter()\n\n // gl.setView([center.lat, center.lng], this._map.getZoom() - 1, 0);\n // calling setView directly causes sync issues because it uses requestAnimFrame\n\n const tr = gl.transform\n tr.center = maplibre.LngLat.convert([center.lng, center.lat])\n tr.zoom = this._map.getZoom() - 1\n },\n\n // update the map constantly during a pinch zoom\n _pinchZoom: function (e) {\n this._glMap.jumpTo({\n zoom: this._map.getZoom() - 1,\n center: this._map.getCenter(),\n })\n },\n\n // borrowed from leaflet.ImageOverlay\n // https://github.com/Leaflet/Leaflet/blob/master/src/layer/ImageOverlay.js#L139-L144\n _animateZoom: function (e) {\n const scale = this._map.getZoomScale(e.zoom)\n const padding = this._map.getSize().multiplyBy(this.options.padding * scale)\n const viewHalf = this.getSize()._divideBy(2)\n // corrections for padding (scaled), adapted from\n // https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L1490-L1508\n const topLeft = this._map.project(e.center, e.zoom)\n ._subtract(viewHalf)\n ._add(this._map._getMapPanePos()\n .add(padding))._round()\n const offset = this._map.project(this._map.getBounds().getNorthWest(), e.zoom)\n ._subtract(topLeft)\n\n leaflet.DomUtil.setTransform(\n this._glMap._actualCanvas,\n offset.subtract(this._offset),\n scale\n )\n },\n\n _zoomStart: function (e) {\n this._zooming = true\n },\n\n _zoomEnd: function () {\n const scale = this._map.getZoomScale(this._map.getZoom())\n\n leaflet.DomUtil.setTransform(\n this._glMap._actualCanvas,\n // https://github.com/mapbox/mapbox-gl-leaflet/pull/130\n null,\n scale\n )\n\n this._zooming = false\n\n this._update()\n },\n\n _transitionEnd: function (e) {\n leaflet.Util.requestAnimFrame(function () {\n const zoom = this._map.getZoom()\n const center = this._map.getCenter()\n const offset = this._map.latLngToContainerPoint(\n this._map.getBounds().getNorthWest()\n )\n\n // reset the scale and offset\n leaflet.DomUtil.setTransform(this._glMap._actualCanvas, offset, 1)\n\n // enable panning once the gl map is ready again\n this._glMap.once('moveend', leaflet.Util.bind(function () {\n this._zoomEnd()\n }, this))\n\n // update the map position\n this._glMap.jumpTo({\n center: center,\n zoom: zoom - 1,\n })\n }, this)\n },\n\n _resize: function (e) {\n this._transitionEnd(e)\n },\n })\n\n return new Layer(options)\n}\n\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/components/leaflet-map/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\n// Utils\nimport { getCssVarNames, injectGlobalCssVariables } from 'utils/style'\n\n// Inject Leaflet global style\n// eslint-disable-next-line\nimport leafletCSS from './leaflet.css'\ninjectGlobal(leafletCSS)\n\nconst cssVarDefaults = {\n '--vis-map-container-background-color': '#dfe5eb',\n /* Undefined by default to allow proper fallback to var(--vis-font-family) */\n '--vis-map-label-font-family': undefined as undefined,\n\n '--vis-map-point-default-fill-color': '#B9BEC3',\n '--vis-map-point-ring-fill-color': '#ffffff',\n '--vis-map-point-default-stroke-color': '#959da3',\n '--vis-map-point-default-stroke-width': '0px',\n '--vis-map-point-default-cursor': 'default',\n\n '--vis-map-cluster-default-fill-color': '#fff',\n '--vis-map-cluster-default-stroke-color': '#B9BEC3',\n '--vis-map-cluster-default-stroke-width': '1.5px',\n '--vis-map-cluster-donut-fill-color': '#959da3',\n\n '--vis-map-cluster-inner-label-text-color-dark': '#5b5f6d',\n '--vis-map-cluster-inner-label-text-color-light': '#fff',\n\n '--vis-map-point-inner-label-text-color-dark': '#5b5f6d',\n '--vis-map-point-inner-label-text-color-light': '#fff',\n\n '--vis-map-point-bottom-label-text-color': '#5b5f6d',\n '--vis-map-point-bottom-label-font-size': '10px',\n\n '--vis-map-cluster-expanded-background-fill-color': '#fff',\n\n /* Dark Theme */\n '--vis-dark-map-container-background-color': '#dfe5eb',\n '--vis-dark-map-point-default-fill-color': '#B9BEC3',\n '--vis-dark-map-point-default-stroke-color': '#959da3',\n '--vis-dark-map-point-ring-fill-color': '#5b5f6d',\n\n '--vis-dark-map-cluster-default-fill-color': '#5b5f6d',\n '--vis-dark-map-cluster-default-stroke-color': '#B9BEC3',\n '--vis-dark-map-cluster-donut-fill-color': '#959da3',\n\n '--vis-dark-map-cluster-inner-label-text-color-dark': '#5b5f6d',\n '--vis-dark-map-cluster-inner-label-text-color-light': '#fff',\n\n '--vis-dark-map-point-inner-label-text-color-dark': '#5b5f6d',\n '--vis-dark-map-point-inner-label-text-color-light': '#fff',\n\n '--vis-dark-map-point-bottom-label-text-color': '#5b5f6d',\n\n '--vis-dark-map-cluster-expanded-background-fill-color': '#fff',\n}\n\nexport const root = css`\n label: leaflet-map-component;\n\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: var(--vis-map-container-background-color);\n\n canvas {\n pointer-events: all;\n }\n`\n\nexport const variables = getCssVarNames(cssVarDefaults)\ninjectGlobalCssVariables(cssVarDefaults, root)\n\nexport const background = `${root} canvas`\n\nexport const points = css`\n label: g-points;\n`\n\nexport const point = css`\n label: g-point;\n`\n\nexport const pointPath = css`\n label: point-path;\n\n stroke-opacity: 1;\n fill-opacity: 1.0;\n fill: var(${variables.mapPointDefaultFillColor});\n stroke: var(${variables.mapPointDefaultStrokeColor});\n stroke-width: var(${variables.mapPointDefaultStrokeWidth});\n pointer-events: fill !important;\n transition: .2s stroke-width, .3s transform;\n cursor: var(${variables.mapPointDefaultCursor});\n\n &:hover {\n stroke-width: 2;\n fill-opacity: 1;\n animation: none;\n transform: scale(1.1);\n }\n`\n\nexport const pointPathRing = css`\n label: point-path-ring;\n fill: var(${variables.mapPointRingFillColor});\n`\n\nexport const pointPathCluster = css`\n label: point-path-cluster;\n fill-opacity: 0.9;\n stroke: none;\n animation: none;\n fill: var(${variables.mapClusterDefaultFillColor});\n stroke: var(${variables.mapClusterDefaultStrokeColor});\n stroke-width: var(${variables.mapClusterDefaultStrokeWidth});\n`\n\nexport const pointSelectionRing = css`\n label: point-selection-ring;\n stroke: var(${variables.mapPointDefaultFillColor});\n`\n\nexport const pointSelection = css`\n label: point-selection;\n\n opacity: 0;\n transform: scale(1);\n\n &.active {\n transition: all 400ms cubic-bezier(0.230, 1.000, 0.320, 1.000);\n opacity: 1;\n transform: scale(1.25);\n }\n`\n\nexport const innerLabel = css`\n label: inner-label;\n\n text-anchor: middle;\n fill: var(${variables.mapPointInnerLabelTextColorDark});\n font-family: var(${variables.mapLabelFontFamily}, var(--vis-font-family));\n pointer-events: none;\n font-weight: 600;\n`\n\nexport const innerLabelCluster = css`\n label: inner-label-cluster;\n fill: var(${variables.mapPointInnerLabelTextColorDark});\n`\n\nexport const bottomLabel = css`\n label: bottom-label;\n\n text-anchor: middle;\n fill: var(${variables.mapPointBottomLabelTextColor});\n font-family: var(${variables.mapLabelFontFamily}, var(--vis-font-family));\n pointer-events: none;\n font-weight: 600;\n`\n\nexport const donutCluster = css`\n label: donut-cluster;\n\n transform: scale(1);\n transition: .3s transform;\n path {\n fill: var(${variables.mapClusterDonutFillColor});\n stroke-width: 0.5;\n }\n\n &:hover {\n transform: scale(1.1);\n }\n`\n\nexport const svgOverlay = css`\n label: svg-overlay;\n position: absolute;\n pointer-events: none;\n`\n\nexport const backgroundRect = css`\n label: background-rect;\n\n opacity: 0;\n`\n\nexport const clusterBackground = css`\n label: cluster-background;\n\n fill: var(${variables.mapClusterExpandedBackgroundFillColor});\n opacity: 0.6;\n visibility: hidden;\n\n &.active {\n visibility: visible;\n }\n`\n\nexport const onFeatureHover = css`\n label: feature-hovered;\n`\n\nexport const mapboxglCanvas = css`\n pointer-events: all;\n cursor: grab;\n\n &${`.${onFeatureHover}`} {\n cursor: default;\n }\n`\n\nexport const map = css`\n label: map;\n`\n"],"names":["leafletCSS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/leaflet-map/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\n// Utils\nimport { getCssVarNames, injectGlobalCssVariables } from 'utils/style'\n\n// Inject Leaflet global style\n// eslint-disable-next-line\nimport leafletCSS from './leaflet.css'\ninjectGlobal(leafletCSS)\n\nconst cssVarDefaults = {\n '--vis-map-container-background-color': '#dfe5eb',\n /* Undefined by default to allow proper fallback to var(--vis-font-family) */\n '--vis-map-label-font-family': undefined as undefined,\n\n '--vis-map-point-default-fill-color': '#B9BEC3',\n '--vis-map-point-ring-fill-color': '#ffffff',\n '--vis-map-point-default-stroke-color': '#959da3',\n '--vis-map-point-default-stroke-width': '0px',\n '--vis-map-point-default-cursor': 'default',\n\n '--vis-map-cluster-default-fill-color': '#fff',\n '--vis-map-cluster-default-stroke-color': '#B9BEC3',\n '--vis-map-cluster-default-stroke-width': '1.5px',\n '--vis-map-cluster-donut-fill-color': '#959da3',\n\n '--vis-map-cluster-inner-label-text-color-dark': '#5b5f6d',\n '--vis-map-cluster-inner-label-text-color-light': '#fff',\n\n '--vis-map-point-inner-label-text-color-dark': '#5b5f6d',\n '--vis-map-point-inner-label-text-color-light': '#fff',\n\n '--vis-map-point-bottom-label-text-color': '#5b5f6d',\n '--vis-map-point-bottom-label-font-size': '10px',\n\n '--vis-map-cluster-expanded-background-fill-color': '#fff',\n\n /* Dark Theme */\n '--vis-dark-map-container-background-color': '#dfe5eb',\n '--vis-dark-map-point-default-fill-color': '#B9BEC3',\n '--vis-dark-map-point-default-stroke-color': '#959da3',\n '--vis-dark-map-point-ring-fill-color': '#5b5f6d',\n\n '--vis-dark-map-cluster-default-fill-color': '#5b5f6d',\n '--vis-dark-map-cluster-default-stroke-color': '#B9BEC3',\n '--vis-dark-map-cluster-donut-fill-color': '#959da3',\n\n '--vis-dark-map-cluster-inner-label-text-color-dark': '#5b5f6d',\n '--vis-dark-map-cluster-inner-label-text-color-light': '#fff',\n\n '--vis-dark-map-point-inner-label-text-color-dark': '#5b5f6d',\n '--vis-dark-map-point-inner-label-text-color-light': '#fff',\n\n '--vis-dark-map-point-bottom-label-text-color': '#5b5f6d',\n\n '--vis-dark-map-cluster-expanded-background-fill-color': '#fff',\n}\n\nexport const root = css`\n label: leaflet-map-component;\n\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: var(--vis-map-container-background-color);\n\n canvas {\n pointer-events: all;\n }\n`\n\nexport const variables = getCssVarNames(cssVarDefaults)\ninjectGlobalCssVariables(cssVarDefaults, root)\n\nexport const background = `${root} canvas`\n\nexport const points = css`\n label: g-points;\n`\n\nexport const point = css`\n label: g-point;\n`\n\nexport const pointPath = css`\n label: point-path;\n\n stroke-opacity: 1;\n fill-opacity: 1.0;\n fill: var(${variables.mapPointDefaultFillColor});\n stroke: var(${variables.mapPointDefaultStrokeColor});\n stroke-width: var(${variables.mapPointDefaultStrokeWidth});\n pointer-events: fill !important;\n transition: .2s stroke-width, .3s transform;\n cursor: var(${variables.mapPointDefaultCursor});\n\n &:hover {\n stroke-width: 2;\n fill-opacity: 1;\n animation: none;\n transform: scale(1.1);\n }\n`\n\nexport const pointPathRing = css`\n label: point-path-ring;\n fill: var(${variables.mapPointRingFillColor});\n`\n\nexport const pointPathCluster = css`\n label: point-path-cluster;\n fill-opacity: 0.9;\n stroke: none;\n animation: none;\n fill: var(${variables.mapClusterDefaultFillColor});\n stroke: var(${variables.mapClusterDefaultStrokeColor});\n stroke-width: var(${variables.mapClusterDefaultStrokeWidth});\n`\n\nexport const pointSelectionRing = css`\n label: point-selection-ring;\n stroke: var(${variables.mapPointDefaultFillColor});\n`\n\nexport const pointSelection = css`\n label: point-selection;\n\n opacity: 0;\n transform: scale(1);\n\n &.active {\n transition: all 400ms cubic-bezier(0.230, 1.000, 0.320, 1.000);\n opacity: 1;\n transform: scale(1.25);\n }\n`\n\nexport const innerLabel = css`\n label: inner-label;\n\n text-anchor: middle;\n fill: var(${variables.mapPointInnerLabelTextColorDark});\n font-family: var(${variables.mapLabelFontFamily}, var(--vis-font-family));\n pointer-events: none;\n font-weight: 600;\n`\n\nexport const innerLabelCluster = css`\n label: inner-label-cluster;\n fill: var(${variables.mapPointInnerLabelTextColorDark});\n`\n\nexport const bottomLabel = css`\n label: bottom-label;\n\n text-anchor: middle;\n fill: var(${variables.mapPointBottomLabelTextColor});\n font-family: var(${variables.mapLabelFontFamily}, var(--vis-font-family));\n pointer-events: none;\n font-weight: 600;\n`\n\nexport const donutCluster = css`\n label: donut-cluster;\n\n transform: scale(1);\n transition: .3s transform;\n path {\n fill: var(${variables.mapClusterDonutFillColor});\n stroke-width: 0.5;\n }\n\n &:hover {\n transform: scale(1.1);\n }\n`\n\nexport const svgOverlay = css`\n label: svg-overlay;\n position: absolute;\n pointer-events: none;\n`\n\nexport const backgroundRect = css`\n label: background-rect;\n\n opacity: 0;\n`\n\nexport const clusterBackground = css`\n label: cluster-background;\n\n fill: var(${variables.mapClusterExpandedBackgroundFillColor});\n opacity: 0.6;\n visibility: hidden;\n\n &.active {\n visibility: visible;\n }\n`\n\nexport const onFeatureHover = css`\n label: feature-hovered;\n`\n\nexport const mapboxglCanvas = css`\n pointer-events: all;\n cursor: grab;\n\n &${`.${onFeatureHover}`} {\n cursor: default;\n }\n`\n\nexport const map = css`\n label: map;\n`\n"],"names":["leafletCSS"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/components/line/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const globalStyles = injectGlobal`\n :root {\n --vis-line-cursor: default;\n --vis-line-stroke-dasharray: none;\n --vis-line-stroke-dashoffset: 0;\n }\n`\n\nexport const root = css`\n label: line-component;\n`\n\nexport const line = css`\n label: line;\n transition: opacity 200ms;\n cursor: var(--vis-line-cursor);\n`\n\nexport const linePath = css`\n label: linePath;\n fill: none;\n stroke-dasharray: var(--vis-line-stroke-dasharray);\n stroke-dashoffset: var(--vis-line-stroke-dashoffset);\n`\n\nexport const lineSelectionHelper = css`\n label: lineSelectionHelper;\n fill: none;\n stroke: rgba(0, 0, 0, 0);\n stroke-width: 8px;\n`\n\nexport const dim = css`\n opacity: 0.2;\n`\n"],"names":[],"mappings":";;AAEO,MAAM,YAAY,GAAG,YAAY,CAAA;;;;;;EAMvC;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;EAEtB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;;;EAItB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;EAK1B;AAEM,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;EAKrC;AAEM,MAAM,GAAG,GAAG,GAAG,CAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/line/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const globalStyles = injectGlobal`\n :root {\n --vis-line-cursor: default;\n --vis-line-stroke-dasharray: none;\n --vis-line-stroke-dashoffset: 0;\n }\n`\n\nexport const root = css`\n label: line-component;\n`\n\nexport const line = css`\n label: line;\n transition: opacity 200ms;\n cursor: var(--vis-line-cursor);\n`\n\nexport const linePath = css`\n label: linePath;\n fill: none;\n stroke-dasharray: var(--vis-line-stroke-dasharray);\n stroke-dashoffset: var(--vis-line-stroke-dashoffset);\n`\n\nexport const lineSelectionHelper = css`\n label: lineSelectionHelper;\n fill: none;\n stroke: rgba(0, 0, 0, 0);\n stroke-width: 8px;\n`\n\nexport const dim = css`\n opacity: 0.2;\n`\n"],"names":[],"mappings":";;AAEO,MAAM,YAAY,GAAG,YAAY,CAAA,CAAA;;;;;;EAMvC;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;;;EAItB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA,CAAA;;;;;EAK1B;AAEM,MAAM,mBAAmB,GAAG,GAAG,CAAA,CAAA;;;;;EAKrC;AAEM,MAAM,GAAG,GAAG,GAAG,CAAA,CAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/components/nested-donut/style.ts"],"sourcesContent":["import { css } from '@emotion/css'\n\n// Utils\nimport { getCssVarNames, injectGlobalCssVariables } from 'utils/style'\n\nconst cssVarDefaults = {\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n '--vis-nested-donut-font-family': undefined as undefined,\n\n // Background\n '--vis-nested-donut-background-color': '#E7E9F3',\n\n // Central label\n '--vis-nested-donut-central-label-font-size': '16px',\n '--vis-nested-donut-central-label-font-weight': 600,\n '--vis-nested-donut-central-label-text-color': '#5b5f6d',\n\n // Central sub-label\n '--vis-nested-donut-central-sublabel-font-size': '12px;',\n '--vis-nested-donut-central-sublabel-font-weight': 500,\n '--vis-nested-donut-central-sublabel-text-color': '#5b5f6d',\n\n // Segments\n '--vis-nested-donut-segment-stroke-width': '1px',\n '--vis-nested-donut-segment-stroke-color': 'var(--vis-nested-donut-background-color)',\n '--vis-nested-donut-segment-label-text-color-light': '#5b5f6d',\n '--vis-nested-donut-segment-label-text-color-dark': '#fff',\n '--vis-nested-donut-segment-label-font-size': '1em',\n\n /* Dark theme */\n '--vis-dark-nested-donut-background-color': '#18160C',\n '--vis-dark-nested-donut-central-label-text-color': '#fff',\n '--vis-dark-nested-donut-central-sublabel-text-color': '#fff',\n}\n\nexport const root = css`\n label: nested-donut-component;\n`\n\nexport const segmentsGroup = css`\n label: nested-donut-segments-group;\n`\n\nexport const variables = getCssVarNames(cssVarDefaults)\ninjectGlobalCssVariables(cssVarDefaults, root)\n\nexport const background = css`\n label: background;\n fill: var(--vis-nested-donut-background-color);\n stroke-width: var(--vis-nested-donut-segment-stroke-width);\n stroke: var(--vis-nested-donut-segment-stroke-color);\n`\n\nexport const segment = css`\n label: segment;\n `\n\nexport const segmentExit = css`\n label: segment-exit;\n`\n\nexport const segmentArc = css`\n label: segment-arc;\n stroke-width: var(--vis-nested-donut-segment-stroke-width);\n stroke: var(--vis-nested-donut-segment-stroke-color);\n`\n\nexport const segmentLabel = css`\n label: segment-label;\n text-anchor: middle;\n dominant-baseline: middle;\n user-select: none;\n font-size: var(--vis-nested-donut-segment-label-font-size);\n`\n\nexport const centralLabel = css`\n label: central-label;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: var(--vis-nested-donut-central-label-font-size);\n font-family: var(--vis-nested-donut-central-label-font-family, var(--vis-font-family));\n font-weight: var(--vis-nested-donut-central-label-font-weight);\n fill: var(--vis-nested-donut-central-label-text-color);\n`\n\nexport const centralSubLabel = css`\n label: central-sub-label;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: var(--vis-nested-donut-central-sublabel-font-size);\n font-family: var(--vis-nested-donut-central-sublabel-font-family, var(--vis-font-family));\n font-weight: var(--vis-nested-donut-central-sublabel-font-weight);\n fill: var(--vis-nested-donut-central-sublabel-text-color);\n`\n"],"names":[],"mappings":";;;AAKA,MAAM,cAAc,GAAG;;AAErB,IAAA,gCAAgC,EAAE,SAAsB;;AAGxD,IAAA,qCAAqC,EAAE,SAAS;;AAGhD,IAAA,4CAA4C,EAAE,MAAM;AACpD,IAAA,8CAA8C,EAAE,GAAG;AACnD,IAAA,6CAA6C,EAAE,SAAS;;AAGxD,IAAA,+CAA+C,EAAE,OAAO;AACxD,IAAA,iDAAiD,EAAE,GAAG;AACtD,IAAA,gDAAgD,EAAE,SAAS;;AAG3D,IAAA,yCAAyC,EAAE,KAAK;AAChD,IAAA,yCAAyC,EAAE,0CAA0C;AACrF,IAAA,mDAAmD,EAAE,SAAS;AAC9D,IAAA,kDAAkD,EAAE,MAAM;AAC1D,IAAA,4CAA4C,EAAE,KAAK;;AAGnD,IAAA,0CAA0C,EAAE,SAAS;AACrD,IAAA,kDAAkD,EAAE,MAAM;AAC1D,IAAA,qDAAqD,EAAE,MAAM;CAC9D,CAAA;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;EAEtB;AAEM,MAAM,aAAa,GAAG,GAAG,CAAA;;EAE/B;MAEY,SAAS,GAAG,cAAc,CAAC,cAAc,EAAC;AACvD,wBAAwB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AAEvC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;EAK5B;AAEM,MAAM,OAAO,GAAG,GAAG,CAAA;;GAExB;AAEK,MAAM,WAAW,GAAG,GAAG,CAAA;;EAE7B;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA;;;;EAI5B;AAEM,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;EAM9B;AAEM,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;EAQ9B;AAEM,MAAM,eAAe,GAAG,GAAG,CAAA;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/nested-donut/style.ts"],"sourcesContent":["import { css } from '@emotion/css'\n\n// Utils\nimport { getCssVarNames, injectGlobalCssVariables } from 'utils/style'\n\nconst cssVarDefaults = {\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n '--vis-nested-donut-font-family': undefined as undefined,\n\n // Background\n '--vis-nested-donut-background-color': '#E7E9F3',\n\n // Central label\n '--vis-nested-donut-central-label-font-size': '16px',\n '--vis-nested-donut-central-label-font-weight': 600,\n '--vis-nested-donut-central-label-text-color': '#5b5f6d',\n\n // Central sub-label\n '--vis-nested-donut-central-sublabel-font-size': '12px;',\n '--vis-nested-donut-central-sublabel-font-weight': 500,\n '--vis-nested-donut-central-sublabel-text-color': '#5b5f6d',\n\n // Segments\n '--vis-nested-donut-segment-stroke-width': '1px',\n '--vis-nested-donut-segment-stroke-color': 'var(--vis-nested-donut-background-color)',\n '--vis-nested-donut-segment-label-text-color-light': '#5b5f6d',\n '--vis-nested-donut-segment-label-text-color-dark': '#fff',\n '--vis-nested-donut-segment-label-font-size': '1em',\n\n /* Dark theme */\n '--vis-dark-nested-donut-background-color': '#18160C',\n '--vis-dark-nested-donut-central-label-text-color': '#fff',\n '--vis-dark-nested-donut-central-sublabel-text-color': '#fff',\n}\n\nexport const root = css`\n label: nested-donut-component;\n`\n\nexport const segmentsGroup = css`\n label: nested-donut-segments-group;\n`\n\nexport const variables = getCssVarNames(cssVarDefaults)\ninjectGlobalCssVariables(cssVarDefaults, root)\n\nexport const background = css`\n label: background;\n fill: var(--vis-nested-donut-background-color);\n stroke-width: var(--vis-nested-donut-segment-stroke-width);\n stroke: var(--vis-nested-donut-segment-stroke-color);\n`\n\nexport const segment = css`\n label: segment;\n `\n\nexport const segmentExit = css`\n label: segment-exit;\n`\n\nexport const segmentArc = css`\n label: segment-arc;\n stroke-width: var(--vis-nested-donut-segment-stroke-width);\n stroke: var(--vis-nested-donut-segment-stroke-color);\n`\n\nexport const segmentLabel = css`\n label: segment-label;\n text-anchor: middle;\n dominant-baseline: middle;\n user-select: none;\n font-size: var(--vis-nested-donut-segment-label-font-size);\n`\n\nexport const centralLabel = css`\n label: central-label;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: var(--vis-nested-donut-central-label-font-size);\n font-family: var(--vis-nested-donut-central-label-font-family, var(--vis-font-family));\n font-weight: var(--vis-nested-donut-central-label-font-weight);\n fill: var(--vis-nested-donut-central-label-text-color);\n`\n\nexport const centralSubLabel = css`\n label: central-sub-label;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: var(--vis-nested-donut-central-sublabel-font-size);\n font-family: var(--vis-nested-donut-central-sublabel-font-family, var(--vis-font-family));\n font-weight: var(--vis-nested-donut-central-sublabel-font-weight);\n fill: var(--vis-nested-donut-central-sublabel-text-color);\n`\n"],"names":[],"mappings":";;;AAKA,MAAM,cAAc,GAAG;;AAErB,IAAA,gCAAgC,EAAE,SAAsB;;AAGxD,IAAA,qCAAqC,EAAE,SAAS;;AAGhD,IAAA,4CAA4C,EAAE,MAAM;AACpD,IAAA,8CAA8C,EAAE,GAAG;AACnD,IAAA,6CAA6C,EAAE,SAAS;;AAGxD,IAAA,+CAA+C,EAAE,OAAO;AACxD,IAAA,iDAAiD,EAAE,GAAG;AACtD,IAAA,gDAAgD,EAAE,SAAS;;AAG3D,IAAA,yCAAyC,EAAE,KAAK;AAChD,IAAA,yCAAyC,EAAE,0CAA0C;AACrF,IAAA,mDAAmD,EAAE,SAAS;AAC9D,IAAA,kDAAkD,EAAE,MAAM;AAC1D,IAAA,4CAA4C,EAAE,KAAK;;AAGnD,IAAA,0CAA0C,EAAE,SAAS;AACrD,IAAA,kDAAkD,EAAE,MAAM;AAC1D,IAAA,qDAAqD,EAAE,MAAM;CAC9D,CAAA;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,aAAa,GAAG,GAAG,CAAA,CAAA;;EAE/B;MAEY,SAAS,GAAG,cAAc,CAAC,cAAc,EAAC;AACvD,wBAAwB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AAEvC,MAAM,UAAU,GAAG,GAAG,CAAA,CAAA;;;;;EAK5B;AAEM,MAAM,OAAO,GAAG,GAAG,CAAA,CAAA;;GAExB;AAEK,MAAM,WAAW,GAAG,GAAG,CAAA,CAAA;;EAE7B;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA,CAAA;;;;EAI5B;AAEM,MAAM,YAAY,GAAG,GAAG,CAAA,CAAA;;;;;;EAM9B;AAEM,MAAM,YAAY,GAAG,GAAG,CAAA,CAAA;;;;;;;;EAQ9B;AAEM,MAAM,eAAe,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/components/rolling-pin-legend/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const root = css`\n display: flex;\n`\n\nexport const rectsContainer = css`\n display: flex;\n margin: 0 var(--vis-rolling-pin-legend-spacing);\n`\n\nexport const label = css`\n font-size: var(--vis-rolling-pin-legend-label-font-size);\n max-width: var(--vis-rolling-pin-legend-label-max-width);\n color: var(--vis-rolling-pin-legend-label-color);\n`\n\nexport const rect = css`\n display: inline-block;\n flex: 1;\n width: var(--vis-rolling-pin-legend-item-width);\n`\n\nexport const variables = injectGlobal`\n :root {\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-legend-font-family: */\n\n --vis-rolling-pin-legend-label-color: #6c778c;\n --vis-rolling-pin-legend-label-max-width: 300px;\n --vis-rolling-pin-legend-label-font-size: 12px;\n --vis-rolling-pin-legend-spacing: 4px;\n --vis-rolling-pin-legend-item-width: 8px;\n\n --vis-dark-rolling-pin-legend-label-color: #eee;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-rolling-pin-legend-label-color: var(--vis-dark-rolling-pin-legend-label-color);\n }\n`\n"],"names":[],"mappings":";;AAEO,MAAM,IAAI,GAAG,GAAG,CAAA;;EAEtB;AAEM,MAAM,cAAc,GAAG,GAAG,CAAA;;;EAGhC;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA;;;;EAIvB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;;;EAItB;AAEM,MAAM,SAAS,GAAG,YAAY,CAAA;;;;;;;;;;;;;;AAcjB,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/rolling-pin-legend/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const root = css`\n display: flex;\n`\n\nexport const rectsContainer = css`\n display: flex;\n margin: 0 var(--vis-rolling-pin-legend-spacing);\n`\n\nexport const label = css`\n font-size: var(--vis-rolling-pin-legend-label-font-size);\n max-width: var(--vis-rolling-pin-legend-label-max-width);\n color: var(--vis-rolling-pin-legend-label-color);\n`\n\nexport const rect = css`\n display: inline-block;\n flex: 1;\n width: var(--vis-rolling-pin-legend-item-width);\n`\n\nexport const variables = injectGlobal`\n :root {\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-legend-font-family: */\n\n --vis-rolling-pin-legend-label-color: #6c778c;\n --vis-rolling-pin-legend-label-max-width: 300px;\n --vis-rolling-pin-legend-label-font-size: 12px;\n --vis-rolling-pin-legend-spacing: 4px;\n --vis-rolling-pin-legend-item-width: 8px;\n\n --vis-dark-rolling-pin-legend-label-color: #eee;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-rolling-pin-legend-label-color: var(--vis-dark-rolling-pin-legend-label-color);\n }\n`\n"],"names":[],"mappings":";;AAEO,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,cAAc,GAAG,GAAG,CAAA,CAAA;;;EAGhC;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA,CAAA;;;;EAIvB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;;;EAItB;AAEM,MAAM,SAAS,GAAG,YAAY,CAAA,CAAA;;;;;;;;;;;;;;AAcjB,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label.js","sources":["../../../../src/components/sankey/modules/label.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\n\n// Utils\nimport { estimateTextSize, trimSVGText, wrapSVGText } from 'utils/text'\nimport { smartTransition } from 'utils/d3'\nimport { getString, getValue } from 'utils/data'\nimport { getColor } from 'utils/color'\nimport { getCSSVariableValueInPixels } from 'utils/misc'\n\n// Types\nimport { GenericAccessor } from 'types/accessor'\nimport { FitMode, VerticalAlign } from 'types/text'\nimport { Position } from 'types/position'\n\n// Local Types\nimport { SankeyInputLink, SankeyInputNode, SankeyNode, SankeySubLabelPlacement } from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Styles\nimport * as s from '../style'\n\n\nconst NODE_LABEL_SPACING = 10\nconst LABEL_BLOCK_PADDING = 6.5\n\nfunction getLabelBackground (\n width: number,\n height: number,\n orientation: Position.Left | Position.Right,\n arrowWidth = 5,\n arrowHeight = 8\n): string {\n const halfHeight = height / 2\n const halfArrowHeight = arrowHeight / 2\n\n if (orientation === Position.Left) {\n const rightArrowPos = `L 0 ${halfHeight - halfArrowHeight} L ${+arrowWidth} ${halfHeight} L 0 ${halfHeight + halfArrowHeight}`\n return `\n M 0 0\n ${rightArrowPos}\n L 0 ${height}\n L ${-width} ${height}\n L ${-width} 0\n L 0 0 `\n } else {\n const leftArrowPos = `L 0 ${halfHeight - halfArrowHeight} L ${-arrowWidth} ${halfHeight} L 0 ${halfHeight + halfArrowHeight}`\n return `\n M 0 0\n ${leftArrowPos}\n L 0 ${height}\n L ${width} ${height}\n L ${width} 0\n L 0 0 `\n }\n}\n\nexport function getLabelOrientation<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n sankeyWidth: number,\n labelPosition: GenericAccessor<Position.Auto | Position.Left | Position.Right | string, SankeyNode<N, L>>\n): (Position.Left | Position.Right) {\n let orientation = getValue(d, labelPosition)\n if (orientation === Position.Auto || !orientation) {\n orientation = d.x0 < sankeyWidth / 2 ? Position.Left : Position.Right\n }\n\n return orientation as (Position.Left | Position.Right)\n}\n\nexport const requiredLabelSpace = (labelWidth: number, labelFontSize: number): { width: number; height: number } => {\n return {\n height: labelFontSize * 2.5 + 2 * LABEL_BLOCK_PADDING, // Assuming 2.5 lines per label\n width: labelWidth + 2 * NODE_LABEL_SPACING + 2 * LABEL_BLOCK_PADDING,\n }\n}\n\nexport function getLabelGroupXTranslate<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): number {\n const orientation = getLabelOrientation(d, width, config.labelPosition)\n switch (orientation) {\n case Position.Right: return config.nodeWidth + NODE_LABEL_SPACING\n case Position.Left:\n default:\n return -NODE_LABEL_SPACING\n }\n}\n\nexport function getLabelGroupYTranslate<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n labelGroupHeight: number,\n config: SankeyConfigInterface<N, L>\n): number {\n const nodeHeight = d.y1 - d.y0\n if (config.labelBackground && (nodeHeight < labelGroupHeight)) return (nodeHeight - labelGroupHeight) / 2\n\n switch (config.labelVerticalAlign) {\n case VerticalAlign.Bottom: return nodeHeight - labelGroupHeight\n case VerticalAlign.Middle: return nodeHeight / 2 - labelGroupHeight / 2\n case VerticalAlign.Top:\n default: return 0\n }\n}\n\nexport function getLabelTextAnchor<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): string {\n const orientation = getLabelOrientation(d, width, config.labelPosition)\n switch (orientation) {\n case Position.Right: return 'start'\n case Position.Left:\n default:\n return 'end'\n }\n}\n\nexport function getSubLabelTextAnchor<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): string {\n const isSublabelInline = config.subLabelPlacement === SankeySubLabelPlacement.Inline\n const orientation = getLabelOrientation(d, width, config.labelPosition)\n switch (orientation) {\n case Position.Right: return isSublabelInline ? 'end' : 'start'\n case Position.Left:\n default:\n return isSublabelInline ? 'start' : 'end'\n }\n}\n\nexport function renderLabel<N extends SankeyInputNode, L extends SankeyInputLink> (\n labelGroup: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, any>,\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n duration: number,\n forceExpand = false\n): { x: number; y: number; width: number; height: number; layer: number; selection: any; hidden?: boolean } {\n const labelTextSelection: Selection<SVGTextElement, SankeyNode<N, L>, SVGGElement, SankeyNode<N, L>> = labelGroup.select(`.${s.label}`)\n const labelShowBackground = config.labelBackground || forceExpand\n const sublabelTextSelection: Selection<SVGTextElement, SankeyNode<N, L>, SVGGElement, SankeyNode<N, L>> = labelGroup.select(`.${s.sublabel}`)\n const labelPadding = labelShowBackground ? LABEL_BLOCK_PADDING : 0\n const isSublabelInline = config.subLabelPlacement === SankeySubLabelPlacement.Inline\n const separator = config.labelForceWordBreak ? '' : config.labelTextSeparator\n const fastEstimatesMode = true // Fast but inaccurate\n const fontWidthToHeightRatio = 0.52\n const dy = 0.32\n const labelOrientation = getLabelOrientation(d, width, config.labelPosition)\n const labelOrientationMult = labelOrientation === Position.Left ? -1 : 1\n const labelText = getString(d, config.label)\n const sublabelText = getString(d, config.subLabel)\n let wasTrimmed = false\n\n const labelFontSize = config.labelFontSize ?? getCSSVariableValueInPixels('var(--vis-sankey-node-label-font-size)', labelGroup.node())\n const subLabelFontSize = config.subLabelFontSize ?? getCSSVariableValueInPixels('var(--vis-sankey-node-sublabel-font-size)', labelGroup.node())\n\n // Render the main label, wrap / trim it and estimate its size\n const labelsFontSizeDifference = sublabelText ? labelFontSize - subLabelFontSize : 0\n const labelTranslateY = labelPadding + ((isSublabelInline && labelsFontSizeDifference < 0) ? -0.6 * labelsFontSizeDifference : 0)\n labelTextSelection\n .text(labelText)\n .attr('font-size', labelFontSize)\n .style('fill', getColor(d, config.labelColor))\n .attr('transform', `translate(${labelOrientationMult * labelPadding},${labelTranslateY})`)\n .style('cursor', (d: SankeyNode<N, L>) => getString(d, config.labelCursor))\n\n const labelMaxWidth = isSublabelInline ? config.labelMaxWidth * (1 - (sublabelText ? config.subLabelToLabelInlineWidthRatio : 0)) : config.labelMaxWidth\n if (config.labelFit === FitMode.Wrap || forceExpand) wrapSVGText(labelTextSelection, labelMaxWidth, separator)\n else wasTrimmed = trimSVGText(labelTextSelection, labelMaxWidth, config.labelTrimMode, fastEstimatesMode, labelFontSize, fontWidthToHeightRatio)\n\n const labelSize = estimateTextSize(labelTextSelection, labelFontSize, dy, fastEstimatesMode, fontWidthToHeightRatio)\n\n // Render the sub-label, wrap / trim it and estimate its size\n const sublabelTranslateX = labelOrientationMult * (labelPadding + (isSublabelInline ? config.labelMaxWidth : 0))\n const sublabelMarginTop = 0\n const sublabelTranslateY = labelPadding + (isSublabelInline\n ? (labelsFontSizeDifference > 0 ? 0.6 * labelsFontSizeDifference : 0)\n : labelSize.height + sublabelMarginTop)\n sublabelTextSelection\n .text(sublabelText)\n .attr('font-size', subLabelFontSize)\n .style('fill', getColor(d, config.subLabelColor))\n .attr('transform', `translate(${sublabelTranslateX},${sublabelTranslateY})`)\n .style('cursor', (d: SankeyNode<N, L>) => getString(d, config.labelCursor))\n\n const sublabelMaxWidth = isSublabelInline ? config.labelMaxWidth * config.subLabelToLabelInlineWidthRatio : config.labelMaxWidth\n if (config.labelFit === FitMode.Wrap || forceExpand) wrapSVGText(sublabelTextSelection, sublabelMaxWidth, separator)\n else wasTrimmed = wasTrimmed || trimSVGText(sublabelTextSelection, sublabelMaxWidth, config.labelTrimMode, fastEstimatesMode, subLabelFontSize, fontWidthToHeightRatio)\n\n labelGroup.classed(s.labelTrimmed, wasTrimmed)\n const sublabelSize = estimateTextSize(sublabelTextSelection, subLabelFontSize, dy, fastEstimatesMode, fontWidthToHeightRatio)\n\n // Draw the background if needed\n const labelGroupHeight = (isSublabelInline ? Math.max(labelSize.height, sublabelSize.height) : (labelSize.height + sublabelSize.height)) + 2 * labelPadding\n const labelBackground = labelGroup.select(`.${s.labelBackground}`)\n\n labelBackground\n .attr('d', labelShowBackground ? getLabelBackground(config.labelMaxWidth + 2 * labelPadding, labelGroupHeight, labelOrientation as (Position.Left | Position.Right)) : null)\n\n // Position the label\n const labelTextAnchor = getLabelTextAnchor(d, config, width)\n const sublabelTextAnchor = getSubLabelTextAnchor(d, config, width)\n const xTranslate = getLabelGroupXTranslate(d, config, width)\n const yTranslate = getLabelGroupYTranslate(d, labelGroupHeight, config)\n\n labelTextSelection.attr('text-anchor', labelTextAnchor)\n sublabelTextSelection.attr('text-anchor', sublabelTextAnchor)\n\n const hasTransform = !!labelGroup.attr('transform')\n smartTransition(labelGroup, hasTransform ? duration : 0)\n .attr('transform', `translate(${xTranslate},${yTranslate})`)\n\n return {\n x: d.x0 + xTranslate,\n y: d.y0 + yTranslate,\n width: config.labelMaxWidth,\n height: labelGroupHeight,\n layer: d.layer,\n selection: labelGroup,\n }\n}\n"],"names":["s.label","s.sublabel","s.labelTrimmed","labelBackground","s.labelBackground"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"label.js","sources":["../../../../src/components/sankey/modules/label.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\n\n// Utils\nimport { estimateTextSize, trimSVGText, wrapSVGText } from 'utils/text'\nimport { smartTransition } from 'utils/d3'\nimport { getString, getValue } from 'utils/data'\nimport { getColor } from 'utils/color'\nimport { getCSSVariableValueInPixels } from 'utils/misc'\n\n// Types\nimport { GenericAccessor } from 'types/accessor'\nimport { FitMode, VerticalAlign } from 'types/text'\nimport { Position } from 'types/position'\n\n// Local Types\nimport { SankeyInputLink, SankeyInputNode, SankeyNode, SankeySubLabelPlacement } from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Styles\nimport * as s from '../style'\n\n\nconst NODE_LABEL_SPACING = 10\nconst LABEL_BLOCK_PADDING = 6.5\n\nfunction getLabelBackground (\n width: number,\n height: number,\n orientation: Position.Left | Position.Right,\n arrowWidth = 5,\n arrowHeight = 8\n): string {\n const halfHeight = height / 2\n const halfArrowHeight = arrowHeight / 2\n\n if (orientation === Position.Left) {\n const rightArrowPos = `L 0 ${halfHeight - halfArrowHeight} L ${+arrowWidth} ${halfHeight} L 0 ${halfHeight + halfArrowHeight}`\n return `\n M 0 0\n ${rightArrowPos}\n L 0 ${height}\n L ${-width} ${height}\n L ${-width} 0\n L 0 0 `\n } else {\n const leftArrowPos = `L 0 ${halfHeight - halfArrowHeight} L ${-arrowWidth} ${halfHeight} L 0 ${halfHeight + halfArrowHeight}`\n return `\n M 0 0\n ${leftArrowPos}\n L 0 ${height}\n L ${width} ${height}\n L ${width} 0\n L 0 0 `\n }\n}\n\nexport function getLabelOrientation<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n sankeyWidth: number,\n labelPosition: GenericAccessor<Position.Auto | Position.Left | Position.Right | string, SankeyNode<N, L>>\n): (Position.Left | Position.Right) {\n let orientation = getValue(d, labelPosition)\n if (orientation === Position.Auto || !orientation) {\n orientation = d.x0 < sankeyWidth / 2 ? Position.Left : Position.Right\n }\n\n return orientation as (Position.Left | Position.Right)\n}\n\nexport const requiredLabelSpace = (labelWidth: number, labelFontSize: number): { width: number; height: number } => {\n return {\n height: labelFontSize * 2.5 + 2 * LABEL_BLOCK_PADDING, // Assuming 2.5 lines per label\n width: labelWidth + 2 * NODE_LABEL_SPACING + 2 * LABEL_BLOCK_PADDING,\n }\n}\n\nexport function getLabelGroupXTranslate<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): number {\n const orientation = getLabelOrientation(d, width, config.labelPosition)\n switch (orientation) {\n case Position.Right: return config.nodeWidth + NODE_LABEL_SPACING\n case Position.Left:\n default:\n return -NODE_LABEL_SPACING\n }\n}\n\nexport function getLabelGroupYTranslate<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n labelGroupHeight: number,\n config: SankeyConfigInterface<N, L>\n): number {\n const nodeHeight = d.y1 - d.y0\n if (config.labelBackground && (nodeHeight < labelGroupHeight)) return (nodeHeight - labelGroupHeight) / 2\n\n switch (config.labelVerticalAlign) {\n case VerticalAlign.Bottom: return nodeHeight - labelGroupHeight\n case VerticalAlign.Middle: return nodeHeight / 2 - labelGroupHeight / 2\n case VerticalAlign.Top:\n default: return 0\n }\n}\n\nexport function getLabelTextAnchor<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): string {\n const orientation = getLabelOrientation(d, width, config.labelPosition)\n switch (orientation) {\n case Position.Right: return 'start'\n case Position.Left:\n default:\n return 'end'\n }\n}\n\nexport function getSubLabelTextAnchor<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): string {\n const isSublabelInline = config.subLabelPlacement === SankeySubLabelPlacement.Inline\n const orientation = getLabelOrientation(d, width, config.labelPosition)\n switch (orientation) {\n case Position.Right: return isSublabelInline ? 'end' : 'start'\n case Position.Left:\n default:\n return isSublabelInline ? 'start' : 'end'\n }\n}\n\nexport function renderLabel<N extends SankeyInputNode, L extends SankeyInputLink> (\n labelGroup: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, any>,\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n duration: number,\n forceExpand = false\n): { x: number; y: number; width: number; height: number; layer: number; selection: any; hidden?: boolean } {\n const labelTextSelection: Selection<SVGTextElement, SankeyNode<N, L>, SVGGElement, SankeyNode<N, L>> = labelGroup.select(`.${s.label}`)\n const labelShowBackground = config.labelBackground || forceExpand\n const sublabelTextSelection: Selection<SVGTextElement, SankeyNode<N, L>, SVGGElement, SankeyNode<N, L>> = labelGroup.select(`.${s.sublabel}`)\n const labelPadding = labelShowBackground ? LABEL_BLOCK_PADDING : 0\n const isSublabelInline = config.subLabelPlacement === SankeySubLabelPlacement.Inline\n const separator = config.labelForceWordBreak ? '' : config.labelTextSeparator\n const fastEstimatesMode = true // Fast but inaccurate\n const fontWidthToHeightRatio = 0.52\n const dy = 0.32\n const labelOrientation = getLabelOrientation(d, width, config.labelPosition)\n const labelOrientationMult = labelOrientation === Position.Left ? -1 : 1\n const labelText = getString(d, config.label)\n const sublabelText = getString(d, config.subLabel)\n let wasTrimmed = false\n\n const labelFontSize = config.labelFontSize ?? getCSSVariableValueInPixels('var(--vis-sankey-node-label-font-size)', labelGroup.node())\n const subLabelFontSize = config.subLabelFontSize ?? getCSSVariableValueInPixels('var(--vis-sankey-node-sublabel-font-size)', labelGroup.node())\n\n // Render the main label, wrap / trim it and estimate its size\n const labelsFontSizeDifference = sublabelText ? labelFontSize - subLabelFontSize : 0\n const labelTranslateY = labelPadding + ((isSublabelInline && labelsFontSizeDifference < 0) ? -0.6 * labelsFontSizeDifference : 0)\n labelTextSelection\n .text(labelText)\n .attr('font-size', labelFontSize)\n .style('fill', getColor(d, config.labelColor))\n .attr('transform', `translate(${labelOrientationMult * labelPadding},${labelTranslateY})`)\n .style('cursor', (d: SankeyNode<N, L>) => getString(d, config.labelCursor))\n\n const labelMaxWidth = isSublabelInline ? config.labelMaxWidth * (1 - (sublabelText ? config.subLabelToLabelInlineWidthRatio : 0)) : config.labelMaxWidth\n if (config.labelFit === FitMode.Wrap || forceExpand) wrapSVGText(labelTextSelection, labelMaxWidth, separator)\n else wasTrimmed = trimSVGText(labelTextSelection, labelMaxWidth, config.labelTrimMode, fastEstimatesMode, labelFontSize, fontWidthToHeightRatio)\n\n const labelSize = estimateTextSize(labelTextSelection, labelFontSize, dy, fastEstimatesMode, fontWidthToHeightRatio)\n\n // Render the sub-label, wrap / trim it and estimate its size\n const sublabelTranslateX = labelOrientationMult * (labelPadding + (isSublabelInline ? config.labelMaxWidth : 0))\n const sublabelMarginTop = 0\n const sublabelTranslateY = labelPadding + (isSublabelInline\n ? (labelsFontSizeDifference > 0 ? 0.6 * labelsFontSizeDifference : 0)\n : labelSize.height + sublabelMarginTop)\n sublabelTextSelection\n .text(sublabelText)\n .attr('font-size', subLabelFontSize)\n .style('fill', getColor(d, config.subLabelColor))\n .attr('transform', `translate(${sublabelTranslateX},${sublabelTranslateY})`)\n .style('cursor', (d: SankeyNode<N, L>) => getString(d, config.labelCursor))\n\n const sublabelMaxWidth = isSublabelInline ? config.labelMaxWidth * config.subLabelToLabelInlineWidthRatio : config.labelMaxWidth\n if (config.labelFit === FitMode.Wrap || forceExpand) wrapSVGText(sublabelTextSelection, sublabelMaxWidth, separator)\n else wasTrimmed = wasTrimmed || trimSVGText(sublabelTextSelection, sublabelMaxWidth, config.labelTrimMode, fastEstimatesMode, subLabelFontSize, fontWidthToHeightRatio)\n\n labelGroup.classed(s.labelTrimmed, wasTrimmed)\n const sublabelSize = estimateTextSize(sublabelTextSelection, subLabelFontSize, dy, fastEstimatesMode, fontWidthToHeightRatio)\n\n // Draw the background if needed\n const labelGroupHeight = (isSublabelInline ? Math.max(labelSize.height, sublabelSize.height) : (labelSize.height + sublabelSize.height)) + 2 * labelPadding\n const labelBackground = labelGroup.select(`.${s.labelBackground}`)\n\n labelBackground\n .attr('d', labelShowBackground ? getLabelBackground(config.labelMaxWidth + 2 * labelPadding, labelGroupHeight, labelOrientation as (Position.Left | Position.Right)) : null)\n\n // Position the label\n const labelTextAnchor = getLabelTextAnchor(d, config, width)\n const sublabelTextAnchor = getSubLabelTextAnchor(d, config, width)\n const xTranslate = getLabelGroupXTranslate(d, config, width)\n const yTranslate = getLabelGroupYTranslate(d, labelGroupHeight, config)\n\n labelTextSelection.attr('text-anchor', labelTextAnchor)\n sublabelTextSelection.attr('text-anchor', sublabelTextAnchor)\n\n const hasTransform = !!labelGroup.attr('transform')\n smartTransition(labelGroup, hasTransform ? duration : 0)\n .attr('transform', `translate(${xTranslate},${yTranslate})`)\n\n return {\n x: d.x0 + xTranslate,\n y: d.y0 + yTranslate,\n width: config.labelMaxWidth,\n height: labelGroupHeight,\n layer: d.layer,\n selection: labelGroup,\n }\n}\n"],"names":["s.label","s.sublabel","s.labelTrimmed","labelBackground","s.labelBackground"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../../../src/components/sankey/modules/link.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { interpolateNumber } from 'd3-interpolate'\n\n// Utils\nimport { getColor } from 'utils/color'\nimport { getString } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\n\n// Local Types\nimport { SankeyInputLink, SankeyInputNode, SankeyLink } from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Styles\nimport * as s from '../style'\n\nexport type LinkPathOptions = {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n width: number;\n}\n\nexport function linkPath ({ x0, x1, y0, y1, width }: LinkPathOptions): string {\n const top0 = y0 - width / 2\n const top1 = y1 - width / 2\n const bottom0 = y0 + width / 2\n const bottom1 = y1 + width / 2\n const centerX = (x0 + x1) / 2\n\n return `\n M ${x0}, ${top0}\n\n C ${centerX}, ${top0}\n ${centerX}, ${top1}\n ${x1}, ${top1}\n\n L ${x1}, ${bottom1}\n\n C ${centerX}, ${bottom1}\n ${centerX}, ${bottom0}\n ${x0}, ${bottom0}\n z\n `\n}\n\nexport type LinkAnimState = { x0: number; x1: number; y0: number; y1: number; width: number }\n\nexport interface LinkElement extends SVGPathElement {\n _animState?: LinkAnimState;\n}\n\nexport function createLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.append('path').attr('class', s.linkPath)\n .attr('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n el[i]._animState = {\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }\n return linkPath(el[i]._animState)\n })\n sel.append('path').attr('class', s.linkSelectionHelper)\n sel.style('opacity', 0)\n}\n\nexport function updateLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n duration: number\n): void {\n smartTransition(sel, duration)\n .style('opacity', (d: SankeyLink<N, L>) => d._state.greyout ? 0.2 : 1)\n\n const linkSelection = sel.select<SVGPathElement>(`.${s.linkPath}`)\n .style('cursor', (d: SankeyLink<N, L>) => getString(d, config.linkCursor))\n\n const selectionTransition = smartTransition(linkSelection, duration)\n .style('fill', (link: SankeyLink<N, L>) => getColor(link, config.linkColor))\n\n if (duration) {\n (selectionTransition as Transition<SVGPathElement, SankeyLink<N, L>, SVGGElement, unknown>)\n .attrTween('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n const previous = el[i]._animState\n const next = {\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }\n const interpolator = {\n x0: interpolateNumber(previous.x0, next.x0),\n x1: interpolateNumber(previous.x1, next.x1),\n y0: interpolateNumber(previous.y0, next.y0),\n y1: interpolateNumber(previous.y1, next.y1),\n width: interpolateNumber(previous.width, next.width),\n }\n el[i]._animState = next\n\n return function (t: number) {\n return linkPath({\n x0: interpolator.x0(t),\n x1: interpolator.x1(t),\n y0: interpolator.y0(t),\n y1: interpolator.y1(t),\n width: interpolator.width(t),\n })\n }\n })\n } else {\n linkSelection.attr('d', (d: SankeyLink<N, L>) => linkPath({\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }))\n }\n\n sel.select(`.${s.linkSelectionHelper}`)\n .attr('d', (d: SankeyLink<N, L>) => linkPath({\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(10, d.width),\n }))\n .style('cursor', d => getString(d, config.linkCursor))\n}\n\nexport function removeLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.remove()\n}\n"],"names":["s.linkPath","s.linkSelectionHelper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../../../src/components/sankey/modules/link.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { interpolateNumber } from 'd3-interpolate'\n\n// Utils\nimport { getColor } from 'utils/color'\nimport { getString } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\n\n// Local Types\nimport { SankeyInputLink, SankeyInputNode, SankeyLink } from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Styles\nimport * as s from '../style'\n\nexport type LinkPathOptions = {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n width: number;\n}\n\nexport function linkPath ({ x0, x1, y0, y1, width }: LinkPathOptions): string {\n const top0 = y0 - width / 2\n const top1 = y1 - width / 2\n const bottom0 = y0 + width / 2\n const bottom1 = y1 + width / 2\n const centerX = (x0 + x1) / 2\n\n return `\n M ${x0}, ${top0}\n\n C ${centerX}, ${top0}\n ${centerX}, ${top1}\n ${x1}, ${top1}\n\n L ${x1}, ${bottom1}\n\n C ${centerX}, ${bottom1}\n ${centerX}, ${bottom0}\n ${x0}, ${bottom0}\n z\n `\n}\n\nexport type LinkAnimState = { x0: number; x1: number; y0: number; y1: number; width: number }\n\nexport interface LinkElement extends SVGPathElement {\n _animState?: LinkAnimState;\n}\n\nexport function createLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.append('path').attr('class', s.linkPath)\n .attr('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n el[i]._animState = {\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }\n return linkPath(el[i]._animState)\n })\n sel.append('path').attr('class', s.linkSelectionHelper)\n sel.style('opacity', 0)\n}\n\nexport function updateLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n duration: number\n): void {\n smartTransition(sel, duration)\n .style('opacity', (d: SankeyLink<N, L>) => d._state.greyout ? 0.2 : 1)\n\n const linkSelection = sel.select<SVGPathElement>(`.${s.linkPath}`)\n .style('cursor', (d: SankeyLink<N, L>) => getString(d, config.linkCursor))\n\n const selectionTransition = smartTransition(linkSelection, duration)\n .style('fill', (link: SankeyLink<N, L>) => getColor(link, config.linkColor))\n\n if (duration) {\n (selectionTransition as Transition<SVGPathElement, SankeyLink<N, L>, SVGGElement, unknown>)\n .attrTween('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n const previous = el[i]._animState\n const next = {\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }\n const interpolator = {\n x0: interpolateNumber(previous.x0, next.x0),\n x1: interpolateNumber(previous.x1, next.x1),\n y0: interpolateNumber(previous.y0, next.y0),\n y1: interpolateNumber(previous.y1, next.y1),\n width: interpolateNumber(previous.width, next.width),\n }\n el[i]._animState = next\n\n return function (t: number) {\n return linkPath({\n x0: interpolator.x0(t),\n x1: interpolator.x1(t),\n y0: interpolator.y0(t),\n y1: interpolator.y1(t),\n width: interpolator.width(t),\n })\n }\n })\n } else {\n linkSelection.attr('d', (d: SankeyLink<N, L>) => linkPath({\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }))\n }\n\n sel.select(`.${s.linkSelectionHelper}`)\n .attr('d', (d: SankeyLink<N, L>) => linkPath({\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(10, d.width),\n }))\n .style('cursor', d => getString(d, config.linkCursor))\n}\n\nexport function removeLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.remove()\n}\n"],"names":["s.linkPath","s.linkSelectionHelper"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/components/sankey/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\nimport { UNOVIS_ICON_FONT_FAMILY_DEFAULT } from 'styles/index'\n\nexport const SANKEY_ICON_SIZE = 22\n\nexport const root = css`\n label: sankey-component;\n`\n\nexport const variables = injectGlobal`\n :root {\n /* Links */\n --vis-sankey-link-cursor: default;\n --vis-sankey-link-color: var(--vis-color-main-light);\n --vis-sankey-link-opacity: 0.5;\n --vis-sankey-link-hover-opacity: 1.0;\n /* Nodes */\n --vis-sankey-node-cursor: default;\n --vis-sankey-node-color: var(--vis-color-main);\n --vis-sankey-node-label-color: #575c65;\n --vis-sankey-node-opacity: 0.9;\n --vis-sankey-node-hover-opacity: 1.0;\n /* Node Labels */\n --vis-sankey-node-label-background-fill-color: #ffffff;\n --vis-sankey-node-label-background-stroke-color: #eaeaea;\n --vis-sankey-node-label-background-opacity: 0.9;\n --vis-sankey-node-label-color: #575c65;\n --vis-sankey-node-label-cursor: default;\n --vis-sankey-node-label-font-weight: 600;\n --vis-sankey-node-label-font-size: 12px;\n --vis-sankey-node-label-text-decoration: none;\n\n --vis-sankey-node-sublabel-font-size: 10px;\n --vis-sankey-node-sublabel-font-weight: 500;\n\n /* Icons */\n --vis-sankey-icon-size: ${SANKEY_ICON_SIZE}px;\n --vis-sankey-icon-color: #ffffff;\n --vis-sankey-icon-stroke-opacity: 0.6;\n --vis-sankey-icon-font-family: ${UNOVIS_ICON_FONT_FAMILY_DEFAULT};\n\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-sankey-label-font-family: */\n\n /* Dark Theme */\n --vis-dark-sankey-link-color: var(--vis-color-main-dark);\n --vis-dark-sankey-node-color: var(--vis-color-main);\n --vis-dark-sankey-node-label-color: #eaeaea;\n --vis-dark-sankey-node-label-background-fill-color: #292b34;\n --vis-dark-sankey-node-label-background-stroke-color: #575c65;\n --vis-dark-sankey-icon-color: #292b34;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-sankey-node-color: var(--vis-dark-sankey-node-color);\n --vis-sankey-link-color: var(--vis-dark-sankey-link-color);\n --vis-sankey-node-label-color: var(--vis-dark-sankey-node-label-color);\n --vis-sankey-node-label-background-fill-color: var(--vis-dark-sankey-label-background-fill-color);\n --vis-sankey-node-label-background-stroke-color: var(--vis-dark-sankey-label-background-stroke-color);\n --vis-sankey-icon-color: var(--vis-dark-sankey-icon-color);\n }\n`\n\nexport const links = css`\n label: links;\n`\n\nexport const nodes = css`\n label: nodes;\n`\n\nexport const link = css`\n label: link;\n\n path {\n cursor: var(--vis-sankey-link-cursor);\n fill: var(--vis-sankey-link-color);\n fill-opacity: var(--vis-sankey-link-opacity);\n }\n\n &:hover {\n path {\n fill-opacity: var(--vis-sankey-link-hover-opacity);\n }\n }\n`\n\nexport const linkPath = css`\n label: visible;\n`\n\nexport const linkSelectionHelper = css`\n label: transparent;\n opacity: 0;\n`\n\nexport const labelGroup = css`\n label: label-group;\n cursor: var(--vis-sankey-node-label-cursor);\n`\n\nexport const labelTrimmed = css`\n label: label-trimmed;\n`\n\nexport const label = css`\n label: label;\n dominant-baseline: hanging;\n\n fill: var(--vis-sankey-node-label-color);\n text-decoration: var(--vis-sankey-node-label-text-decoration);\n font-weight: var(--vis-sankey-node-label-font-weight);\n user-select: none;\n\n &, tspan {\n font-family: var(--vis-sankey-label-font-family, var(--vis-font-family));\n dominant-baseline: hanging;\n }\n`\n\nexport const sublabel = css`\n label: sub-label;\n dominant-baseline: hanging;\n\n fill: var(--vis-sankey-node-label-color);\n user-select: none;\n\n &, tspan {\n font-family: var(--vis-sankey-label-font-family, var(--vis-font-family));\n font-weight: var(--vis-sankey-node-sublabel-font-weight);\n dominant-baseline: hanging;\n }\n`\n\nexport const labelBackground = css`\n label: label-background;\n stroke: var(--vis-sankey-node-label-background-stroke-color);\n fill: var(--vis-sankey-node-label-background-fill-color);\n opacity: var(--vis-sankey-node-label-background-opacity);\n`\n\nexport const hidden = css`\n label: hidden;\n visibility: hidden;\n`\n\nexport const forceShow = css`\n label: forceShow;\n visibility: visible;\n`\n\nexport const nodeGroup = css`\n label: node-group;\n`\n\nexport const node = css`\n label: node;\n\n cursor: var(--vis-sankey-node-cursor);\n fill: var(--vis-sankey-node-color);\n opacity: var(--vis-sankey-node-opacity);\n\n &:hover {\n opacity: var(--vis-sankey-node-hover-opacity);\n }\n`\n\nexport const nodeIcon = css`\n label: icon;\n\n font-family: var(--vis-sankey-icon-font-family);\n text-anchor: middle;\n font-size: var(--vis-sankey-icon-size);\n fill: var(--vis-sankey-node-icon-color);\n stroke: var(--vis-sankey-node-color);\n stroke-opacity: var(--vis-sankey-icon-stroke-opacity);\n user-select: none;\n pointer-events: none;\n`\n\nexport const nodeExit = css`\n label: node-exit;\n`\n\nexport const background = css`\n label: background;\n`\n"],"names":[],"mappings":";;;AAGO,MAAM,gBAAgB,GAAG,GAAE;AAE3B,MAAM,IAAI,GAAG,GAAG,CAAA;;EAEtB;AAEM,MAAM,SAAS,GAAG,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA2BP,gBAAgB,CAAA;;;qCAGT,+BAA+B,CAAA;;;;;;;;;;;;;;AAchD,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;;EAQ7B;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA;;EAEvB;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA;;EAEvB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;;;;;;;;;;;;;EActB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA;;EAE1B;AAEM,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;EAGrC;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA;;;EAG5B;AAEM,MAAM,YAAY,GAAG,GAAG,CAAA;;EAE9B;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;EAavB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;;EAY1B;AAEM,MAAM,eAAe,GAAG,GAAG,CAAA;;;;;EAKjC;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA;;;EAGxB;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA;;;EAG3B;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA;;EAE3B;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;;;;;;;;;EAUtB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;EAW1B;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA;;EAE1B;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/sankey/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\nimport { UNOVIS_ICON_FONT_FAMILY_DEFAULT } from 'styles/index'\n\nexport const SANKEY_ICON_SIZE = 22\n\nexport const root = css`\n label: sankey-component;\n`\n\nexport const variables = injectGlobal`\n :root {\n /* Links */\n --vis-sankey-link-cursor: default;\n --vis-sankey-link-color: var(--vis-color-main-light);\n --vis-sankey-link-opacity: 0.5;\n --vis-sankey-link-hover-opacity: 1.0;\n /* Nodes */\n --vis-sankey-node-cursor: default;\n --vis-sankey-node-color: var(--vis-color-main);\n --vis-sankey-node-label-color: #575c65;\n --vis-sankey-node-opacity: 0.9;\n --vis-sankey-node-hover-opacity: 1.0;\n /* Node Labels */\n --vis-sankey-node-label-background-fill-color: #ffffff;\n --vis-sankey-node-label-background-stroke-color: #eaeaea;\n --vis-sankey-node-label-background-opacity: 0.9;\n --vis-sankey-node-label-color: #575c65;\n --vis-sankey-node-label-cursor: default;\n --vis-sankey-node-label-font-weight: 600;\n --vis-sankey-node-label-font-size: 12px;\n --vis-sankey-node-label-text-decoration: none;\n\n --vis-sankey-node-sublabel-font-size: 10px;\n --vis-sankey-node-sublabel-font-weight: 500;\n\n /* Icons */\n --vis-sankey-icon-size: ${SANKEY_ICON_SIZE}px;\n --vis-sankey-icon-color: #ffffff;\n --vis-sankey-icon-stroke-opacity: 0.6;\n --vis-sankey-icon-font-family: ${UNOVIS_ICON_FONT_FAMILY_DEFAULT};\n\n // Undefined by default to allow proper fallback to var(--vis-font-family)\n /* --vis-sankey-label-font-family: */\n\n /* Dark Theme */\n --vis-dark-sankey-link-color: var(--vis-color-main-dark);\n --vis-dark-sankey-node-color: var(--vis-color-main);\n --vis-dark-sankey-node-label-color: #eaeaea;\n --vis-dark-sankey-node-label-background-fill-color: #292b34;\n --vis-dark-sankey-node-label-background-stroke-color: #575c65;\n --vis-dark-sankey-icon-color: #292b34;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-sankey-node-color: var(--vis-dark-sankey-node-color);\n --vis-sankey-link-color: var(--vis-dark-sankey-link-color);\n --vis-sankey-node-label-color: var(--vis-dark-sankey-node-label-color);\n --vis-sankey-node-label-background-fill-color: var(--vis-dark-sankey-label-background-fill-color);\n --vis-sankey-node-label-background-stroke-color: var(--vis-dark-sankey-label-background-stroke-color);\n --vis-sankey-icon-color: var(--vis-dark-sankey-icon-color);\n }\n`\n\nexport const links = css`\n label: links;\n`\n\nexport const nodes = css`\n label: nodes;\n`\n\nexport const link = css`\n label: link;\n\n path {\n cursor: var(--vis-sankey-link-cursor);\n fill: var(--vis-sankey-link-color);\n fill-opacity: var(--vis-sankey-link-opacity);\n }\n\n &:hover {\n path {\n fill-opacity: var(--vis-sankey-link-hover-opacity);\n }\n }\n`\n\nexport const linkPath = css`\n label: visible;\n`\n\nexport const linkSelectionHelper = css`\n label: transparent;\n opacity: 0;\n`\n\nexport const labelGroup = css`\n label: label-group;\n cursor: var(--vis-sankey-node-label-cursor);\n`\n\nexport const labelTrimmed = css`\n label: label-trimmed;\n`\n\nexport const label = css`\n label: label;\n dominant-baseline: hanging;\n\n fill: var(--vis-sankey-node-label-color);\n text-decoration: var(--vis-sankey-node-label-text-decoration);\n font-weight: var(--vis-sankey-node-label-font-weight);\n user-select: none;\n\n &, tspan {\n font-family: var(--vis-sankey-label-font-family, var(--vis-font-family));\n dominant-baseline: hanging;\n }\n`\n\nexport const sublabel = css`\n label: sub-label;\n dominant-baseline: hanging;\n\n fill: var(--vis-sankey-node-label-color);\n user-select: none;\n\n &, tspan {\n font-family: var(--vis-sankey-label-font-family, var(--vis-font-family));\n font-weight: var(--vis-sankey-node-sublabel-font-weight);\n dominant-baseline: hanging;\n }\n`\n\nexport const labelBackground = css`\n label: label-background;\n stroke: var(--vis-sankey-node-label-background-stroke-color);\n fill: var(--vis-sankey-node-label-background-fill-color);\n opacity: var(--vis-sankey-node-label-background-opacity);\n`\n\nexport const hidden = css`\n label: hidden;\n visibility: hidden;\n`\n\nexport const forceShow = css`\n label: forceShow;\n visibility: visible;\n`\n\nexport const nodeGroup = css`\n label: node-group;\n`\n\nexport const node = css`\n label: node;\n\n cursor: var(--vis-sankey-node-cursor);\n fill: var(--vis-sankey-node-color);\n opacity: var(--vis-sankey-node-opacity);\n\n &:hover {\n opacity: var(--vis-sankey-node-hover-opacity);\n }\n`\n\nexport const nodeIcon = css`\n label: icon;\n\n font-family: var(--vis-sankey-icon-font-family);\n text-anchor: middle;\n font-size: var(--vis-sankey-icon-size);\n fill: var(--vis-sankey-node-icon-color);\n stroke: var(--vis-sankey-node-color);\n stroke-opacity: var(--vis-sankey-icon-stroke-opacity);\n user-select: none;\n pointer-events: none;\n`\n\nexport const nodeExit = css`\n label: node-exit;\n`\n\nexport const background = css`\n label: background;\n`\n"],"names":[],"mappings":";;;AAGO,MAAM,gBAAgB,GAAG,GAAE;AAE3B,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,SAAS,GAAG,YAAY,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA2BP,gBAAgB,CAAA;;;qCAGT,+BAA+B,CAAA;;;;;;;;;;;;;;AAchD,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;;EAQ7B;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA,CAAA;;EAEvB;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA,CAAA;;EAEvB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;;;;;EActB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA,CAAA;;EAE1B;AAEM,MAAM,mBAAmB,GAAG,GAAG,CAAA,CAAA;;;EAGrC;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA,CAAA;;;EAG5B;AAEM,MAAM,YAAY,GAAG,GAAG,CAAA,CAAA;;EAE9B;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;;;;EAavB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;;;EAY1B;AAEM,MAAM,eAAe,GAAG,GAAG,CAAA,CAAA;;;;;EAKjC;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA,CAAA;;;EAGxB;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA,CAAA;;;EAG3B;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA,CAAA;;EAE3B;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;EAUtB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;;EAW1B;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA,CAAA;;EAE1B;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA,CAAA;;;;;;"}
|
|
@@ -22,6 +22,7 @@ export declare class Scatter<Datum> extends XYComponentCore<Datum, ScatterConfig
|
|
|
22
22
|
setData(data: Datum[]): void;
|
|
23
23
|
get bleed(): Spacing;
|
|
24
24
|
_render(customDuration?: number): void;
|
|
25
|
+
private _hasLabels;
|
|
25
26
|
private _resolveLabelOverlap;
|
|
26
27
|
private _updateSizeScale;
|
|
27
28
|
private _getOnScreenData;
|
|
@@ -98,7 +98,17 @@ class Scatter extends XYComponentCore {
|
|
|
98
98
|
updatePoints(this._points, config, this.xScale, this.yScale, duration);
|
|
99
99
|
removePoints(points.exit(), this.xScale, this.yScale, duration);
|
|
100
100
|
// Take care of overlapping labels
|
|
101
|
-
this.
|
|
101
|
+
if (this._hasLabels()) {
|
|
102
|
+
this._resolveLabelOverlap();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
_hasLabels() {
|
|
106
|
+
// If label config is not defined, no labels will be shown
|
|
107
|
+
if (!this.config.label)
|
|
108
|
+
return false;
|
|
109
|
+
// Check if any point in the flattened data has a label
|
|
110
|
+
const pointDataFlat = flatten(this._pointData);
|
|
111
|
+
return pointDataFlat.some(d => d._point.label);
|
|
102
112
|
}
|
|
103
113
|
_resolveLabelOverlap() {
|
|
104
114
|
if (!this.config.labelHideOverlapping) {
|