|   | 
| /* | 
| * 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 { each, isArray, isObject, isTypedArray, defaults } from 'zrender/lib/core/util.js'; | 
| import compatStyle from './helper/compatStyle.js'; | 
| import { normalizeToArray } from '../util/model.js'; | 
| import { deprecateLog, deprecateReplaceLog } from '../util/log.js'; | 
| function get(opt, path) { | 
|   var pathArr = path.split(','); | 
|   var obj = opt; | 
|   for (var i = 0; i < pathArr.length; i++) { | 
|     obj = obj && obj[pathArr[i]]; | 
|     if (obj == null) { | 
|       break; | 
|     } | 
|   } | 
|   return obj; | 
| } | 
| function set(opt, path, val, overwrite) { | 
|   var pathArr = path.split(','); | 
|   var obj = opt; | 
|   var key; | 
|   var i = 0; | 
|   for (; i < pathArr.length - 1; i++) { | 
|     key = pathArr[i]; | 
|     if (obj[key] == null) { | 
|       obj[key] = {}; | 
|     } | 
|     obj = obj[key]; | 
|   } | 
|   if (overwrite || obj[pathArr[i]] == null) { | 
|     obj[pathArr[i]] = val; | 
|   } | 
| } | 
| function compatLayoutProperties(option) { | 
|   option && each(LAYOUT_PROPERTIES, function (prop) { | 
|     if (prop[0] in option && !(prop[1] in option)) { | 
|       option[prop[1]] = option[prop[0]]; | 
|     } | 
|   }); | 
| } | 
| var LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']]; | 
| var COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline']; | 
| var BAR_ITEM_STYLE_MAP = [['borderRadius', 'barBorderRadius'], ['borderColor', 'barBorderColor'], ['borderWidth', 'barBorderWidth']]; | 
| function compatBarItemStyle(option) { | 
|   var itemStyle = option && option.itemStyle; | 
|   if (itemStyle) { | 
|     for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) { | 
|       var oldName = BAR_ITEM_STYLE_MAP[i][1]; | 
|       var newName = BAR_ITEM_STYLE_MAP[i][0]; | 
|       if (itemStyle[oldName] != null) { | 
|         itemStyle[newName] = itemStyle[oldName]; | 
|         if (process.env.NODE_ENV !== 'production') { | 
|           deprecateReplaceLog(oldName, newName); | 
|         } | 
|       } | 
|     } | 
|   } | 
| } | 
| function compatPieLabel(option) { | 
|   if (!option) { | 
|     return; | 
|   } | 
|   if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) { | 
|     if (process.env.NODE_ENV !== 'production') { | 
|       deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie'); | 
|     } | 
|     option.edgeDistance = option.margin; | 
|   } | 
| } | 
| function compatSunburstState(option) { | 
|   if (!option) { | 
|     return; | 
|   } | 
|   if (option.downplay && !option.blur) { | 
|     option.blur = option.downplay; | 
|     if (process.env.NODE_ENV !== 'production') { | 
|       deprecateReplaceLog('downplay', 'blur', 'sunburst'); | 
|     } | 
|   } | 
| } | 
| function compatGraphFocus(option) { | 
|   if (!option) { | 
|     return; | 
|   } | 
|   if (option.focusNodeAdjacency != null) { | 
|     option.emphasis = option.emphasis || {}; | 
|     if (option.emphasis.focus == null) { | 
|       if (process.env.NODE_ENV !== 'production') { | 
|         deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \'adjacency\'}', 'graph/sankey'); | 
|       } | 
|       option.emphasis.focus = 'adjacency'; | 
|     } | 
|   } | 
| } | 
| function traverseTree(data, cb) { | 
|   if (data) { | 
|     for (var i = 0; i < data.length; i++) { | 
|       cb(data[i]); | 
|       data[i] && traverseTree(data[i].children, cb); | 
|     } | 
|   } | 
| } | 
| export default function globalBackwardCompat(option, isTheme) { | 
|   compatStyle(option, isTheme); | 
|   // Make sure series array for model initialization. | 
|   option.series = normalizeToArray(option.series); | 
|   each(option.series, function (seriesOpt) { | 
|     if (!isObject(seriesOpt)) { | 
|       return; | 
|     } | 
|     var seriesType = seriesOpt.type; | 
|     if (seriesType === 'line') { | 
|       if (seriesOpt.clipOverflow != null) { | 
|         seriesOpt.clip = seriesOpt.clipOverflow; | 
|         if (process.env.NODE_ENV !== 'production') { | 
|           deprecateReplaceLog('clipOverflow', 'clip', 'line'); | 
|         } | 
|       } | 
|     } else if (seriesType === 'pie' || seriesType === 'gauge') { | 
|       if (seriesOpt.clockWise != null) { | 
|         seriesOpt.clockwise = seriesOpt.clockWise; | 
|         if (process.env.NODE_ENV !== 'production') { | 
|           deprecateReplaceLog('clockWise', 'clockwise'); | 
|         } | 
|       } | 
|       compatPieLabel(seriesOpt.label); | 
|       var data = seriesOpt.data; | 
|       if (data && !isTypedArray(data)) { | 
|         for (var i = 0; i < data.length; i++) { | 
|           compatPieLabel(data[i]); | 
|         } | 
|       } | 
|       if (seriesOpt.hoverOffset != null) { | 
|         seriesOpt.emphasis = seriesOpt.emphasis || {}; | 
|         if (seriesOpt.emphasis.scaleSize = null) { | 
|           if (process.env.NODE_ENV !== 'production') { | 
|             deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize'); | 
|           } | 
|           seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset; | 
|         } | 
|       } | 
|     } else if (seriesType === 'gauge') { | 
|       var pointerColor = get(seriesOpt, 'pointer.color'); | 
|       pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor); | 
|     } else if (seriesType === 'bar') { | 
|       compatBarItemStyle(seriesOpt); | 
|       compatBarItemStyle(seriesOpt.backgroundStyle); | 
|       compatBarItemStyle(seriesOpt.emphasis); | 
|       var data = seriesOpt.data; | 
|       if (data && !isTypedArray(data)) { | 
|         for (var i = 0; i < data.length; i++) { | 
|           if (typeof data[i] === 'object') { | 
|             compatBarItemStyle(data[i]); | 
|             compatBarItemStyle(data[i] && data[i].emphasis); | 
|           } | 
|         } | 
|       } | 
|     } else if (seriesType === 'sunburst') { | 
|       var highlightPolicy = seriesOpt.highlightPolicy; | 
|       if (highlightPolicy) { | 
|         seriesOpt.emphasis = seriesOpt.emphasis || {}; | 
|         if (!seriesOpt.emphasis.focus) { | 
|           seriesOpt.emphasis.focus = highlightPolicy; | 
|           if (process.env.NODE_ENV !== 'production') { | 
|             deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst'); | 
|           } | 
|         } | 
|       } | 
|       compatSunburstState(seriesOpt); | 
|       traverseTree(seriesOpt.data, compatSunburstState); | 
|     } else if (seriesType === 'graph' || seriesType === 'sankey') { | 
|       compatGraphFocus(seriesOpt); | 
|       // TODO nodes, edges? | 
|     } else if (seriesType === 'map') { | 
|       if (seriesOpt.mapType && !seriesOpt.map) { | 
|         if (process.env.NODE_ENV !== 'production') { | 
|           deprecateReplaceLog('mapType', 'map', 'map'); | 
|         } | 
|         seriesOpt.map = seriesOpt.mapType; | 
|       } | 
|       if (seriesOpt.mapLocation) { | 
|         if (process.env.NODE_ENV !== 'production') { | 
|           deprecateLog('`mapLocation` is not used anymore.'); | 
|         } | 
|         defaults(seriesOpt, seriesOpt.mapLocation); | 
|       } | 
|     } | 
|     if (seriesOpt.hoverAnimation != null) { | 
|       seriesOpt.emphasis = seriesOpt.emphasis || {}; | 
|       if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) { | 
|         if (process.env.NODE_ENV !== 'production') { | 
|           deprecateReplaceLog('hoverAnimation', 'emphasis.scale'); | 
|         } | 
|         seriesOpt.emphasis.scale = seriesOpt.hoverAnimation; | 
|       } | 
|     } | 
|     compatLayoutProperties(seriesOpt); | 
|   }); | 
|   // dataRange has changed to visualMap | 
|   if (option.dataRange) { | 
|     option.visualMap = option.dataRange; | 
|   } | 
|   each(COMPATITABLE_COMPONENTS, function (componentName) { | 
|     var options = option[componentName]; | 
|     if (options) { | 
|       if (!isArray(options)) { | 
|         options = [options]; | 
|       } | 
|       each(options, function (option) { | 
|         compatLayoutProperties(option); | 
|       }); | 
|     } | 
|   }); | 
| } |