| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569 | 
							
- /*
 
- * 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 ZRText from 'zrender/lib/graphic/Text.js';
 
- import { isFunction, retrieve2, extend, keys, trim } from 'zrender/lib/core/util.js';
 
- import { SPECIAL_STATES, DISPLAY_STATES } from '../util/states.js';
 
- import { deprecateReplaceLog } from '../util/log.js';
 
- import { makeInner, interpolateRawValues } from '../util/model.js';
 
- import { initProps, updateProps } from '../util/graphic.js';
 
- var EMPTY_OBJ = {};
 
- export function setLabelText(label, labelTexts) {
 
-   for (var i = 0; i < SPECIAL_STATES.length; i++) {
 
-     var stateName = SPECIAL_STATES[i];
 
-     var text = labelTexts[stateName];
 
-     var state = label.ensureState(stateName);
 
-     state.style = state.style || {};
 
-     state.style.text = text;
 
-   }
 
-   var oldStates = label.currentStates.slice();
 
-   label.clearStates(true);
 
-   label.setStyle({
 
-     text: labelTexts.normal
 
-   });
 
-   label.useStates(oldStates, true);
 
- }
 
- function getLabelText(opt, stateModels, interpolatedValue) {
 
-   var labelFetcher = opt.labelFetcher;
 
-   var labelDataIndex = opt.labelDataIndex;
 
-   var labelDimIndex = opt.labelDimIndex;
 
-   var normalModel = stateModels.normal;
 
-   var baseText;
 
-   if (labelFetcher) {
 
-     baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), interpolatedValue != null ? {
 
-       interpolatedValue: interpolatedValue
 
-     } : null);
 
-   }
 
-   if (baseText == null) {
 
-     baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText;
 
-   }
 
-   var statesText = {
 
-     normal: baseText
 
-   };
 
-   for (var i = 0; i < SPECIAL_STATES.length; i++) {
 
-     var stateName = SPECIAL_STATES[i];
 
-     var stateModel = stateModels[stateName];
 
-     statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter')) : null, baseText);
 
-   }
 
-   return statesText;
 
- }
 
- function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified // TODO specified position?
 
- ) {
 
-   opt = opt || EMPTY_OBJ;
 
-   var isSetOnText = targetEl instanceof ZRText;
 
-   var needsCreateText = false;
 
-   for (var i = 0; i < DISPLAY_STATES.length; i++) {
 
-     var stateModel = labelStatesModels[DISPLAY_STATES[i]];
 
-     if (stateModel && stateModel.getShallow('show')) {
 
-       needsCreateText = true;
 
-       break;
 
-     }
 
-   }
 
-   var textContent = isSetOnText ? targetEl : targetEl.getTextContent();
 
-   if (needsCreateText) {
 
-     if (!isSetOnText) {
 
-       // Reuse the previous
 
-       if (!textContent) {
 
-         textContent = new ZRText();
 
-         targetEl.setTextContent(textContent);
 
-       } // Use same state proxy
 
-       if (targetEl.stateProxy) {
 
-         textContent.stateProxy = targetEl.stateProxy;
 
-       }
 
-     }
 
-     var labelStatesTexts = getLabelText(opt, labelStatesModels);
 
-     var normalModel = labelStatesModels.normal;
 
-     var showNormal = !!normalModel.getShallow('show');
 
-     var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);
 
-     normalStyle.text = labelStatesTexts.normal;
 
-     if (!isSetOnText) {
 
-       // Always create new
 
-       targetEl.setTextConfig(createTextConfig(normalModel, opt, false));
 
-     }
 
-     for (var i = 0; i < SPECIAL_STATES.length; i++) {
 
-       var stateName = SPECIAL_STATES[i];
 
-       var stateModel = labelStatesModels[stateName];
 
-       if (stateModel) {
 
-         var stateObj = textContent.ensureState(stateName);
 
-         var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal);
 
-         if (stateShow !== showNormal) {
 
-           stateObj.ignore = !stateShow;
 
-         }
 
-         stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);
 
-         stateObj.style.text = labelStatesTexts[stateName];
 
-         if (!isSetOnText) {
 
-           var targetElEmphasisState = targetEl.ensureState(stateName);
 
-           targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);
 
-         }
 
-       }
 
-     } // PENDING: if there is many requirements that emphasis position
 
-     // need to be different from normal position, we might consider
 
-     // auto slient is those cases.
 
-     textContent.silent = !!normalModel.getShallow('silent'); // Keep x and y
 
-     if (textContent.style.x != null) {
 
-       normalStyle.x = textContent.style.x;
 
-     }
 
-     if (textContent.style.y != null) {
 
-       normalStyle.y = textContent.style.y;
 
-     }
 
-     textContent.ignore = !showNormal; // Always create new style.
 
-     textContent.useStyle(normalStyle);
 
-     textContent.dirty();
 
-     if (opt.enableTextSetter) {
 
-       labelInner(textContent).setLabelText = function (interpolatedValue) {
 
-         var labelStatesTexts = getLabelText(opt, labelStatesModels, interpolatedValue);
 
-         setLabelText(textContent, labelStatesTexts);
 
-       };
 
-     }
 
-   } else if (textContent) {
 
-     // Not display rich text.
 
-     textContent.ignore = true;
 
-   }
 
-   targetEl.dirty();
 
- }
 
- export { setLabelStyle };
 
- export function getLabelStatesModels(itemModel, labelName) {
 
-   labelName = labelName || 'label';
 
-   var statesModels = {
 
-     normal: itemModel.getModel(labelName)
 
-   };
 
-   for (var i = 0; i < SPECIAL_STATES.length; i++) {
 
-     var stateName = SPECIAL_STATES[i];
 
-     statesModels[stateName] = itemModel.getModel([stateName, labelName]);
 
-   }
 
-   return statesModels;
 
- }
 
- /**
 
-  * Set basic textStyle properties.
 
-  */
 
