| 
/* 
 | 
* 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; 
 |