@visactor/vrender 1.1.0-alpha.16 → 1.1.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -8208,6 +8208,12 @@ function ensureStageStatePerfMonitor(stage) {
8208
8208
  function getStageStatePerfMonitor(stage) {
8209
8209
  if (stage) return stage[STAGE_PERF_MONITOR];
8210
8210
  }
8211
+ function getActiveStageStatePerfMonitor(stage) {
8212
+ var _a;
8213
+ if (!stage) return;
8214
+ const current = getStageStatePerfMonitor(stage);
8215
+ return current || (!0 === (null === (_a = stage.statePerfConfig) || void 0 === _a ? void 0 : _a.enabled) ? ensureStageStatePerfMonitor(stage) : void 0);
8216
+ }
8211
8217
 
8212
8218
  function isPlainObject$1(value) {
8213
8219
  return null != value && "object" == typeof value && !Array.isArray(value);
@@ -8303,7 +8309,7 @@ class StateEngine {
8303
8309
  }
8304
8310
  invalidateResolverCache() {
8305
8311
  var _a, _b;
8306
- this.resolverPatchCache.clear(), this.resolverCacheKey = "", this.resolverCacheValid = !1, null === (_b = getStageStatePerfMonitor(null === (_a = this.graphic) || void 0 === _a ? void 0 : _a.stage)) || void 0 === _b || _b.recordResolver("invalidations");
8312
+ this.resolverPatchCache.clear(), this.resolverCacheKey = "", this.resolverCacheValid = !1, null === (_b = getActiveStageStatePerfMonitor(null === (_a = this.graphic) || void 0 === _a ? void 0 : _a.stage)) || void 0 === _b || _b.recordResolver("invalidations");
8307
8313
  }
8308
8314
  hasState(stateName) {
8309
8315
  return !!this._activeStates.length && (null == stateName || this._activeStates.includes(stateName));
@@ -8350,7 +8356,7 @@ class StateEngine {
8350
8356
  }
8351
8357
  recomputePatch(effectiveStates) {
8352
8358
  var _a;
8353
- const perfMonitor = getStageStatePerfMonitor(null === (_a = this.graphic) || void 0 === _a ? void 0 : _a.stage),
8359
+ const perfMonitor = getActiveStageStatePerfMonitor(null === (_a = this.graphic) || void 0 === _a ? void 0 : _a.stage),
8354
8360
  patchStart = perfMonitor ? performance.now() : 0;
8355
8361
  let resolverCost = 0;
8356
8362
  const cacheKey = effectiveStates.join(","),
@@ -8598,32 +8604,6 @@ class StateStyleResolver {
8598
8604
  }
8599
8605
  }), resolvedAttrs;
8600
8606
  }
8601
- resolveWithCompiled(normalAttrs, compiledDefinitions, stateProxy, effectiveStates, resolvedPatch) {
8602
- var _a, _b;
8603
- const mergeMode = null !== (_a = this.options.mergeMode) && void 0 !== _a ? _a : "shallow",
8604
- resolvedAttrs = null !== (_b = cloneValue(resolvedPatch)) && void 0 !== _b ? _b : {};
8605
- return effectiveStates.forEach(stateName => {
8606
- const proxyPatch = null == stateProxy ? void 0 : stateProxy(stateName, effectiveStates);
8607
- null != proxyPatch && Object.keys(proxyPatch).forEach(key => {
8608
- const nextValue = proxyPatch[key],
8609
- hasCompiledDefinition = compiledDefinitions.has(stateName);
8610
- if ("deep" === mergeMode && isPlainObject(nextValue) && (isPlainObject(resolvedAttrs[key]) || !hasCompiledDefinition && isPlainObject(normalAttrs[key]))) {
8611
- const baseValue = isPlainObject(resolvedAttrs[key]) ? resolvedAttrs[key] : isPlainObject(normalAttrs[key]) ? normalAttrs[key] : {};
8612
- resolvedAttrs[key] = deepMerge(baseValue, nextValue);
8613
- } else resolvedAttrs[key] = cloneValue(nextValue);
8614
- });
8615
- }), resolvedAttrs;
8616
- }
8617
- computeNormalAttrsBackup(normalAttrs, targetAttrs, finalAttribute) {
8618
- const nextNormalAttrs = {},
8619
- nextTargetAttrs = Object.assign({}, targetAttrs);
8620
- for (const key in targetAttrs) Object.prototype.hasOwnProperty.call(targetAttrs, key) && (nextNormalAttrs[key] = cloneValue(normalAttrs && key in normalAttrs ? normalAttrs[key] : finalAttribute[key]));
8621
- if (normalAttrs) for (const key in normalAttrs) Object.prototype.hasOwnProperty.call(normalAttrs, key) && !(key in targetAttrs) && (nextTargetAttrs[key] = cloneValue(normalAttrs[key]));
8622
- return {
8623
- attrs: nextTargetAttrs,
8624
- normalAttrs: nextNormalAttrs
8625
- };
8626
- }
8627
8607
  }
8628
8608
 
