|   | 
| /* | 
| * Licensed to the Apache Software Foundation (ASF) under one | 
| * or more contributor license agreements.  See the NOTICE file | 
| * distributed with this work for additional information | 
| * regarding copyright ownership.  The ASF licenses this file | 
| * to you under the Apache License, Version 2.0 (the | 
| * "License"); you may not use this file except in compliance | 
| * with the License.  You may obtain a copy of the License at | 
| * | 
| *   http://www.apache.org/licenses/LICENSE-2.0 | 
| * | 
| * Unless required by applicable law or agreed to in writing, | 
| * software distributed under the License is distributed on an | 
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
| * KIND, either express or implied.  See the License for the | 
| * specific language governing permissions and limitations | 
| * under the License. | 
| */ | 
|   | 
|   | 
| /** | 
|  * AUTO-GENERATED FILE. DO NOT MODIFY. | 
|  */ | 
|   | 
| /* | 
| * Licensed to the Apache Software Foundation (ASF) under one | 
| * or more contributor license agreements.  See the NOTICE file | 
| * distributed with this work for additional information | 
| * regarding copyright ownership.  The ASF licenses this file | 
| * to you under the Apache License, Version 2.0 (the | 
| * "License"); you may not use this file except in compliance | 
| * with the License.  You may obtain a copy of the License at | 
| * | 
| *   http://www.apache.org/licenses/LICENSE-2.0 | 
| * | 
| * Unless required by applicable law or agreed to in writing, | 
| * software distributed under the License is distributed on an | 
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
| * KIND, either express or implied.  See the License for the | 
| * specific language governing permissions and limitations | 
| * under the License. | 
| */ | 
| import * as zrUtil from 'zrender/lib/core/util.js'; | 
| import { encodeHTML } from 'zrender/lib/core/dom.js'; | 
| import { parseDate, isNumeric, numericToNumber } from './number.js'; | 
| import { format as timeFormat, pad } from './time.js'; | 
| import { deprecateReplaceLog } from './log.js'; | 
| /** | 
|  * Add a comma each three digit. | 
|  */ | 
| export function addCommas(x) { | 
|   if (!isNumeric(x)) { | 
|     return zrUtil.isString(x) ? x : '-'; | 
|   } | 
|   var parts = (x + '').split('.'); | 
|   return parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + (parts.length > 1 ? '.' + parts[1] : ''); | 
| } | 
| export function toCamelCase(str, upperCaseFirst) { | 
|   str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) { | 
|     return group1.toUpperCase(); | 
|   }); | 
|   if (upperCaseFirst && str) { | 
|     str = str.charAt(0).toUpperCase() + str.slice(1); | 
|   } | 
|   return str; | 
| } | 
| export var normalizeCssArray = zrUtil.normalizeCssArray; | 
| export { encodeHTML }; | 
| /** | 
|  * Make value user readable for tooltip and label. | 
|  * "User readable": | 
|  *     Try to not print programmer-specific text like NaN, Infinity, null, undefined. | 
|  *     Avoid to display an empty string, which users can not recognize there is | 
|  *     a value and it might look like a bug. | 
|  */ | 
| export function makeValueReadable(value, valueType, useUTC) { | 
|   var USER_READABLE_DEFUALT_TIME_PATTERN = '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}'; | 
|   function stringToUserReadable(str) { | 
|     return str && zrUtil.trim(str) ? str : '-'; | 
|   } | 
|   function isNumberUserReadable(num) { | 
|     return !!(num != null && !isNaN(num) && isFinite(num)); | 
|   } | 
|   var isTypeTime = valueType === 'time'; | 
|   var isValueDate = value instanceof Date; | 
|   if (isTypeTime || isValueDate) { | 
|     var date = isTypeTime ? parseDate(value) : value; | 
|     if (!isNaN(+date)) { | 
|       return timeFormat(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC); | 
|     } else if (isValueDate) { | 
|       return '-'; | 
|     } | 
|     // In other cases, continue to try to display the value in the following code. | 
|   } | 
|   if (valueType === 'ordinal') { | 
|     return zrUtil.isStringSafe(value) ? stringToUserReadable(value) : zrUtil.isNumber(value) ? isNumberUserReadable(value) ? value + '' : '-' : '-'; | 
|   } | 
|   // By default. | 
|   var numericResult = numericToNumber(value); | 
|   return isNumberUserReadable(numericResult) ? addCommas(numericResult) : zrUtil.isStringSafe(value) ? stringToUserReadable(value) : typeof value === 'boolean' ? value + '' : '-'; | 
| } | 
| var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g']; | 
| var wrapVar = function (varName, seriesIdx) { | 
|   return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}'; | 
| }; | 
| /** | 
|  * Template formatter | 
|  * @param {Array.<Object>|Object} paramsList | 
|  */ | 
| export function formatTpl(tpl, paramsList, encode) { | 
|   if (!zrUtil.isArray(paramsList)) { | 
|     paramsList = [paramsList]; | 
|   } | 
|   var seriesLen = paramsList.length; | 
|   if (!seriesLen) { | 
|     return ''; | 
|   } | 
|   var $vars = paramsList[0].$vars || []; | 
|   for (var i = 0; i < $vars.length; i++) { | 
|     var alias = TPL_VAR_ALIAS[i]; | 
|     tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0)); | 
|   } | 
|   for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) { | 
|     for (var k = 0; k < $vars.length; k++) { | 
|       var val = paramsList[seriesIdx][$vars[k]]; | 
|       tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val); | 
|     } | 
|   } | 
|   return tpl; | 
| } | 
| /** | 
|  * simple Template formatter | 
|  */ | 
| export function formatTplSimple(tpl, param, encode) { | 
|   zrUtil.each(param, function (value, key) { | 
|     tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value); | 
|   }); | 
|   return tpl; | 
| } | 
| export function getTooltipMarker(inOpt, extraCssText) { | 
|   var opt = zrUtil.isString(inOpt) ? { | 
|     color: inOpt, | 
|     extraCssText: extraCssText | 
|   } : inOpt || {}; | 
|   var color = opt.color; | 
|   var type = opt.type; | 
|   extraCssText = opt.extraCssText; | 
|   var renderMode = opt.renderMode || 'html'; | 
|   if (!color) { | 
|     return ''; | 
|   } | 
|   if (renderMode === 'html') { | 
|     return type === 'subItem' ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;' + 'border-radius:4px;width:4px;height:4px;background-color:' | 
|     // Only support string | 
|     + encodeHTML(color) + ';' + (extraCssText || '') + '"></span>' : '<span style="display:inline-block;margin-right:4px;' + 'border-radius:10px;width:10px;height:10px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '"></span>'; | 
|   } else { | 
|     // Should better not to auto generate style name by auto-increment number here. | 
|     // Because this util is usually called in tooltip formatter, which is probably | 
|     // called repeatedly when mouse move and the auto-increment number increases fast. | 
|     // Users can make their own style name by theirselves, make it unique and readable. | 
|     var markerId = opt.markerId || 'markerX'; | 
|     return { | 
|       renderMode: renderMode, | 
|       content: '{' + markerId + '|}  ', | 
|       style: type === 'subItem' ? { | 
|         width: 4, | 
|         height: 4, | 
|         borderRadius: 2, | 
|         backgroundColor: color | 
|       } : { | 
|         width: 10, | 
|         height: 10, | 
|         borderRadius: 5, | 
|         backgroundColor: color | 
|       } | 
|     }; | 
|   } | 
| } | 
| /** | 
|  * @deprecated Use `time/format` instead. | 
|  * ISO Date format | 
|  * @param {string} tpl | 
|  * @param {number} value | 
|  * @param {boolean} [isUTC=false] Default in local time. | 
|  *           see `module:echarts/scale/Time` | 
|  *           and `module:echarts/util/number#parseDate`. | 
|  * @inner | 
|  */ | 
| export function formatTime(tpl, value, isUTC) { | 
|   if (process.env.NODE_ENV !== 'production') { | 
|     deprecateReplaceLog('echarts.format.formatTime', 'echarts.time.format'); | 
|   } | 
|   if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') { | 
|     tpl = 'MM-dd\nyyyy'; | 
|   } | 
|   var date = parseDate(value); | 
|   var getUTC = isUTC ? 'getUTC' : 'get'; | 
|   var y = date[getUTC + 'FullYear'](); | 
|   var M = date[getUTC + 'Month']() + 1; | 
|   var d = date[getUTC + 'Date'](); | 
|   var h = date[getUTC + 'Hours'](); | 
|   var m = date[getUTC + 'Minutes'](); | 
|   var s = date[getUTC + 'Seconds'](); | 
|   var S = date[getUTC + 'Milliseconds'](); | 
|   tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', pad(y % 100 + '', 2)).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3)); | 
|   return tpl; | 
| } | 
| /** | 
|  * Capital first | 
|  * @param {string} str | 
|  * @return {string} | 
|  */ | 
| export function capitalFirst(str) { | 
|   return str ? str.charAt(0).toUpperCase() + str.substr(1) : str; | 
| } | 
| /** | 
|  * @return Never be null/undefined. | 
|  */ | 
| export function convertToColorString(color, defaultColor) { | 
|   defaultColor = defaultColor || 'transparent'; | 
|   return zrUtil.isString(color) ? color : zrUtil.isObject(color) ? color.colorStops && (color.colorStops[0] || {}).color || defaultColor : defaultColor; | 
| } | 
| export { truncateText } from 'zrender/lib/graphic/helper/parseText.js'; | 
| /** | 
|  * open new tab | 
|  * @param link url | 
|  * @param target blank or self | 
|  */ | 
| export function windowOpen(link, target) { | 
|   /* global window */ | 
|   if (target === '_blank' || target === 'blank') { | 
|     var blank = window.open(); | 
|     blank.opener = null; | 
|     blank.location.href = link; | 
|   } else { | 
|     window.open(link, target); | 
|   } | 
| } | 
| export { getTextRect } from '../legacy/getTextRect.js'; |