| 
/* 
 | 
* 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 { __extends } from "tslib"; 
 | 
import * as zrUtil from 'zrender/lib/core/util.js'; 
 | 
import * as graphic from '../../util/graphic.js'; 
 | 
import { getECData } from '../../util/innerStore.js'; 
 | 
import { createTextStyle } from '../../label/labelStyle.js'; 
 | 
import { getLayoutRect } from '../../util/layout.js'; 
 | 
import ComponentModel from '../../model/Component.js'; 
 | 
import ComponentView from '../../view/Component.js'; 
 | 
import { windowOpen } from '../../util/format.js'; 
 | 
var TitleModel = /** @class */function (_super) { 
 | 
  __extends(TitleModel, _super); 
 | 
  function TitleModel() { 
 | 
    var _this = _super !== null && _super.apply(this, arguments) || this; 
 | 
    _this.type = TitleModel.type; 
 | 
    _this.layoutMode = { 
 | 
      type: 'box', 
 | 
      ignoreSize: true 
 | 
    }; 
 | 
    return _this; 
 | 
  } 
 | 
  TitleModel.type = 'title'; 
 | 
  TitleModel.defaultOption = { 
 | 
    // zlevel: 0, 
 | 
    z: 6, 
 | 
    show: true, 
 | 
    text: '', 
 | 
    target: 'blank', 
 | 
    subtext: '', 
 | 
    subtarget: 'blank', 
 | 
    left: 0, 
 | 
    top: 0, 
 | 
    backgroundColor: 'rgba(0,0,0,0)', 
 | 
    borderColor: '#ccc', 
 | 
    borderWidth: 0, 
 | 
    padding: 5, 
 | 
    itemGap: 10, 
 | 
    textStyle: { 
 | 
      fontSize: 18, 
 | 
      fontWeight: 'bold', 
 | 
      color: '#464646' 
 | 
    }, 
 | 
    subtextStyle: { 
 | 
      fontSize: 12, 
 | 
      color: '#6E7079' 
 | 
    } 
 | 
  }; 
 | 
  return TitleModel; 
 | 
}(ComponentModel); 
 | 
// View 
 | 