8629
8609
  function hasOwnKeys(value) {
@@ -8758,7 +8738,7 @@ function rebuildSharedStateScope(scope) {
8758
8738
  }
8759
8739
  function ensureSharedStateScopeFresh(scope) {
8760
8740
  var _a;
8761
- if (scope) return null === (_a = getStageStatePerfMonitor(scope.ownerStage)) || void 0 === _a || _a.recordRefresh("ensureFreshCalls"), scope.parentScope && ensureSharedStateScopeFresh(scope.parentScope), (scope.dirty || scope.parentScope && scope.parentRevisionAtBuild !== scope.parentScope.revision) && rebuildSharedStateScope(scope), scope;
8741
+ if (scope) return null === (_a = getActiveStageStatePerfMonitor(scope.ownerStage)) || void 0 === _a || _a.recordRefresh("ensureFreshCalls"), scope.parentScope && ensureSharedStateScopeFresh(scope.parentScope), (scope.dirty || scope.parentScope && scope.parentRevisionAtBuild !== scope.parentScope.revision) && rebuildSharedStateScope(scope), scope;
8762
8742
  }
8763
8743
  function collectSharedStateScopeChain(scope) {
8764
8744
  const chain = [];
@@ -8769,7 +8749,7 @@ function collectSharedStateScopeChain(scope) {
8769
8749
 
8770
8750
  function scheduleStageSharedStateRefresh(stage) {
8771
8751
  var _a;
8772
- stage && "released" !== stage.releaseStatus && (null === (_a = getStageStatePerfMonitor(stage)) || void 0 === _a || _a.recordRefresh("renderScheduled"), stage.renderNextFrame());
8752
+ stage && "released" !== stage.releaseStatus && (null === (_a = getActiveStageStatePerfMonitor(stage)) || void 0 === _a || _a.recordRefresh("renderScheduled"), stage.renderNextFrame());
8773
8753
  }
8774
8754
  function enqueueGraphicSharedStateRefresh(stage, graphic) {
8775
8755
  var _a;
@@ -8777,7 +8757,7 @@ function enqueueGraphicSharedStateRefresh(stage, graphic) {
8777
8757
  const pending = null !== (_a = stage._pendingSharedStateRefreshGraphics) && void 0 !== _a ? _a : stage._pendingSharedStateRefreshGraphics = new Set();
8778
8758
  if (!pending.has(graphic)) {
8779
8759
  pending.add(graphic);
8780
- const perfMonitor = getStageStatePerfMonitor(stage);
8760
+ const perfMonitor = getActiveStageStatePerfMonitor(stage);
8781
8761
  null == perfMonitor || perfMonitor.recordRefresh("queuedGraphics"), null == perfMonitor || perfMonitor.recordAllocation("refreshQueuePushes");
8782
8762
  }
8783
8763
  }
@@ -8792,12 +8772,13 @@ function markScopeActiveDescendantsDirty(scope, stage) {
8792
8772
  function flushStageSharedStateRefresh(stage) {
8793
8773
  const pending = stage._pendingSharedStateRefreshGraphics;
8794
8774
  if (!pending || !pending.size) return;
8795
- const perfMonitor = getStageStatePerfMonitor(stage),
8775
+ const perfMonitor = getActiveStageStatePerfMonitor(stage),
8796
8776
  start = perfMonitor ? performance.now() : 0,
8797
8777
  graphics = Array.from(pending.values());
8798
8778
  pending.clear(), null == perfMonitor || perfMonitor.recordRefresh("flushedGraphics", graphics.length), graphics.forEach(graphic => {
8799
8779
  if ("released" === graphic.releaseStatus) return;
8800
8780
  if (graphic.stage !== stage) return;
8781
+ if (!graphic.sharedStateDirty) return;
8801
8782
  const refresh = graphic.refreshSharedStateBeforeRender;
8802
8783
  "function" == typeof refresh && (refresh.call(graphic), null == perfMonitor || perfMonitor.incrementCounter("sharedRefreshCommits"));
8803
8784
  }), perfMonitor && (perfMonitor.recordCost("sharedRefresh", performance.now() - start), perfMonitor.recordEvent("shared-refresh-flush", {
@@ -8814,9 +8795,12 @@ const tempConstantXYKey = ["x", "y"],
8814
8795
  tempConstantScaleXYKey = ["scaleX", "scaleY"],
8815
8796
  tempConstantAngleKey = ["angle"],
8816
8797
  builtinTextureTypes = new Set(["circle", "diamond", "rect", "vertical-line", "horizontal-line", "bias-lr", "bias-rl", "grid", "wave"]),
8817
- point = new Point();
8798
+ FULL_STATE_DEFINITION_KEYS = new Set(["name", "patch", "priority", "exclude", "suppress", "resolver", "declaredAffectedKeys"]),
8799
+ point = new Point(),
8800
+ EMPTY_STATE_NAMES = [],
8801
+ BROAD_UPDATE_CATEGORY = UpdateCategory.PAINT | UpdateCategory.SHAPE | UpdateCategory.BOUNDS | UpdateCategory.TRANSFORM | UpdateCategory.LAYOUT;
8818
8802
  function isPlainObjectValue(value) {
8819
- return "object" == typeof value && null != value && !isArray$1(value);
8803
+ return "object" == typeof value && null != value && !Array.isArray(value);
8820
8804
  }
8821
8805
  function cloneAttributeValue(value) {
8822
8806
  if (!isPlainObjectValue(value)) return value;
@@ -8827,12 +8811,6 @@ function cloneAttributeValue(value) {
8827
8811
  clone[key] = isPlainObjectValue(nextValue) ? cloneAttributeValue(nextValue) : nextValue;
8828
8812
  }), clone;
8829
8813
  }
8830
- function cloneSimpleAttributeRecord(value) {
8831
- return isPlainObjectValue(value) ? Object.assign({}, value) : value;
8832
- }
8833
- function shouldUseSimpleAttributeFastPath(value) {
8834
- return !!isPlainObjectValue(value) && !Object.keys(value).some(key => isPlainObjectValue(value[key]));
8835
- }
8836
8814
  function cloneAttributeSurface(value) {
8837
8815
  if (!isPlainObjectValue(value)) return value;
8838
8816
  const source = value,
@@ -8842,6 +8820,9 @@ function cloneAttributeSurface(value) {
8842
8820
  clone[key] = isPlainObjectValue(nextValue) ? Object.assign({}, nextValue) : nextValue;
8843
8821
  }), clone;
8844
8822
  }
8823
+ function areAttributeValuesEqual(left, right) {
8824
+ return left === right || !!(isPlainObjectValue(left) || isPlainObjectValue(right) || Array.isArray(left) || Array.isArray(right)) && isEqual(left, right);
8825
+ }
8845
8826
  function deepMergeAttributeValue(base, value) {
8846
8827
  var _a;
8847
8828
  const result = null !== (_a = cloneAttributeValue(base)) && void 0 !== _a ? _a : {};
@@ -8904,18 +8885,24 @@ class Graphic extends Node {
8904
8885
  get globalTransMatrix() {
8905
8886
  return this.tryUpdateGlobalTransMatrix(!0);
8906
8887
  }
8888
+ get baseAttributes() {
8889
+ var _a;
8890
+ return null !== (_a = this._baseAttributes) && void 0 !== _a ? _a : this.attribute;
8891
+ }
8892
+ set baseAttributes(value) {
8893
+ value !== this.attribute ? this._baseAttributes = value : this._baseAttributes = void 0;
8894
+ }
8907
8895
  constructor(params = {}) {
8908
8896
  var _a;
8909
- super(), this.resolverEpoch = 0, this._AABBBounds = new AABBBounds(), this._updateTag = UpdateTag.INIT;
8910
- const useSimpleAttributeFastPath = shouldUseSimpleAttributeFastPath(params),
8911
- initialBaseAttributes = useSimpleAttributeFastPath ? cloneSimpleAttributeRecord(params) : cloneAttributeValue(params);
8912
- this.baseAttributes = initialBaseAttributes, this.attribute = useSimpleAttributeFastPath ? cloneSimpleAttributeRecord(initialBaseAttributes) : cloneAttributeSurface(initialBaseAttributes), this.valid = this.isValid(), this.updateAABBBoundsStamp = 0, params.background && this.loadImage(null !== (_a = params.background.background) && void 0 !== _a ? _a : params.background, !0), isExternalTexture(params.texture) && this.loadImage(params.texture, !1), params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic);
8897
+ super(), this._AABBBounds = new AABBBounds(), this._updateTag = UpdateTag.INIT, this.attribute = params, this.valid = this.isValid(), this.updateAABBBoundsStamp = 0, params.background && this.loadImage(null !== (_a = params.background.background) && void 0 !== _a ? _a : params.background, !0), params.texture && isExternalTexture(params.texture) && this.loadImage(params.texture, !1), params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic);
8913
8898
  }
8914
8899
  get normalAttrs() {
8915
8900
  return this.baseAttributes;
8916
8901
  }
8917
- set normalAttrs(value) {
8918
- this._deprecatedNormalAttrsView = null != value ? value : void 0;
8902
+ set normalAttrs(_value) {}
8903
+ getBaseAttributesStorage() {
8904
+ var _a;
8905
+ return null !== (_a = this._baseAttributes) && void 0 !== _a ? _a : this.attribute;
8919
8906
  }
8920
8907
  getGraphicService() {
8921
8908
  var _a, _b;
@@ -8946,10 +8933,18 @@ class Graphic extends Node {
8946
8933
  const nextScope = this.resolveBoundSharedStateScope();
8947
8934
  return this.boundSharedStateScope === nextScope ? (this.syncSharedStateActiveRegistrations(), !1) : (this.boundSharedStateScope = nextScope, this.boundSharedStateRevision = void 0, this.localFallbackCompiledDefinitions = void 0, this.compiledStateDefinitions = void 0, this.compiledStateDefinitionsCacheKey = void 0, this.stateEngine = void 0, this.stateEngineCompiledDefinitions = void 0, this.stateEngineStateProxyModeKey = void 0, this.syncSharedStateActiveRegistrations(), markDirty && (null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) && this.markSharedStateDirty(), !0);
8948
8935
  }
8949
- syncSharedStateActiveRegistrations() {
8936
+ syncSharedStateScopeBindingOnTreeChange(markDirty = !0) {
8950
8937
  var _a, _b;
8951
- const nextScopes = (null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) && this.boundSharedStateScope ? new Set(collectSharedStateScopeChain(this.boundSharedStateScope)) : new Set();
8952
- (null !== (_b = this.registeredActiveScopes) && void 0 !== _b ? _b : new Set()).forEach(scope => {
8938
+ return !!((null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) || this.boundSharedStateScope || (null === (_b = this.registeredActiveScopes) || void 0 === _b ? void 0 : _b.size) || this.sharedStateDirty) && this.syncSharedStateScopeBindingFromTree(markDirty);
8939
+ }
8940
+ syncSharedStateActiveRegistrations() {
8941
+ var _a;
8942
+ const previousScopes = this.registeredActiveScopes;
8943
+ if (!(null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) || !this.boundSharedStateScope) return (null == previousScopes ? void 0 : previousScopes.size) && (previousScopes.forEach(scope => {
8944
+ scope.subtreeActiveDescendants.delete(this);
8945
+ }), previousScopes.clear()), void (this.registeredActiveScopes = void 0);
8946
+ const nextScopes = new Set(collectSharedStateScopeChain(this.boundSharedStateScope));
8947
+ null == previousScopes || previousScopes.forEach(scope => {
8953
8948
  nextScopes.has(scope) || scope.subtreeActiveDescendants.delete(this);
8954
8949
  }), nextScopes.forEach(scope => {
8955
8950
  scope.subtreeActiveDescendants.add(this);
@@ -8965,15 +8960,13 @@ class Graphic extends Node {
8965
8960
  this.sharedStateDirty = !0, enqueueGraphicSharedStateRefresh(this.stage, this), scheduleStageSharedStateRefresh(this.stage);
8966
8961
  }
8967
8962
  onParentSharedStateTreeChanged(stage, layer) {
8968
- this.stage === stage && this.layer === layer ? this.syncSharedStateScopeBindingFromTree() : this.setStage(stage, layer);
8963
+ this.stage === stage && this.layer === layer ? this.syncSharedStateScopeBindingOnTreeChange() : this.setStage(stage, layer);
8969
8964
  }
8970
8965
  refreshSharedStateBeforeRender() {
8971
8966
  var _a;
8972
8967
  (null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) ? (this.syncSharedStateScopeBindingFromTree(!1), this.boundSharedStateScope && ensureSharedStateScopeFresh(this.boundSharedStateScope), this.recomputeCurrentStatePatch(), this.stopStateAnimates(), this._restoreAttributeFromStaticTruth({
8973
8968
  type: AttributeUpdateType.STATE
8974
- }), this._emitCustomEvent("afterStateUpdate", {
8975
- type: AttributeUpdateType.STATE
8976
- }), this.sharedStateDirty = !1) : this.sharedStateDirty = !1;
8969
+ }), this.emitStateUpdateEvent(), this.sharedStateDirty = !1) : this.sharedStateDirty = !1;
8977
8970
  }
8978
8971
  getLocalStatesVersion() {
8979
8972
  var _a, _b;
@@ -9031,7 +9024,7 @@ class Graphic extends Node {
9031
9024
  const transition = stateModel.useStates(this.currentStates),
9032
9025
  effectiveStates = null !== (_d = transition.effectiveStates) && void 0 !== _d ? _d : transition.states,
9033
9026
  resolvedStateAttrs = this.stateEngine && this.compiledStateDefinitions ? Object.assign({}, this.stateEngine.resolvedPatch) : this.getStateStyleResolver(this.stateMergeMode).resolve(stateResolveBaseAttrs, this.states, this.stateProxy, transition.states, this.stateSort);
9034
- this.currentStates = transition.states, this.effectiveStates = [...effectiveStates], this.resolvedStatePatch = Object.assign({}, resolvedStateAttrs), this.syncSharedStateActiveRegistrations();
9027
+ this.currentStates = transition.states, this.effectiveStates = [...effectiveStates], this.resolvedStatePatch = resolvedStateAttrs, this.syncSharedStateActiveRegistrations();
9035
9028
  }
9036
9029
  buildStaticAttributeSnapshot() {
9037
9030
  var _a;
@@ -9070,16 +9063,17 @@ class Graphic extends Node {
9070
9063
  next: void 0
9071
9064
  }), delete target[key]));
9072
9065
  const nextValue = snapshot[key];
9073
- isEqual(previousValue, nextValue) || (delta.set(key, {
9066
+ areAttributeValuesEqual(previousValue, nextValue) || (delta.set(key, {
9074
9067
  prev: previousValue,
9075
9068
  next: nextValue
9076
9069
  }), target[key] = cloneAttributeValue(nextValue));
9077
9070
  }), delta;
9078
9071
  }
9079
9072
  _syncAttribute() {
9073
+ this.attribute === this.baseAttributes && this.resolvedStatePatch && this.detachAttributeFromBaseAttributes();
9080
9074
  const snapshot = this.buildStaticAttributeSnapshot(),
9081
9075
  delta = this.syncObjectToSnapshot(this.attribute, snapshot);
9082
- return this.valid = this.isValid(), delta;
9076
+ return this.valid = this.isValid(), this.attributeMayContainTransientAttrs = !1, delta;
9083
9077
  }
9084
9078
  _syncFinalAttributeFromStaticTruth() {
9085
9079
  const target = this.finalAttribute;
@@ -9087,47 +9081,146 @@ class Graphic extends Node {
9087
9081
  const snapshot = this.buildStaticAttributeSnapshot();
9088
9082
  this.syncObjectToSnapshot(target, snapshot);
9089
9083
  }
9090
- submitUpdateByDelta(delta, forceUpdateTag = !1) {
9084
+ mergeAttributeDeltaCategory(category, key, prev, next) {
9085
+ var _a;
9086
+ let nextCategory = "stroke" === key || "shadowBlur" === key ? classifyAttributeDelta(key, prev, next) : null !== (_a = ATTRIBUTE_CATEGORY[key]) && void 0 !== _a ? _a : UpdateCategory.PAINT;
9087
+ return nextCategory & UpdateCategory.PICK && (nextCategory |= UpdateCategory.BOUNDS), nextCategory === UpdateCategory.PAINT && this.needUpdateTag(key) && (nextCategory = UpdateCategory.SHAPE | UpdateCategory.BOUNDS), category | nextCategory;
9088
+ }
9089
+ submitUpdateByCategory(category, forceUpdateTag = !1) {
9091
9090
  var _a;
9092
9091
  if (forceUpdateTag) return this.addUpdateShapeAndBoundsTag(), this.addUpdatePositionTag(), void this.addUpdateLayoutTag();
9092
+ if (category !== UpdateCategory.NONE) {
9093
+ const stage = this.stage;
9094
+ stage && (null === (_a = getActiveStageStatePerfMonitor(stage)) || void 0 === _a || _a.recordCategory(category));
9095
+ }
9096
+ (category & BROAD_UPDATE_CATEGORY) !== BROAD_UPDATE_CATEGORY ? (category & UpdateCategory.SHAPE ? this.addUpdateShapeAndBoundsTag() : category & UpdateCategory.BOUNDS && this.addUpdateBoundTag(), category & UpdateCategory.PAINT && this.addUpdatePaintTag(), category & UpdateCategory.TRANSFORM && this.addUpdatePositionTag(), category & UpdateCategory.LAYOUT && this.addUpdateLayoutTag()) : this.addBroadUpdateTag();
9097
+ }
9098
+ submitUpdateByDelta(delta, forceUpdateTag = !1) {
9093
9099
  let category = UpdateCategory.NONE;
9094
9100
  delta.forEach((entry, key) => {
9095
- let nextCategory = classifyAttributeDelta(key, entry.prev, entry.next);
9096
- nextCategory & UpdateCategory.PICK && (nextCategory |= UpdateCategory.BOUNDS), nextCategory === UpdateCategory.PAINT && this.needUpdateTag(key) && (nextCategory = UpdateCategory.SHAPE | UpdateCategory.BOUNDS), category |= nextCategory;
9097
- }), category !== UpdateCategory.NONE && (null === (_a = getStageStatePerfMonitor(this.stage)) || void 0 === _a || _a.recordCategory(category)), category & UpdateCategory.SHAPE ? this.addUpdateShapeAndBoundsTag() : category & UpdateCategory.BOUNDS && this.addUpdateBoundTag(), category & UpdateCategory.PAINT && this.addUpdatePaintTag(), category & UpdateCategory.TRANSFORM && this.addUpdatePositionTag(), category & UpdateCategory.LAYOUT && this.addUpdateLayoutTag();
9101
+ category = this.mergeAttributeDeltaCategory(category, key, entry.prev, entry.next);
9102
+ }), this.submitUpdateByCategory(category, forceUpdateTag);
9103
+ }
9104
+ submitTouchedKeyUpdate(keys, forceUpdateTag = !1) {
9105
+ this.submitTouchedUpdate(forceUpdateTag || this.needUpdateTags(keys));
9106
+ }
9107
+ submitTouchedUpdate(needsShapeAndBounds) {
9108
+ !this.updateShapeAndBoundsTagSetted() && needsShapeAndBounds ? this.addUpdateShapeAndBoundsTag() : this.addUpdateBoundTag(), this.addUpdatePositionTag(), this.addUpdateLayoutTag();
9098
9109
  }
9099
9110
  commitBaseAttributeMutation(forceUpdateTag = !1, context) {
9100
- var _a, _b;
9101
- (null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) && (this.resolverEpoch += 1, null === (_b = this.stateEngine) || void 0 === _b || _b.invalidateResolverCache(), this.recomputeCurrentStatePatch());
9111
+ var _a, _b, _c;
9112
+ (null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) && (this.resolverEpoch = (null !== (_b = this.resolverEpoch) && void 0 !== _b ? _b : 0) + 1, null === (_c = this.stateEngine) || void 0 === _c || _c.invalidateResolverCache(), this.recomputeCurrentStatePatch());
9102
9113
  const delta = this._syncAttribute();
9103
9114
  this.submitUpdateByDelta(delta, forceUpdateTag), this.onAttributeUpdate(context);
9104
9115
  }
9116
+ canCommitBaseAttributesByTouchedKeys() {
9117
+ var _a, _b;
9118
+ return !((null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) || this.resolvedStatePatch || this.attributeMayContainTransientAttrs) && (!(null === (_b = this.animates) || void 0 === _b ? void 0 : _b.size) && !this._animationStateManager || !this.hasAnyTrackedAnimate());
9119
+ }
9120
+ detachAttributeFromBaseAttributes() {
9121
+ this.attribute === this.baseAttributes && (this._baseAttributes = this.attribute, this.attribute = cloneAttributeSurface(this.attribute));
9122
+ }
9123
+ commitInternalBaseAttributes(params, context) {
9124
+ params && Object.keys(params).length && (this.canCommitBaseAttributesByTouchedKeys() ? this.commitBaseAttributesByTouchedKeys(params, !1, context) : (this.detachAttributeFromBaseAttributes(), this.applyBaseAttributes(params), this.commitBaseAttributeMutation(!1, context)));
9125
+ }
9126
+ commitBaseAttributesByTouchedKeys(params, forceUpdateTag = !1, context) {
9127
+ const source = params,
9128
+ baseAttributes = this.getBaseAttributesStorage();
9129
+ let hasKeys = !1,
9130
+ needsShapeAndBounds = forceUpdateTag;
9131
+ for (const key in source) Object.prototype.hasOwnProperty.call(source, key) && (hasKeys = !0, baseAttributes[key] = source[key], !needsShapeAndBounds && this.needUpdateTag(key) && (needsShapeAndBounds = !0));
9132
+ hasKeys && (this.attribute = baseAttributes, this._baseAttributes = void 0, this.valid = this.isValid(), this.attributeMayContainTransientAttrs = !1, this.submitTouchedUpdate(needsShapeAndBounds), this.onAttributeUpdate(context));
9133
+ }
9134
+ commitBaseAttributeBySingleKey(key, value, forceUpdateTag = !1, context) {
9135
+ this.getBaseAttributesStorage()[key] = value, this.attribute = this.getBaseAttributesStorage(), this._baseAttributes = void 0, this.valid = this.isValid(), this.attributeMayContainTransientAttrs = !1, this.submitTouchedUpdate(forceUpdateTag || this.needUpdateTag(key)), this.onAttributeUpdate(context);
9136
+ }
9105
9137
  applyBaseAttributes(params) {
9106
9138
  const keys = Object.keys(params);
9107
9139
  for (let i = 0; i < keys.length; i++) {
9108
9140
  const key = keys[i];
9109
- this.baseAttributes[key] = cloneAttributeValue(params[key]);
9141
+ this.getBaseAttributesStorage()[key] = params[key];
9110
9142
  }
9111
9143
  }
9144
+ applyAnimationTransientAttributes(params, forceUpdateTag = !1, context) {
9145
+ const source = params;
9146
+ let target,
9147
+ needsShapeAndBounds = forceUpdateTag;
9148
+ for (const key in source) Object.prototype.hasOwnProperty.call(source, key) && (target || (this.detachAttributeFromBaseAttributes(), target = this.attribute), target[key] = source[key], !needsShapeAndBounds && this.needUpdateTag(key) && (needsShapeAndBounds = !0));
9149
+ target && (this.attributeMayContainTransientAttrs = !0, this.valid = this.isValid(), this.submitTouchedUpdate(needsShapeAndBounds), this.onAttributeUpdate(context));
9150
+ }
9112
9151
  applyTransientAttributes(params, forceUpdateTag = !1, context) {
9152
+ this.detachAttributeFromBaseAttributes();
9113
9153
  const delta = new Map(),
9114
9154
  keys = Object.keys(params);
9115
9155
  for (let i = 0; i < keys.length; i++) {
9116
9156
  const key = keys[i],
9117
9157
  previousValue = this.attribute[key],
9118
9158
  nextValue = params[key];
9119
- isEqual(previousValue, nextValue) || (delta.set(key, {
9159
+ areAttributeValuesEqual(previousValue, nextValue) || (delta.set(key, {
9120
9160
  prev: previousValue,
9121
9161
  next: nextValue
9122
- }), this.attribute[key] = cloneAttributeValue(nextValue));
9162
+ }), this.attribute[key] = nextValue);
9123
9163
  }
9124
- this.valid = this.isValid(), this.submitUpdateByDelta(delta, forceUpdateTag), this.onAttributeUpdate(context);
9164
+ delta.size && (this.attributeMayContainTransientAttrs = !0), this.valid = this.isValid(), this.submitUpdateByDelta(delta, forceUpdateTag), this.onAttributeUpdate(context);
9125
9165
  }
9126
9166
  _restoreAttributeFromStaticTruth(context) {
9127
9167
  this._syncFinalAttributeFromStaticTruth();
9128
9168
  const delta = this._syncAttribute();
9129
9169
  this.submitUpdateByDelta(delta), this.onAttributeUpdate(context);
9130
9170
  }
9171
+ collectStatePatchDeltaKeys(previousPatch, nextPatch) {
9172
+ const keys = previousPatch ? Object.keys(previousPatch) : [];
9173
+ if (!nextPatch) return keys;
9174
+ for (const key in nextPatch) Object.prototype.hasOwnProperty.call(nextPatch, key) && !Object.prototype.hasOwnProperty.call(null != previousPatch ? previousPatch : {}, key) && keys.push(key);
9175
+ return keys;
9176
+ }
9177
+ getStaticTruthValueForStateKey(key, nextPatch) {
9178
+ var _a;
9179
+ const baseAttributes = null !== (_a = this.baseAttributes) && void 0 !== _a ? _a : {},
9180
+ patch = nextPatch;
9181
+ if (patch && Object.prototype.hasOwnProperty.call(patch, key)) {
9182
+ const patchValue = patch[key],
9183
+ baseValue = baseAttributes[key];
9184
+ return "deep" === this.stateMergeMode && isPlainObjectValue(baseValue) && isPlainObjectValue(patchValue) ? {
9185
+ hasValue: !0,
9186
+ value: deepMergeAttributeValue(baseValue, patchValue)
9187
+ } : {
9188
+ hasValue: !0,
9189
+ value: patchValue
9190
+ };
9191
+ }
9192
+ return Object.prototype.hasOwnProperty.call(baseAttributes, key) ? {
9193
+ hasValue: !0,
9194
+ value: baseAttributes[key]
9195
+ } : {
9196
+ hasValue: !1,
9197
+ value: void 0
9198
+ };
9199
+ }
9200
+ syncStatePatchDeltaToTarget(target, keys, nextPatch, collectCategory = !1) {
9201
+ let category = UpdateCategory.NONE;
9202
+ for (let i = 0; i < keys.length; i++) {
9203
+ const key = keys[i],
9204
+ previousValue = target[key],
9205
+ next = this.getStaticTruthValueForStateKey(key, nextPatch);
9206
+ if (!next.hasValue) {
9207
+ Object.prototype.hasOwnProperty.call(target, key) && (delete target[key], collectCategory && (category = this.mergeAttributeDeltaCategory(category, key, previousValue, void 0)));
9208
+ continue;
9209
+ }
9210
+ if (areAttributeValuesEqual(previousValue, next.value)) continue;
9211
+ const nextValue = cloneAttributeValue(next.value);
9212
+ target[key] = nextValue, collectCategory && (category = this.mergeAttributeDeltaCategory(category, key, previousValue, nextValue));
9213
+ }
9214
+ return category;
9215
+ }
9216
+ restoreAttributeFromStatePatchDelta(previousPatch, nextPatch, context) {
9217
+ this.detachAttributeFromBaseAttributes();
9218
+ const keys = this.collectStatePatchDeltaKeys(previousPatch, nextPatch),
9219
+ finalAttribute = this.finalAttribute;
9220
+ finalAttribute && this.syncStatePatchDeltaToTarget(finalAttribute, keys, nextPatch, !1);
9221
+ const category = this.syncStatePatchDeltaToTarget(this.attribute, keys, nextPatch, !0);
9222
+ this.valid = this.isValid(), this.attributeMayContainTransientAttrs = !1, this.submitUpdateByCategory(category), this.onAttributeUpdate(context);
9223
+ }
9131
9224
  setMode(mode) {
9132
9225
  "3d" === mode ? this.set3dMode() : this.set2dMode();
9133
9226
  }
@@ -9150,7 +9243,7 @@ class Graphic extends Node {
9150
9243
  return point;
9151
9244
  }
9152
9245
  onAnimateBind(animate) {
9153
- this._emitCustomEvent("animate-bind", animate);
9246
+ this.detachAttributeFromBaseAttributes(), this._emitCustomEvent("animate-bind", animate);
9154
9247
  }
9155
9248
  visitTrackedAnimates(cb) {
9156
9249
  const hook = this.forEachTrackedAnimate;
@@ -9163,8 +9256,22 @@ class Graphic extends Node {
9163
9256
  const getTrackedAnimates = this.getTrackedAnimates;
9164
9257
  return "function" == typeof getTrackedAnimates ? getTrackedAnimates.call(this).size > 0 : !!(null === (_a = this.animates) || void 0 === _a ? void 0 : _a.size);
9165
9258
  }
9259
+ mayHaveTrackedAnimates() {
9260
+ var _a;
9261
+ return !!(null === (_a = this.animates) || void 0 === _a ? void 0 : _a.size) || !!this._animationStateManager;
9262
+ }
9166
9263
  tryUpdateAABBBounds() {
9264
+ if (!(this.shadowRoot || this._updateTag & UpdateTag.UPDATE_BOUNDS)) return this._AABBBounds;
9167
9265
  const full = "imprecise" === this.attribute.boundsMode;
9266
+ if (!this.shadowRoot) {
9267
+ const graphicService = this.getGraphicService(),
9268
+ graphicTheme = this.getGraphicTheme();
9269
+ if (!graphicService.validCheck(this.attribute, graphicTheme, this._AABBBounds, this)) return this._AABBBounds;
9270
+ if (!this.valid) return this._AABBBounds.clear(), this._AABBBounds;
9271
+ graphicService.beforeUpdateAABBBounds(this, this.stage, !0, this._AABBBounds);
9272
+ const bounds = this.doUpdateAABBBounds(full, graphicTheme);
9273
+ return graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, !0), "empty" === this.attribute.boundsMode && bounds.clear(), bounds;
9274
+ }
9168
9275
  if (!this.shouldUpdateAABBBounds()) return this._AABBBounds;
9169
9276
  if (!this.valid) return this._AABBBounds.clear(), this._AABBBounds;
9170
9277
  this.getGraphicService().beforeUpdateAABBBounds(this, this.stage, !0, this._AABBBounds);
@@ -9237,14 +9344,14 @@ class Graphic extends Node {
9237
9344
  const _parsedPath = new CustomSymbolClass(symbolType, cache);
9238
9345
  return Graphic.userSymbolMap[symbolType] = _parsedPath, _parsedPath;
9239
9346
  }
9240
- doUpdateAABBBounds(full) {
9347
+ doUpdateAABBBounds(full, graphicTheme) {
9241
9348
  this.updateAABBBoundsStamp++;
9242
- const graphicTheme = this.getGraphicTheme();
9349
+ const resolvedGraphicTheme = null != graphicTheme ? graphicTheme : this.getGraphicTheme();
9243
9350
  this._AABBBounds.clear();
9244
9351
  const attribute = this.attribute,
9245
- bounds = this.updateAABBBounds(attribute, graphicTheme, this._AABBBounds, full),
9352
+ bounds = this.updateAABBBounds(attribute, resolvedGraphicTheme, this._AABBBounds, full),
9246
9353
  {
9247
- boundsPadding = graphicTheme.boundsPadding
9354
+ boundsPadding = resolvedGraphicTheme.boundsPadding
9248
9355
  } = attribute,
9249
9356
  paddingArray = parsePadding(boundsPadding);
9250
9357
  return paddingArray && bounds.expand(paddingArray), this.clearUpdateBoundTag(), bounds;
@@ -9353,18 +9460,22 @@ class Graphic extends Node {
9353
9460
  return fromAttrs;
9354
9461
  }
9355
9462
  setAttributes(params, forceUpdateTag = !1, context) {
9356
- params && ((params = this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context) || params).background && this.loadImage(params.background, !0), isExternalTexture(params.texture) && this.loadImage(params.texture, !1), params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic), this._setAttributes(params, forceUpdateTag, context));
9463
+ params && ((params = this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context) || params).background && this.loadImage(params.background, !0), params.texture && isExternalTexture(params.texture) && this.loadImage(params.texture, !1), params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic), this._setAttributes(params, forceUpdateTag, context));
9357
9464
  }
9358
9465
  _setAttributes(params, forceUpdateTag = !1, context) {
9359
- this.applyBaseAttributes(params), this.commitBaseAttributeMutation(forceUpdateTag, context);
9466
+ this.canCommitBaseAttributesByTouchedKeys() ? this.commitBaseAttributesByTouchedKeys(params, forceUpdateTag, context) : (this.detachAttributeFromBaseAttributes(), this.applyBaseAttributes(params), this.commitBaseAttributeMutation(forceUpdateTag, context));
9360
9467
  }
9361
9468
  setAttribute(key, value, forceUpdateTag, context) {
9362
9469
  const params = this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate({
9363
9470
  [key]: value
9364
9471
  }, this.attribute, key, context);
9365
- params ? this._setAttributes(params, forceUpdateTag, context) : (this.applyBaseAttributes({
9366
- [key]: value
9367
- }), this.commitBaseAttributeMutation(!!forceUpdateTag, context)), "background" === key ? this.loadImage(value, !0) : "texture" === key && isExternalTexture(value) ? this.loadImage(value, !1) : "shadowGraphic" === key && this.setShadowGraphic(value);
9472
+ if (params) this._setAttributes(params, forceUpdateTag, context);else if (this.canCommitBaseAttributesByTouchedKeys()) this.commitBaseAttributeBySingleKey(key, value, !!forceUpdateTag, context);else {
9473
+ const nextAttrs = {
9474
+ [key]: value
9475
+ };
9476
+ this.applyBaseAttributes(nextAttrs), this.commitBaseAttributeMutation(!!forceUpdateTag, context);
9477
+ }
9478
+ "background" === key ? this.loadImage(value, !0) : "texture" === key && isExternalTexture(value) ? this.loadImage(value, !1) : "shadowGraphic" === key && this.setShadowGraphic(value);
9368
9479
  }
9369
9480
  needUpdateTags(keys, k = GRAPHIC_UPDATE_TAG_KEY) {
9370
9481
  for (let i = 0; i < k.length; i++) {
@@ -9383,7 +9494,7 @@ class Graphic extends Node {
9383
9494
  const context = {
9384
9495
  type: AttributeUpdateType.INIT
9385
9496
  };
9386
- params = this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context) || params, this.baseAttributes = cloneAttributeValue(params), this.attribute || (this.attribute = {}), this.resolvedStatePatch = void 0, this._syncAttribute(), params.background && this.loadImage(params.background, !0), isExternalTexture(params.texture) && this.loadImage(params.texture, !1), params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic), this._updateTag = UpdateTag.INIT, this.valid = this.isValid(), this.onAttributeUpdate(context);
9497
+ params = this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context) || params, this.attribute = params, this._baseAttributes = void 0, this.resolvedStatePatch = void 0, this.attributeMayContainTransientAttrs = !1, this.valid = this.isValid(), params.background && this.loadImage(params.background, !0), params.texture && isExternalTexture(params.texture) && this.loadImage(params.texture, !1), params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic), this._updateTag = UpdateTag.INIT, this.valid = this.isValid(), this.onAttributeUpdate(context);
9387
9498
  }
9388
9499
  translate(x, y) {
9389
9500
  var _a, _b;
@@ -9395,10 +9506,15 @@ class Graphic extends Node {
9395
9506
  x: x,
9396
9507
  y: y
9397
9508
  }, this.attribute, tempConstantXYKey, context);
9398
- params && (x = params.x, y = params.y, delete params.x, delete params.y, this.applyBaseAttributes(params));
9509
+ params && (x = params.x, y = params.y, delete params.x, delete params.y);
9399
9510
  const attribute = this.baseAttributes,
9400
- postMatrix = attribute.postMatrix;
9401
- return postMatrix ? application.transformUtil.fromMatrix(postMatrix, postMatrix).translate(x, y) : (attribute.x = (null !== (_a = attribute.x) && void 0 !== _a ? _a : DefaultTransform.x) + x, attribute.y = (null !== (_b = attribute.y) && void 0 !== _b ? _b : DefaultTransform.y) + y), this.commitBaseAttributeMutation(!1, context), this;
9511
+ postMatrix = attribute.postMatrix,
9512
+ nextAttrs = params || {};
9513
+ if (postMatrix) {
9514
+ const nextPostMatrix = postMatrix.clone();
9515
+ application.transformUtil.fromMatrix(nextPostMatrix, nextPostMatrix).translate(x, y), nextAttrs.postMatrix = nextPostMatrix;
9516
+ } else nextAttrs.x = (null !== (_a = attribute.x) && void 0 !== _a ? _a : DefaultTransform.x) + x, nextAttrs.y = (null !== (_b = attribute.y) && void 0 !== _b ? _b : DefaultTransform.y) + y;
9517
+ return this.commitInternalBaseAttributes(nextAttrs, context), this;
9402
9518
  }
9403
9519
  translateTo(x, y) {
9404
9520
  const attribute = this.baseAttributes;
@@ -9410,7 +9526,10 @@ class Graphic extends Node {
9410
9526
  x: x,
9411
9527
  y: y
9412
9528
  }, this.attribute, tempConstantXYKey, context);
9413
- return params ? (this.applyBaseAttributes(params), this.commitBaseAttributeMutation(!1, context), this) : (attribute.x = x, attribute.y = y, this.commitBaseAttributeMutation(!1, context), this);
9529
+ return params ? (this.commitInternalBaseAttributes(params, context), this) : (this.commitInternalBaseAttributes({
9530
+ x: x,
9531
+ y: y
9532
+ }, context), this);
9414
9533
  }
9415
9534
  scale(scaleX, scaleY, scaleCenter) {
9416
9535
  var _a, _b;
@@ -9423,15 +9542,16 @@ class Graphic extends Node {
9423
9542
  scaleY: scaleY,
9424
9543
  scaleCenter: scaleCenter
9425
9544
  }, this.attribute, tempConstantScaleXYKey, context);
9426
- params && (scaleX = params.scaleX, scaleY = params.scaleY, delete params.scaleX, delete params.scaleY, this.applyBaseAttributes(params));
9427
- const attribute = this.baseAttributes;
9545
+ params && (scaleX = params.scaleX, scaleY = params.scaleY, delete params.scaleX, delete params.scaleY);
9546
+ const attribute = this.baseAttributes,
9547
+ nextAttrs = params || {};
9428
9548
  if (scaleCenter) {
9429
9549
  let {
9430
9550
  postMatrix: postMatrix
9431
- } = this.attribute;
9432
- postMatrix || (postMatrix = new Matrix(), attribute.postMatrix = postMatrix), application.transformUtil.fromMatrix(postMatrix, postMatrix).scale(scaleX, scaleY, scaleCenter);
9433
- } else attribute.scaleX = (null !== (_a = attribute.scaleX) && void 0 !== _a ? _a : DefaultTransform.scaleX) * scaleX, attribute.scaleY = (null !== (_b = attribute.scaleY) && void 0 !== _b ? _b : DefaultTransform.scaleY) * scaleY;
9434
- return this.commitBaseAttributeMutation(!1, context), this;
9551
+ } = this.baseAttributes;
9552
+ postMatrix = postMatrix ? postMatrix.clone() : new Matrix(), application.transformUtil.fromMatrix(postMatrix, postMatrix).scale(scaleX, scaleY, scaleCenter), nextAttrs.postMatrix = postMatrix;
9553
+ } else nextAttrs.scaleX = (null !== (_a = attribute.scaleX) && void 0 !== _a ? _a : DefaultTransform.scaleX) * scaleX, nextAttrs.scaleY = (null !== (_b = attribute.scaleY) && void 0 !== _b ? _b : DefaultTransform.scaleY) * scaleY;
9554
+ return this.commitInternalBaseAttributes(nextAttrs, context), this;
9435
9555
  }
9436
9556
  scaleTo(scaleX, scaleY) {
9437
9557
  const attribute = this.baseAttributes;
@@ -9443,7 +9563,10 @@ class Graphic extends Node {
9443
9563
  scaleX: scaleX,
9444
9564
  scaleY: scaleY
9445
9565
  }, this.attribute, tempConstantScaleXYKey, context);
9446
- return params ? (this.applyBaseAttributes(params), this.commitBaseAttributeMutation(!1, context), this) : (attribute.scaleX = scaleX, attribute.scaleY = scaleY, this.commitBaseAttributeMutation(!1, context), this);
9566
+ return params ? (this.commitInternalBaseAttributes(params, context), this) : (this.commitInternalBaseAttributes({
9567
+ scaleX: scaleX,
9568
+ scaleY: scaleY
9569
+ }, context), this);
9447
9570
  }
9448
9571
  rotate(angle, rotateCenter) {
9449
9572
  var _a;
@@ -9455,24 +9578,26 @@ class Graphic extends Node {
9455
9578
  angle: angle,
9456
9579
  rotateCenter: rotateCenter
9457
9580
  }, this.attribute, tempConstantAngleKey, context);
9458
- params && (delete params.angle, this.applyBaseAttributes(params));
9459
- const attribute = this.baseAttributes;
9581
+ params && delete params.angle;
9582
+ const attribute = this.baseAttributes,
9583
+ nextAttrs = params || {};
9460
9584
  if (rotateCenter) {
9461
9585
  let {
9462
9586
  postMatrix: postMatrix
9463
9587
  } = this.baseAttributes;
9464
- postMatrix || (postMatrix = new Matrix(), this.baseAttributes.postMatrix = postMatrix), application.transformUtil.fromMatrix(postMatrix, postMatrix).rotate(angle, rotateCenter);
9465
- } else attribute.angle = (null !== (_a = attribute.angle) && void 0 !== _a ? _a : DefaultTransform.angle) + angle;
9466
- return this.commitBaseAttributeMutation(!1, context), this;
9588
+ postMatrix = postMatrix ? postMatrix.clone() : new Matrix(), application.transformUtil.fromMatrix(postMatrix, postMatrix).rotate(angle, rotateCenter), nextAttrs.postMatrix = postMatrix;
9589
+ } else nextAttrs.angle = (null !== (_a = attribute.angle) && void 0 !== _a ? _a : DefaultTransform.angle) + angle;
9590
+ return this.commitInternalBaseAttributes(nextAttrs, context), this;
9467
9591
  }
9468
9592
  rotateTo(angle) {
9469
- const attribute = this.baseAttributes;
9470
- if (attribute.angle === angle) return this;
9593
+ if (this.baseAttributes.angle === angle) return this;
9471
9594
  const context = {
9472
9595
  type: AttributeUpdateType.ROTATE_TO
9473
9596
  },
9474
9597
  params = this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(angle, this.attribute, tempConstantAngleKey, context);
9475
- return params ? (this.applyBaseAttributes(params), this.commitBaseAttributeMutation(!1, context), this) : (attribute.angle = angle, this.commitBaseAttributeMutation(!1, context), this);
9598
+ return params ? (this.commitInternalBaseAttributes(params, context), this) : (this.commitInternalBaseAttributes({
9599
+ angle: angle
9600
+ }, context), this);
9476
9601
  }
