| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /* *
- *
- * (c) 2010-2021 Torstein Honsi
- *
- * License: www.highcharts.com/license
- *
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
- *
- * */
- 'use strict';
- import Chart from '../Core/Chart/Chart.js';
- import H from '../Core/Globals.js';
- import SVGRenderer from '../Core/Renderer/SVG/SVGRenderer.js';
- import U from '../Core/Utilities.js';
- var getOptions = U.getOptions, merge = U.merge, pick = U.pick;
- import './MapSymbols.js';
- /* eslint-disable valid-jsdoc */
- var Map;
- (function (Map) {
- /* *
- *
- * Constants
- *
- * */
- /**
- * Contains all loaded map data for Highmaps.
- *
- * @requires modules/map
- *
- * @name Highcharts.maps
- * @type {Record<string,*>}
- */
- Map.maps = {};
- /* *
- *
- * Functions
- *
- * */
- /**
- * The factory function for creating new map charts. Creates a new {@link
- * Highcharts.Chart|Chart} object with different default options than the
- * basic Chart.
- *
- * @requires modules/map
- *
- * @function Highcharts.mapChart
- *
- * @param {string|Highcharts.HTMLDOMElement} [renderTo]
- * The DOM element to render to, or its id.
- *
- * @param {Highcharts.Options} options
- * The chart options structure as described in the
- * [options reference](https://api.highcharts.com/highstock).
- *
- * @param {Highcharts.ChartCallbackFunction} [callback]
- * A function to execute when the chart object is finished loading and
- * rendering. In most cases the chart is built in one thread, but in
- * Internet Explorer version 8 or less the chart is sometimes initialized
- * before the document is ready, and in these cases the chart object will
- * not be finished synchronously. As a consequence, code that relies on the
- * newly built Chart object should always run in the callback. Defining a
- * [chart.events.load](https://api.highcharts.com/highstock/chart.events.load)
- * handler is equivalent.
- *
- * @return {Highcharts.Chart}
- * The chart object.
- */
- function mapChart(a, b, c) {
- var hasRenderToArg = typeof a === 'string' || a.nodeName, options = arguments[hasRenderToArg ? 1 : 0], userOptions = options, hiddenAxis = {
- endOnTick: false,
- visible: false,
- minPadding: 0,
- maxPadding: 0,
- startOnTick: false
- }, seriesOptions, defaultCreditsOptions = getOptions().credits;
- /* For visual testing
- hiddenAxis.gridLineWidth = 1;
- hiddenAxis.gridZIndex = 10;
- hiddenAxis.tickPositions = undefined;
- // */
- // Don't merge the data
- seriesOptions = options.series;
- options.series = null;
- options = merge({
- chart: {
- panning: {
- enabled: true,
- type: 'xy'
- },
- type: 'map'
- },
- credits: {
- mapText: pick(defaultCreditsOptions.mapText, ' \u00a9 <a href="{geojson.copyrightUrl}">' +
- '{geojson.copyrightShort}</a>'),
- mapTextFull: pick(defaultCreditsOptions.mapTextFull, '{geojson.copyright}')
- },
- tooltip: {
- followTouchMove: false
- },
- xAxis: hiddenAxis,
- yAxis: merge(hiddenAxis, { reversed: true })
- }, options, // user's options
- {
- chart: {
- inverted: false,
- alignTicks: false
- }
- });
- options.series = userOptions.series = seriesOptions;
- return hasRenderToArg ?
- new Chart(a, options, c) :
- new Chart(options, b);
- }
- Map.mapChart = mapChart;
- /**
- * Utility for reading SVG paths directly.
- *
- * @requires modules/map
- *
- * @function Highcharts.splitPath
- *
- * @param {string|Array<string|number>} path
- *
- * @return {Highcharts.SVGPathArray}
- */
- function splitPath(path) {
- var arr;
- if (typeof path === 'string') {
- path = path
- // Move letters apart
- .replace(/([A-Za-z])/g, ' $1 ')
- // Trim
- .replace(/^\s*/, '').replace(/\s*$/, '');
- // Split on spaces and commas. The semicolon is bogus, designed to
- // circumvent string replacement in the pre-v7 assembler that built
- // specific styled mode files.
- var split = path.split(/[ ,;]+/);
- arr = split.map(function (item) {
- if (!/[A-za-z]/.test(item)) {
- return parseFloat(item);
- }
- return item;
- });
- }
- else {
- arr = path;
- }
- return SVGRenderer.prototype.pathToSegments(arr);
- }
- Map.splitPath = splitPath;
- })(Map || (Map = {}));
- /* *
- *
- * Compatibility
- *
- * */
- H.Map = Map.mapChart; // @todo remove fake class for jQuery
- H.mapChart = Map.mapChart;
- H.maps = Map.maps;
- /* *
- *
- * Default Export
- *
- * */
- export default Map;
|