- export function createTextStyle(textStyleModel, specifiedTextStyle, // Fixed style in the code. Can't be set by model.
 
- opt, isNotNormal, isAttached // If text is attached on an element. If so, auto color will handling in zrender.
 
- ) {
 
-   var textStyle = {};
 
-   setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);
 
-   specifiedTextStyle && extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);
 
-   return textStyle;
 
- }
 
- export function createTextConfig(textStyleModel, opt, isNotNormal) {
 
-   opt = opt || {};
 
-   var textConfig = {};
 
-   var labelPosition;
 
-   var labelRotate = textStyleModel.getShallow('rotate');
 
-   var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);
 
-   var labelOffset = textStyleModel.getShallow('offset');
 
-   labelPosition = textStyleModel.getShallow('position') || (isNotNormal ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used
 
-   // in bar series, and magric type should be considered.
 
-   labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');
 
-   if (labelPosition != null) {
 
-     textConfig.position = labelPosition;
 
-   }
 
-   if (labelOffset != null) {
 
-     textConfig.offset = labelOffset;
 
-   }
 
-   if (labelRotate != null) {
 
-     labelRotate *= Math.PI / 180;
 
-     textConfig.rotation = labelRotate;
 
-   }
 
-   if (labelDistance != null) {
 
-     textConfig.distance = labelDistance;
 
-   } // fill and auto is determined by the color of path fill if it's not specified by developers.
 
-   textConfig.outsideFill = textStyleModel.get('color') === 'inherit' ? opt.inheritColor || null : 'auto';
 
-   return textConfig;
 
- }
 
- /**
 
-  * The uniform entry of set text style, that is, retrieve style definitions
 
-  * from `model` and set to `textStyle` object.
 
-  *
 
-  * Never in merge mode, but in overwrite mode, that is, all of the text style
 
-  * properties will be set. (Consider the states of normal and emphasis and
 
-  * default value can be adopted, merge would make the logic too complicated
 
-  * to manage.)
 
-  */
 
- function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {
 
-   // Consider there will be abnormal when merge hover style to normal style if given default value.
 
-   opt = opt || EMPTY_OBJ;
 
-   var ecModel = textStyleModel.ecModel;
 
-   var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:
 
-   // {
 
-   //     data: [{
 
-   //         value: 12,
 
-   //         label: {
 
-   //             rich: {
 
-   //                 // no 'a' here but using parent 'a'.
 
-   //             }
 
-   //         }
 
-   //     }],
 
-   //     rich: {
 
-   //         a: { ... }
 
-   //     }
 
-   // }
 
-   var richItemNames = getRichItemNames(textStyleModel);
 
-   var richResult;
 
-   if (richItemNames) {
 
-     richResult = {};
 
-     for (var name_1 in richItemNames) {
 
-       if (richItemNames.hasOwnProperty(name_1)) {
 
-         // Cascade is supported in rich.
 
-         var richTextStyle = textStyleModel.getModel(['rich', name_1]); // In rich, never `disableBox`.
 
-         // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,
 
-         // the default color `'blue'` will not be adopted if no color declared in `rich`.
 
-         // That might confuses users. So probably we should put `textStyleModel` as the
 
-         // root ancestor of the `richTextStyle`. But that would be a break change.
 
-         setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);
 
-       }
 
-     }
 
-   }
 