9477
9602
  skewTo(b, c) {
9478
9603
  return this;
@@ -9511,6 +9636,131 @@ class Graphic extends Node {
9511
9636
  stateEngine: this.stateEngine
9512
9637
  });
9513
9638
  }
9639
+ resolveSimpleLocalStateTransition(states, previousStates) {
9640
+ var _a;
9641
+ if (!this.states || this.stateProxy || this.stateSort || "deep" === this.stateMergeMode || this.parent || (null === (_a = this.stage) || void 0 === _a ? void 0 : _a.rootSharedStateScope) || this.boundSharedStateScope) return null;
9642
+ if (1 === states.length) {
9643
+ const stateName = states[0],
9644
+ hasDefinition = Object.prototype.hasOwnProperty.call(this.states, stateName),
9645
+ nextStates = [stateName],
9646
+ changed = !this.sameStateNames(previousStates, nextStates),
9647
+ resolvedStateAttrs = {};
9648
+ if (hasDefinition) {
9649
+ const attrs = this.states[stateName];
9650
+ if (null != attrs) {
9651
+ if (!isPlainObjectValue(attrs)) return null;
9652
+ const keys = Object.keys(attrs);
9653
+ for (let keyIndex = 0; keyIndex < keys.length; keyIndex++) {
9654
+ const key = keys[keyIndex];
9655
+ if (FULL_STATE_DEFINITION_KEYS.has(key)) return null;
9656
+ const attrValue = attrs[key];
9657
+ resolvedStateAttrs[key] = isPlainObjectValue(attrValue) ? cloneAttributeValue(attrValue) : attrValue;
9658
+ }
9659
+ }
9660
+ }
9661
+ return {
9662
+ changed: changed,
9663
+ states: nextStates,
9664
+ effectiveStates: nextStates,
9665
+ resolvedStateAttrs: resolvedStateAttrs
9666
+ };
9667
+ }
9668
+ const uniqueStates = Array.from(new Set(states)),
9669
+ withDefinition = [],
9670
+ withoutDefinition = [];
9671
+ for (let i = 0; i < uniqueStates.length; i++) {
9672
+ const stateName = uniqueStates[i];
9673
+ Object.prototype.hasOwnProperty.call(this.states, stateName) ? withDefinition.push(stateName) : withoutDefinition.push(stateName);
9674
+ }
9675
+ withDefinition.sort((left, right) => left.localeCompare(right));
9676
+ const nextStates = withDefinition.concat(withoutDefinition),
9677
+ changed = !this.sameStateNames(previousStates, nextStates),
9678
+ resolvedStateAttrs = {};
9679
+ for (let i = 0; i < nextStates.length; i++) {
9680
+ const stateName = nextStates[i];
9681
+ if (!Object.prototype.hasOwnProperty.call(this.states, stateName)) continue;
9682
+ const attrs = this.states[stateName];
9683
+ if (null == attrs) continue;
9684
+ if (!isPlainObjectValue(attrs)) return null;
9685
+ const keys = Object.keys(attrs);
9686
+ for (let keyIndex = 0; keyIndex < keys.length; keyIndex++) {
9687
+ const key = keys[keyIndex];
9688
+ if (FULL_STATE_DEFINITION_KEYS.has(key)) return null;
9689
+ const attrValue = attrs[key];
9690
+ resolvedStateAttrs[key] = isPlainObjectValue(attrValue) ? cloneAttributeValue(attrValue) : attrValue;
9691
+ }
9692
+ }
9693
+ return {
9694
+ changed: changed,
9695
+ states: nextStates,
9696
+ effectiveStates: nextStates,
9697
+ resolvedStateAttrs: resolvedStateAttrs
9698
+ };
9699
+ }
9700
+ resolveGraphicStateTransition(states, previousStates, forceResolverRefresh = !1) {
9701
+ var _a, _b, _c, _d;
9702
+ let transition = this.resolveSimpleLocalStateTransition(states, previousStates);
9703
+ const isSimpleLocalTransition = !!transition;
9704
+ let resolvedStateAttrs;
9705
+ if (transition) resolvedStateAttrs = transition.resolvedStateAttrs;else {
9706
+ const stateResolveBaseAttrs = null !== (_a = this.baseAttributes) && void 0 !== _a ? _a : this.attribute,
9707
+ stateModel = this.createStateModel();
9708
+ null === (_b = this.stateEngine) || void 0 === _b || _b.setResolveContext(this, stateResolveBaseAttrs), forceResolverRefresh && (null === (_c = this.stateEngine) || void 0 === _c || _c.invalidateResolverCache()), transition = stateModel.useStates(states), resolvedStateAttrs = this.stateEngine && this.compiledStateDefinitions ? Object.assign({}, this.stateEngine.resolvedPatch) : this.getStateStyleResolver(this.stateMergeMode).resolve(stateResolveBaseAttrs, this.states, this.stateProxy, transition.states, this.stateSort);
9709
+ }
9710
+ return {
9711
+ transition: transition,
9712
+ effectiveStates: null !== (_d = transition.effectiveStates) && void 0 !== _d ? _d : transition.states,
9713
+ resolvedStateAttrs: resolvedStateAttrs,
9714
+ isSimpleLocalTransition: isSimpleLocalTransition
9715
+ };
9716
+ }
9717
+ normalizeSetStatesOptions(options) {
9718
+ return options && "object" == typeof options ? {
9719
+ hasAnimation: options.animate,
9720
+ animateSameStatePatchChange: !0 === options.animateSameStatePatchChange,
9721
+ shouldRefreshSameStatePatch: !0
9722
+ } : {
9723
+ hasAnimation: "boolean" == typeof options ? options : void 0,
9724
+ animateSameStatePatchChange: !1,
9725
+ shouldRefreshSameStatePatch: !1
9726
+ };
9727
+ }
9728
+ sameStatePatches(left, right) {
9729
+ const leftRecord = null != left ? left : {},
9730
+ rightRecord = null != right ? right : {},
9731
+ keys = new Set([...Object.keys(leftRecord), ...Object.keys(rightRecord)]);
9732
+ for (const key of keys) {
9733
+ if (Object.prototype.hasOwnProperty.call(leftRecord, key) !== Object.prototype.hasOwnProperty.call(rightRecord, key)) return !1;
9734
+ if (!areAttributeValuesEqual(leftRecord[key], rightRecord[key])) return !1;
9735
+ }
9736
+ return !0;
9737
+ }
9738
+ commitSameStatePatchRefresh(states, hasAnimation, animateSameStatePatchChange = !1) {
9739
+ var _a;
9740
+ const previousStates = null !== (_a = this.currentStates) && void 0 !== _a ? _a : EMPTY_STATE_NAMES,
9741
+ previousResolvedStatePatch = this.resolvedStatePatch,
9742
+ {
9743
+ transition: transition,
9744
+ effectiveStates: effectiveStates,
9745
+ resolvedStateAttrs: resolvedStateAttrs,
9746
+ isSimpleLocalTransition: isSimpleLocalTransition
9747
+ } = this.resolveGraphicStateTransition(states, previousStates, !0),
9748
+ patchChanged = !this.sameStatePatches(previousResolvedStatePatch, resolvedStateAttrs);
9749
+ if ((!patchChanged || this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, !1)) && (this.currentStates = transition.states, this.effectiveStates = isSimpleLocalTransition ? effectiveStates : [...effectiveStates], this.resolvedStatePatch = resolvedStateAttrs, this.sharedStateDirty = !1, this.syncSharedStateActiveRegistrations(), patchChanged)) {
9750
+ if (this.stage) {
9751
+ const perfMonitor = getActiveStageStatePerfMonitor(this.stage);
9752
+ null == perfMonitor || perfMonitor.incrementCounter("stateCommits"), null == perfMonitor || perfMonitor.recordEvent("state-commit", {
9753
+ graphicId: this._uid,
9754
+ targetStates: [...transition.states]
9755
+ });
9756
+ }
9757
+ hasAnimation && animateSameStatePatchChange ? (this._syncFinalAttributeFromStaticTruth(), this.applyStateAttrs(resolvedStateAttrs, transition.states, hasAnimation, !1, void 0, this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch))) : (this.stopStateAnimates(), this.attributeMayContainTransientAttrs ? this._restoreAttributeFromStaticTruth({
9758
+ type: AttributeUpdateType.STATE
9759
+ }) : this.restoreAttributeFromStatePatchDelta(previousResolvedStatePatch, this.resolvedStatePatch, {
9760
+ type: AttributeUpdateType.STATE
9761
+ }), this.emitStateUpdateEvent());
9762
+ }
9763
+ }
9514
9764
  resolveStateAnimateConfig(animateConfig) {
9515
9765
  var _a, _b, _c;
9516
9766
  return null !== (_c = null !== (_a = null != animateConfig ? animateConfig : this.stateAnimateConfig) && void 0 !== _a ? _a : null === (_b = this.context) || void 0 === _b ? void 0 : _b.stateAnimateConfig) && void 0 !== _c ? _c : DefaultStateAnimateConfig;
@@ -9531,9 +9781,7 @@ class Graphic extends Node {
9531
9781
  });
9532
9782
  this.getStateTransitionOrchestrator().applyTransition(this, plan, hasAnimation, transitionOptions);
9533
9783
  }
9534
- updateNormalAttrs(stateAttrs) {
9535
- this._deprecatedNormalAttrsView = cloneAttributeValue(this.baseAttributes);
9536
- }
9784
+ updateNormalAttrs(_stateAttrs) {}
9537
9785
  getStateTransitionDefaultAttribute(key, targetAttrs) {
9538
9786
  return this.getDefaultAttribute(key);
9539
9787
  }
@@ -9543,6 +9791,7 @@ class Graphic extends Node {
9543
9791
  stopStateAnimates(type = "end") {
9544
9792
  const stopAnimationState = this.stopAnimationState;
9545
9793
  if ("function" == typeof stopAnimationState) return void stopAnimationState.call(this, "state", type);
9794
+ if (!this.mayHaveTrackedAnimates()) return;
9546
9795
  const stateAnimates = [];
9547
9796
  this.visitTrackedAnimates(animate => {
9548
9797
  animate.stateNames && stateAnimates.push(animate);
@@ -9555,19 +9804,25 @@ class Graphic extends Node {
9555
9804
  }
9556
9805
  clearStates(hasAnimation) {
9557
9806
  var _a, _b, _c;
9558
- const previousStates = this.currentStates ? this.currentStates.slice() : [],
9559
- previousResolvedStatePatch = this.resolvedStatePatch ? cloneAttributeValue(this.resolvedStatePatch) : void 0,
9807
+ const previousStates = null !== (_a = this.currentStates) && void 0 !== _a ? _a : EMPTY_STATE_NAMES,
9808
+ previousResolvedStatePatch = this.resolvedStatePatch,
9560
9809
  transition = this.createStateModel().clearStates();
9561
9810
  if (!transition.changed && 0 === previousStates.length) return this.currentStates = [], this.effectiveStates = [], this.resolvedStatePatch = void 0, this.sharedStateDirty = !1, void this.clearSharedStateActiveRegistrations();
9562
- const resolvedStateAttrs = cloneAttributeValue(null !== (_a = this.baseAttributes) && void 0 !== _a ? _a : {});
9563
- transition.changed && !this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, !0) || (this.currentStates = transition.states, this.effectiveStates = [], this.resolvedStatePatch = void 0, this.sharedStateDirty = !1, this.clearSharedStateActiveRegistrations(), null === (_b = getStageStatePerfMonitor(this.stage)) || void 0 === _b || _b.incrementCounter("stateCommits"), null === (_c = getStageStatePerfMonitor(this.stage)) || void 0 === _c || _c.recordEvent("state-commit", {
9564
- graphicId: this._uid,
9565
- targetStates: []
9566
- }), hasAnimation ? (this._syncFinalAttributeFromStaticTruth(), this.applyStateAttrs(resolvedStateAttrs, transition.states, hasAnimation, !0, void 0, this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch))) : (this.stopStateAnimates(), this._restoreAttributeFromStaticTruth({
9567
- type: AttributeUpdateType.STATE
9568
- }), this._emitCustomEvent("afterStateUpdate", {
9569
- type: AttributeUpdateType.STATE
9570
- })));
9811
+ const resolvedStateAttrs = hasAnimation || this.hasCustomEvent("beforeStateUpdate") ? cloneAttributeValue(null !== (_b = this.baseAttributes) && void 0 !== _b ? _b : {}) : null !== (_c = this.baseAttributes) && void 0 !== _c ? _c : {};
9812
+ if (!transition.changed || this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, !0)) {
9813
+ if (this.currentStates = transition.states, this.effectiveStates = [], this.resolvedStatePatch = void 0, this.sharedStateDirty = !1, this.clearSharedStateActiveRegistrations(), this.stage) {
9814
+ const perfMonitor = getActiveStageStatePerfMonitor(this.stage);
9815
+ null == perfMonitor || perfMonitor.incrementCounter("stateCommits"), null == perfMonitor || perfMonitor.recordEvent("state-commit", {
9816
+ graphicId: this._uid,
9817
+ targetStates: []
9818
+ });
9819
+ }
9820
+ hasAnimation ? (this._syncFinalAttributeFromStaticTruth(), this.applyStateAttrs(resolvedStateAttrs, transition.states, hasAnimation, !0, void 0, this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch))) : (this.stopStateAnimates(), this.attributeMayContainTransientAttrs ? this._restoreAttributeFromStaticTruth({
9821
+ type: AttributeUpdateType.STATE
9822
+ }) : this.restoreAttributeFromStatePatchDelta(previousResolvedStatePatch, void 0, {
9823
+ type: AttributeUpdateType.STATE
9824
+ }), this.emitStateUpdateEvent());
9825
+ }
9571
9826
  }
9572
9827
  removeState(stateName, hasAnimation) {
9573
9828
  const transition = this.createStateModel().removeState(stateName);
@@ -9581,39 +9836,59 @@ class Graphic extends Node {
9581
9836
  const transition = this.createStateModel().addState(stateName, keepCurrentStates);
9582
9837
  transition.changed && this.useStates(transition.states, hasAnimation);
9583
9838
  }
9839
+ setStates(states, options) {
9840
+ var _a, _b, _c;
9841
+ const {
9842
+ hasAnimation: hasAnimation,
9843
+ animateSameStatePatchChange: animateSameStatePatchChange,
9844
+ shouldRefreshSameStatePatch: shouldRefreshSameStatePatch
9845
+ } = this.normalizeSetStatesOptions(options),
9846
+ nextStates = (null == states ? void 0 : states.length) ? states : EMPTY_STATE_NAMES,
9847
+ hasCurrentState = !!((null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) || (null === (_b = this.effectiveStates) || void 0 === _b ? void 0 : _b.length) || this.resolvedStatePatch || (null === (_c = this.registeredActiveScopes) || void 0 === _c ? void 0 : _c.size));
9848
+ if (nextStates.length) {
9849
+ if (this.sameStateNames(this.currentStates, nextStates)) return shouldRefreshSameStatePatch ? void this.commitSameStatePatchRefresh(nextStates, hasAnimation, animateSameStatePatchChange) : void (this.sharedStateDirty && this.refreshSharedStateBeforeRender());
9850
+ this.useStates(nextStates, hasAnimation);
9851
+ } else {
9852
+ if (!hasCurrentState && !this.sharedStateDirty) return;
9853
+ this.clearStates(hasAnimation);
9854
+ }
9855
+ }
9584
9856
  useStates(states, hasAnimation) {
9585
- var _a, _b, _c, _d, _e;
9857
+ var _a;
9586
9858
  if (!states.length) return void this.clearStates(hasAnimation);
9587
- const previousStates = this.currentStates ? this.currentStates.slice() : [],
9588
- previousResolvedStatePatch = this.resolvedStatePatch ? cloneAttributeValue(this.resolvedStatePatch) : void 0,
9589
- stateResolveBaseAttrs = null !== (_a = this.baseAttributes) && void 0 !== _a ? _a : this.attribute,
9590
- stateModel = this.createStateModel();
9591
- null === (_b = this.stateEngine) || void 0 === _b || _b.setResolveContext(this, stateResolveBaseAttrs);
9592
- const transition = stateModel.useStates(states);
9593
- if (!transition.changed && this.sameStateNames(previousStates, transition.states)) return;
9594
- const effectiveStates = null !== (_c = transition.effectiveStates) && void 0 !== _c ? _c : transition.states,
9595
- resolvedStateAttrs = this.stateEngine && this.compiledStateDefinitions ? Object.assign({}, this.stateEngine.resolvedPatch) : this.getStateStyleResolver(this.stateMergeMode).resolve(stateResolveBaseAttrs, this.states, this.stateProxy, transition.states, this.stateSort);
9596
- this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, !1) && (this.currentStates = transition.states, this.effectiveStates = [...effectiveStates], this.resolvedStatePatch = Object.assign({}, resolvedStateAttrs), this.sharedStateDirty = !1, this.syncSharedStateActiveRegistrations(), null === (_d = getStageStatePerfMonitor(this.stage)) || void 0 === _d || _d.incrementCounter("stateCommits"), null === (_e = getStageStatePerfMonitor(this.stage)) || void 0 === _e || _e.recordEvent("state-commit", {
9597
- graphicId: this._uid,
9598
- targetStates: [...transition.states]
9599
- }), hasAnimation ? (this._syncFinalAttributeFromStaticTruth(), this.applyStateAttrs(resolvedStateAttrs, transition.states, hasAnimation, !1, void 0, this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch))) : (this.stopStateAnimates(), this._restoreAttributeFromStaticTruth({
9600
- type: AttributeUpdateType.STATE
9601
- }), this._emitCustomEvent("afterStateUpdate", {
9602
- type: AttributeUpdateType.STATE
9603
- })));
9859
+ const previousStates = null !== (_a = this.currentStates) && void 0 !== _a ? _a : EMPTY_STATE_NAMES,
9860
+ previousResolvedStatePatch = this.resolvedStatePatch,
9861
+ {
9862
+ transition: transition,
9863
+ effectiveStates: effectiveStates,
9864
+ resolvedStateAttrs: resolvedStateAttrs,
9865
+ isSimpleLocalTransition: isSimpleLocalTransition
9866
+ } = this.resolveGraphicStateTransition(states, previousStates);
9867
+ if ((transition.changed || !this.sameStateNames(previousStates, transition.states)) && this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, !1)) {
9868
+ if (this.currentStates = transition.states, this.effectiveStates = isSimpleLocalTransition ? effectiveStates : [...effectiveStates], this.resolvedStatePatch = resolvedStateAttrs, this.sharedStateDirty = !1, this.syncSharedStateActiveRegistrations(), this.stage) {
9869
+ const perfMonitor = getActiveStageStatePerfMonitor(this.stage);
9870
+ null == perfMonitor || perfMonitor.incrementCounter("stateCommits"), null == perfMonitor || perfMonitor.recordEvent("state-commit", {
9871
+ graphicId: this._uid,
9872
+ targetStates: [...transition.states]
9873
+ });
9874
+ }
9875
+ hasAnimation ? (this._syncFinalAttributeFromStaticTruth(), this.applyStateAttrs(resolvedStateAttrs, transition.states, hasAnimation, !1, void 0, this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch))) : (this.stopStateAnimates(), this.attributeMayContainTransientAttrs ? this._restoreAttributeFromStaticTruth({
9876
+ type: AttributeUpdateType.STATE
9877
+ }) : this.restoreAttributeFromStatePatchDelta(previousResolvedStatePatch, this.resolvedStatePatch, {
9878
+ type: AttributeUpdateType.STATE
9879
+ }), this.emitStateUpdateEvent());
9880
+ }
9604
9881
  }
9605
9882
  invalidateResolver() {
9606
- var _a, _b;
9883
+ var _a, _b, _c;
9607
9884
  if (!this.stateEngine || !(null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) || !this.compiledStateDefinitions) return;
9608
9885
  const stateResolveBaseAttrs = null !== (_b = this.baseAttributes) && void 0 !== _b ? _b : this.attribute;
9609
- this.stateEngine.setResolveContext(this, stateResolveBaseAttrs), this.resolverEpoch += 1, this.stateEngine.invalidateResolverCache();
9886
+ this.stateEngine.setResolveContext(this, stateResolveBaseAttrs), this.resolverEpoch = (null !== (_c = this.resolverEpoch) && void 0 !== _c ? _c : 0) + 1, this.stateEngine.invalidateResolverCache();
9610
9887
  const transition = this.stateEngine.applyStates(this.currentStates),
9611
9888
  resolvedStateAttrs = Object.assign({}, this.stateEngine.resolvedPatch);
9612
- this.effectiveStates = [...transition.effectiveStates], this.resolvedStatePatch = Object.assign({}, resolvedStateAttrs), this.sharedStateDirty = !1, this.syncSharedStateActiveRegistrations(), this.stopStateAnimates(), this._restoreAttributeFromStaticTruth({
9613
- type: AttributeUpdateType.STATE
9614
- }), this._emitCustomEvent("afterStateUpdate", {
9889
+ this.effectiveStates = [...transition.effectiveStates], this.resolvedStatePatch = resolvedStateAttrs, this.sharedStateDirty = !1, this.syncSharedStateActiveRegistrations(), this.stopStateAnimates(), this._restoreAttributeFromStaticTruth({
9615
9890
  type: AttributeUpdateType.STATE
9616
- });
9891
+ }), this.emitStateUpdateEvent();
9617
9892
  }
