|  | 
 | /* | 
 | * 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 env from 'zrender/lib/core/env.js'; | 
 | import { enableClassExtend, enableClassCheck } from '../util/clazz.js'; | 
 | import { AreaStyleMixin } from './mixin/areaStyle.js'; | 
 | import TextStyleMixin from './mixin/textStyle.js'; | 
 | import { LineStyleMixin } from './mixin/lineStyle.js'; | 
 | import { ItemStyleMixin } from './mixin/itemStyle.js'; | 
 | import { mixin, clone, merge } from 'zrender/lib/core/util.js'; | 
 | var Model = /** @class */function () { | 
 |   function Model(option, parentModel, ecModel) { | 
 |     this.parentModel = parentModel; | 
 |     this.ecModel = ecModel; | 
 |     this.option = option; | 
 |     // Simple optimization | 
 |     // if (this.init) { | 
 |     //     if (arguments.length <= 4) { | 
 |     //         this.init(option, parentModel, ecModel, extraOpt); | 
 |     //     } | 
 |     //     else { | 
 |     //         this.init.apply(this, arguments); | 
 |     //     } | 
 |     // } | 
 |   } | 
 |   Model.prototype.init = function (option, parentModel, ecModel) { | 
 |     var rest = []; | 
 |     for (var _i = 3; _i < arguments.length; _i++) { | 
 |       rest[_i - 3] = arguments[_i]; | 
 |     } | 
 |   }; | 
 |   /** | 
 |    * Merge the input option to me. | 
 |    */ | 
 |   Model.prototype.mergeOption = function (option, ecModel) { | 
 |     merge(this.option, option, true); | 
 |   }; | 
 |   // `path` can be 'a.b.c', so the return value type have to be `ModelOption` | 
 |   // TODO: TYPE strict key check? | 
 |   // get(path: string | string[], ignoreParent?: boolean): ModelOption; | 
 |   Model.prototype.get = function (path, ignoreParent) { | 
 |     if (path == null) { | 
 |       return this.option; | 
 |     } | 
 |     return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel); | 
 |   }; | 
 |   Model.prototype.getShallow = function (key, ignoreParent) { | 
 |     var option = this.option; | 
 |     var val = option == null ? option : option[key]; | 
 |     if (val == null && !ignoreParent) { | 
 |       var parentModel = this.parentModel; | 
 |       if (parentModel) { | 
 |         // FIXME:TS do not know how to make it works | 
 |         val = parentModel.getShallow(key); | 
 |       } | 
 |     } | 
 |     return val; | 
 |   }; | 
 |   // `path` can be 'a.b.c', so the return value type have to be `Model<ModelOption>` | 
 |   // getModel(path: string | string[], parentModel?: Model): Model; | 
 |   // TODO 'a.b.c' is deprecated | 
 |   Model.prototype.getModel = function (path, parentModel) { | 
 |     var hasPath = path != null; | 
 |     var pathFinal = hasPath ? this.parsePath(path) : null; | 
 |     var obj = hasPath ? this._doGet(pathFinal) : this.option; | 
 |     parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal)); | 
 |     return new Model(obj, parentModel, this.ecModel); | 
 |   }; | 
 |   /** | 
 |    * If model has option | 
 |    */ | 
 |   Model.prototype.isEmpty = function () { | 
 |     return this.option == null; | 
 |   }; | 
 |   Model.prototype.restoreData = function () {}; | 
 |   // Pending | 
 |   Model.prototype.clone = function () { | 
 |     var Ctor = this.constructor; | 
 |     return new Ctor(clone(this.option)); | 
 |   }; | 
 |   // setReadOnly(properties): void { | 
 |   // clazzUtil.setReadOnly(this, properties); | 
 |   // } | 
 |   // If path is null/undefined, return null/undefined. | 
 |   Model.prototype.parsePath = function (path) { | 
 |     if (typeof path === 'string') { | 
 |       return path.split('.'); | 
 |     } | 
 |     return path; | 
 |   }; | 
 |   // Resolve path for parent. Perhaps useful when parent use a different property. | 
 |   // Default to be a identity resolver. | 
 |   // Can be modified to a different resolver. | 
 |   Model.prototype.resolveParentPath = function (path) { | 
 |     return path; | 
 |   }; | 
 |   // FIXME:TS check whether put this method here | 
 |   Model.prototype.isAnimationEnabled = function () { | 
 |     if (!env.node && this.option) { | 
 |       if (this.option.animation != null) { | 
 |         return !!this.option.animation; | 
 |       } else if (this.parentModel) { | 
 |         return this.parentModel.isAnimationEnabled(); | 
 |       } | 
 |     } | 
 |   }; | 
 |   Model.prototype._doGet = function (pathArr, parentModel) { | 
 |     var obj = this.option; | 
 |     if (!pathArr) { | 
 |       return obj; | 
 |     } | 
 |     for (var i = 0; i < pathArr.length; i++) { | 
 |       // Ignore empty | 
 |       if (!pathArr[i]) { | 
 |         continue; | 
 |       } | 
 |       // obj could be number/string/... (like 0) | 
 |       obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null; | 
 |       if (obj == null) { | 
 |         break; | 
 |       } | 
 |     } | 
 |     if (obj == null && parentModel) { | 
 |       obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel); | 
 |     } | 
 |     return obj; | 
 |   }; | 
 |   return Model; | 
 | }(); | 
 | ; | 
 | // Enable Model.extend. | 
 | enableClassExtend(Model); | 
 | enableClassCheck(Model); | 
 | mixin(Model, LineStyleMixin); | 
 | mixin(Model, ItemStyleMixin); | 
 | mixin(Model, AreaStyleMixin); | 
 | mixin(Model, TextStyleMixin); | 
 | export default Model; |