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