var TitleView = /** @class */function (_super) { 
 | 
  __extends(TitleView, _super); 
 | 
  function TitleView() { 
 | 
    var _this = _super !== null && _super.apply(this, arguments) || this; 
 | 
    _this.type = TitleView.type; 
 | 
    return _this; 
 | 
  } 
 | 
  TitleView.prototype.render = function (titleModel, ecModel, api) { 
 | 
    this.group.removeAll(); 
 | 
    if (!titleModel.get('show')) { 
 | 
      return; 
 | 
    } 
 | 
    var group = this.group; 
 | 
    var textStyleModel = titleModel.getModel('textStyle'); 
 | 
    var subtextStyleModel = titleModel.getModel('subtextStyle'); 
 | 
    var textAlign = titleModel.get('textAlign'); 
 | 
    var textVerticalAlign = zrUtil.retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign')); 
 | 
    var textEl = new graphic.Text({ 
 | 
      style: createTextStyle(textStyleModel, { 
 | 
        text: titleModel.get('text'), 
 | 
        fill: textStyleModel.getTextColor() 
 | 
      }, { 
 | 
        disableBox: true 
 | 
      }), 
 | 
      z2: 10 
 | 
    }); 
 | 
    var textRect = textEl.getBoundingRect(); 
 | 
    var subText = titleModel.get('subtext'); 
 | 
    var subTextEl = new graphic.Text({ 
 | 
      style: createTextStyle(subtextStyleModel, { 
 | 
        text: subText, 
 | 
        fill: subtextStyleModel.getTextColor(), 
 | 
        y: textRect.height + titleModel.get('itemGap'), 
 | 
        verticalAlign: 'top' 
 | 
      }, { 
 | 
        disableBox: true 
 | 
      }), 
 | 
      z2: 10 
 | 
    }); 
 | 
    var link = titleModel.get('link'); 
 | 
    var sublink = titleModel.get('sublink'); 
 | 
    var triggerEvent = titleModel.get('triggerEvent', true); 
 | 
    textEl.silent = !link && !triggerEvent; 
 | 
    subTextEl.silent = !sublink && !triggerEvent; 
 | 
    if (link) { 
 | 
      textEl.on('click', function () { 
 | 
        windowOpen(link, '_' + titleModel.get('target')); 
 | 
      }); 
 | 
    } 
 | 
    if (sublink) { 
 | 
      subTextEl.on('click', function () { 
 | 
        windowOpen(sublink, '_' + titleModel.get('subtarget')); 
 | 
      }); 
 | 
    } 
 | 
    getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent ? { 
 | 
      componentType: 'title', 
 | 
      componentIndex: titleModel.componentIndex 
 | 
    } : null; 
 | 
    group.add(textEl); 
 | 
    subText && group.add(subTextEl); 
 | 
    // If no subText, but add subTextEl, there will be an empty line. 
 | 
    var groupRect = group.getBoundingRect(); 
 | 
    var layoutOption = titleModel.getBoxLayoutParams(); 
 | 
    layoutOption.width = groupRect.width; 
 | 
    layoutOption.height = groupRect.height; 
 | 
    var layoutRect = getLayoutRect(layoutOption, { 
 | 
      width: api.getWidth(), 
 | 
      height: api.getHeight() 
 | 
    }, titleModel.get('padding')); 
 | 
    // Adjust text align based on position 
 | 
    if (!textAlign) { 
 | 
      // Align left if title is on the left. center and right is same 
 | 
      textAlign = titleModel.get('left') || titleModel.get('right'); 
 | 
      // @ts-ignore 
 | 
      if (textAlign === 'middle') { 
 | 
        textAlign = 'center'; 
 | 
      } 
 | 
      // Adjust layout by text align 
 | 
      if (textAlign === 'right') { 
 | 
        layoutRect.x += layoutRect.width; 
 | 
      } else if (textAlign === 'center') { 
 | 
        layoutRect.x += layoutRect.width / 2; 
 | 
      } 
 | 
    } 
 | 
    if (!textVerticalAlign) { 
 | 
      textVerticalAlign = titleModel.get('top') || titleModel.get('bottom'); 
 | 
      // @ts-ignore 
 | 
      if (textVerticalAlign === 'center') { 
 | 
        textVerticalAlign = 'middle'; 
 | 
      } 
 | 
      if (textVerticalAlign === 'bottom') { 
 | 
        layoutRect.y += layoutRect.height; 
 | 
      } else if (textVerticalAlign === 'middle') { 
 | 
        layoutRect.y += layoutRect.height / 2; 
 | 
      } 
 | 
      textVerticalAlign = textVerticalAlign || 'top'; 
 | 
    } 
 | 
    group.x = layoutRect.x; 
 | 
    group.y = layoutRect.y; 
 | 
    group.markRedraw(); 
 | 
    var alignStyle = { 
 | 
      align: textAlign, 
 | 
      verticalAlign: textVerticalAlign 
 | 
    }; 
 | 
    textEl.setStyle(alignStyle); 
 | 
    subTextEl.setStyle(alignStyle); 
 | 
    // Render background 
 | 
    // Get groupRect again because textAlign has been changed 
 | 
    groupRect = group.getBoundingRect(); 
 | 
    var padding = layoutRect.margin; 
 | 
    var style = titleModel.getItemStyle(['color', 'opacity']); 
 | 
    style.fill = titleModel.get('backgroundColor'); 
 | 
    var rect = new graphic.Rect({ 
 | 
      shape: { 
 | 
        x: groupRect.x - padding[3], 
 | 
        y: groupRect.y - padding[0], 
 | 
        width: groupRect.width + padding[1] + padding[3], 
 | 
        height: groupRect.height + padding[0] + padding[2], 
 | 
        r: titleModel.get('borderRadius') 
 | 
      }, 
 | 
      style: style, 
 | 
      subPixelOptimize: true, 
 | 
      silent: true 
 | 
    }); 
 | 
    group.add(rect); 
 | 
  }; 
 | 
  TitleView.type = 'title'; 
 | 
  return TitleView; 
 | 
}(ComponentView); 
 | 
export function install(registers) { 
 | 
  registers.registerComponentModel(TitleModel); 
 | 
  registers.registerComponentView(TitleView); 
 | 
} 
 |