-   if (richResult) {
 
-     textStyle.rich = richResult;
 
-   }
 
-   var overflow = textStyleModel.get('overflow');
 
-   if (overflow) {
 
-     textStyle.overflow = overflow;
 
-   }
 
-   var margin = textStyleModel.get('minMargin');
 
-   if (margin != null) {
 
-     textStyle.margin = margin;
 
-   }
 
-   setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);
 
- } // Consider case:
 
- // {
 
- //     data: [{
 
- //         value: 12,
 
- //         label: {
 
- //             rich: {
 
- //                 // no 'a' here but using parent 'a'.
 
- //             }
 
- //         }
 
- //     }],
 
- //     rich: {
 
- //         a: { ... }
 
- //     }
 
- // }
 
- // TODO TextStyleModel
 
- function getRichItemNames(textStyleModel) {
 
-   // Use object to remove duplicated names.
 
-   var richItemNameMap;
 
-   while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {
 
-     var rich = (textStyleModel.option || EMPTY_OBJ).rich;
 
-     if (rich) {
 
-       richItemNameMap = richItemNameMap || {};
 
-       var richKeys = keys(rich);
 
-       for (var i = 0; i < richKeys.length; i++) {
 
-         var richKey = richKeys[i];
 
-         richItemNameMap[richKey] = 1;
 
-       }
 
-     }
 
-     textStyleModel = textStyleModel.parentModel;
 
-   }
 
-   return richItemNameMap;
 
- }
 
- var TEXT_PROPS_WITH_GLOBAL = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'];
 
- var TEXT_PROPS_SELF = ['align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign'];
 
- var TEXT_PROPS_BOX = ['padding', 'borderWidth', 'borderRadius', 'borderDashOffset', 'backgroundColor', 'borderColor', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];
 
- function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {
 
-   // In merge mode, default value should not be given.
 
-   globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;
 
-   var inheritColor = opt && opt.inheritColor;
 
-   var fillColor = textStyleModel.getShallow('color');
 
-   var strokeColor = textStyleModel.getShallow('textBorderColor');
 
-   var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity);
 
-   if (fillColor === 'inherit' || fillColor === 'auto') {
 
-     if (process.env.NODE_ENV !== 'production') {
 
-       if (fillColor === 'auto') {
 
-         deprecateReplaceLog('color: \'auto\'', 'color: \'inherit\'');
 
-       }
 
-     }
 
-     if (inheritColor) {
 
-       fillColor = inheritColor;
 
-     } else {
 
-       fillColor = null;
 
-     }
 
-   }
 
-   if (strokeColor === 'inherit' || strokeColor === 'auto') {
 
-     if (process.env.NODE_ENV !== 'production') {
 
-       if (strokeColor === 'auto') {
 
-         deprecateReplaceLog('color: \'auto\'', 'color: \'inherit\'');
 
-       }
 
-     }
 
-     if (inheritColor) {
 
-       strokeColor = inheritColor;
 
-     } else {
 
-       strokeColor = null;
 
-     }
 
-   }
 
-   if (!isAttached) {
 
-     // Only use default global textStyle.color if text is individual.
 
-     // Otherwise it will use the strategy of attached text color because text may be on a path.
 
-     fillColor = fillColor || globalTextStyle.color;
 
-     strokeColor = strokeColor || globalTextStyle.textBorderColor;
 
-   }
 
-   if (fillColor != null) {
 
-     textStyle.fill = fillColor;
 
-   }
 
-   if (strokeColor != null) {
 
-     textStyle.stroke = strokeColor;
 
-   }
 
-   var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);
 
-   if (textBorderWidth != null) {
 
-     textStyle.lineWidth = textBorderWidth;
 
-   }
 
-   var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType);
 
-   if (textBorderType != null) {
 
-     textStyle.lineDash = textBorderType;
 
-   }
 
-   var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset);
 
-   if (textBorderDashOffset != null) {
 
-     textStyle.lineDashOffset = textBorderDashOffset;
 
-   }
 