9618
9893
  sameStateNames(left, right) {
9619
9894
  const normalizedLeft = null != left ? left : [],
@@ -9634,6 +9909,9 @@ class Graphic extends Node {
9634
9909
  addUpdateShapeAndBoundsTag() {
9635
9910
  this._updateTag |= UpdateTag.UPDATE_SHAPE_AND_BOUNDS, this.parent && this.parent.addChildUpdateBoundTag(), this.glyphHost && this.glyphHost.addUpdateBoundTag();
9636
9911
  }
9912
+ addBroadUpdateTag() {
9913
+ this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag(), this._updateTag |= UpdateTag.UPDATE_SHAPE_AND_BOUNDS | UpdateTag.UPDATE_PAINT | UpdateTag.UPDATE_GLOBAL_LOCAL_MATRIX | UpdateTag.UPDATE_LAYOUT, this.parent && this.parent.addChildUpdateBoundTag(), this.glyphHost && this.glyphHost.addUpdateBoundTag();
9914
+ }
9637
9915
  updateShapeAndBoundsTagSetted() {
9638
9916
  return (this._updateTag & UpdateTag.UPDATE_SHAPE_AND_BOUNDS) === UpdateTag.UPDATE_SHAPE_AND_BOUNDS;
9639
9917
  }
@@ -9721,13 +9999,13 @@ class Graphic extends Node {
9721
9999
  }
9722
10000
  }
9723
10001
  setStage(stage, layer) {
9724
- var _a, _b, _c, _d, _e, _f, _g, _h;
10002
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
9725
10003
  const graphicService = null !== (_c = null !== (_a = null == stage ? void 0 : stage.graphicService) && void 0 !== _a ? _a : null === (_b = this.stage) || void 0 === _b ? void 0 : _b.graphicService) && void 0 !== _c ? _c : application.graphicService,
9726
10004
  previousStage = this.stage;
9727
10005
  if (this.stage !== stage || this.layer !== layer) {
9728
- if (this.stage = stage, this.layer = layer, this.syncSharedStateScopeBindingFromTree(!!(null === (_d = this.currentStates) || void 0 === _d ? void 0 : _d.length)), this.setStageToShadowRoot(stage, layer), this.hasAnyTrackedAnimate()) {
9729
- const previousTimeline = null === (_e = null == previousStage ? void 0 : previousStage.getTimeline) || void 0 === _e ? void 0 : _e.call(previousStage),
9730
- nextTimeline = null === (_f = null == stage ? void 0 : stage.getTimeline) || void 0 === _f ? void 0 : _f.call(stage),
10006
+ if (this.stage = stage, this.layer = layer, ((null === (_d = this.currentStates) || void 0 === _d ? void 0 : _d.length) || this.boundSharedStateScope || (null === (_e = this.registeredActiveScopes) || void 0 === _e ? void 0 : _e.size) || this.sharedStateDirty) && this.syncSharedStateScopeBindingOnTreeChange(!0), this.setStageToShadowRoot(stage, layer), this.mayHaveTrackedAnimates() && this.hasAnyTrackedAnimate()) {
10007
+ const previousTimeline = null === (_f = null == previousStage ? void 0 : previousStage.getTimeline) || void 0 === _f ? void 0 : _f.call(previousStage),
10008
+ nextTimeline = null === (_g = null == stage ? void 0 : stage.getTimeline) || void 0 === _g ? void 0 : _g.call(stage),
9731
10009
  detachedStageAnimates = [];
9732
10010
  this.visitTrackedAnimates(a => {
9733
10011
  (!!previousTimeline && a.timeline === previousTimeline || a.timeline.isGlobal) && (nextTimeline ? a.timeline !== nextTimeline && (previousTimeline && a.timeline === previousTimeline && previousTimeline.removeAnimate(a, !1), a.setTimeline(nextTimeline), nextTimeline.addAnimate(a)) : previousTimeline && a.timeline === previousTimeline && (previousTimeline.removeAnimate(a, !1), detachedStageAnimates.push(a)));
@@ -9740,9 +10018,13 @@ class Graphic extends Node {
9740
10018
  type: AttributeUpdateType.ANIMATE_END
9741
10019
  }));
9742
10020
  }
9743
- return this._onSetStage && this._onSetStage(this, stage, layer), void (null === (_g = null == graphicService ? void 0 : graphicService.onSetStage) || void 0 === _g || _g.call(graphicService, this, stage));
10021
+ return this._onSetStage && this._onSetStage(this, stage, layer), void (null === (_h = null == graphicService ? void 0 : graphicService.onSetStage) || void 0 === _h || _h.call(graphicService, this, stage));
9744
10022
  }
9745
- this.syncSharedStateScopeBindingFromTree(!!(null === (_h = this.currentStates) || void 0 === _h ? void 0 : _h.length));
10023
+ ((null === (_j = this.currentStates) || void 0 === _j ? void 0 : _j.length) || this.boundSharedStateScope || (null === (_k = this.registeredActiveScopes) || void 0 === _k ? void 0 : _k.size) || this.sharedStateDirty) && this.syncSharedStateScopeBindingOnTreeChange(!0);
10024
+ }
10025
+ detachStageForRelease() {
10026
+ var _a, _b, _c;
10027
+ (null === (_a = this.registeredActiveScopes) || void 0 === _a ? void 0 : _a.size) && this.clearSharedStateActiveRegistrations(), (this.mayHaveTrackedAnimates() || this.shadowRoot) && this.stopAnimates(), this.boundSharedStateScope = void 0, this.boundSharedStateRevision = void 0, this.localFallbackCompiledDefinitions = void 0, this.compiledStateDefinitions = void 0, this.compiledStateDefinitionsCacheKey = void 0, this.stateEngine = void 0, this.stateEngineCompiledDefinitions = void 0, this.stateEngineStateProxyModeKey = void 0, this.sharedStateDirty = !1, this.stage = null, this.layer = null, this.shadowRoot && (null === (_c = (_b = this.shadowRoot).detachStageForRelease) || void 0 === _c || _c.call(_b));
9746
10028
  }
9747
10029
  setStageToShadowRoot(stage, layer) {
9748
10030
  this.shadowRoot && this.shadowRoot.setStage(stage, layer);
@@ -9809,6 +10091,7 @@ class Graphic extends Node {
9809
10091
  res && (res.state = "fail", cb && cb());
9810
10092
  }
9811
10093
  _stopAnimates() {
10094
+ if (!this.mayHaveTrackedAnimates()) return;
9812
10095
  const animates = [];
9813
10096
  this.visitTrackedAnimates(animate => {
9814
10097
  animates.push(animate);
@@ -9822,14 +10105,17 @@ class Graphic extends Node {
9822
10105
  });
9823
10106
  }
9824
10107
  release() {
9825
- var _a, _b, _c;
9826
- this.releaseStatus = "released", this.clearSharedStateActiveRegistrations(), this.stopAnimates();
9827
- const graphicService = null !== (_b = null === (_a = this.stage) || void 0 === _a ? void 0 : _a.graphicService) && void 0 !== _b ? _b : application.graphicService;
9828
- null === (_c = null == graphicService ? void 0 : graphicService.onRelease) || void 0 === _c || _c.call(graphicService, this), super.release();
10108
+ var _a, _b, _c, _d;
10109
+ this.releaseStatus = "released", (null === (_a = this.registeredActiveScopes) || void 0 === _a ? void 0 : _a.size) && this.clearSharedStateActiveRegistrations(), (this.mayHaveTrackedAnimates() || this.shadowRoot) && this.stopAnimates();
10110
+ const graphicService = null !== (_c = null === (_b = this.stage) || void 0 === _b ? void 0 : _b.graphicService) && void 0 !== _c ? _c : application.graphicService;
10111
+ null === (_d = null == graphicService ? void 0 : graphicService.onRelease) || void 0 === _d || _d.call(graphicService, this), super.release();
10112
+ }
10113
+ hasCustomEvent(type) {
10114
+ return !!this._events && type in this._events;
9829
10115
  }
9830
10116
  _dispatchCustomEvent(type, context) {
9831
10117
  var _a, _b;
9832
- if (this._events && type in this._events) {
10118
+ if (this.hasCustomEvent(type)) {
9833
10119
  const changeEvent = new CustomEvent(type, context);
9834
10120
  changeEvent.bubbles = !1;
9835
10121
  const manager = null === (_b = null === (_a = this.stage) || void 0 === _a ? void 0 : _a.eventSystem) || void 0 === _b ? void 0 : _b.manager;
@@ -9838,7 +10124,7 @@ class Graphic extends Node {
9838
10124
  return !0;
9839
10125
  }
9840
10126
  beforeStateUpdate(attrs, prevStates, nextStates, hasAnimation, isClear) {
9841
- return this._dispatchCustomEvent("beforeStateUpdate", {
10127
+ return !this.hasCustomEvent("beforeStateUpdate") || this._dispatchCustomEvent("beforeStateUpdate", {
9842
10128
  type: AttributeUpdateType.STATE,
9843
10129
  attrs: Object.assign({}, attrs),
9844
10130
  prevStates: prevStates.slice(),
@@ -9847,6 +10133,11 @@ class Graphic extends Node {
9847
10133
  isClear: !!isClear
9848
10134
  });
9849
10135
  }
10136
+ emitStateUpdateEvent() {
10137
+ this.hasCustomEvent("afterStateUpdate") && this._emitCustomEvent("afterStateUpdate", {
10138
+ type: AttributeUpdateType.STATE
10139
+ });
10140
+ }
9850
10141
  _emitCustomEvent(type, context) {
9851
10142
  this._dispatchCustomEvent(type, context);
9852
10143
  }
@@ -12853,13 +13144,15 @@ var GroupUpdateAABBBoundsMode;
12853
13144
  }(GroupUpdateAABBBoundsMode || (GroupUpdateAABBBoundsMode = {}));
12854
13145
  class Group extends Graphic {
12855
13146
  constructor(params) {
12856
- super(params), this.type = "group", this.parent = null, this.isContainer = !0, this.numberType = GROUP_NUMBER_TYPE, this._childUpdateTag = UpdateTag.UPDATE_BOUNDS;
13147
+ super(params), this.type = "group", this.parent = null, this.isContainer = !0, this._hasSharedStateDefinitions = !1, this.numberType = GROUP_NUMBER_TYPE, this._childUpdateTag = UpdateTag.UPDATE_BOUNDS;
12857
13148
  }
12858
13149
  get sharedStateDefinitions() {
12859
13150
  return this._sharedStateDefinitions;
12860
13151
  }
12861
13152
  set sharedStateDefinitions(value) {
12862
- this._sharedStateDefinitions !== value && (this._sharedStateDefinitions = value, this.ensureSharedStateScopeBound(), this.sharedStateScope && (setSharedStateScopeLocalDefinitions(this.sharedStateScope, value), markScopeActiveDescendantsDirty(this.sharedStateScope, this.stage)));
13153
+ if (this._sharedStateDefinitions === value) return;
13154
+ const previousScope = this.sharedStateScope;
13155
+ this._sharedStateDefinitions = value, this._hasSharedStateDefinitions = !!value && Object.keys(value).length > 0, this.ensureSharedStateScopeBound(), this.sharedStateScope && (setSharedStateScopeLocalDefinitions(this.sharedStateScope, value), markScopeActiveDescendantsDirty(this.sharedStateScope, this.stage)), previousScope !== this.sharedStateScope && this.notifyChildrenSharedStateTreeChanged();
12863
13156
  }
12864
13157
  setMode(mode) {
12865
13158
  "3d" === mode ? this.set3dMode() : this.set2dMode();
@@ -12984,9 +13277,10 @@ class Group extends Graphic {
12984
13277
  insertInto(newNode, idx) {
12985
13278
  return this._updateChildToStage(super.insertInto(newNode, idx));
12986
13279
  }
12987
- removeChild(child) {
13280
+ removeChild(child, highPerformance = !1) {
13281
+ var _a;
12988
13282
  const data = super.removeChild(child);
12989
- return this.getGraphicService().onRemove(child), child.setStage(null, null), this.addUpdateBoundTag(), data;
13283
+ return data ? highPerformance ? (null === (_a = child.detachStageForRelease) || void 0 === _a || _a.call(child), data) : (this.getGraphicService().onRemove(child), child.setStage(null, null), this.addUpdateBoundTag(), data) : data;
12990
13284
  }
12991
13285
  removeAllChild(deep = !1) {
12992
13286
  const children = this.children.slice();
@@ -12998,11 +13292,13 @@ class Group extends Graphic {
12998
13292
  }
12999
13293
  setStage(stage, layer) {
13000
13294
  var _a, _b, _c, _d, _e, _f;
13001
- const graphicService = null !== (_c = null !== (_a = null == stage ? void 0 : stage.graphicService) && void 0 !== _a ? _a : null === (_b = this.stage) || void 0 === _b ? void 0 : _b.graphicService) && void 0 !== _c ? _c : application.graphicService;
13002
- if (this.stage !== stage) return this.stage = stage, this.layer = layer, this.ensureSharedStateScopeBound(), this.syncSharedStateScopeBindingFromTree(!!(null === (_d = this.currentStates) || void 0 === _d ? void 0 : _d.length)), this.setStageToShadowRoot(stage, layer), this._onSetStage && this._onSetStage(this, stage, layer), null === (_e = null == graphicService ? void 0 : graphicService.onSetStage) || void 0 === _e || _e.call(graphicService, this, stage), void this.forEachChildren(item => {
13295
+ const graphicService = null !== (_c = null !== (_a = null == stage ? void 0 : stage.graphicService) && void 0 !== _a ? _a : null === (_b = this.stage) || void 0 === _b ? void 0 : _b.graphicService) && void 0 !== _c ? _c : application.graphicService,
13296
+ needsSharedStateTreeSync = this._hasSharedStateDefinitions || this.sharedStateScope || (null === (_d = this.currentStates) || void 0 === _d ? void 0 : _d.length) || this.boundSharedStateScope || (null === (_e = this.registeredActiveScopes) || void 0 === _e ? void 0 : _e.size) || this.sharedStateDirty;
13297
+ if (this.stage !== stage) return this.stage = stage, this.layer = layer, needsSharedStateTreeSync && (this.ensureSharedStateScopeBound(), this.syncSharedStateScopeBindingOnTreeChange(!0)), this.setStageToShadowRoot(stage, layer), this._onSetStage && this._onSetStage(this, stage, layer), null === (_f = null == graphicService ? void 0 : graphicService.onSetStage) || void 0 === _f || _f.call(graphicService, this, stage), void this.forEachChildren(item => {
13003
13298
  item.setStage(stage, this.layer);
13004
13299
  });
13005
- this.layer !== layer && (this.layer = layer), this.ensureSharedStateScopeBound(), this.syncSharedStateScopeBindingFromTree(!!(null === (_f = this.currentStates) || void 0 === _f ? void 0 : _f.length)), this.forEachChildren(item => {
13300
+ const layerChanged = this.layer !== layer;
13301
+ layerChanged && (this.layer = layer), needsSharedStateTreeSync ? (this.ensureSharedStateScopeBound(), this.syncSharedStateScopeBindingOnTreeChange(!0), this.notifyChildrenSharedStateTreeChanged()) : layerChanged && this.forEachChildren(item => {
13006
13302
  item.onParentSharedStateTreeChanged && item.onParentSharedStateTreeChanged(stage, this.layer);
13007
13303
  });
13008
13304
  }
@@ -13049,15 +13345,29 @@ class Group extends Graphic {
13049
13345
  g.release(all);
13050
13346
  }), super.release();
13051
13347
  }
13348
+ detachStageForRelease() {
13349
+ super.detachStageForRelease(), this.sharedStateScope = void 0, this.forEachChildren(item => {
13350
+ var _a;
13351
+ null === (_a = item.detachStageForRelease) || void 0 === _a || _a.call(item);
13352
+ });
13353
+ }
13052
13354
  ensureSharedStateScopeBound() {
13053
13355
  var _a, _b, _c;
13356
+ if (!this.hasSharedStateDefinitions()) return void (this.sharedStateScope = void 0);
13054
13357
  const parentScope = null !== (_b = null === (_a = this.parent) || void 0 === _a ? void 0 : _a.sharedStateScope) && void 0 !== _b ? _b : null === (_c = this.stage) || void 0 === _c ? void 0 : _c.rootSharedStateScope;
13055
13358
  this.sharedStateScope ? (this.sharedStateScope.ownerGroup = this, this.sharedStateScope.ownerStage = this.stage, setSharedStateScopeParent(this.sharedStateScope, parentScope), this.sharedStateScope.localStateDefinitions !== this._sharedStateDefinitions && setSharedStateScopeLocalDefinitions(this.sharedStateScope, this._sharedStateDefinitions)) : this.sharedStateScope = createGroupSharedStateScope(this, parentScope, this._sharedStateDefinitions);
13056
13359
  }
13360
+ hasSharedStateDefinitions() {
13361
+ return this._hasSharedStateDefinitions;
13362
+ }
13363
+ notifyChildrenSharedStateTreeChanged() {
13364
+ this.forEachChildren(item => {
13365
+ item.onParentSharedStateTreeChanged && item.onParentSharedStateTreeChanged(this.stage, this.layer);
13366
+ });
13367
+ }
13057
13368
  onParentSharedStateTreeChanged(stage, layer) {
13058
- this.stage === stage && this.layer === layer ? (this.ensureSharedStateScopeBound(), this.syncSharedStateScopeBindingFromTree(), this.forEachChildren(item => {
13059
- item.onParentSharedStateTreeChanged && item.onParentSharedStateTreeChanged(stage, this.layer);
13060
- })) : this.setStage(stage, layer);
13369
+ var _a;
13370
+ this.stage === stage && this.layer === layer ? (this.ensureSharedStateScopeBound(), this.syncSharedStateScopeBindingOnTreeChange(!!(null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length)), this.notifyChildrenSharedStateTreeChanged()) : this.setStage(stage, layer);
13061
13371
  }
13062
13372
  }
13063
13373
  Group.NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;
@@ -13405,7 +13715,10 @@ class DefaultGraphicService {
13405
13715
  beforeUpdateAABBBounds: new SyncHook(["graphic", "stage", "willUpdate", "aabbBounds"]),
13406
13716
  afterUpdateAABBBounds: new SyncHook(["graphic", "stage", "aabbBounds", "globalAABBBounds", "selfChange"]),
13407
13717
  clearAABBBounds: new SyncHook(["graphic", "stage", "aabbBounds"])
13408
- }, this.tempAABBBounds1 = new AABBBounds(), this.tempAABBBounds2 = new AABBBounds();
13718
+ }, this.tempAABBBounds1 = new AABBBounds(), this.tempAABBBounds2 = new AABBBounds(), this.tempAABBBoundsResult = {
13719
+ tb1: this.tempAABBBounds1,
13720
+ tb2: this.tempAABBBounds2
13721
+ };
13409
13722
  }
13410
13723
  onAttributeUpdate(graphic) {
13411
13724
  this.hooks.onAttributeUpdate.taps.length && this.hooks.onAttributeUpdate.call(graphic);
@@ -13505,10 +13818,7 @@ class DefaultGraphicService {
13505
13818
  updateTempAABBBounds(aabbBounds) {
13506
13819
  const tb1 = this.tempAABBBounds1,
13507
13820
  tb2 = this.tempAABBBounds2;
13508
- return tb1.setValue(aabbBounds.x1, aabbBounds.y1, aabbBounds.x2, aabbBounds.y2), tb2.setValue(aabbBounds.x1, aabbBounds.y1, aabbBounds.x2, aabbBounds.y2), {
13509
- tb1: tb1,
13510
- tb2: tb2
13511
- };
13821
+ return tb1.setValue(aabbBounds.x1, aabbBounds.y1, aabbBounds.x2, aabbBounds.y2), tb2.setValue(aabbBounds.x1, aabbBounds.y1, aabbBounds.x2, aabbBounds.y2), this.tempAABBBoundsResult;
13512
13822
  }
13513
13823
  }
13514
13824
 
@@ -14850,7 +15160,7 @@ class IncrementalAutoRenderPlugin {
14850
15160
  const globalBounds = new AABBBounds();
14851
15161
  class DirtyBoundsPlugin {
14852
15162
  constructor() {
14853
- this.name = "DirtyBoundsPlugin", this.activeEvent = "onRegister", this._uid = Generator.GenAutoIncrementId(), this.key = this.name + this._uid, this.handlePaintOnlyUpdate = graphic => {
15163
+ this.name = "DirtyBoundsPlugin", this.activeEvent = "onRegister", this._uid = Generator.GenAutoIncrementId(), this.key = this.name + this._uid, this.dirtyBoundsHooksRegistered = !1, this.handlePaintOnlyUpdate = graphic => {
14854
15164
  var _a, _b, _c, _d;
14855
15165
  const stage = this.pluginService.stage;
14856
15166
  if (!stage || stage !== graphic.stage || !stage.renderCount) return;
@@ -14870,12 +15180,13 @@ class DirtyBoundsPlugin {
14870
15180
  owner._AABBBounds && "function" == typeof owner._AABBBounds.empty && !owner._AABBBounds.empty() || "function" != typeof owner.doUpdateAABBBounds || owner.doUpdateAABBBounds("imprecise" === (null === (_a = owner.attribute) || void 0 === _a ? void 0 : _a.boundsMode));
14871
15181
  return owner._globalAABBBounds && "function" == typeof owner._globalAABBBounds.empty && !owner._globalAABBBounds.empty() || "function" != typeof owner.tryUpdateGlobalAABBBounds || owner.tryUpdateGlobalAABBBounds(), null !== (_b = owner._globalAABBBounds) && void 0 !== _b ? _b : owner.globalAABBBounds;
14872
15182
  }
14873
- activate(context) {
14874
- this.pluginService = context, context.stage.hooks.afterRender.tap(this.key, stage => {
14875
- stage && stage === this.pluginService.stage && stage.dirtyBounds.clear();
14876
- });
14877
- const stage = this.pluginService.stage;
14878
- stage && (stage.graphicService.hooks.onAttributeUpdate.tap(this.key, this.handlePaintOnlyUpdate), stage.graphicService.hooks.beforeUpdateAABBBounds.tap(this.key, (graphic, stage, willUpdate, bounds) => {
15183
+ getRemoveDirtyBounds(graphic) {
15184
+ var _a;
15185
+ const cachedBounds = (null !== (_a = graphic.glyphHost) && void 0 !== _a ? _a : graphic)._globalAABBBounds;
15186
+ if (cachedBounds && "function" == typeof cachedBounds.empty && !cachedBounds.empty()) return cachedBounds;
15187
+ }
15188
+ registerDirtyBoundsHooks(stage) {
15189
+ this.dirtyBoundsHooksRegistered || (stage.graphicService.hooks.onAttributeUpdate.tap(this.key, this.handlePaintOnlyUpdate), stage.graphicService.hooks.beforeUpdateAABBBounds.tap(this.key, (graphic, stage, willUpdate, bounds) => {
14879
15190
  graphic.glyphHost && (graphic = graphic.glyphHost), stage && stage === this.pluginService.stage && stage.renderCount && (graphic.isContainer && !graphic.shouldSelfChangeUpdateAABBBounds() || willUpdate && (globalBounds.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2), stage.dirty(globalBounds, graphic.parent && graphic.parent.globalTransMatrix)));
14880
15191
  }), stage.graphicService.hooks.afterUpdateAABBBounds.tap(this.key, (graphic, stage, bounds, params, selfChange) => {
14881
15192
  stage && stage === this.pluginService.stage && stage.renderCount && (graphic.isContainer && !selfChange || stage.dirty(params.globalAABBBounds));
@@ -14883,12 +15194,21 @@ class DirtyBoundsPlugin {
14883
15194
  stage && stage === this.pluginService.stage && stage.renderCount && stage && stage.dirty(bounds);
14884
15195
  }), stage.graphicService.hooks.onRemove.tap(this.key, graphic => {
14885
15196
  const stage = graphic.stage;
14886
- stage && stage === this.pluginService.stage && stage.renderCount && stage && stage.dirty(graphic.globalAABBBounds);
14887
- }));
15197
+ if (!stage || stage !== this.pluginService.stage || !stage.renderCount) return;
15198
+ const bounds = this.getRemoveDirtyBounds(graphic);
15199
+ bounds && !bounds.empty() && stage.dirty(bounds);
15200
+ }), this.dirtyBoundsHooksRegistered = !0);
15201
+ }
15202
+ activate(context) {
15203
+ this.pluginService = context, context.stage.hooks.afterRender.tap(this.key, stage => {
15204
+ stage && stage === this.pluginService.stage && (stage.dirtyBounds.clear(), this.registerDirtyBoundsHooks(stage));
15205
+ });
15206
+ const stage = this.pluginService.stage;
15207
+ stage && stage.renderCount && this.registerDirtyBoundsHooks(stage);
14888
15208
  }
14889
15209
  deactivate(context) {
14890
15210
  const stage = this.pluginService.stage;
14891
- stage && (stage.graphicService.hooks.onAttributeUpdate.taps = stage.graphicService.hooks.onAttributeUpdate.taps.filter(item => item.name !== this.key), stage.graphicService.hooks.beforeUpdateAABBBounds.taps = stage.graphicService.hooks.beforeUpdateAABBBounds.taps.filter(item => item.name !== this.key), stage.graphicService.hooks.afterUpdateAABBBounds.taps = stage.graphicService.hooks.afterUpdateAABBBounds.taps.filter(item => item.name !== this.key), stage.graphicService.hooks.clearAABBBounds.taps = stage.graphicService.hooks.clearAABBBounds.taps.filter(item => item.name !== this.key), stage.hooks.afterRender.taps = stage.hooks.afterRender.taps.filter(item => item.name !== this.key), stage.graphicService.hooks.onRemove.taps = stage.graphicService.hooks.onRemove.taps.filter(item => item.name !== this.key));
15211
+ stage && (stage.graphicService.hooks.onAttributeUpdate.taps = stage.graphicService.hooks.onAttributeUpdate.taps.filter(item => item.name !== this.key), this.dirtyBoundsHooksRegistered = !1, stage.graphicService.hooks.beforeUpdateAABBBounds.taps = stage.graphicService.hooks.beforeUpdateAABBBounds.taps.filter(item => item.name !== this.key), stage.graphicService.hooks.afterUpdateAABBBounds.taps = stage.graphicService.hooks.afterUpdateAABBBounds.taps.filter(item => item.name !== this.key), stage.graphicService.hooks.clearAABBBounds.taps = stage.graphicService.hooks.clearAABBBounds.taps.filter(item => item.name !== this.key), stage.hooks.afterRender.taps = stage.hooks.afterRender.taps.filter(item => item.name !== this.key), stage.graphicService.hooks.onRemove.taps = stage.graphicService.hooks.onRemove.taps.filter(item => item.name !== this.key));
14892
15212
  }
14893
15213
  }
14894
15214
 
@@ -15244,7 +15564,7 @@ class Stage extends Group {
15244
15564
  ticker.bindStage(this), this._ticker && this._ticker.removeListener("tick", this.afterTickCb), ticker.addTimeline(this.timeline), this._ticker = ticker, this._ticker.on("tick", this.afterTickCb);
15245
15565
  }
15246
15566
  constructor(params = {}, deps = {}) {
15247
- var _a, _b, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
15567
+ var _a, _b, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
15248
15568
  super({}), this.tickedBeforeRender = !0, this._onVisibleChange = visible => {
15249
15569
  if (!(this._skipRender < 0)) if (visible) {
15250
15570
  if (this.dirtyBounds) {
@@ -15254,7 +15574,8 @@ class Stage extends Group {
15254
15574
  this._skipRender > 1 && this.renderNextFrame(), this._skipRender = 0;
15255
15575
  } else this._skipRender = 1;
15256
15576
  }, this.beforeRender = stage => {
15257
- flushStageSharedStateRefresh(this), this._beforeRenderList.forEach(cb => cb(stage));
15577
+ const pendingSharedRefresh = this._pendingSharedStateRefreshGraphics;
15578
+ (null == pendingSharedRefresh ? void 0 : pendingSharedRefresh.size) && flushStageSharedStateRefresh(this), this._beforeRenderList.forEach(cb => cb(stage));
15258
15579
  }, this.afterClearScreen = drawParams => {
15259
15580
  this._afterClearScreen && this._afterClearScreen(drawParams);
15260
15581
  }, this.afterClearRect = drawParams => {
@@ -15279,14 +15600,17 @@ class Stage extends Group {
15279
15600
  canvas: params.canvas
15280
15601
  }), this.state = "normal", this.renderCount = 0, this.tryInitEventSystem(), this._background = null !== (_w = params.background) && void 0 !== _w ? _w : DefaultConfig.BACKGROUND, this.stage = this, this.appendChild(this.layerService.createLayer(this, {
15281
15602
  main: !0
15282
- })), this.nextFrameRenderLayerSet = new Set(), this.willNextFrameRender = !1, ensureStageStatePerfMonitor(this), this._stateBatchScheduler = new StateBatchScheduler(this, ensureStageStatePerfMonitor(this)), this.rootSharedStateScope = createRootSharedStateScope(this, null === (_x = this.theme) || void 0 === _x ? void 0 : _x.stateDefinitions), this.theme.onStateDefinitionsChange = () => {
15603
+ })), this.nextFrameRenderLayerSet = new Set(), this.willNextFrameRender = !1, this.theme.onStateDefinitionsChange = () => {
15283
15604
  var _a;
15284
- this.rootSharedStateScope && (setRootSharedStateScopeThemeDefinitions(this.rootSharedStateScope, null === (_a = this.theme) || void 0 === _a ? void 0 : _a.stateDefinitions), markScopeActiveDescendantsDirty(this.rootSharedStateScope, this));
15605
+ const definitions = null === (_a = this.theme) || void 0 === _a ? void 0 : _a.stateDefinitions;
15606
+ if (!definitions || !Object.keys(definitions).length) return void (this.rootSharedStateScope && (setRootSharedStateScopeThemeDefinitions(this.rootSharedStateScope, definitions), markScopeActiveDescendantsDirty(this.rootSharedStateScope, this)));
15607
+ const rootScope = this.ensureRootSharedStateScope(definitions);
15608
+ setRootSharedStateScopeThemeDefinitions(rootScope, definitions), markScopeActiveDescendantsDirty(rootScope, this);
15285
15609
  }, this.renderStyle = params.renderStyle, params.autoRender && this.enableAutoRender(), params.autoRefresh && this.enableAutoRefresh(), !1 === params.disableDirtyBounds && this.enableDirtyBounds(), params.enableHtmlAttribute && this.enableHtmlAttribute(params.enableHtmlAttribute), params.ReactDOM && this.enableReactAttribute(params.ReactDOM), params.enableLayout && this.enableLayout(), this.hooks.beforeRender.tap("constructor", this.beforeRender), this.hooks.afterRender.tap("constructor", this.afterRender), params.beforeRender && this._beforeRenderList.push(params.beforeRender), params.afterRender && this._afterRenderList.push(params.afterRender), this.hooks.afterClearScreen.tap("constructor", this.afterClearScreen), this.hooks.afterClearRect.tap("constructor", this.afterClearRect), this._afterClearScreen = params.afterClearScreen, this._afterClearRect = params.afterClearRect, this.supportInteractiveLayer = !1 !== params.interactiveLayer, params.optimize || (params.optimize = {
15286
15610
  tickRenderMode: "effect"
15287
15611
  }), this.optmize(params.optimize), params.background && isString$1(this._background) && this._background.includes("/") && this.setAttributes({
15288
15612
  background: this._background
15289
- }), this.initAnimate(params), this.rafId = null !== (_y = params.rafId) && void 0 !== _y ? _y : Math.floor(6 * Math.random());
15613
+ }), this.initAnimate(params), this.rafId = null !== (_x = params.rafId) && void 0 !== _x ? _x : Math.floor(6 * Math.random());
15290
15614
  }
15291
15615
  initAnimate(params) {
15292
15616
  var _a;
@@ -15546,8 +15870,14 @@ class Stage extends Group {
15546
15870
  this._doRenderInThisFrame(), this.willNextFrameRender = !1;
15547
15871
  }));
15548
15872
  }
15873
+ ensureRootSharedStateScope(themeStateDefinitions) {
15874
+ return this.rootSharedStateScope ? (this.rootSharedStateScope.ownerStage = this, this.rootSharedStateScope) : (this.rootSharedStateScope = createRootSharedStateScope(this, themeStateDefinitions), this.rootSharedStateScope);
15875
+ }
15876
+ getStateBatchScheduler() {
15877
+ return this._stateBatchScheduler || (this._stateBatchScheduler = new StateBatchScheduler(this, ensureStageStatePerfMonitor(this))), this._stateBatchScheduler;
15878
+ }
15549
15879
  scheduleStateBatch(graphics, targetStates) {
15550
- this._stateBatchScheduler.schedule(graphics, targetStates);
15880
+ this.getStateBatchScheduler().schedule(graphics, targetStates);
15551
15881
  }
15552
15882
  getStatePerfSnapshot() {
15553
15883
  return ensureStageStatePerfMonitor(this).getSnapshot();
@@ -18048,7 +18378,11 @@ const result = {
18048
18378
  };
18049
18379
  class BaseRender {
18050
18380
  init(contributions) {
18051
- contributions && (this._renderContribitions = contributions.getContributions()), this._renderContribitions || (this._renderContribitions = []), this.builtinContributions || (this.builtinContributions = []), this.builtinContributions.push(defaultBaseClipRenderBeforeContribution), this.builtinContributions.push(defaultBaseClipRenderAfterContribution), this.builtinContributions.forEach(item => this._renderContribitions.push(item)), this._renderContribitions.length && (this._renderContribitions.sort((a, b) => b.order - a.order), this._beforeRenderContribitions = this._renderContribitions.filter(c => c.time === BaseRenderContributionTime.beforeFillStroke), this._afterRenderContribitions = this._renderContribitions.filter(c => c.time === BaseRenderContributionTime.afterFillStroke));
18381
+ this.builtinContributions || (this.builtinContributions = []), this._renderContribitions = contributions ? contributions.getContributions().slice() : [];
18382
+ const addContribution = item => {
18383
+ this._renderContribitions.includes(item) || this._renderContribitions.push(item);
18384
+ };
18385
+ this.builtinContributions.forEach(addContribution), addContribution(defaultBaseClipRenderBeforeContribution), addContribution(defaultBaseClipRenderAfterContribution), this._renderContribitions.length ? (this._renderContribitions.sort((a, b) => b.order - a.order), this._beforeRenderContribitions = this._renderContribitions.filter(c => c.time === BaseRenderContributionTime.beforeFillStroke), this._afterRenderContribitions = this._renderContribitions.filter(c => c.time === BaseRenderContributionTime.afterFillStroke)) : (this._beforeRenderContribitions = [], this._afterRenderContribitions = []);
18052
18386
  }
18053
18387
  reInit() {
18054
18388
  this.init(this.graphicRenderContributions);
@@ -23097,8 +23431,8 @@ class FlexLayoutPlugin {
23097
23431
  graphic.glyphHost && (graphic = graphic.glyphHost), stage && stage === this.pluginService.stage && graphic.isContainer && !this.skipBoundsTrigger && _tempBounds.copy(bounds);
23098
23432
  }), stage.graphicService.hooks.afterUpdateAABBBounds.tap(this.key, (graphic, stage, bounds, params, selfChange) => {
23099
23433
  stage && stage === this.pluginService.stage && graphic.isContainer && !this.skipBoundsTrigger && (_tempBounds.equals(bounds) || this.tryLayout(graphic, !1));
23100
- }), stage.graphicService.hooks.onSetStage.tap(this.key, graphic => {
23101
- graphic.glyphHost && (graphic = graphic.glyphHost), this.tryLayout(graphic, !1);
23434
+ }), stage.graphicService.hooks.onSetStage.tap(this.key, (graphic, nextStage) => {
23435
+ nextStage && nextStage === this.pluginService.stage && (graphic.glyphHost && (graphic = graphic.glyphHost), this.tryLayout(graphic, !1));
23102
23436
  }));
23103
23437
  }
23104
23438
  deactivate(context) {
@@ -23661,7 +23995,6 @@ var VRenderCore = /*#__PURE__*/Object.freeze({
23661
23995
  segments: segments,
23662
23996
  shouldClipImageByLayout: shouldClipImageByLayout,
23663
23997
  shouldUseMat4: shouldUseMat4,
23664
- shouldUseSimpleAttributeFastPath: shouldUseSimpleAttributeFastPath,
23665
23998
  snapLength: snapLength,
23666
23999
  splitArc: splitArc,
23667
24000
  splitArea: splitArea,
@@ -32461,25 +32794,56 @@ function commonInterpolateUpdate(key, from, to, ratio, step, target) {
32461
32794
  }
32462
32795
 
32463
32796
  const animateUpdateContext = {
32464
- type: AttributeUpdateType.ANIMATE_UPDATE
32465
- };
32797
+ type: AttributeUpdateType.ANIMATE_UPDATE
32798
+ },
32799
+ animateBindContext = {
32800
+ type: AttributeUpdateType.ANIMATE_BIND
32801
+ },
32802
+ animateStartContext = {
32803
+ type: AttributeUpdateType.ANIMATE_START
32804
+ };
32805
+ function getAnimationContext(type) {
32806
+ switch (type) {
32807
+ case AttributeUpdateType.ANIMATE_UPDATE:
32808
+ return animateUpdateContext;
32809
+ case AttributeUpdateType.ANIMATE_BIND:
32810
+ return animateBindContext;
32811
+ case AttributeUpdateType.ANIMATE_START:
32812
+ return animateStartContext;
32813
+ default:
32814
+ return {
32815
+ type: type
32816
+ };
32817
+ }
32818
+ }
32819
+ function prepareAnimationFrameAttribute(target) {
32820
+ const transientTarget = target;
32821
+ return transientTarget.attribute || (transientTarget.attribute = {}), transientTarget.attribute === transientTarget.baseAttributes && "function" == typeof transientTarget.detachAttributeFromBaseAttributes && transientTarget.detachAttributeFromBaseAttributes(), transientTarget.attributeMayContainTransientAttrs = !0, transientTarget.attribute;
32822
+ }
32823
+ function commitAnimationFrameAttribute(target) {
32824
+ var _a, _b;
32825
+ null === (_b = (_a = target).onAttributeUpdate) || void 0 === _b || _b.call(_a, animateUpdateContext);
32826
+ }
32466
32827
  function applyAnimationFrameAttributes(target, attributes) {
32467
- var _a;
32468
32828
  if (!attributes) return;
32469
- const transientTarget = target;
32470
- transientTarget.attribute || (transientTarget.attribute = {});
32471
- const targetAttribute = transientTarget.attribute;
32829
+ const targetAttribute = prepareAnimationFrameAttribute(target);
32472
32830
  for (const key in attributes) Object.prototype.hasOwnProperty.call(attributes, key) && (targetAttribute[key] = attributes[key]);
32473
- null === (_a = transientTarget.onAttributeUpdate) || void 0 === _a || _a.call(transientTarget, animateUpdateContext);
32831
+ commitAnimationFrameAttribute(target);
32832
+ }
32833
+ function applyAnimationFrameNumberAttributes(target, keys, from, to, ratio) {
32834
+ const targetAttribute = prepareAnimationFrameAttribute(target);
32835
+ for (let i = 0; i < keys.length; i++) {
32836
+ const key = keys[i];
32837
+ targetAttribute[key] = from[key] + (to[key] - from[key]) * ratio;
32838
+ }
32839
+ commitAnimationFrameAttribute(target);
32474
32840
  }
32475
32841
  function applyAnimationTransientAttributes(target, attributes, type = AttributeUpdateType.ANIMATE_UPDATE) {
32476
32842
  var _a;
32477
32843
  if (!attributes) return;
32478
- const context = {
32479
- type: type
32480
- },
32844
+ const context = getAnimationContext(type),
32481
32845
  transientTarget = target;
32482
- "function" != typeof transientTarget.applyTransientAttributes ? "function" != typeof transientTarget.setAttributesAndPreventAnimate ? (transientTarget.attribute || (transientTarget.attribute = {}), Object.assign(transientTarget.attribute, attributes), null === (_a = transientTarget.onAttributeUpdate) || void 0 === _a || _a.call(transientTarget, context)) : transientTarget.setAttributesAndPreventAnimate(attributes, !1, context) : transientTarget.applyTransientAttributes(attributes, !1, context);
32846
+ "function" != typeof transientTarget.applyAnimationTransientAttributes ? "function" != typeof transientTarget.applyTransientAttributes ? "function" != typeof transientTarget.setAttributesAndPreventAnimate ? (transientTarget.attribute || (transientTarget.attribute = {}), Object.assign(transientTarget.attribute, attributes), null === (_a = transientTarget.onAttributeUpdate) || void 0 === _a || _a.call(transientTarget, context)) : transientTarget.setAttributesAndPreventAnimate(attributes, !1, context) : transientTarget.applyTransientAttributes(attributes, !1, context) : transientTarget.applyAnimationTransientAttributes(attributes, !1, context);
32483
32847
  }
32484
32848
  function applyAppearStartAttributes(target, attributes) {
32485
32849
  applyAnimationTransientAttributes(target, attributes, AttributeUpdateType.ANIMATE_BIND);
@@ -32876,7 +33240,7 @@ class Animate {
32876
33240
  bind(target) {
32877
33241
  this.target = target;
32878
33242
  const trackerTarget = this.target;
32879
- return "function" == typeof trackerTarget.trackAnimate ? trackerTarget.trackAnimate(this) : (this.target.animates || (this.target.animates = new Map()), this.target.animates.set(this.id, this)), this.onRemove(() => {
33243
+ return "function" == typeof trackerTarget.detachAttributeFromBaseAttributes && trackerTarget.detachAttributeFromBaseAttributes(), "function" == typeof trackerTarget.trackAnimate ? trackerTarget.trackAnimate(this) : (this.target.animates || (this.target.animates = new Map()), this.target.animates.set(this.id, this)), this.onRemove(() => {
32880
33244
  this.stop(), this.__skipRestoreStaticAttributeOnRemove || "function" != typeof trackerTarget.restoreStaticAttribute || trackerTarget.restoreStaticAttribute(), "function" == typeof trackerTarget.untrackAnimate ? trackerTarget.untrackAnimate(this.id) : this.target.animates.delete(this.id);
32881
33245
  }), this.target.onAnimateBind && !this.slience && this.target.onAnimateBind(this), this.target.animationAttribute || (this.target.animationAttribute = {}), this;
32882
33246
  }
@@ -33372,6 +33736,33 @@ class AnimateExecutor {
33372
33736
  cb();
33373
33737
  });
33374
33738
  }
33739
+ getActiveAttrKeys() {
33740
+ const keys = [];
33741
+ for (let i = 0; i < this._animates.length; i++) {
33742
+ const animate = this._animates[i];
33743
+ if (animate.status === AnimateStatus.END) continue;
33744
+ const endProps = animate.getEndProps();
33745
+ if (endProps) for (const key in endProps) Object.prototype.hasOwnProperty.call(endProps, key) && keys.indexOf(key) < 0 && keys.push(key);
33746
+ }
33747
+ return keys;
33748
+ }
33749
+ hasActiveAttrs() {
33750
+ for (let i = 0; i < this._animates.length; i++) {
33751
+ const animate = this._animates[i];
33752
+ if (animate.status === AnimateStatus.END) continue;
33753
+ const endProps = animate.getEndProps();
33754
+ if (endProps) for (const key in endProps) if (Object.prototype.hasOwnProperty.call(endProps, key)) return !0;
33755
+ }
33756
+ return !1;
33757
+ }
33758
+ preventAttrs(keys) {
33759
+ if (!(null == keys ? void 0 : keys.length)) return this.hasActiveAttrs();
33760
+ for (let i = 0; i < this._animates.length; i++) {
33761
+ const animate = this._animates[i];
33762
+ animate.status !== AnimateStatus.END && animate.preventAttrs(keys);
33763
+ }
33764
+ return this.hasActiveAttrs();
33765
+ }
33375
33766
  _trackAnimation(animate) {
33376
33767
  this._animates.push(animate), this._activeCount++, 1 !== this._activeCount || this._started || (this._started = !0, this.onStart()), animate.onEnd(() => {
33377
33768
  this._activeCount--;
@@ -33677,8 +34068,22 @@ class AnimationStateManager {
33677
34068
  hasTrackedAnimate() {
33678
34069
  return this.trackedAnimates.size > 0;
33679
34070
  }
34071
+ hasStateInfo(list, target) {
34072
+ for (let i = 0; i < list.length; i++) if (list[i] === target) return !0;
34073
+ return !1;
34074
+ }
34075
+ takeOverUpdateAttrs(nextState, currentStates, shouldStopState) {
34076
+ if (nextState.state !== AnimationStates.UPDATE || !currentStates.length) return;
34077
+ const nextKeys = nextState.executor.getActiveAttrKeys();
34078
+ if (nextKeys.length) for (let i = 0; i < currentStates.length; i++) {
34079
+ const currentState = currentStates[i];
34080
+ currentState.state !== AnimationStates.UPDATE || currentState === nextState || this.hasStateInfo(shouldStopState, currentState) || currentState.executor.preventAttrs(nextKeys) || (currentState.executor.stop(null, !1), shouldStopState.push(currentState));
34081
+ }
34082
+ }
33680
34083
  applyState(nextState, animationConfig, callback) {
34084
+ var _a;
33681
34085
  const registry = AnimationTransitionRegistry.getInstance(),
34086
+ currentStateList = null !== (_a = this.stateList) && void 0 !== _a ? _a : [],
33682
34087
  shouldStopState = [],
33683
34088
  shouldApplyState = [];
33684
34089
  if (this.stateList && this.stateList.length ? nextState.forEach((state, index) => {
@@ -33686,14 +34091,14 @@ class AnimationStateManager {
33686
34091
  allowTransition: !0,
33687
34092
  stopOriginalTransition: !0
33688
34093
  };
33689
- this.stateList.forEach(currState => {
34094
+ currentStateList.forEach(currState => {
33690
34095
  const _result = registry.isTransitionAllowed(currState.state, state, this.graphic);
33691
34096
  result.allowTransition = result.allowTransition && _result.allowTransition;
33692
34097
  }), result.allowTransition && (shouldApplyState.push({
33693
34098
  state: state,
33694
34099
  animationConfig: isArray$1(animationConfig[index]) ? animationConfig[index].map(item => item.animation) : animationConfig[index].animation,
33695
34100
  executor: new AnimateExecutor(this.graphic)
33696
- }), this.stateList.forEach(currState => {
34101
+ }), currentStateList.forEach(currState => {
33697
34102
  registry.isTransitionAllowed(currState.state, state, this.graphic).stopOriginalTransition && shouldStopState.push(currState);
33698
34103
  }));
33699
34104
  }) : nextState.forEach((state, index) => {
@@ -33705,12 +34110,18 @@ class AnimationStateManager {
33705
34110
  }), shouldStopState.forEach(state => {
33706
34111
  state.executor.stop(null, !1);
33707
34112
  }), shouldApplyState.length) {
33708
- shouldApplyState[0].executor.execute(shouldApplyState[0].animationConfig);
34113
+ shouldApplyState[0].executor.execute(shouldApplyState[0].animationConfig), this.takeOverUpdateAttrs(shouldApplyState[0], currentStateList, shouldStopState);
33709
34114
  for (let i = 0; i < shouldApplyState.length; i++) {
33710
34115
  const nextState = shouldApplyState[i + 1],
33711
34116
  currentState = shouldApplyState[i];
33712
34117
  currentState.executor.onEnd(() => {
33713
- nextState && nextState.executor.execute(nextState.animationConfig), this.stateList = this.stateList.filter(state => state !== currentState), i === shouldApplyState.length - 1 && callback && callback(!1);
34118
+ var _a;
34119
+ if (nextState) {
34120
+ nextState.executor.execute(nextState.animationConfig);
34121
+ const stoppedStates = [];
34122
+ this.takeOverUpdateAttrs(nextState, null !== (_a = this.stateList) && void 0 !== _a ? _a : [], stoppedStates), stoppedStates.length && this.stateList && (this.stateList = this.stateList.filter(state => !this.hasStateInfo(stoppedStates, state)));
34123
+ }
34124
+ this.stateList = this.stateList.filter(state => state !== currentState), i === shouldApplyState.length - 1 && callback && callback(!1);
33714
34125
  });
33715
34126
  }
33716
34127
  } else callback && callback(!0);
@@ -35208,10 +35619,7 @@ class GrowHeightIn extends ACustomAnimate {
35208
35619
  super.onEnd(cb);
35209
35620
  }
35210
35621
  onUpdate(end, ratio, out) {
35211
- const attrs = {};
35212
- this.propKeys.forEach(key => {
35213
- attrs[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;
35214
- }), applyAnimationFrameAttributes(this.target, attrs), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
35622
+ applyAnimationFrameNumberAttributes(this.target, this.propKeys, this.from, this.to, ratio), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
35215
35623
  }
35216
35624
  }
35217
35625
  function growHeightOutIndividual(graphic, options, animationParameters) {
@@ -35269,10 +35677,7 @@ class GrowHeightOut extends ACustomAnimate {
35269
35677
  super.onEnd(cb);
35270
35678
  }
35271
35679
  onUpdate(end, ratio, out) {
35272
- const attrs = {};
35273
- this.propKeys.forEach(key => {
35274
- attrs[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;
35275
- }), applyAnimationFrameAttributes(this.target, attrs), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
35680
+ applyAnimationFrameNumberAttributes(this.target, this.propKeys, this.from, this.to, ratio), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
35276
35681
  }
35277
35682
  }
35278
35683
 
@@ -35682,10 +36087,7 @@ class GrowWidthIn extends ACustomAnimate {
35682
36087
  super.onEnd(cb);
35683
36088
  }
35684
36089
  onUpdate(end, ratio, out) {
35685
- const attrs = {};
35686
- this.propKeys.forEach(key => {
35687
- attrs[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;
35688
- }), applyAnimationFrameAttributes(this.target, attrs), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
36090
+ applyAnimationFrameNumberAttributes(this.target, this.propKeys, this.from, this.to, ratio), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
35689
36091
  }
35690
36092
  }
35691
36093
  class GrowWidthOut extends ACustomAnimate {
@@ -35705,10 +36107,7 @@ class GrowWidthOut extends ACustomAnimate {
35705
36107
  super.onEnd(cb);
35706
36108
  }
35707
36109
  onUpdate(end, ratio, out) {
35708
- const attrs = {};
35709
- this.propKeys.forEach(key => {
35710
- attrs[key] = this.from[key] + (this.to[key] - this.from[key]) * ratio;
35711
- }), applyAnimationFrameAttributes(this.target, attrs), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
36110
+ applyAnimationFrameNumberAttributes(this.target, this.propKeys, this.from, this.to, ratio), this.target.addUpdatePositionTag(), this.target.addUpdateShapeAndBoundsTag();
35712
36111
  }
35713
36112
  }
35714
36113
 
@@ -41080,6 +41479,33 @@ function commitUpdateAnimationTarget(graphic, targetAttrs, startAttrs) {
41080
41479
  });
41081
41480
  }
41082
41481
 
41482
+ function collectTrackedAnimates(graphic, animates = [], visited = new Set()) {
41483
+ var _a, _b, _c, _d, _e;
41484
+ const trackedAnimates = null !== (_c = null === (_b = (_a = graphic).getTrackedAnimates) || void 0 === _b ? void 0 : _b.call(_a)) && void 0 !== _c ? _c : graphic.animates;
41485
+ return null == trackedAnimates || trackedAnimates.forEach(animate => {
41486
+ animate && !visited.has(animate) && (visited.add(animate), animates.push(animate));
41487
+ }), null === (_e = (_d = graphic).forEachChildren) || void 0 === _e || _e.call(_d, child => {
41488
+ collectTrackedAnimates(child, animates, visited);
41489
+ }), animates;
41490
+ }
41491
+ function appendExitReleaseCallback(state, callback) {
41492
+ callback && (null == state || state.onComplete.push(callback));
41493
+ }
41494
+ function runExitReleaseCallbacks(callbacks) {
41495
+ callbacks.forEach(callback => {
41496
+ callback();
41497
+ });
41498
+ }
41499
+ function bindExitReleaseAnimates(exitAnimates, getState, finalize) {
41500
+ const finish = animate => {
41501
+ const state = getState();
41502
+ state && !state.finalized && state.pendingAnimates.has(animate) && (state.pendingAnimates.delete(animate), state.pendingAnimates.size || finalize());
41503
+ };
41504
+ exitAnimates.forEach(animate => {
41505
+ animate.onEnd(() => finish(animate)), animate.onRemove(() => finish(animate));
41506
+ });
41507
+ }
41508
+
41083
41509
  const DefaultAxisAnimation = {
41084
41510
  type: "default",
41085
41511
  duration: 300,
@@ -41111,12 +41537,65 @@ class AxisBase extends AnimateComponent {
41111
41537
  });
41112
41538
  return this.add(offscreenGroup), this._renderInner(offscreenGroup), this.removeChild(offscreenGroup), this.attribute = currentAttribute, offscreenGroup.AABBBounds;
41113
41539
  }
41540
+ _finalizeExitRelease() {
41541
+ var _a, _b;
41542
+ const state = this._exitReleaseState;
41543
+ if (null == state ? void 0 : state.finalized) return;
41544
+ state && (state.finalized = !0);
41545
+ const parent = this.parent,
41546
+ removeFromParent = !!(null == state ? void 0 : state.removeFromParent),
41547
+ callbacks = null !== (_a = null == state ? void 0 : state.onComplete) && void 0 !== _a ? _a : [];
41548
+ this._exitReleaseState = void 0, this._prevInnerView = null, this._innerView = null, this.axisLabelsContainer = null, this.axisContainer = null, this.removeAllChild(!0), super.release(!0), removeFromParent && (null === (_b = null != parent ? parent : this.parent) || void 0 === _b || _b.removeChild(this)), runExitReleaseCallbacks(callbacks);
41549
+ }
41550
+ _runExitAnimationBeforeRelease(options = {}) {
41551
+ var _a, _b, _c;
41552
+ if (this._exitReleaseState && !this._exitReleaseState.finalized) return this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent, appendExitReleaseCallback(this._exitReleaseState, options.onComplete), !0;
41553
+ if (!this.stage || !1 === this.attribute.animation || !1 === this.attribute.animationExit || !this._innerView) return !1;
41554
+ if (this._prepare(), !(null === (_a = this._animationConfig) || void 0 === _a ? void 0 : _a.exit)) return !1;
41555
+ const exitTargets = new Set();
41556
+ if (traverseGroup(this._innerView, el => {
41557
+ "group" !== el.type && exitTargets.add(el);
41558
+ }), !exitTargets.size) return !1;
41559
+ const existingAnimates = collectTrackedAnimates(this),
41560
+ {
41561
+ delay = 0,
41562
+ duration = DefaultAxisAnimation.duration,
41563
+ easing = DefaultAxisAnimation.easing
41564
+ } = this._animationConfig.exit;
41565
+ exitTargets.forEach(target => {
41566
+ var _a, _b, _c;
41567
+ const startAttrs = {
41568
+ opacity: null !== (_a = target.attribute.opacity) && void 0 !== _a ? _a : 1,
41569
+ fillOpacity: null !== (_b = target.attribute.fillOpacity) && void 0 !== _b ? _b : 1,
41570
+ strokeOpacity: null !== (_c = target.attribute.strokeOpacity) && void 0 !== _c ? _c : 1
41571
+ },
41572
+ endAttrs = {
41573
+ opacity: 0,
41574
+ fillOpacity: 0,
41575
+ strokeOpacity: 0
41576
+ };
41577
+ commitUpdateAnimationTarget(target, endAttrs, startAttrs), target.animate().wait(delay).to(endAttrs, duration, easing);
41578
+ });
41579
+ const exitAnimates = collectTrackedAnimates(this).filter(animate => !existingAnimates.includes(animate));
41580
+ if (!exitAnimates.length) return !1;
41581
+ this.setAttribute("childrenPickable", !1), null === (_c = (_b = this._innerView).removeAllEventListeners) || void 0 === _c || _c.call(_b), this.releaseStatus = "willRelease";
41582
+ const pendingAnimates = new Set(exitAnimates);
41583
+ return this._exitReleaseState = {
41584
+ pendingAnimates: pendingAnimates,
41585
+ finalized: !1,
41586
+ removeFromParent: !!options.removeFromParent,
41587
+ onComplete: options.onComplete ? [options.onComplete] : []
41588
+ }, bindExitReleaseAnimates(exitAnimates, () => this._exitReleaseState, () => this._finalizeExitRelease()), !0;
41589
+ }
41590
+ releaseWithExitAnimation(options = {}) {
41591
+ return "released" !== this.releaseStatus && this._runExitAnimationBeforeRelease(options);
41592
+ }
41114
41593
  render() {
41115
- this._prepare(), this._prevInnerView = this._innerView && getElMap(this._innerView), this.removeAllChild(!0), this._innerView = graphicCreator.group({
41594
+ this._exitReleaseState || (this._prepare(), this._prevInnerView = this._innerView && getElMap(this._innerView), this.removeAllChild(!0), this._innerView = graphicCreator.group({
41116
41595
  x: 0,
41117
41596
  y: 0,
41118
41597
  pickable: !1
41119
- }), this.add(this._innerView), this._renderInner(this._innerView), this._bindEvent(), this.runAnimation();
41598
+ }), this.add(this._innerView), this._renderInner(this._innerView), this._bindEvent(), this.runAnimation());
41120
41599
  }
41121
41600
  _prepare() {
41122
41601
  this._prepareAnimate(DefaultAxisAnimation);
@@ -41448,8 +41927,8 @@ class AxisBase extends AnimateComponent {
41448
41927
  });
41449
41928
  }
41450
41929
  }
41451
- release() {
41452
- super.release(), this._prevInnerView = null, this._innerView = null;
41930
+ release(all) {
41931
+ this._exitReleaseState ? this._finalizeExitRelease() : (all && this.removeAllChild(!0), super.release(all), all && this.removeAllChild(!0), this._prevInnerView = null, this._innerView = null);
41453
41932
  }
41454
41933
  }
41455
41934
 
@@ -42364,8 +42843,8 @@ class LineAxis extends AxisBase {
42364
42843
  const orient = this.attribute.orient;
42365
42844
  return "left" === orient || "right" === orient ? this.attribute.width ? this.attribute.width : (this.attribute.maxWidth && (offset = Math.min(offset, this.attribute.maxWidth)), this.attribute.minWidth && (offset = Math.max(offset, this.attribute.minWidth)), offset) : offset;
42366
42845
  }
42367
- release() {
42368
- super.release(), this._breaks = null;
42846
+ release(all) {
42847
+ super.release(all), this._breaks = null;
42369
42848
  }
42370
42849
  }
42371
42850
  LineAxis.defaultAttributes = DEFAULT_AXIS_THEME, mixin(LineAxis, LineAxisMixin);
@@ -44337,6 +44816,14 @@ var __rest$8 = undefined && undefined.__rest || function (s, e) {
44337
44816
  }
44338
44817
  return t;
44339
44818
  };
44819
+ function cloneAttributeSnapshot(value) {
44820
+ if (!isObject$1(value) || isArray$1(value)) return value;
44821
+ const snapshot = {};
44822
+ return Object.keys(value).forEach(key => {
44823
+ const nextValue = value[key];
44824
+ snapshot[key] = isObject$1(nextValue) && !isArray$1(nextValue) ? cloneAttributeSnapshot(nextValue) : nextValue;
44825
+ }), snapshot;
44826
+ }
44340
44827
  loadLabelComponent();
44341
44828
  class LabelBase extends AnimateComponent {
44342
44829
  setBitmap(bitmap) {
@@ -44401,11 +44888,56 @@ class LabelBase extends AnimateComponent {
44401
44888
  return baseMark && baseMark.getAttributes(!0).fill && lineGraphic.setAttribute("stroke", baseMark.getAttributes(!0).fill), this.attribute.line && !isEmpty(this.attribute.line.style) && lineGraphic.setAttributes(this.attribute.line.style), this._setStatesOfLabelLine(lineGraphic), lineGraphic;
44402
44889
  }
44403
44890
  }
44891
+ _finalizeExitRelease() {
44892
+ var _a, _b, _c, _d;
44893
+ const state = this._exitReleaseState;
44894
+ if (null == state ? void 0 : state.finalized) return;
44895
+ state && (state.finalized = !0);
44896
+ const parent = this.parent,
44897
+ removeFromParent = !!(null == state ? void 0 : state.removeFromParent),
44898
+ callbacks = null !== (_a = null == state ? void 0 : state.onComplete) && void 0 !== _a ? _a : [];
44899
+ this._exitReleaseState = void 0, this._graphicToText = new Map(), null === (_b = this._idToGraphic) || void 0 === _b || _b.clear(), null === (_c = this._idToPoint) || void 0 === _c || _c.clear(), this._baseMarks = void 0, this.removeAllChild(!0), super.release(!0), removeFromParent && (null === (_d = null != parent ? parent : this.parent) || void 0 === _d || _d.removeChild(this)), runExitReleaseCallbacks(callbacks);
44900
+ }
44901
+ _runExitAnimationBeforeRelease(options = {}) {
44902
+ var _a, _b;
44903
+ if (this._exitReleaseState && !this._exitReleaseState.finalized) return this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent, appendExitReleaseCallback(this._exitReleaseState, options.onComplete), !0;
44904
+ if (!this.stage || !1 === this.attribute.animation || !1 === this.attribute.animationExit || !(null === (_a = this._graphicToText) || void 0 === _a ? void 0 : _a.size)) return !1;
44905
+ if (this._prepareAnimate(DefaultLabelAnimation), !(null === (_b = this._animationConfig) || void 0 === _b ? void 0 : _b.exit)) return !1;
44906
+ const exitTargets = new Set();
44907
+ if (this._graphicToText.forEach(label => {
44908
+ (null == label ? void 0 : label.text) && exitTargets.add(label.text), (null == label ? void 0 : label.labelLine) && exitTargets.add(label.labelLine);
44909
+ }), !exitTargets.size) return !1;
44910
+ const existingAnimates = collectTrackedAnimates(this);
44911
+ exitTargets.forEach(target => {
44912
+ var _a;
44913
+ target.applyAnimationState(["exit"], [{
44914
+ name: "exit",
44915
+ animation: Object.assign(Object.assign({}, this._animationConfig.exit), {
44916
+ type: null !== (_a = this._animationConfig.exit.type) && void 0 !== _a ? _a : "fadeOut",
44917
+ selfOnly: !0
44918
+ })
44919
+ }]);
44920
+ });
44921
+ const exitAnimates = collectTrackedAnimates(this).filter(animate => !existingAnimates.includes(animate));
44922
+ if (!exitAnimates.length) return !1;
44923
+ this.setAttribute("childrenPickable", !1), this.releaseStatus = "willRelease";
44924
+ const pendingAnimates = new Set(exitAnimates);
44925
+ return this._exitReleaseState = {
44926
+ pendingAnimates: pendingAnimates,
44927
+ finalized: !1,
44928
+ removeFromParent: !!options.removeFromParent,
44929
+ onComplete: options.onComplete ? [options.onComplete] : []
44930
+ }, bindExitReleaseAnimates(exitAnimates, () => this._exitReleaseState, () => this._finalizeExitRelease()), !0;
44931
+ }
44932
+ releaseWithExitAnimation(options = {}) {
44933
+ return "released" !== this.releaseStatus && this._runExitAnimationBeforeRelease(options);
44934
+ }
44404
44935
  render() {
44936
+ if (this._exitReleaseState) return;
44405
44937
  if (this._prepare(), isNil$1(this._idToGraphic) || this._isCollectionBase && isNil$1(this._idToPoint)) return;
44406
44938
  const markAttributeList = [];
44407
44939
  !1 !== this._enableAnimation && this._baseMarks.forEach(mark => {
44408
- markAttributeList.push(mark.attribute), mark.initAttributes(mark.getAttributes(!0));
44940
+ markAttributeList.push(cloneAttributeSnapshot(mark.attribute)), mark.initAttributes(mark.getAttributes(!0));
44409
44941
  });
44410
44942
  const {
44411
44943
  overlap: overlap,
@@ -44971,6 +45503,10 @@ class LabelBase extends AnimateComponent {
44971
45503
  _canPlaceInside(textBound, shapeBound) {
44972
45504
  return !(!textBound || !shapeBound) && shapeBound.encloses(textBound);
44973
45505
  }
45506
+ release(all) {
45507
+ var _a, _b;
45508
+ this._exitReleaseState ? this._finalizeExitRelease() : (all && this.removeAllChild(!0), super.release(all), this._graphicToText = new Map(), null === (_a = this._idToGraphic) || void 0 === _a || _a.clear(), null === (_b = this._idToPoint) || void 0 === _b || _b.clear(), this._baseMarks = void 0);
45509
+ }
44974
45510
  setLocation(point) {
44975
45511
  this.translateTo(point.x, point.y);
44976
45512
  }
@@ -45740,6 +46276,7 @@ class DataLabel extends AbstractComponent {
45740
46276
  }
45741
46277
  render() {
45742
46278
  var _a;
46279
+ if (this._exitReleaseState) return;
45743
46280
  const {
45744
46281
  dataLabels: dataLabels,
45745
46282
  size: size
@@ -45774,6 +46311,47 @@ class DataLabel extends AbstractComponent {
45774
46311
  currentComponentMap.get(key) || this.removeChild(cp);
45775
46312
  }), this._componentMap = currentComponentMap;
45776
46313
  }
46314
+ _finalizeExitRelease() {
46315
+ var _a, _b, _c;
46316
+ const state = this._exitReleaseState;
46317
+ if (null == state ? void 0 : state.finalized) return;
46318
+ state && (state.finalized = !0);
46319
+ const parent = this.parent,
46320
+ removeFromParent = !!(null == state ? void 0 : state.removeFromParent),
46321
+ callbacks = null !== (_a = null == state ? void 0 : state.onComplete) && void 0 !== _a ? _a : [];
46322
+ this._exitReleaseState = void 0, null === (_b = this._componentMap) || void 0 === _b || _b.clear(), this.removeAllChild(!0), super.release(!0), removeFromParent && (null === (_c = null != parent ? parent : this.parent) || void 0 === _c || _c.removeChild(this)), runExitReleaseCallbacks(callbacks);
46323
+ }
46324
+ releaseWithExitAnimation(options = {}) {
46325
+ var _a;
46326
+ if ("released" === this.releaseStatus) return !1;
46327
+ if (this._exitReleaseState && !this._exitReleaseState.finalized) return this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent, appendExitReleaseCallback(this._exitReleaseState, options.onComplete), !0;
46328
+ if (!this.stage || !(null === (_a = this._componentMap) || void 0 === _a ? void 0 : _a.size)) return !1;
46329
+ const state = {
46330
+ pendingCount: 0,
46331
+ finalized: !1,
46332
+ removeFromParent: !!options.removeFromParent,
46333
+ onComplete: options.onComplete ? [options.onComplete] : []
46334
+ },
46335
+ exitingComponents = [],
46336
+ fallbackComponents = [];
46337
+ let initializing = !0;
46338
+ const finish = () => {
46339
+ state.finalized || (state.pendingCount -= 1, state.pendingCount <= 0 && !initializing && this._finalizeExitRelease());
46340
+ };
46341
+ return this._exitReleaseState = state, this._componentMap.forEach(component => {
46342
+ state.pendingCount += 1;
46343
+ component.releaseWithExitAnimation({
46344
+ removeFromParent: !1,
46345
+ onComplete: finish
46346
+ }) ? exitingComponents.push(component) : (state.pendingCount -= 1, fallbackComponents.push(component));
46347
+ }), exitingComponents.length ? (fallbackComponents.forEach(component => {
46348
+ component.release(!0), this.removeChild(component);
46349
+ }), this.setAttribute("childrenPickable", !1), this.releaseStatus = "willRelease", initializing = !1, state.pendingCount <= 0 && this._finalizeExitRelease(), !0) : (this._exitReleaseState = void 0, !1);
46350
+ }
46351
+ release(all) {
46352
+ var _a;
46353
+ this._exitReleaseState ? this._finalizeExitRelease() : (all && this.removeAllChild(!0), super.release(all), null === (_a = this._componentMap) || void 0 === _a || _a.clear());
46354
+ }
45777
46355
  setLocation(point) {
45778
46356
  this.translateTo(point.x, point.y);
45779
46357
  }
@@ -47407,14 +47985,51 @@ class Marker extends AbstractComponent {
47407
47985
  y: clipInRange ? -(null !== (_b = limitRect.y) && void 0 !== _b ? _b : 0) : 0
47408
47986
  });
47409
47987
  }
47410
- render() {
47988
+ _finalizeExitRelease() {
47989
+ var _a, _b;
47990
+ const state = this._exitReleaseState;
47991
+ if (null == state ? void 0 : state.finalized) return;
47992
+ state && (state.finalized = !0);
47993
+ const parent = this.parent,
47994
+ removeFromParent = !!(null == state ? void 0 : state.removeFromParent),
47995
+ releaseSelf = !!(null == state ? void 0 : state.releaseSelf),
47996
+ callbacks = null !== (_a = null == state ? void 0 : state.onComplete) && void 0 !== _a ? _a : [];
47997
+ this._exitReleaseState = void 0, this._releaseEvent(), this._container = null, this._containerClip = null, this.removeAllChild(!0), releaseSelf && (super.release(!0), removeFromParent && (null === (_b = null != parent ? parent : this.parent) || void 0 === _b || _b.removeChild(this))), runExitReleaseCallbacks(callbacks);
47998
+ }
47999
+ _runExitAnimationBeforeCleanup(options = {}) {
47411
48000
  var _a;
48001
+ const releaseSelf = !!options.releaseSelf;
48002
+ if (this._exitReleaseState && !this._exitReleaseState.finalized) return this._exitReleaseState.releaseSelf = this._exitReleaseState.releaseSelf || releaseSelf, this._exitReleaseState.removeFromParent = this._exitReleaseState.removeFromParent || !!options.removeFromParent, appendExitReleaseCallback(this._exitReleaseState, options.onComplete), !0;
48003
+ if (!this.stage || !1 === this.attribute.animation || !1 === this.attribute.animationExit || !this._container) return !1;
48004
+ if (this.transAnimationConfig(), !(null === (_a = this._animationConfig) || void 0 === _a ? void 0 : _a.exit)) return !1;
48005
+ const existingAnimates = collectTrackedAnimates(this);
48006
+ this.markerAnimate("exit");
48007
+ const exitAnimates = collectTrackedAnimates(this).filter(animate => !existingAnimates.includes(animate));
48008
+ if (!exitAnimates.length) return !1;
48009
+ this._releaseEvent(), this.setAttribute("childrenPickable", !1), releaseSelf && (this.releaseStatus = "willRelease");
48010
+ const pendingAnimates = new Set(exitAnimates);
48011
+ return this._exitReleaseState = {
48012
+ pendingAnimates: pendingAnimates,
48013
+ finalized: !1,
48014
+ releaseSelf: releaseSelf,
48015
+ removeFromParent: !!options.removeFromParent,
48016
+ onComplete: options.onComplete ? [options.onComplete] : []
48017
+ }, bindExitReleaseAnimates(exitAnimates, () => this._exitReleaseState, () => this._finalizeExitRelease()), !0;
48018
+ }
48019
+ releaseWithExitAnimation(options = {}) {
48020
+ return "released" !== this.releaseStatus && this._runExitAnimationBeforeCleanup(Object.assign(Object.assign({}, options), {
48021
+ releaseSelf: !0
48022
+ }));
48023
+ }
48024
+ render() {
48025
+ var _a, _b;
48026
+ if (null === (_a = this._exitReleaseState) || void 0 === _a ? void 0 : _a.releaseSelf) return;
47412
48027
  this.transAnimationConfig(), this.setAttribute("pickable", !1);
47413
- const markerVisible = null === (_a = this.attribute.visible) || void 0 === _a || _a;
47414
- !1 === this.attribute.interactive && this.setAttribute("childrenPickable", !1), markerVisible && this.isValidPoints() ? this._container ? (this._updateContainer(), this.updateMarker(), this.markerAnimate("update")) : (this._initContainer(), this.initMarker(this._container), this.markerAnimate("enter")) : (this.markerAnimate("exit"), this._container = null, this.removeAllChild(!0)), this._releaseEvent(), this._bindEvent();
48028
+ const markerVisible = null === (_b = this.attribute.visible) || void 0 === _b || _b;
48029
+ !1 === this.attribute.interactive && this.setAttribute("childrenPickable", !1), markerVisible && this.isValidPoints() ? (this._exitReleaseState && this._finalizeExitRelease(), this._container ? (this._updateContainer(), this.updateMarker(), this.markerAnimate("update")) : (this._initContainer(), this.initMarker(this._container), this.markerAnimate("enter"))) : this._runExitAnimationBeforeCleanup() || (this._container = null, this._containerClip = null, this.removeAllChild(!0)), this._releaseEvent(), this._bindEvent();
47415
48030
  }
47416
- release() {
47417
- this.markerAnimate("exit"), super.release(), this._releaseEvent(), this._container = null;
48031
+ release(all) {
48032
+ this._exitReleaseState ? this._finalizeExitRelease() : (!1 !== this.attribute.animation && !1 !== this.attribute.animationExit && this.markerAnimate("exit"), all && this.removeAllChild(!0), super.release(all), this._releaseEvent(), this._container = null, this._containerClip = null);
47418
48033
  }
47419
48034
  }
47420
48035
 
@@ -49677,7 +50292,10 @@ class DiscreteLegend extends LegendBase {
49677
50292
  const innerGroupHeight = innerGroupBounds.height(),
49678
50293
  itemGroupWidth = isValid$1(this.attribute.item.width) ? this.attribute.item.width : innerGroupWidth + parsedPadding[1] + parsedPadding[3],
49679
50294
  itemGroupHeight = this._itemHeightByUser || innerGroupHeight + parsedPadding[0] + parsedPadding[2];
49680
- return itemGroup.attribute.width = itemGroupWidth, itemGroup.attribute.height = itemGroupHeight, focusShape && focusShape.setAttribute("visible", !1), innerGroup.translateTo(-innerGroupBounds.x1 + parsedPadding[3], -innerGroupBounds.y1 + parsedPadding[0]), itemGroup;
50295
+ return itemGroup.setAttributes({
50296
+ width: itemGroupWidth,
50297
+ height: itemGroupHeight
50298
+ }), focusShape && focusShape.setAttribute("visible", !1), innerGroup.translateTo(-innerGroupBounds.x1 + parsedPadding[3], -innerGroupBounds.y1 + parsedPadding[0]), itemGroup;
49681
50299
  }
49682
50300
  _createPager(compStyle) {
49683
50301
  var _a, _b;
@@ -51314,7 +51932,11 @@ class Title extends AbstractComponent {
51314
51932
  subTextBoundsWidth = this._subTitle ? this._subTitle.AABBBounds.width() : 0;
51315
51933
  let totalWidth = Math.max(mainTextBoundsWidth, subTextBoundsWidth),
51316
51934
  totalHeight = mainTextBoundsHeight + (null !== (_q = subtextStyle.height) && void 0 !== _q ? _q : subTextBoundsHeight);
51317
- if (isValid$1(width) && (totalWidth = width), isValid$1(height) && (totalHeight = height), isValid$1(minWidth) && totalWidth < minWidth && (totalWidth = minWidth), isValid$1(maxWidth) && totalWidth > maxWidth && (totalWidth = maxWidth), isValid$1(minHeight) && totalHeight < minHeight && (totalHeight = minHeight), isValid$1(maxHeight) && totalHeight > maxHeight && (totalHeight = maxHeight), group.attribute.width = totalWidth, group.attribute.height = totalHeight, group.attribute.boundsPadding = parsedPadding, this._mainTitle) {
51935
+ if (isValid$1(width) && (totalWidth = width), isValid$1(height) && (totalHeight = height), isValid$1(minWidth) && totalWidth < minWidth && (totalWidth = minWidth), isValid$1(maxWidth) && totalWidth > maxWidth && (totalWidth = maxWidth), isValid$1(minHeight) && totalHeight < minHeight && (totalHeight = minHeight), isValid$1(maxHeight) && totalHeight > maxHeight && (totalHeight = maxHeight), group.setAttributes({
51936
+ width: totalWidth,
51937
+ height: totalHeight,
51938
+ boundsPadding: parsedPadding
51939
+ }), this._mainTitle) {
51318
51940
  if (isValid$1(align) || isValid$1(textStyle.align)) {
51319
51941
  const mainTitleAlign = textStyle.align ? textStyle.align : align,
51320
51942
  mainTitleWidth = null !== (_r = textStyle.width) && void 0 !== _r ? _r : totalWidth;
@@ -54676,6 +55298,6 @@ function createStage(params) {
54676
55298
  return resolveLegacyApp().createStage(params);
54677
55299
  }
54678
55300
 
54679
- const version = "1.1.0-alpha.16";
55301
+ const version = "1.1.0-alpha.18";
54680
55302
 
54681
- export { AComponentAnimate, ACustomAnimate, ARC3D_NUMBER_TYPE, ARC_NUMBER_TYPE, AREA_NUMBER_TYPE, AStageAnimate, AXIS_ELEMENT_NAME, AbstractComponent, AbstractGraphicRender, Animate, AnimateExecutor, AnimateMode, AnimateStatus, Step as AnimateStep, AnimateStepType, AnimationStateManager, AnimationStateStore, AnimationStates, AnimationTransitionRegistry, AppContext, Application, Arc, Arc3d, Arc3dRender, ArcInfo, ArcLabel, ArcRender, ArcRenderContribution, ArcSegment, Area, AreaRender, AreaRenderContribution, AttributeUpdateType, AutoEnablePlugins, AxisStateValue, BaseCanvas, BaseEnvContribution, BasePlayer, BaseRender, BaseRenderContributionTime, BaseWindowHandlerContribution, Basis, BeforeRenderConstribution, BoundsContext, BoundsPicker, BrowserEntry, BrowserEnvContribution, Brush, CIRCLE_NUMBER_TYPE, Canvas3DDrawItemInterceptor, Canvas3DPickItemInterceptor, CanvasArc3dPicker, CanvasArcPicker, CanvasAreaPicker, CanvasCirclePicker, CanvasFactory, CanvasGifImagePicker, CanvasGlyphPicker, CanvasGroupPicker, CanvasImagePicker, CanvasLinePicker, CanvasLottiePicker, CanvasPathPicker, CanvasPickerContribution, CanvasPolygonPicker, CanvasPyramid3dPicker, CanvasRect3dPicker, CanvasRectPicker, CanvasRichTextPicker, CanvasStarPicker, CanvasSymbolPicker, CanvasTextLayout, CanvasTextPicker, CheckBox, Circle, CircleAxis, CircleAxisGrid, CircleCrosshair, CircleRender, CircleRenderContribution, ClipAngleAnimate, ClipDirectionAnimate, ClipGraphicAnimate, ClipIn, ClipOut, ClipRadiusAnimate, ColorContinuousLegend, ColorInterpolate, ColorStore, ColorType, CommonDrawItemInterceptorContribution, CommonRenderContribution, ComponentAnimator, Context2dFactory, ContinuousPlayer, ContributionProvider, ContributionRegistry, ContributionStore, CubicBezierCurve, CurveContext, CurveTypeEnum, CustomEvent, CustomPath2D, CustomSymbolClass, DEFAULT_ITEM_SPACE_COL, DEFAULT_ITEM_SPACE_ROW, DEFAULT_LABEL_SPACE, DEFAULT_PAGER_SPACE, DEFAULT_SHAPE_SIZE, DEFAULT_SHAPE_SPACE, DEFAULT_STATES$1 as DEFAULT_STATES, DEFAULT_TEXT_FONT_FAMILY$1 as DEFAULT_TEXT_FONT_FAMILY, DEFAULT_TITLE_SPACE, DEFAULT_VALUE_SPACE, DataLabel, DataZoom, DataZoomActiveTag, DebugDrawItemInterceptorContribution, DefaultArcAllocate, DefaultArcAttribute, DefaultArcRenderContribution, DefaultAreaAllocate, DefaultAreaAttribute, DefaultAreaTextureRenderContribution, DefaultAttribute, DefaultBaseBackgroundRenderContribution, DefaultBaseClipRenderAfterContribution, DefaultBaseClipRenderBeforeContribution, DefaultBaseInteractiveRenderContribution, DefaultBaseTextureRenderContribution, DefaultCanvasAllocate, DefaultCanvasArcRender, DefaultCanvasAreaRender, DefaultCanvasCircleRender, DefaultCanvasGroupRender, DefaultCanvasImageRender, DefaultCanvasLineRender, DefaultCanvasPathRender, DefaultCanvasPolygonRender, DefaultCanvasRectRender, DefaultCanvasSymbolRender, DefaultCanvasTextRender, DefaultCircleAllocate, DefaultCircleAttribute, DefaultCircleRenderContribution, DefaultConnectAttribute, DefaultDebugAttribute, DefaultFillStyle, DefaultGlobal, DefaultGlobalPickerService, DefaultGlyphAttribute, DefaultGraphicAllocate, DefaultGraphicMemoryManager, DefaultGraphicService, DefaultGraphicUtil, DefaultGroupAttribute, DefaultGroupBackgroundRenderContribution, DefaultImageAttribute, DefaultImageRenderContribution, DefaultLayerService, DefaultLayout, DefaultLineAllocate, DefaultLineAttribute, DefaultMat4Allocate, DefaultMatrixAllocate, DefaultPathAllocate, DefaultPathAttribute, DefaultPickService, DefaultPickStyle, DefaultPolygonAttribute, DefaultRect3dAttribute, DefaultRectAllocate, DefaultRectAttribute, DefaultRectRenderContribution, DefaultRenderService, DefaultRichTextAttribute, DefaultRichTextIconAttribute, DefaultStarAttribute, DefaultStrokeStyle, DefaultStyle, DefaultSymbolAllocate, DefaultSymbolAttribute, DefaultSymbolClipRangeStrokeRenderContribution, DefaultSymbolRenderContribution, DefaultTextAllocate, DefaultTextAttribute, DefaultTextMeasureContribution, DefaultTextStyle, DefaultTicker, DefaultTimeline, DefaultTransform, DefaultTransformUtil, DefaultWindow, Direction, DirectionEnum, DirectionalLight, DiscreteLegend, DiscretePlayer, Dissolve, Distortion, DragNDrop, DrawContribution, DrawItemInterceptor, DynamicLayerHandlerContribution, Easing, Edge, EditModule, EmptyContext2d, EmptyTip, EnvContribution, EventManager, EventSystem, EventTarget, FORMAT_ALL_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, FORMAT_TEXT_COMMAND, Factory, FadeIn, FadeOut, FederatedEvent, FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent, FlexLayoutPlugin, Fragment, FromTo, GLYPH_NUMBER_TYPE, GRAPHIC_UPDATE_TAG_KEY, GROUP_NUMBER_TYPE, GaussianBlur, Generator, Gesture, GifImage, Glitch, GlobalPickerService, Glyph, GlyphRender, GradientParser, Graphic, GraphicCreator$1 as GraphicCreator, GraphicFactory, GraphicPicker, GraphicRender, GraphicService, GraphicStateExtension, GraphicUtil, Grayscale, Group, GroupFadeIn, GroupFadeOut, GroupRender, GroupRenderContribution, GroupTransition, GroupUpdateAABBBoundsMode, GrowAngleIn, GrowAngleOut, GrowCenterIn, GrowCenterOut, GrowHeightIn, GrowHeightOut, GrowIn, GrowOut, GrowPointsIn, GrowPointsOut, GrowPointsXIn, GrowPointsXOut, GrowPointsYIn, GrowPointsYOut, GrowRadiusIn, GrowRadiusOut, GrowWidthIn, GrowWidthOut, HtmlAttributePlugin, IContainPointMode, IDataZoomEvent, IDataZoomInteractiveEvent, IMAGE_NUMBER_TYPE, IMarkAreaLabelPosition, IMarkCommonArcLabelPosition, IMarkLineLabelPosition, IMarkPointItemPosition, IOperateType, Image$1 as Image, ImageRender, ImageRenderContribution, IncreaseCount, IncrementalDrawContribution, Indicator, InputRichText, InputText, InteractiveDrawItemInterceptorContribution, InteractivePickItemInterceptorContribution, InteractiveSubRenderContribution, LEGEND_ELEMENT_NAME, LINE_NUMBER_TYPE, LabelBase, LabelItemAppear, LabelItemDisappear, Layer, LayerFactory, LayerService, LegendEvent, LegendStateValue, Line$1 as Line, LineAxis, LineAxisGrid, LineCrosshair, LineLabel, LineRender, Linear, LinearClosed, LinkPath, Lottie, ManualTicker, MarkArcArea, MarkArcLine, MarkArea, MarkLine, MarkPoint, Mat4Allocate, MathArcPicker, MathAreaPicker, MathCirclePicker, MathGlyphPicker, MathImagePicker, MathLinePicker, MathPathPicker, MathPickerContribution, MathPolygonPicker, MathRectPicker, MathRichTextPicker, MathSymbolPicker, MathTextPicker, MatrixAllocate, MeasureModeEnum, MiniappEntry, MonotoneX, MonotoneY, MorphingPath, MotionPath, MoveIn, MoveOut, MoveRotateIn, MoveRotateOut, MoveScaleIn, MoveScaleOut, MultiToOneMorphingPath, NOWORK_ANIMATE_ATTR, Node, NodeEntry, OrthoCamera, OutputRichText, PATH_NUMBER_TYPE, POLYGON_NUMBER_TYPE, PURE_STYLE_KEY, PYRAMID3D_NUMBER_TYPE, Pager, Particle, Path, PathRender, PathRenderContribution, PerformanceRAF, PickItemInterceptor, PickServiceInterceptor, PickerRegistry, PickerService, Pixelation, PlayerEventEnum, PluginRegistry, PluginService, Polygon, PolygonCrosshair, PolygonRender, PolygonRenderContribution, PolygonSectorCrosshair, PopTip, PoptipAppear, PoptipDisappear, PulseAnimate, Pyramid3d, Pyramid3dRender, REACT_TO_CANOPUS_EVENTS, REACT_TO_CANOPUS_EVENTS_LIST, RECT3D_NUMBER_TYPE, RECT_NUMBER_TYPE, RICHTEXT_NUMBER_TYPE, Radio, RafBasedSTO, ReactAttributePlugin, Rect, Rect3DRender, Rect3d, RectCrosshair, RectLabel, RectRender, RectRenderContribution, ReflectSegContext, RenderSelector, RenderService, RendererRegistry, ResourceLoader, RichText, RichTextEditPlugin, RichTextRender, RotateBySphereAnimate, RotateIn, RotateOut, SLIDER_ELEMENT_NAME, STAR_NUMBER_TYPE, STATUS$1 as STATUS, SVG_ATTRIBUTE_MAP, SVG_ATTRIBUTE_MAP_KEYS, SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS, SYMBOL_NUMBER_TYPE, ScaleIn, ScaleOut, ScrollBar, SectorCrosshair, SegContext, Segment, SeriesNumberCellStateValue, SeriesNumberEvent, ShadowPickServiceInterceptorContribution, ShadowRoot, ShadowRootDrawItemInterceptorContribution, ShadowRootPickItemInterceptorContribution, SizeContinuousLegend, SlideIn, SlideOut, SlideOutRichText, SlideRichText, Slider, SpinIn, SpinOut, SplitRectAfterRenderContribution, SplitRectBeforeRenderContribution, Stage, StageFactory, Star, StarRender, StarRenderContribution, State, StateDefinitionCompiler, StateEngine, StaticLayerHandlerContribution, Step$1 as Step, StepClosed, StoryLabelItem, StreamLight, StrokeIn, StrokeOut, Switch, Symbol$1 as Symbol, SymbolLabel, SymbolRender, SymbolRenderContribution, TEXT_NUMBER_TYPE, TableSeriesNumber, Tag, TagPointsUpdate, Text, TextDirection, TextMeasureContribution, TextRender, TextRenderContribution, Theme, Timeline, Title, Tooltip, TopZIndex, TransformUtil, Update, UpdateTag, VArc, VArc3d, VArea, VCircle, VGlobal, VGlyph, VGroup, VImage, VLine, VPath, VPolygon, VPyramid3d, VRect, VRect3d, VRichText, VSymbol, VTag, VText, VWindow, ViewTransform3dPlugin, VirtualLayerHandlerContribution, WILDCARD, WeatherBox, WindowHandlerContribution, WrapText, XMLParser, _calculateLineHeight, _interpolateColor, _registerArc, addArcToBezierPath$1 as addArcToBezierPath, addAttributeToPrototype, alignBezierCurves, alignSubpath, alignTextInLine, alternatingWave, angle, angleLabelOrientAttribute, angleTo, application, applyTransformOnBezierCurves, arc3dModule, arcModule, areaModule, bezier, bezierCurversToPath, binarySplitPolygon, bindArc3dCanvasPickerContribution, bindArc3dRenderModule, bindArcCanvasPickerContribution, bindArcMathPickerContribution, bindArcRenderModule, bindAreaCanvasPickerContribution, bindAreaMathPickerContribution, bindAreaRenderModule, bindBrowserEnv, bindCircleCanvasPickerContribution, bindCircleMathPickerContribution, bindCircleRenderModule, bindContributionProvider, bindContributionProviderNoSingletonScope, bindFeishuEnv, bindGifImageCanvasPickerContribution, bindGifImageRenderContribution, bindGlyphCanvasPickerContribution, bindGlyphMathPickerContribution, bindGlyphRenderModule, bindHarmonyEnv, bindImageCanvasPickerContribution, bindImageMathPickerContribution, bindImageRenderModule, bindLineCanvasPickerContribution, bindLineMathPickerContribution, bindLineRenderModule, bindLottieCanvasPickerContribution, bindLottieRenderContribution, bindLynxEnv, bindMathPicker, bindNodeEnv, bindPathCanvasPickerContribution, bindPathMathPickerContribution, bindPathRenderModule, bindPolygonCanvasPickerContribution, bindPolygonMathPickerContribution, bindPolygonRenderModule, bindPyramid3dCanvasPickerContribution, bindPyramid3dRenderModule, bindRect3dCanvasPickerContribution, bindRect3dRenderModule, bindRectCanvasPickerContribution, bindRectMathPickerContribution, bindRectRenderModule, bindRichTextMathPickerContribution, bindRichtextCanvasPickerContribution, bindRichtextRenderModule, bindStarRenderModule, bindSymbolCanvasPickerContribution, bindSymbolMathPickerContribution, bindSymbolRenderModule, bindTTEnv, bindTaroEnv, bindTextCanvasPickerContribution, bindTextMathPickerContribution, bindTextRenderModule, bindWxEnv, bootstrapLegacyVRenderRuntime, bootstrapVRenderBrowserApp, bootstrapVRenderNodeApp, boundStroke, builtInSymbolStrMap, builtinSymbols, builtinSymbolsMap, calcLineCache, calculateArcCornerRadius, calculateLineHeight, canvasAllocate, cartesianTicks, centerToCorner, centroidOfSubpath, circleBounds, circleModule, clampRadian, clock, colorEqual, colorStringInterpolationToStr, columnCenterToEdge, columnEdgeToCenter, columnLeftToRight, columnRightToLeft, computeOffsetForlimit, configureRuntimeApplicationForApp, container, continuousTicks, contrastAccessibilityChecker, convertDomainToTickData, cornerTangents, cornerToCenter, createBrowserApp$1 as createApp, createArc, createArc3d, createArea, createBrowserApp$1 as createBrowserApp, createBrowserVRenderApp, createCanvasEventTransformer, createCircle, createColor, createComponentAnimator, createConicalGradient, createContributionProvider$1 as createContributionProvider, createEventTransformer, createGifImage, createGlyph, createGraphic$1 as createGraphic, createGroup, createImage, createImageElement$1 as createImageElement, createLine, createLottie, createMat4, createMiniappApp, createNodeApp$1 as createNodeApp, createNodeVRenderApp, createPath, createPolygon, createPyramid3d, createRect, createRect3d, createRectPath, createRichText, createShadowRoot, createStage, createStar, createSymbol, createText, createTextGraphicByType, createWrapText, cubicCalc, cubicLength, cubicPointAt, cubicSubdivide, decodeReactDom, defaultArcAllocate, defaultArcBackgroundRenderContribution, defaultArcRenderContribution, defaultArcTextureRenderContribution, defaultAreaAllocate, defaultBaseBackgroundRenderContribution, defaultBaseClipRenderAfterContribution, defaultBaseClipRenderBeforeContribution, defaultBaseTextureRenderContribution, defaultCircleAllocate, defaultCircleBackgroundRenderContribution, defaultCircleRenderContribution, defaultCircleTextureRenderContribution, defaultGraphicMemoryManager, defaultGroupBackgroundRenderContribution, defaultImageBackgroundRenderContribution, defaultImageRenderContribution, defaultLineAllocate, defaultPathAllocate, defaultRectAllocate, defaultRectBackgroundRenderContribution, defaultRectRenderContribution, defaultRectTextureRenderContribution, defaultStarBackgroundRenderContribution, defaultStarTextureRenderContribution, defaultSymbolAllocate, defaultSymbolBackgroundRenderContribution, defaultSymbolClipRangeStrokeRenderContribution, defaultSymbolRenderContribution, defaultSymbolTextureRenderContribution, defaultTextAllocate, defaultTicker, defaultTimeline, deltaXYToAngle, diagonalCenterToEdge, diagonalTopLeftToBottomRight, diff, divideCubic, drawArc, drawArcPath$1 as drawArcPath, drawAreaSegments, drawBackgroundImage, drawImageWithLayout, drawIncrementalAreaSegments, drawIncrementalSegments, drawSegments, enumCommandMap, fillVisible, findBestMorphingRotation, findConfigIndexByCursorIdx, findCursorIdxByConfigIndex, findNextGraphic, flatten_simplify, foreach, foreachAsync, fuzzyEqualNumber, genBasisSegments, genBasisTypeSegments, genLinearClosedSegments, genLinearClosedTypeSegments, genLinearSegments, genLinearTypeSegments, genMonotoneXSegments, genMonotoneXTypeSegments, genMonotoneYSegments, genMonotoneYTypeSegments, genNumberType, genStepClosedSegments, genStepSegments, genStepTypeSegments, generatorPathEasingFunc, getAttributeFromDefaultAttrList, getAxisBreakSymbolAttrs, getBackgroundImage, getCircleLabelPosition, getCirclePoints, getCircleVerticalVector, getConicGradientAt, getCurrentEnv, getDefaultCharacterConfig, getElMap, getExtraModelMatrix, getHorizontalPath, getLegacyBindingContext, getMarksByName, getModelMatrix, getNoneGroupMarksByName, getPolarAngleLabelPosition, getPolygonPath, getRichTextBounds, getRuntimeInstallerBindingContext, getRuntimeInstallerGlobal, getScaledStroke, getSizeHandlerPath, getTextAlignAttrOfVerticalDir, getTextBounds, getTextType, getTheme, getThemeFromGroup, getVerticalCoord, getVerticalPath, globalTheme, glyphModule, graphicCreator$1 as graphicCreator, graphicService, graphicUtil, hasOverlap, htmlAttributeTransform, identityMat4, imageModule, incrementalAddTo, initAllEnv, initBrowserEnv, initFeishuEnv, initHarmonyEnv, initLynxEnv, initNodeEnv, initTTEnv, initTaroEnv, initTextMeasure, initWxEnv, installBrowserEnvToApp, installBrowserPickersToApp, installDefaultGraphicsToApp, installNodeEnvToApp, installNodePickersToApp, installPoptipToApp, installRuntimeDrawContributionsToApp, installRuntimeGraphicRenderersToApp, installRuntimePickersToApp, installScrollbarToApp, interpolateColor, interpolateGradientConicalColor, interpolateGradientLinearColor, interpolateGradientRadialColor, interpolatePureColorArray, interpolatePureColorArrayToStr, intersect, isBrowserEnv, isInRange, isNoRepeatSizingMode, isNodeEnv, isPostiveXAxis, isRichText, isSvg, isVisible, isXML, jsx, labelSmartInvert, layerService, length, limitShapeInBounds, lineModule, linearDiscreteTicks, loadAllEnv, loadAllModule, loadBrowserEnv, loadFeishuEnv, loadHarmonyEnv, loadLynxEnv, loadMathPicker, loadNodeEnv, loadPoptip, loadScrollbar, loadTTEnv, loadTaroEnv, loadWxEnv, lookAt, mapToCanvasPointForCanvas, mat3Tomat4, mat4Allocate, matrixAllocate, measureTextSize, morphPath, multiToOneMorph, multiplyMat4Mat3, multiplyMat4Mat4, newThemeObj, normalize$1 as normalize, oneToMultiMorph, ortho, parsePadding, parseStroke, parseSvgPath, particleEffect, pathModule, pathToBezierCurves, point$3 as point, pointEqual, pointInterpolation, pointInterpolationHighPerformance, pointsEqual, pointsInterpolation, polarAngleAxisDiscreteTicks, polarTicks, polygonModule, preLoadAllModule, pulseWave, pyramid3dModule, quadCalc, quadLength, quadPointAt, rafBasedSto, randomOpacity, reactAttributeTransform, rect3dModule, rectFillVisible, rectModule, rectStrokeVisible, recursiveCallBinarySplit, refreshRuntimeInstallerContributions, registerAnimate, registerArc, registerArc3d, registerArc3dGraphic, registerArcDataLabel, registerArcGraphic, registerArea, registerAreaGraphic, registerCircle, registerCircleGraphic, registerCustomAnimate, registerDirectionalLight, registerFlexLayoutPlugin, registerGifGraphic, registerGifImage, registerGlobalEventTransformer, registerGlyph, registerGlyphGraphic, registerGraphic, registerGroup, registerGroupGraphic, registerHtmlAttributePlugin, registerImage, registerImageGraphic, registerLine, registerLineDataLabel, registerLineGraphic, registerMarkArcAreaAnimate, registerMarkArcLineAnimate, registerMarkAreaAnimate, registerMarkLineAnimate, registerMarkPointAnimate, registerOrthoCamera, registerPath, registerPathGraphic, registerPolygon, registerPolygonGraphic, registerPyramid3d, registerPyramid3dGraphic, registerReactAttributePlugin, registerRect, registerRect3d, registerRect3dGraphic, registerRectDataLabel, registerRectGraphic, registerRichtext, registerRichtextGraphic, registerShadowRoot, registerShadowRootGraphic, registerStar, registerStarGraphic, registerSymbol, registerSymbolDataLabel, registerSymbolGraphic, registerText, registerTextGraphic, registerViewTransform3dPlugin, registerWindowEventTransformer, registerWrapText, registerWrapTextGraphic, removeRepeatPoint, renderCommandList, resolveBackgroundDrawMode, resolveBackgroundParamsByImageSizing, resolveBackgroundPosition, resolveBackgroundSizing, resolveContainerBinding$1 as resolveContainerBinding, resolveImageMode, resolveImageRepeatMode, resolveRenderableImageSize, rewriteProto, richTextAttributeTransform, richtextModule, rippleEffect, rotateX, rotateY, rotateZ, rotationScan, roughModule, rowBottomToTop, rowCenterToEdge, rowEdgeToCenter, rowTopToBottom, runFill, runStroke, scale, scaleMat4, segments, setPoptipTheme, shouldClipImageByLayout, shouldUseMat4, shouldUseSimpleAttributeFastPath, smartInvertStrategy, snakeWave, snapLength, spiralEffect, splitArc, splitArea, splitCircle, splitLine, splitPath, splitPolygon, splitRect, splitToGrids, starModule, strCommandMap, strokeVisible, symbolModule, tan2AngleToAngle, textAttributesToStyle, textDrawOffsetX, textDrawOffsetY, textIntersect, textLayoutOffsetY, textModule, ticks, transformMat4, transformPointForCanvas, transformUtil, transitionRegistry, translate, traverseGroup, version, verticalLayout, vglobal, waitForAllSubLayers, wrapCanvas, wrapContext, xul };
55303
+ export { AComponentAnimate, ACustomAnimate, ARC3D_NUMBER_TYPE, ARC_NUMBER_TYPE, AREA_NUMBER_TYPE, AStageAnimate, AXIS_ELEMENT_NAME, AbstractComponent, AbstractGraphicRender, Animate, AnimateExecutor, AnimateMode, AnimateStatus, Step as AnimateStep, AnimateStepType, AnimationStateManager, AnimationStateStore, AnimationStates, AnimationTransitionRegistry, AppContext, Application, Arc, Arc3d, Arc3dRender, ArcInfo, ArcLabel, ArcRender, ArcRenderContribution, ArcSegment, Area, AreaRender, AreaRenderContribution, AttributeUpdateType, AutoEnablePlugins, AxisStateValue, BaseCanvas, BaseEnvContribution, BasePlayer, BaseRender, BaseRenderContributionTime, BaseWindowHandlerContribution, Basis, BeforeRenderConstribution, BoundsContext, BoundsPicker, BrowserEntry, BrowserEnvContribution, Brush, CIRCLE_NUMBER_TYPE, Canvas3DDrawItemInterceptor, Canvas3DPickItemInterceptor, CanvasArc3dPicker, CanvasArcPicker, CanvasAreaPicker, CanvasCirclePicker, CanvasFactory, CanvasGifImagePicker, CanvasGlyphPicker, CanvasGroupPicker, CanvasImagePicker, CanvasLinePicker, CanvasLottiePicker, CanvasPathPicker, CanvasPickerContribution, CanvasPolygonPicker, CanvasPyramid3dPicker, CanvasRect3dPicker, CanvasRectPicker, CanvasRichTextPicker, CanvasStarPicker, CanvasSymbolPicker, CanvasTextLayout, CanvasTextPicker, CheckBox, Circle, CircleAxis, CircleAxisGrid, CircleCrosshair, CircleRender, CircleRenderContribution, ClipAngleAnimate, ClipDirectionAnimate, ClipGraphicAnimate, ClipIn, ClipOut, ClipRadiusAnimate, ColorContinuousLegend, ColorInterpolate, ColorStore, ColorType, CommonDrawItemInterceptorContribution, CommonRenderContribution, ComponentAnimator, Context2dFactory, ContinuousPlayer, ContributionProvider, ContributionRegistry, ContributionStore, CubicBezierCurve, CurveContext, CurveTypeEnum, CustomEvent, CustomPath2D, CustomSymbolClass, DEFAULT_ITEM_SPACE_COL, DEFAULT_ITEM_SPACE_ROW, DEFAULT_LABEL_SPACE, DEFAULT_PAGER_SPACE, DEFAULT_SHAPE_SIZE, DEFAULT_SHAPE_SPACE, DEFAULT_STATES$1 as DEFAULT_STATES, DEFAULT_TEXT_FONT_FAMILY$1 as DEFAULT_TEXT_FONT_FAMILY, DEFAULT_TITLE_SPACE, DEFAULT_VALUE_SPACE, DataLabel, DataZoom, DataZoomActiveTag, DebugDrawItemInterceptorContribution, DefaultArcAllocate, DefaultArcAttribute, DefaultArcRenderContribution, DefaultAreaAllocate, DefaultAreaAttribute, DefaultAreaTextureRenderContribution, DefaultAttribute, DefaultBaseBackgroundRenderContribution, DefaultBaseClipRenderAfterContribution, DefaultBaseClipRenderBeforeContribution, DefaultBaseInteractiveRenderContribution, DefaultBaseTextureRenderContribution, DefaultCanvasAllocate, DefaultCanvasArcRender, DefaultCanvasAreaRender, DefaultCanvasCircleRender, DefaultCanvasGroupRender, DefaultCanvasImageRender, DefaultCanvasLineRender, DefaultCanvasPathRender, DefaultCanvasPolygonRender, DefaultCanvasRectRender, DefaultCanvasSymbolRender, DefaultCanvasTextRender, DefaultCircleAllocate, DefaultCircleAttribute, DefaultCircleRenderContribution, DefaultConnectAttribute, DefaultDebugAttribute, DefaultFillStyle, DefaultGlobal, DefaultGlobalPickerService, DefaultGlyphAttribute, DefaultGraphicAllocate, DefaultGraphicMemoryManager, DefaultGraphicService, DefaultGraphicUtil, DefaultGroupAttribute, DefaultGroupBackgroundRenderContribution, DefaultImageAttribute, DefaultImageRenderContribution, DefaultLayerService, DefaultLayout, DefaultLineAllocate, DefaultLineAttribute, DefaultMat4Allocate, DefaultMatrixAllocate, DefaultPathAllocate, DefaultPathAttribute, DefaultPickService, DefaultPickStyle, DefaultPolygonAttribute, DefaultRect3dAttribute, DefaultRectAllocate, DefaultRectAttribute, DefaultRectRenderContribution, DefaultRenderService, DefaultRichTextAttribute, DefaultRichTextIconAttribute, DefaultStarAttribute, DefaultStrokeStyle, DefaultStyle, DefaultSymbolAllocate, DefaultSymbolAttribute, DefaultSymbolClipRangeStrokeRenderContribution, DefaultSymbolRenderContribution, DefaultTextAllocate, DefaultTextAttribute, DefaultTextMeasureContribution, DefaultTextStyle, DefaultTicker, DefaultTimeline, DefaultTransform, DefaultTransformUtil, DefaultWindow, Direction, DirectionEnum, DirectionalLight, DiscreteLegend, DiscretePlayer, Dissolve, Distortion, DragNDrop, DrawContribution, DrawItemInterceptor, DynamicLayerHandlerContribution, Easing, Edge, EditModule, EmptyContext2d, EmptyTip, EnvContribution, EventManager, EventSystem, EventTarget, FORMAT_ALL_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, FORMAT_TEXT_COMMAND, Factory, FadeIn, FadeOut, FederatedEvent, FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent, FlexLayoutPlugin, Fragment, FromTo, GLYPH_NUMBER_TYPE, GRAPHIC_UPDATE_TAG_KEY, GROUP_NUMBER_TYPE, GaussianBlur, Generator, Gesture, GifImage, Glitch, GlobalPickerService, Glyph, GlyphRender, GradientParser, Graphic, GraphicCreator$1 as GraphicCreator, GraphicFactory, GraphicPicker, GraphicRender, GraphicService, GraphicStateExtension, GraphicUtil, Grayscale, Group, GroupFadeIn, GroupFadeOut, GroupRender, GroupRenderContribution, GroupTransition, GroupUpdateAABBBoundsMode, GrowAngleIn, GrowAngleOut, GrowCenterIn, GrowCenterOut, GrowHeightIn, GrowHeightOut, GrowIn, GrowOut, GrowPointsIn, GrowPointsOut, GrowPointsXIn, GrowPointsXOut, GrowPointsYIn, GrowPointsYOut, GrowRadiusIn, GrowRadiusOut, GrowWidthIn, GrowWidthOut, HtmlAttributePlugin, IContainPointMode, IDataZoomEvent, IDataZoomInteractiveEvent, IMAGE_NUMBER_TYPE, IMarkAreaLabelPosition, IMarkCommonArcLabelPosition, IMarkLineLabelPosition, IMarkPointItemPosition, IOperateType, Image$1 as Image, ImageRender, ImageRenderContribution, IncreaseCount, IncrementalDrawContribution, Indicator, InputRichText, InputText, InteractiveDrawItemInterceptorContribution, InteractivePickItemInterceptorContribution, InteractiveSubRenderContribution, LEGEND_ELEMENT_NAME, LINE_NUMBER_TYPE, LabelBase, LabelItemAppear, LabelItemDisappear, Layer, LayerFactory, LayerService, LegendEvent, LegendStateValue, Line$1 as Line, LineAxis, LineAxisGrid, LineCrosshair, LineLabel, LineRender, Linear, LinearClosed, LinkPath, Lottie, ManualTicker, MarkArcArea, MarkArcLine, MarkArea, MarkLine, MarkPoint, Mat4Allocate, MathArcPicker, MathAreaPicker, MathCirclePicker, MathGlyphPicker, MathImagePicker, MathLinePicker, MathPathPicker, MathPickerContribution, MathPolygonPicker, MathRectPicker, MathRichTextPicker, MathSymbolPicker, MathTextPicker, MatrixAllocate, MeasureModeEnum, MiniappEntry, MonotoneX, MonotoneY, MorphingPath, MotionPath, MoveIn, MoveOut, MoveRotateIn, MoveRotateOut, MoveScaleIn, MoveScaleOut, MultiToOneMorphingPath, NOWORK_ANIMATE_ATTR, Node, NodeEntry, OrthoCamera, OutputRichText, PATH_NUMBER_TYPE, POLYGON_NUMBER_TYPE, PURE_STYLE_KEY, PYRAMID3D_NUMBER_TYPE, Pager, Particle, Path, PathRender, PathRenderContribution, PerformanceRAF, PickItemInterceptor, PickServiceInterceptor, PickerRegistry, PickerService, Pixelation, PlayerEventEnum, PluginRegistry, PluginService, Polygon, PolygonCrosshair, PolygonRender, PolygonRenderContribution, PolygonSectorCrosshair, PopTip, PoptipAppear, PoptipDisappear, PulseAnimate, Pyramid3d, Pyramid3dRender, REACT_TO_CANOPUS_EVENTS, REACT_TO_CANOPUS_EVENTS_LIST, RECT3D_NUMBER_TYPE, RECT_NUMBER_TYPE, RICHTEXT_NUMBER_TYPE, Radio, RafBasedSTO, ReactAttributePlugin, Rect, Rect3DRender, Rect3d, RectCrosshair, RectLabel, RectRender, RectRenderContribution, ReflectSegContext, RenderSelector, RenderService, RendererRegistry, ResourceLoader, RichText, RichTextEditPlugin, RichTextRender, RotateBySphereAnimate, RotateIn, RotateOut, SLIDER_ELEMENT_NAME, STAR_NUMBER_TYPE, STATUS$1 as STATUS, SVG_ATTRIBUTE_MAP, SVG_ATTRIBUTE_MAP_KEYS, SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS, SYMBOL_NUMBER_TYPE, ScaleIn, ScaleOut, ScrollBar, SectorCrosshair, SegContext, Segment, SeriesNumberCellStateValue, SeriesNumberEvent, ShadowPickServiceInterceptorContribution, ShadowRoot, ShadowRootDrawItemInterceptorContribution, ShadowRootPickItemInterceptorContribution, SizeContinuousLegend, SlideIn, SlideOut, SlideOutRichText, SlideRichText, Slider, SpinIn, SpinOut, SplitRectAfterRenderContribution, SplitRectBeforeRenderContribution, Stage, StageFactory, Star, StarRender, StarRenderContribution, State, StateDefinitionCompiler, StateEngine, StaticLayerHandlerContribution, Step$1 as Step, StepClosed, StoryLabelItem, StreamLight, StrokeIn, StrokeOut, Switch, Symbol$1 as Symbol, SymbolLabel, SymbolRender, SymbolRenderContribution, TEXT_NUMBER_TYPE, TableSeriesNumber, Tag, TagPointsUpdate, Text, TextDirection, TextMeasureContribution, TextRender, TextRenderContribution, Theme, Timeline, Title, Tooltip, TopZIndex, TransformUtil, Update, UpdateTag, VArc, VArc3d, VArea, VCircle, VGlobal, VGlyph, VGroup, VImage, VLine, VPath, VPolygon, VPyramid3d, VRect, VRect3d, VRichText, VSymbol, VTag, VText, VWindow, ViewTransform3dPlugin, VirtualLayerHandlerContribution, WILDCARD, WeatherBox, WindowHandlerContribution, WrapText, XMLParser, _calculateLineHeight, _interpolateColor, _registerArc, addArcToBezierPath$1 as addArcToBezierPath, addAttributeToPrototype, alignBezierCurves, alignSubpath, alignTextInLine, alternatingWave, angle, angleLabelOrientAttribute, angleTo, application, applyTransformOnBezierCurves, arc3dModule, arcModule, areaModule, bezier, bezierCurversToPath, binarySplitPolygon, bindArc3dCanvasPickerContribution, bindArc3dRenderModule, bindArcCanvasPickerContribution, bindArcMathPickerContribution, bindArcRenderModule, bindAreaCanvasPickerContribution, bindAreaMathPickerContribution, bindAreaRenderModule, bindBrowserEnv, bindCircleCanvasPickerContribution, bindCircleMathPickerContribution, bindCircleRenderModule, bindContributionProvider, bindContributionProviderNoSingletonScope, bindFeishuEnv, bindGifImageCanvasPickerContribution, bindGifImageRenderContribution, bindGlyphCanvasPickerContribution, bindGlyphMathPickerContribution, bindGlyphRenderModule, bindHarmonyEnv, bindImageCanvasPickerContribution, bindImageMathPickerContribution, bindImageRenderModule, bindLineCanvasPickerContribution, bindLineMathPickerContribution, bindLineRenderModule, bindLottieCanvasPickerContribution, bindLottieRenderContribution, bindLynxEnv, bindMathPicker, bindNodeEnv, bindPathCanvasPickerContribution, bindPathMathPickerContribution, bindPathRenderModule, bindPolygonCanvasPickerContribution, bindPolygonMathPickerContribution, bindPolygonRenderModule, bindPyramid3dCanvasPickerContribution, bindPyramid3dRenderModule, bindRect3dCanvasPickerContribution, bindRect3dRenderModule, bindRectCanvasPickerContribution, bindRectMathPickerContribution, bindRectRenderModule, bindRichTextMathPickerContribution, bindRichtextCanvasPickerContribution, bindRichtextRenderModule, bindStarRenderModule, bindSymbolCanvasPickerContribution, bindSymbolMathPickerContribution, bindSymbolRenderModule, bindTTEnv, bindTaroEnv, bindTextCanvasPickerContribution, bindTextMathPickerContribution, bindTextRenderModule, bindWxEnv, bootstrapLegacyVRenderRuntime, bootstrapVRenderBrowserApp, bootstrapVRenderNodeApp, boundStroke, builtInSymbolStrMap, builtinSymbols, builtinSymbolsMap, calcLineCache, calculateArcCornerRadius, calculateLineHeight, canvasAllocate, cartesianTicks, centerToCorner, centroidOfSubpath, circleBounds, circleModule, clampRadian, clock, colorEqual, colorStringInterpolationToStr, columnCenterToEdge, columnEdgeToCenter, columnLeftToRight, columnRightToLeft, computeOffsetForlimit, configureRuntimeApplicationForApp, container, continuousTicks, contrastAccessibilityChecker, convertDomainToTickData, cornerTangents, cornerToCenter, createBrowserApp$1 as createApp, createArc, createArc3d, createArea, createBrowserApp$1 as createBrowserApp, createBrowserVRenderApp, createCanvasEventTransformer, createCircle, createColor, createComponentAnimator, createConicalGradient, createContributionProvider$1 as createContributionProvider, createEventTransformer, createGifImage, createGlyph, createGraphic$1 as createGraphic, createGroup, createImage, createImageElement$1 as createImageElement, createLine, createLottie, createMat4, createMiniappApp, createNodeApp$1 as createNodeApp, createNodeVRenderApp, createPath, createPolygon, createPyramid3d, createRect, createRect3d, createRectPath, createRichText, createShadowRoot, createStage, createStar, createSymbol, createText, createTextGraphicByType, createWrapText, cubicCalc, cubicLength, cubicPointAt, cubicSubdivide, decodeReactDom, defaultArcAllocate, defaultArcBackgroundRenderContribution, defaultArcRenderContribution, defaultArcTextureRenderContribution, defaultAreaAllocate, defaultBaseBackgroundRenderContribution, defaultBaseClipRenderAfterContribution, defaultBaseClipRenderBeforeContribution, defaultBaseTextureRenderContribution, defaultCircleAllocate, defaultCircleBackgroundRenderContribution, defaultCircleRenderContribution, defaultCircleTextureRenderContribution, defaultGraphicMemoryManager, defaultGroupBackgroundRenderContribution, defaultImageBackgroundRenderContribution, defaultImageRenderContribution, defaultLineAllocate, defaultPathAllocate, defaultRectAllocate, defaultRectBackgroundRenderContribution, defaultRectRenderContribution, defaultRectTextureRenderContribution, defaultStarBackgroundRenderContribution, defaultStarTextureRenderContribution, defaultSymbolAllocate, defaultSymbolBackgroundRenderContribution, defaultSymbolClipRangeStrokeRenderContribution, defaultSymbolRenderContribution, defaultSymbolTextureRenderContribution, defaultTextAllocate, defaultTicker, defaultTimeline, deltaXYToAngle, diagonalCenterToEdge, diagonalTopLeftToBottomRight, diff, divideCubic, drawArc, drawArcPath$1 as drawArcPath, drawAreaSegments, drawBackgroundImage, drawImageWithLayout, drawIncrementalAreaSegments, drawIncrementalSegments, drawSegments, enumCommandMap, fillVisible, findBestMorphingRotation, findConfigIndexByCursorIdx, findCursorIdxByConfigIndex, findNextGraphic, flatten_simplify, foreach, foreachAsync, fuzzyEqualNumber, genBasisSegments, genBasisTypeSegments, genLinearClosedSegments, genLinearClosedTypeSegments, genLinearSegments, genLinearTypeSegments, genMonotoneXSegments, genMonotoneXTypeSegments, genMonotoneYSegments, genMonotoneYTypeSegments, genNumberType, genStepClosedSegments, genStepSegments, genStepTypeSegments, generatorPathEasingFunc, getAttributeFromDefaultAttrList, getAxisBreakSymbolAttrs, getBackgroundImage, getCircleLabelPosition, getCirclePoints, getCircleVerticalVector, getConicGradientAt, getCurrentEnv, getDefaultCharacterConfig, getElMap, getExtraModelMatrix, getHorizontalPath, getLegacyBindingContext, getMarksByName, getModelMatrix, getNoneGroupMarksByName, getPolarAngleLabelPosition, getPolygonPath, getRichTextBounds, getRuntimeInstallerBindingContext, getRuntimeInstallerGlobal, getScaledStroke, getSizeHandlerPath, getTextAlignAttrOfVerticalDir, getTextBounds, getTextType, getTheme, getThemeFromGroup, getVerticalCoord, getVerticalPath, globalTheme, glyphModule, graphicCreator$1 as graphicCreator, graphicService, graphicUtil, hasOverlap, htmlAttributeTransform, identityMat4, imageModule, incrementalAddTo, initAllEnv, initBrowserEnv, initFeishuEnv, initHarmonyEnv, initLynxEnv, initNodeEnv, initTTEnv, initTaroEnv, initTextMeasure, initWxEnv, installBrowserEnvToApp, installBrowserPickersToApp, installDefaultGraphicsToApp, installNodeEnvToApp, installNodePickersToApp, installPoptipToApp, installRuntimeDrawContributionsToApp, installRuntimeGraphicRenderersToApp, installRuntimePickersToApp, installScrollbarToApp, interpolateColor, interpolateGradientConicalColor, interpolateGradientLinearColor, interpolateGradientRadialColor, interpolatePureColorArray, interpolatePureColorArrayToStr, intersect, isBrowserEnv, isInRange, isNoRepeatSizingMode, isNodeEnv, isPostiveXAxis, isRichText, isSvg, isVisible, isXML, jsx, labelSmartInvert, layerService, length, limitShapeInBounds, lineModule, linearDiscreteTicks, loadAllEnv, loadAllModule, loadBrowserEnv, loadFeishuEnv, loadHarmonyEnv, loadLynxEnv, loadMathPicker, loadNodeEnv, loadPoptip, loadScrollbar, loadTTEnv, loadTaroEnv, loadWxEnv, lookAt, mapToCanvasPointForCanvas, mat3Tomat4, mat4Allocate, matrixAllocate, measureTextSize, morphPath, multiToOneMorph, multiplyMat4Mat3, multiplyMat4Mat4, newThemeObj, normalize$1 as normalize, oneToMultiMorph, ortho, parsePadding, parseStroke, parseSvgPath, particleEffect, pathModule, pathToBezierCurves, point$3 as point, pointEqual, pointInterpolation, pointInterpolationHighPerformance, pointsEqual, pointsInterpolation, polarAngleAxisDiscreteTicks, polarTicks, polygonModule, preLoadAllModule, pulseWave, pyramid3dModule, quadCalc, quadLength, quadPointAt, rafBasedSto, randomOpacity, reactAttributeTransform, rect3dModule, rectFillVisible, rectModule, rectStrokeVisible, recursiveCallBinarySplit, refreshRuntimeInstallerContributions, registerAnimate, registerArc, registerArc3d, registerArc3dGraphic, registerArcDataLabel, registerArcGraphic, registerArea, registerAreaGraphic, registerCircle, registerCircleGraphic, registerCustomAnimate, registerDirectionalLight, registerFlexLayoutPlugin, registerGifGraphic, registerGifImage, registerGlobalEventTransformer, registerGlyph, registerGlyphGraphic, registerGraphic, registerGroup, registerGroupGraphic, registerHtmlAttributePlugin, registerImage, registerImageGraphic, registerLine, registerLineDataLabel, registerLineGraphic, registerMarkArcAreaAnimate, registerMarkArcLineAnimate, registerMarkAreaAnimate, registerMarkLineAnimate, registerMarkPointAnimate, registerOrthoCamera, registerPath, registerPathGraphic, registerPolygon, registerPolygonGraphic, registerPyramid3d, registerPyramid3dGraphic, registerReactAttributePlugin, registerRect, registerRect3d, registerRect3dGraphic, registerRectDataLabel, registerRectGraphic, registerRichtext, registerRichtextGraphic, registerShadowRoot, registerShadowRootGraphic, registerStar, registerStarGraphic, registerSymbol, registerSymbolDataLabel, registerSymbolGraphic, registerText, registerTextGraphic, registerViewTransform3dPlugin, registerWindowEventTransformer, registerWrapText, registerWrapTextGraphic, removeRepeatPoint, renderCommandList, resolveBackgroundDrawMode, resolveBackgroundParamsByImageSizing, resolveBackgroundPosition, resolveBackgroundSizing, resolveContainerBinding$1 as resolveContainerBinding, resolveImageMode, resolveImageRepeatMode, resolveRenderableImageSize, rewriteProto, richTextAttributeTransform, richtextModule, rippleEffect, rotateX, rotateY, rotateZ, rotationScan, roughModule, rowBottomToTop, rowCenterToEdge, rowEdgeToCenter, rowTopToBottom, runFill, runStroke, scale, scaleMat4, segments, setPoptipTheme, shouldClipImageByLayout, shouldUseMat4, smartInvertStrategy, snakeWave, snapLength, spiralEffect, splitArc, splitArea, splitCircle, splitLine, splitPath, splitPolygon, splitRect, splitToGrids, starModule, strCommandMap, strokeVisible, symbolModule, tan2AngleToAngle, textAttributesToStyle, textDrawOffsetX, textDrawOffsetY, textIntersect, textLayoutOffsetY, textModule, ticks, transformMat4, transformPointForCanvas, transformUtil, transitionRegistry, translate, traverseGroup, version, verticalLayout, vglobal, waitForAllSubLayers, wrapCanvas, wrapContext, xul };