-   if (!isNotNormal && opacity == null && !inRich) {
 
-     opacity = opt && opt.defaultOpacity;
 
-   }
 
-   if (opacity != null) {
 
-     textStyle.opacity = opacity;
 
-   } // TODO
 
-   if (!isNotNormal && !isAttached) {
 
-     // Set default finally.
 
-     if (textStyle.fill == null && opt.inheritColor) {
 
-       textStyle.fill = opt.inheritColor;
 
-     }
 
-   } // Do not use `getFont` here, because merge should be supported, where
 
-   // part of these properties may be changed in emphasis style, and the
 
-   // others should remain their original value got from normal style.
 
-   for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {
 
-     var key = TEXT_PROPS_WITH_GLOBAL[i];
 
-     var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);
 
-     if (val != null) {
 
-       textStyle[key] = val;
 
-     }
 
-   }
 
-   for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {
 
-     var key = TEXT_PROPS_SELF[i];
 
-     var val = textStyleModel.getShallow(key);
 
-     if (val != null) {
 
-       textStyle[key] = val;
 
-     }
 
-   }
 
-   if (textStyle.verticalAlign == null) {
 
-     var baseline = textStyleModel.getShallow('baseline');
 
-     if (baseline != null) {
 
-       textStyle.verticalAlign = baseline;
 
-     }
 
-   }
 
-   if (!isBlock || !opt.disableBox) {
 
-     for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {
 
-       var key = TEXT_PROPS_BOX[i];
 
-       var val = textStyleModel.getShallow(key);
 
-       if (val != null) {
 
-         textStyle[key] = val;
 
-       }
 
-     }
 
-     var borderType = textStyleModel.getShallow('borderType');
 
-     if (borderType != null) {
 
-       textStyle.borderDash = borderType;
 
-     }
 
-     if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {
 
-       if (process.env.NODE_ENV !== 'production') {
 
-         if (textStyle.backgroundColor === 'auto') {
 
-           deprecateReplaceLog('backgroundColor: \'auto\'', 'backgroundColor: \'inherit\'');
 
-         }
 
-       }
 
-       textStyle.backgroundColor = inheritColor;
 
-     }
 
-     if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {
 
-       if (process.env.NODE_ENV !== 'production') {
 
-         if (textStyle.borderColor === 'auto') {
 
-           deprecateReplaceLog('borderColor: \'auto\'', 'borderColor: \'inherit\'');
 
-         }
 
-       }
 
-       textStyle.borderColor = inheritColor;
 
-     }
 
-   }
 
- }
 
- export function getFont(opt, ecModel) {
 
-   var gTextStyleModel = ecModel && ecModel.getModel('textStyle');
 
-   return trim([// FIXME in node-canvas fontWeight is before fontStyle
 
-   opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));
 
- }
 
- export var labelInner = makeInner();
 
- export function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {
 
-   if (!label) {
 
-     return;
 
-   }
 
-   var obj = labelInner(label);
 
-   obj.prevValue = obj.value;
 
-   obj.value = value;
 
-   var normalLabelModel = labelStatesModels.normal;
 
-   obj.valueAnimation = normalLabelModel.get('valueAnimation');
 
-   if (obj.valueAnimation) {
 
-     obj.precision = normalLabelModel.get('precision');
 
-     obj.defaultInterpolatedText = getDefaultText;
 
-     obj.statesModels = labelStatesModels;
 
-   }
 
- }
 
- export function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) {
 
-   var labelInnerStore = labelInner(textEl);
 
-   if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) {
 
-     // Value not changed, no new label animation
 
-     return;
 
-   }
 
-   var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText; // Consider the case that being animating, do not use the `obj.value`,
 
-   // Otherwise it will jump to the `obj.value` when this new animation started.
 
-   var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue);
 
-   var targetValue = labelInnerStore.value;
 
-   function during(percent) {
 
-     var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent);
 
-     labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated;
 
-     var labelText = getLabelText({
 
-       labelDataIndex: dataIndex,
 
-       labelFetcher: labelFetcher,
 
-       defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + ''
 
-     }, labelInnerStore.statesModels, interpolated);
 
-     setLabelText(textEl, labelText);
 
-   }
 
-   textEl.percent = 0;
 
-   (labelInnerStore.prevValue == null ? initProps : updateProps)(textEl, {
 
-     // percent is used to prevent animation from being aborted #15916
 
-     percent: 1
 
-   }, animatableModel, dataIndex, null, during);
 
- }
 
 
  |