@visactor/vrender-core 1.0.41-alpha.1 → 1.0.41

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.
Files changed (70) hide show
  1. package/cjs/common/diff.js +2 -1
  2. package/cjs/common/event-listener-manager.d.ts +18 -1
  3. package/cjs/common/event-listener-manager.js +40 -10
  4. package/cjs/common/event-listener-manager.js.map +1 -1
  5. package/cjs/common/event-transformer.js +1 -2
  6. package/cjs/common/render-area.js +1 -1
  7. package/cjs/common/render-command-list.js +1 -1
  8. package/cjs/common/render-curve.js +1 -1
  9. package/cjs/common/render-utils.js +1 -1
  10. package/cjs/common/seg-context.js +1 -1
  11. package/cjs/common/simplify.js +2 -1
  12. package/cjs/common/sort.js +1 -1
  13. package/cjs/common/split-path.js +1 -1
  14. package/cjs/common/store.js +1 -1
  15. package/cjs/common/text.js +1 -1
  16. package/cjs/common/utils.js +1 -1
  17. package/cjs/core/constants.js +1 -1
  18. package/cjs/core/core-modules.js +1 -1
  19. package/cjs/core/global-module.js +0 -2
  20. package/cjs/core/global.js +1 -1
  21. package/cjs/core/graphic-utils.js +1 -1
  22. package/cjs/core/index.js +1 -1
  23. package/cjs/core/layer-service.js +1 -2
  24. package/cjs/core/layer.js +1 -1
  25. package/cjs/core/light.js +1 -1
  26. package/cjs/core/stage.js +3 -2
  27. package/cjs/core/stage.js.map +1 -1
  28. package/cjs/core/window.js +1 -1
  29. package/cjs/event/event-manager.js +4 -1
  30. package/cjs/event/event-manager.js.map +1 -1
  31. package/cjs/graphic/graphic.js +2 -1
  32. package/cjs/graphic/graphic.js.map +1 -1
  33. package/cjs/render/contributions/render/contributions/text-contribution-render.js +2 -3
  34. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  35. package/dist/index.es.js +77 -18
  36. package/es/common/diff.js +2 -1
  37. package/es/common/event-listener-manager.d.ts +18 -1
  38. package/es/common/event-listener-manager.js +40 -10
  39. package/es/common/event-listener-manager.js.map +1 -1
  40. package/es/common/event-transformer.js +1 -2
  41. package/es/common/render-area.js +1 -1
  42. package/es/common/render-command-list.js +1 -1
  43. package/es/common/render-curve.js +1 -1
  44. package/es/common/render-utils.js +1 -1
  45. package/es/common/seg-context.js +1 -1
  46. package/es/common/simplify.js +2 -1
  47. package/es/common/sort.js +1 -1
  48. package/es/common/split-path.js +1 -1
  49. package/es/common/store.js +1 -1
  50. package/es/common/text.js +1 -1
  51. package/es/common/utils.js +1 -1
  52. package/es/core/constants.js +1 -1
  53. package/es/core/core-modules.js +1 -1
  54. package/es/core/global-module.js +0 -2
  55. package/es/core/global.js +1 -1
  56. package/es/core/graphic-utils.js +1 -1
  57. package/es/core/index.js +1 -1
  58. package/es/core/layer-service.js +1 -2
  59. package/es/core/layer.js +1 -1
  60. package/es/core/light.js +1 -1
  61. package/es/core/stage.js +3 -2
  62. package/es/core/stage.js.map +1 -1
  63. package/es/core/window.js +1 -1
  64. package/es/event/event-manager.js +4 -1
  65. package/es/event/event-manager.js.map +1 -1
  66. package/es/graphic/graphic.js +2 -1
  67. package/es/graphic/graphic.js.map +1 -1
  68. package/es/render/contributions/render/contributions/text-contribution-render.js +2 -2
  69. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  70. package/package.json +3 -3
package/dist/index.es.js CHANGED
@@ -935,6 +935,13 @@ class EventListenerManager {
935
935
  if (!listener) {
936
936
  return;
937
937
  }
938
+ const capture = this._resolveCapture(options);
939
+ const once = this._resolveOnce(options);
940
+ const listenerTypeMap = this._getOrCreateListenerTypeMap(type);
941
+ const wrappedMap = this._getOrCreateWrappedMap(listenerTypeMap, listener);
942
+ if (wrappedMap.has(capture)) {
943
+ return;
944
+ }
938
945
  const wrappedListener = (event) => {
939
946
  const transformedEvent = this._eventListenerTransformer(event);
940
947
  if (typeof listener === 'function') {
@@ -943,38 +950,80 @@ class EventListenerManager {
943
950
  else if (listener.handleEvent) {
944
951
  listener.handleEvent(transformedEvent);
945
952
  }
953
+ if (once) {
954
+ this._deleteListenerRecord(type, listener, capture);
955
+ }
946
956
  };
947
- if (!this._listenerMap.has(type)) {
948
- this._listenerMap.set(type, new Map());
949
- }
950
- this._listenerMap.get(type).set(listener, wrappedListener);
957
+ wrappedMap.set(capture, { wrappedListener, options });
951
958
  this._nativeAddEventListener(type, wrappedListener, options);
952
959
  }
953
960
  removeEventListener(type, listener, options) {
954
- var _a;
961
+ var _a, _b;
955
962
  if (!listener) {
956
963
  return;
957
964
  }
958
- const wrappedListener = (_a = this._listenerMap.get(type)) === null || _a === void 0 ? void 0 : _a.get(listener);
959
- if (wrappedListener) {
960
- this._nativeRemoveEventListener(type, wrappedListener, options);
961
- this._listenerMap.get(type).delete(listener);
962
- if (this._listenerMap.get(type).size === 0) {
963
- this._listenerMap.delete(type);
964
- }
965
+ const capture = this._resolveCapture(options);
966
+ const wrappedRecord = (_b = (_a = this._listenerMap.get(type)) === null || _a === void 0 ? void 0 : _a.get(listener)) === null || _b === void 0 ? void 0 : _b.get(capture);
967
+ if (wrappedRecord) {
968
+ this._nativeRemoveEventListener(type, wrappedRecord.wrappedListener, capture);
969
+ this._deleteListenerRecord(type, listener, capture);
965
970
  }
966
971
  }
967
972
  dispatchEvent(event) {
968
973
  return this._nativeDispatchEvent(event);
969
974
  }
970
975
  clearAllEventListeners() {
971
- this._listenerMap.forEach((listenersMap, type) => {
972
- listenersMap.forEach((wrappedListener, originalListener) => {
973
- this._nativeRemoveEventListener(type, wrappedListener, undefined);
976
+ this._listenerMap.forEach((listenerMap, type) => {
977
+ listenerMap.forEach(wrappedMap => {
978
+ wrappedMap.forEach((wrappedRecord, capture) => {
979
+ this._nativeRemoveEventListener(type, wrappedRecord.wrappedListener, capture);
980
+ });
974
981
  });
975
982
  });
976
983
  this._listenerMap.clear();
977
984
  }
985
+ _resolveCapture(options) {
986
+ if (typeof options === 'boolean') {
987
+ return options;
988
+ }
989
+ return !!(options === null || options === void 0 ? void 0 : options.capture);
990
+ }
991
+ _resolveOnce(options) {
992
+ return typeof options === 'object' && !!(options === null || options === void 0 ? void 0 : options.once);
993
+ }
994
+ _getOrCreateListenerTypeMap(type) {
995
+ let listenerTypeMap = this._listenerMap.get(type);
996
+ if (!listenerTypeMap) {
997
+ listenerTypeMap = new Map();
998
+ this._listenerMap.set(type, listenerTypeMap);
999
+ }
1000
+ return listenerTypeMap;
1001
+ }
1002
+ _getOrCreateWrappedMap(listenerTypeMap, listener) {
1003
+ let wrappedMap = listenerTypeMap.get(listener);
1004
+ if (!wrappedMap) {
1005
+ wrappedMap = new Map();
1006
+ listenerTypeMap.set(listener, wrappedMap);
1007
+ }
1008
+ return wrappedMap;
1009
+ }
1010
+ _deleteListenerRecord(type, listener, capture) {
1011
+ const listenerTypeMap = this._listenerMap.get(type);
1012
+ if (!listenerTypeMap) {
1013
+ return;
1014
+ }
1015
+ const wrappedMap = listenerTypeMap.get(listener);
1016
+ if (!wrappedMap) {
1017
+ return;
1018
+ }
1019
+ wrappedMap.delete(capture);
1020
+ if (wrappedMap.size === 0) {
1021
+ listenerTypeMap.delete(listener);
1022
+ }
1023
+ if (listenerTypeMap.size === 0) {
1024
+ this._listenerMap.delete(type);
1025
+ }
1026
+ }
978
1027
  _nativeAddEventListener(type, listener, options) {
979
1028
  throw new Error('_nativeAddEventListener must be implemented by derived classes');
980
1029
  }
@@ -7409,6 +7458,13 @@ class EventManager {
7409
7458
  }
7410
7459
  const constructor = event.constructor;
7411
7460
  if (!this.eventPool.has(constructor)) {
7461
+ this.eventPool.get(constructor).forEach(e => {
7462
+ e.eventPhase = event.NONE;
7463
+ e.currentTarget = null;
7464
+ e.path = [];
7465
+ e.detailPath = [];
7466
+ e.target = null;
7467
+ });
7412
7468
  this.eventPool.set(constructor, []);
7413
7469
  }
7414
7470
  (_a = this.eventPool.get(constructor)) === null || _a === void 0 ? void 0 : _a.push(event);
@@ -12087,6 +12143,7 @@ class Graphic extends Node {
12087
12143
  this.releaseStatus = 'released';
12088
12144
  this.stopAnimates();
12089
12145
  application.graphicService.onRelease(this);
12146
+ super.release();
12090
12147
  }
12091
12148
  _emitCustomEvent(type, context) {
12092
12149
  var _a, _b;
@@ -19982,10 +20039,9 @@ class DefaultTextBackgroundRenderContribution extends DefaultBaseBackgroundRende
19982
20039
  context.setTransformForCurrent();
19983
20040
  }
19984
20041
  else {
19985
- const { backgroundCornerRadius, backgroundOpacity = 1 } = graphic.attribute;
20042
+ const { backgroundCornerRadius } = graphic.attribute;
19986
20043
  context.highPerformanceSave();
19987
20044
  context.setCommonStyle(graphic, graphic.attribute, x, y, graphicAttribute);
19988
- context.globalAlpha = backgroundOpacity;
19989
20045
  context.fillStyle = background;
19990
20046
  if (backgroundCornerRadius) {
19991
20047
  createRectPath(context, b.x1, b.y1, b.width(), b.height(), backgroundCornerRadius, true);
@@ -23362,7 +23418,7 @@ class Stage extends Group {
23362
23418
  throw new Error('暂不支持');
23363
23419
  }
23364
23420
  release() {
23365
- var _a, _b;
23421
+ var _a, _b, _d;
23366
23422
  super.release();
23367
23423
  this.hooks.beforeRender.unTap('constructor', this.beforeRender);
23368
23424
  this.hooks.afterRender.unTap('constructor', this.afterRender);
@@ -23382,6 +23438,9 @@ class Stage extends Group {
23382
23438
  this.window.release();
23383
23439
  (_a = this._ticker) === null || _a === void 0 ? void 0 : _a.remTimeline(this === null || this === void 0 ? void 0 : this.timeline);
23384
23440
  (_b = this._ticker) === null || _b === void 0 ? void 0 : _b.removeListener('tick', this.afterTickCb);
23441
+ if (!this.params.ticker) {
23442
+ (_d = this._ticker) === null || _d === void 0 ? void 0 : _d.release();
23443
+ }
23385
23444
  this.renderService.renderTreeRoots = [];
23386
23445
  }
23387
23446
  setStage(stage) {
package/es/common/diff.js CHANGED
@@ -8,4 +8,5 @@ export function diff(oldAttrs, newAttrs, getAttr) {
8
8
  void 0 !== value && (diffObj[key] = value);
9
9
  }
10
10
  return diffObj;
11
- }
11
+ }
12
+ //# sourceMappingURL=diff.js.map
@@ -1,6 +1,9 @@
1
1
  import type { IEventListenerManager } from '../interface/event-listener-manager';
2
2
  export declare class EventListenerManager implements IEventListenerManager {
3
- protected _listenerMap: Map<string, Map<EventListenerOrEventListenerObject, EventListener>>;
3
+ protected _listenerMap: Map<string, Map<EventListenerOrEventListenerObject, Map<boolean, {
4
+ wrappedListener: EventListener;
5
+ options?: boolean | AddEventListenerOptions;
6
+ }>>>;
4
7
  protected _eventListenerTransformer: (event: Event) => Event;
5
8
  constructor();
6
9
  setEventListenerTransformer(transformer: (event: Event) => Event): void;
@@ -8,6 +11,20 @@ export declare class EventListenerManager implements IEventListenerManager {
8
11
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
9
12
  dispatchEvent(event: Event): boolean;
10
13
  clearAllEventListeners(): void;
14
+ protected _resolveCapture(options?: boolean | EventListenerOptions | AddEventListenerOptions): boolean;
15
+ protected _resolveOnce(options?: boolean | AddEventListenerOptions): boolean;
16
+ protected _getOrCreateListenerTypeMap(type: string): Map<EventListenerOrEventListenerObject, Map<boolean, {
17
+ wrappedListener: EventListener;
18
+ options?: boolean | AddEventListenerOptions;
19
+ }>>;
20
+ protected _getOrCreateWrappedMap(listenerTypeMap: Map<EventListenerOrEventListenerObject, Map<boolean, {
21
+ wrappedListener: EventListener;
22
+ options?: boolean | AddEventListenerOptions;
23
+ }>>, listener: EventListenerOrEventListenerObject): Map<boolean, {
24
+ wrappedListener: EventListener;
25
+ options?: boolean | AddEventListenerOptions;
26
+ }>;
27
+ protected _deleteListenerRecord(type: string, listener: EventListenerOrEventListenerObject, capture: boolean): void;
11
28
  protected _nativeAddEventListener(type: string, listener: EventListener, options?: boolean | AddEventListenerOptions): void;
12
29
  protected _nativeRemoveEventListener(type: string, listener: EventListener, options?: boolean | EventListenerOptions): void;
13
30
  protected _nativeDispatchEvent(event: Event): boolean;
@@ -7,30 +7,60 @@ export class EventListenerManager {
7
7
  }
8
8
  addEventListener(type, listener, options) {
9
9
  if (!listener) return;
10
+ const capture = this._resolveCapture(options), once = this._resolveOnce(options), listenerTypeMap = this._getOrCreateListenerTypeMap(type), wrappedMap = this._getOrCreateWrappedMap(listenerTypeMap, listener);
11
+ if (wrappedMap.has(capture)) return;
10
12
  const wrappedListener = event => {
11
13
  const transformedEvent = this._eventListenerTransformer(event);
12
- "function" == typeof listener ? listener(transformedEvent) : listener.handleEvent && listener.handleEvent(transformedEvent);
14
+ "function" == typeof listener ? listener(transformedEvent) : listener.handleEvent && listener.handleEvent(transformedEvent),
15
+ once && this._deleteListenerRecord(type, listener, capture);
13
16
  };
14
- this._listenerMap.has(type) || this._listenerMap.set(type, new Map), this._listenerMap.get(type).set(listener, wrappedListener),
15
- this._nativeAddEventListener(type, wrappedListener, options);
17
+ wrappedMap.set(capture, {
18
+ wrappedListener: wrappedListener,
19
+ options: options
20
+ }), this._nativeAddEventListener(type, wrappedListener, options);
16
21
  }
17
22
  removeEventListener(type, listener, options) {
18
- var _a;
23
+ var _a, _b;
19
24
  if (!listener) return;
20
- const wrappedListener = null === (_a = this._listenerMap.get(type)) || void 0 === _a ? void 0 : _a.get(listener);
21
- wrappedListener && (this._nativeRemoveEventListener(type, wrappedListener, options),
22
- this._listenerMap.get(type).delete(listener), 0 === this._listenerMap.get(type).size && this._listenerMap.delete(type));
25
+ const capture = this._resolveCapture(options), wrappedRecord = null === (_b = null === (_a = this._listenerMap.get(type)) || void 0 === _a ? void 0 : _a.get(listener)) || void 0 === _b ? void 0 : _b.get(capture);
26
+ wrappedRecord && (this._nativeRemoveEventListener(type, wrappedRecord.wrappedListener, capture),
27
+ this._deleteListenerRecord(type, listener, capture));
23
28
  }
24
29
  dispatchEvent(event) {
25
30
  return this._nativeDispatchEvent(event);
26
31
  }
27
32
  clearAllEventListeners() {
28
- this._listenerMap.forEach(((listenersMap, type) => {
29
- listenersMap.forEach(((wrappedListener, originalListener) => {
30
- this._nativeRemoveEventListener(type, wrappedListener, void 0);
33
+ this._listenerMap.forEach(((listenerMap, type) => {
34
+ listenerMap.forEach((wrappedMap => {
35
+ wrappedMap.forEach(((wrappedRecord, capture) => {
36
+ this._nativeRemoveEventListener(type, wrappedRecord.wrappedListener, capture);
37
+ }));
31
38
  }));
32
39
  })), this._listenerMap.clear();
33
40
  }
41
+ _resolveCapture(options) {
42
+ return "boolean" == typeof options ? options : !!(null == options ? void 0 : options.capture);
43
+ }
44
+ _resolveOnce(options) {
45
+ return "object" == typeof options && !!(null == options ? void 0 : options.once);
46
+ }
47
+ _getOrCreateListenerTypeMap(type) {
48
+ let listenerTypeMap = this._listenerMap.get(type);
49
+ return listenerTypeMap || (listenerTypeMap = new Map, this._listenerMap.set(type, listenerTypeMap)),
50
+ listenerTypeMap;
51
+ }
52
+ _getOrCreateWrappedMap(listenerTypeMap, listener) {
53
+ let wrappedMap = listenerTypeMap.get(listener);
54
+ return wrappedMap || (wrappedMap = new Map, listenerTypeMap.set(listener, wrappedMap)),
55
+ wrappedMap;
56
+ }
57
+ _deleteListenerRecord(type, listener, capture) {
58
+ const listenerTypeMap = this._listenerMap.get(type);
59
+ if (!listenerTypeMap) return;
60
+ const wrappedMap = listenerTypeMap.get(listener);
61
+ wrappedMap && (wrappedMap.delete(capture), 0 === wrappedMap.size && listenerTypeMap.delete(listener),
62
+ 0 === listenerTypeMap.size && this._listenerMap.delete(type));
63
+ }
34
64
  _nativeAddEventListener(type, listener, options) {
35
65
  throw new Error("_nativeAddEventListener must be implemented by derived classes");
36
66
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/event-listener-manager.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,oBAAoB;IAY/B;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;IAClD,CAAC;IAMD,2BAA2B,CAAC,WAAoC;QAC9D,IAAI,CAAC,yBAAyB,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAQD,gBAAgB,CACd,IAAY,EACZ,QAA4C,EAC5C,OAA2C;QAE3C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAGD,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,EAAE;YACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;aAC5B;iBAAM,IAAI,QAAQ,CAAC,WAAW,EAAE;gBAC/B,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;aACxC;QACH,CAAC,CAAC;QAGF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAG5D,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAQD,mBAAmB,CACjB,IAAY,EACZ,QAA4C,EAC5C,OAAwC;;QAExC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAGD,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,0CAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,eAAe,EAAE;YAEnB,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YAGhE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;SACF;IACH,CAAC;IAMD,aAAa,CAAC,KAAY;QACxB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAKD,sBAAsB;QACpB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE;YAC/C,YAAY,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,gBAAgB,EAAE,EAAE;gBACzD,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAMS,uBAAuB,CAC/B,IAAY,EACZ,QAAuB,EACvB,OAA2C;QAE3C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IAMS,0BAA0B,CAClC,IAAY,EACZ,QAAuB,EACvB,OAAwC;QAExC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAMS,oBAAoB,CAAC,KAAY;QACzC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;CACF","file":"event-listener-manager.js","sourcesContent":["import type { IEventListenerManager } from '../interface/event-listener-manager';\n\n/**\n * Base class to manage event listeners with support for event transformation\n * Used by DefaultGlobal and DefaultWindow to handle the transformation of event coordinates\n */\nexport class EventListenerManager implements IEventListenerManager {\n /**\n * Map that stores the mapping from original listeners to wrapped listeners\n * Structure: Map<eventType, Map<originalListener, wrappedListener>>\n */\n protected _listenerMap: Map<string, Map<EventListenerOrEventListenerObject, EventListener>>;\n\n /**\n * Transformer function that transforms the event\n */\n protected _eventListenerTransformer: (event: Event) => Event;\n\n constructor() {\n this._listenerMap = new Map();\n this._eventListenerTransformer = event => event; // Default: no transformation\n }\n\n /**\n * Set the event transformer function\n * @param transformer Function that transforms events\n */\n setEventListenerTransformer(transformer: (event: Event) => Event): void {\n this._eventListenerTransformer = transformer || (event => event);\n }\n\n /**\n * Add an event listener with event transformation\n * @param type Event type\n * @param listener Original event listener\n * @param options Event listener options\n */\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!listener) {\n return;\n }\n\n // Create a wrapped listener that applies the transformation\n const wrappedListener = (event: Event) => {\n const transformedEvent = this._eventListenerTransformer(event);\n if (typeof listener === 'function') {\n listener(transformedEvent);\n } else if (listener.handleEvent) {\n listener.handleEvent(transformedEvent);\n }\n };\n\n // Store the mapping between original and wrapped listener\n if (!this._listenerMap.has(type)) {\n this._listenerMap.set(type, new Map());\n }\n this._listenerMap.get(type)!.set(listener, wrappedListener);\n\n // Add the wrapped listener\n this._nativeAddEventListener(type, wrappedListener, options);\n }\n\n /**\n * Remove an event listener\n * @param type Event type\n * @param listener Event listener to remove\n * @param options Event listener options\n */\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!listener) {\n return;\n }\n\n // Get the wrapped listener from our map\n const wrappedListener = this._listenerMap.get(type)?.get(listener);\n if (wrappedListener) {\n // Remove the wrapped listener\n this._nativeRemoveEventListener(type, wrappedListener, options);\n\n // Remove from our map\n this._listenerMap.get(type)!.delete(listener);\n if (this._listenerMap.get(type)!.size === 0) {\n this._listenerMap.delete(type);\n }\n }\n }\n\n /**\n * Dispatch an event\n * @param event Event to dispatch\n */\n dispatchEvent(event: Event): boolean {\n return this._nativeDispatchEvent(event);\n }\n\n /**\n * Clear all event listeners\n */\n clearAllEventListeners(): void {\n this._listenerMap.forEach((listenersMap, type) => {\n listenersMap.forEach((wrappedListener, originalListener) => {\n this._nativeRemoveEventListener(type, wrappedListener, undefined);\n });\n });\n this._listenerMap.clear();\n }\n\n /**\n * Native implementation of addEventListener\n * To be implemented by derived classes\n */\n protected _nativeAddEventListener(\n type: string,\n listener: EventListener,\n options?: boolean | AddEventListenerOptions\n ): void {\n throw new Error('_nativeAddEventListener must be implemented by derived classes');\n }\n\n /**\n * Native implementation of removeEventListener\n * To be implemented by derived classes\n */\n protected _nativeRemoveEventListener(\n type: string,\n listener: EventListener,\n options?: boolean | EventListenerOptions\n ): void {\n throw new Error('_nativeRemoveEventListener must be implemented by derived classes');\n }\n\n /**\n * Native implementation of dispatchEvent\n * To be implemented by derived classes\n */\n protected _nativeDispatchEvent(event: Event): boolean {\n throw new Error('_nativeDispatchEvent must be implemented by derived classes');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/event-listener-manager.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,oBAAoB;IAkB/B;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;IAClD,CAAC;IAMD,2BAA2B,CAAC,WAAoC;QAC9D,IAAI,CAAC,yBAAyB,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAQD,gBAAgB,CACd,IAAY,EACZ,QAA4C,EAC5C,OAA2C;QAE3C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAG1E,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO;SACR;QAGD,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,EAAE;YACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;aAC5B;iBAAM,IAAI,QAAQ,CAAC,WAAW,EAAE;gBAC/B,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;aACxC;YAGD,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;aACrD;QACH,CAAC,CAAC;QAGF,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;QAGtD,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAQD,mBAAmB,CACjB,IAAY,EACZ,QAA4C,EAC5C,OAAwC;;QAExC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAA,MAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,0CAAE,GAAG,CAAC,QAAQ,CAAC,0CAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,aAAa,EAAE;YAEjB,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9E,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SACrD;IACH,CAAC;IAMD,aAAa,CAAC,KAAY;QACxB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAKD,sBAAsB;QACpB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE;YAC9C,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC/B,UAAU,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE;oBAC5C,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAES,eAAe,CAAC,OAAkE;QAC1F,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA,CAAC;IAC5B,CAAC;IAES,YAAY,CAAC,OAA2C;QAChE,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAA,CAAC;IACxD,CAAC;IAES,2BAA2B,CACnC,IAAY;QAKZ,IAAI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,EAAE;YACpB,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;SAC9C;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAES,sBAAsB,CAC9B,eAGC,EACD,QAA4C;QAE5C,IAAI,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC3C;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,qBAAqB,CAAC,IAAY,EAAE,QAA4C,EAAE,OAAgB;QAC1G,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO;SACR;QACD,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;YACzB,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAClC;QACD,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;IAMS,uBAAuB,CAC/B,IAAY,EACZ,QAAuB,EACvB,OAA2C;QAE3C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IAMS,0BAA0B,CAClC,IAAY,EACZ,QAAuB,EACvB,OAAwC;QAExC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAMS,oBAAoB,CAAC,KAAY;QACzC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;CACF","file":"event-listener-manager.js","sourcesContent":["import type { IEventListenerManager } from '../interface/event-listener-manager';\n\n/**\n * Base class to manage event listeners with support for event transformation\n * Used by DefaultGlobal and DefaultWindow to handle the transformation of event coordinates\n */\nexport class EventListenerManager implements IEventListenerManager {\n /**\n * Map that stores the mapping from original listeners to wrapped listeners\n * Structure: Map<eventType, Map<originalListener, Map<capture, wrappedRecord>>>\n */\n protected _listenerMap: Map<\n string,\n Map<\n EventListenerOrEventListenerObject,\n Map<boolean, { wrappedListener: EventListener; options?: boolean | AddEventListenerOptions }>\n >\n >;\n\n /**\n * Transformer function that transforms the event\n */\n protected _eventListenerTransformer: (event: Event) => Event;\n\n constructor() {\n this._listenerMap = new Map();\n this._eventListenerTransformer = event => event; // Default: no transformation\n }\n\n /**\n * Set the event transformer function\n * @param transformer Function that transforms events\n */\n setEventListenerTransformer(transformer: (event: Event) => Event): void {\n this._eventListenerTransformer = transformer || (event => event);\n }\n\n /**\n * Add an event listener with event transformation\n * @param type Event type\n * @param listener Original event listener\n * @param options Event listener options\n */\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!listener) {\n return;\n }\n\n const capture = this._resolveCapture(options);\n const once = this._resolveOnce(options);\n const listenerTypeMap = this._getOrCreateListenerTypeMap(type);\n const wrappedMap = this._getOrCreateWrappedMap(listenerTypeMap, listener);\n\n // Align with native behavior: adding same (type, listener, capture) repeatedly is a no-op.\n if (wrappedMap.has(capture)) {\n return;\n }\n\n // Create a wrapped listener that applies the transformation\n const wrappedListener = (event: Event) => {\n const transformedEvent = this._eventListenerTransformer(event);\n if (typeof listener === 'function') {\n listener(transformedEvent);\n } else if (listener.handleEvent) {\n listener.handleEvent(transformedEvent);\n }\n\n // Native once listeners are removed automatically after dispatch, clear the mapping as well.\n if (once) {\n this._deleteListenerRecord(type, listener, capture);\n }\n };\n\n // Store the mapping between original and wrapped listener\n wrappedMap.set(capture, { wrappedListener, options });\n\n // Add the wrapped listener\n this._nativeAddEventListener(type, wrappedListener, options);\n }\n\n /**\n * Remove an event listener\n * @param type Event type\n * @param listener Event listener to remove\n * @param options Event listener options\n */\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!listener) {\n return;\n }\n\n const capture = this._resolveCapture(options);\n const wrappedRecord = this._listenerMap.get(type)?.get(listener)?.get(capture);\n if (wrappedRecord) {\n // Remove the wrapped listener\n this._nativeRemoveEventListener(type, wrappedRecord.wrappedListener, capture);\n this._deleteListenerRecord(type, listener, capture);\n }\n }\n\n /**\n * Dispatch an event\n * @param event Event to dispatch\n */\n dispatchEvent(event: Event): boolean {\n return this._nativeDispatchEvent(event);\n }\n\n /**\n * Clear all event listeners\n */\n clearAllEventListeners(): void {\n this._listenerMap.forEach((listenerMap, type) => {\n listenerMap.forEach(wrappedMap => {\n wrappedMap.forEach((wrappedRecord, capture) => {\n this._nativeRemoveEventListener(type, wrappedRecord.wrappedListener, capture);\n });\n });\n });\n this._listenerMap.clear();\n }\n\n protected _resolveCapture(options?: boolean | EventListenerOptions | AddEventListenerOptions): boolean {\n if (typeof options === 'boolean') {\n return options;\n }\n return !!options?.capture;\n }\n\n protected _resolveOnce(options?: boolean | AddEventListenerOptions): boolean {\n return typeof options === 'object' && !!options?.once;\n }\n\n protected _getOrCreateListenerTypeMap(\n type: string\n ): Map<\n EventListenerOrEventListenerObject,\n Map<boolean, { wrappedListener: EventListener; options?: boolean | AddEventListenerOptions }>\n > {\n let listenerTypeMap = this._listenerMap.get(type);\n if (!listenerTypeMap) {\n listenerTypeMap = new Map();\n this._listenerMap.set(type, listenerTypeMap);\n }\n return listenerTypeMap;\n }\n\n protected _getOrCreateWrappedMap(\n listenerTypeMap: Map<\n EventListenerOrEventListenerObject,\n Map<boolean, { wrappedListener: EventListener; options?: boolean | AddEventListenerOptions }>\n >,\n listener: EventListenerOrEventListenerObject\n ): Map<boolean, { wrappedListener: EventListener; options?: boolean | AddEventListenerOptions }> {\n let wrappedMap = listenerTypeMap.get(listener);\n if (!wrappedMap) {\n wrappedMap = new Map();\n listenerTypeMap.set(listener, wrappedMap);\n }\n return wrappedMap;\n }\n\n protected _deleteListenerRecord(type: string, listener: EventListenerOrEventListenerObject, capture: boolean): void {\n const listenerTypeMap = this._listenerMap.get(type);\n if (!listenerTypeMap) {\n return;\n }\n const wrappedMap = listenerTypeMap.get(listener);\n if (!wrappedMap) {\n return;\n }\n wrappedMap.delete(capture);\n if (wrappedMap.size === 0) {\n listenerTypeMap.delete(listener);\n }\n if (listenerTypeMap.size === 0) {\n this._listenerMap.delete(type);\n }\n }\n\n /**\n * Native implementation of addEventListener\n * To be implemented by derived classes\n */\n protected _nativeAddEventListener(\n type: string,\n listener: EventListener,\n options?: boolean | AddEventListenerOptions\n ): void {\n throw new Error('_nativeAddEventListener must be implemented by derived classes');\n }\n\n /**\n * Native implementation of removeEventListener\n * To be implemented by derived classes\n */\n protected _nativeRemoveEventListener(\n type: string,\n listener: EventListener,\n options?: boolean | EventListenerOptions\n ): void {\n throw new Error('_nativeRemoveEventListener must be implemented by derived classes');\n }\n\n /**\n * Native implementation of dispatchEvent\n * To be implemented by derived classes\n */\n protected _nativeDispatchEvent(event: Event): boolean {\n throw new Error('_nativeDispatchEvent must be implemented by derived classes');\n }\n}\n"]}
@@ -77,5 +77,4 @@ export function mapToCanvasPointForCanvas(nativeEvent) {
77
77
  x: nativeEvent._canvasX || 0,
78
78
  y: nativeEvent._canvasY || 0
79
79
  };
80
- }
81
- //# sourceMappingURL=event-transformer.js.map
80
+ }
@@ -61,4 +61,4 @@ function drawAreaBlock(path, topList, bottomList, params) {
61
61
  }
62
62
  path.closePath();
63
63
  }
64
- //# sourceMappingURL=render-area.js.map
64
+ //# sourceMappingURL=render-area.js.map
@@ -6,4 +6,4 @@ export function renderCommandList(commandList, context, x = 0, y = 0, sx = 1, sy
6
6
  commandFuncs[command[0]](command, context, x, y, sx, sy, z);
7
7
  }
8
8
  }
9
- //# sourceMappingURL=render-command-list.js.map
9
+ //# sourceMappingURL=render-command-list.js.map
@@ -93,4 +93,4 @@ export function drawIncrementalAreaSegments(path, lastSeg, segments, params) {
93
93
  path.closePath();
94
94
  }));
95
95
  }
96
- //# sourceMappingURL=render-curve.js.map
96
+ //# sourceMappingURL=render-curve.js.map
@@ -11,4 +11,4 @@ export function drawSegItem(ctx, curve, endPercent, params) {
11
11
  ctx.lineTo(offsetX + p.x, offsetY + p.y, offsetZ);
12
12
  }
13
13
  }
14
- //# sourceMappingURL=render-utils.js.map
14
+ //# sourceMappingURL=render-utils.js.map
@@ -91,4 +91,4 @@ export class ReflectSegContext extends SegContext {
91
91
  return super.clear();
92
92
  }
93
93
  }
94
- //# sourceMappingURL=seg-context.js.map
94
+ //# sourceMappingURL=seg-context.js.map
@@ -29,4 +29,5 @@ function simplifyDouglasPeucker(points, sqTolerance) {
29
29
  export function flatten_simplify(points, tolerance, highestQuality) {
30
30
  if (points.length <= 10) return points;
31
31
  return points = highestQuality ? points : simplifyRadialDist(points, void 0 !== tolerance ? tolerance * tolerance : 1);
32
- }
32
+ }
33
+ //# sourceMappingURL=simplify.js.map
package/es/common/sort.js CHANGED
@@ -94,4 +94,4 @@ export function findNextGraphic(graphic, id, defaultZIndex, reverse = !1) {
94
94
  !1)), reverse);
95
95
  return result;
96
96
  }
97
- //# sourceMappingURL=sort.js.map
97
+ //# sourceMappingURL=sort.js.map
@@ -248,4 +248,4 @@ export const splitPath = (path, count) => {
248
248
  }
249
249
  return res;
250
250
  };
251
- //# sourceMappingURL=split-path.js.map
251
+ //# sourceMappingURL=split-path.js.map
@@ -1,2 +1,2 @@
1
1
  class StageStore {}
2
- //# sourceMappingURL=store.js.map
2
+ //# sourceMappingURL=store.js.map
package/es/common/text.js CHANGED
@@ -24,4 +24,4 @@ export function textAttributesToStyle(attrs) {
24
24
  attrs.underline ? style["text-decoration"] = "underline" : attrs.lineThrough && (style["text-decoration"] = "line-through"),
25
25
  attrs.fill && isString(attrs.fill) && (style.color = attrs.fill), style;
26
26
  }
27
- //# sourceMappingURL=text.js.map
27
+ //# sourceMappingURL=text.js.map
@@ -148,4 +148,4 @@ export const calculateLineHeight = (lineHeight, fontSize) => {
148
148
  const _lh = _calculateLineHeight(lineHeight, fontSize);
149
149
  return isNaN(_lh) ? _lh : Math.max(fontSize, _lh);
150
150
  };
151
- //# sourceMappingURL=utils.js.map
151
+ //# sourceMappingURL=utils.js.map
@@ -9,4 +9,4 @@ export const StaticLayerHandlerContribution = Symbol.for("StaticLayerHandlerCont
9
9
  export const DynamicLayerHandlerContribution = Symbol.for("DynamicLayerHandlerContribution");
10
10
 
11
11
  export const VirtualLayerHandlerContribution = Symbol.for("VirtualLayerHandlerContribution");
12
- //# sourceMappingURL=constants.js.map
12
+ //# sourceMappingURL=constants.js.map
@@ -17,4 +17,4 @@ export default new ContainerModule((bind => {
17
17
  bind(GraphicUtil).to(DefaultGraphicUtil).inSingletonScope(), bind(TransformUtil).to(DefaultTransformUtil).inSingletonScope(),
18
18
  bind(LayerService).to(DefaultLayerService).inSingletonScope();
19
19
  }));
20
- //# sourceMappingURL=core-modules.js.map
20
+ //# sourceMappingURL=core-modules.js.map
@@ -1,3 +1 @@
1
-
2
-
3
1
  //# sourceMappingURL=global-module.js.map
package/es/core/global.js CHANGED
@@ -238,4 +238,4 @@ let DefaultGlobal = class extends EventListenerManager {
238
238
  DefaultGlobal = __decorate([ injectable(), __param(0, inject(ContributionProvider)), __param(0, named(EnvContribution)), __metadata("design:paramtypes", [ Object ]) ], DefaultGlobal);
239
239
 
240
240
  export { DefaultGlobal };
241
- //# sourceMappingURL=global.js.map
241
+ //# sourceMappingURL=global.js.map
@@ -189,4 +189,4 @@ let DefaultTransformUtil = class {
189
189
  DefaultTransformUtil = __decorate([ injectable(), __metadata("design:paramtypes", []) ], DefaultTransformUtil);
190
190
 
191
191
  export { DefaultTransformUtil };
192
- //# sourceMappingURL=graphic-utils.js.map
192
+ //# sourceMappingURL=graphic-utils.js.map
package/es/core/index.js CHANGED
@@ -15,4 +15,4 @@ export * from "./layer-service";
15
15
  export * from "./constants";
16
16
 
17
17
  export * from "../interface/core";
18
- //# sourceMappingURL=index.js.map
18
+ //# sourceMappingURL=index.js.map
@@ -82,5 +82,4 @@ let DefaultLayerService = DefaultLayerService_1 = class {
82
82
  DefaultLayerService.idprefix = "visactor_layer", DefaultLayerService.prefix_count = 0,
83
83
  DefaultLayerService = DefaultLayerService_1 = __decorate([ injectable(), __metadata("design:paramtypes", []) ], DefaultLayerService);
84
84
 
85
- export { DefaultLayerService };
86
- //# sourceMappingURL=layer-service.js.map
85
+ export { DefaultLayerService };
package/es/core/layer.js CHANGED
@@ -112,4 +112,4 @@ export class Layer extends Group {
112
112
  }, params)), this.afterDrawCbs.forEach((c => c(this)));
113
113
  }
114
114
  }
115
- //# sourceMappingURL=layer.js.map
115
+ //# sourceMappingURL=layer.js.map
package/es/core/light.js CHANGED
@@ -23,4 +23,4 @@ export class DirectionalLight {
23
23
  export const registerDirectionalLight = () => {
24
24
  Factory.registerPlugin("DirectionalLight", DirectionalLight);
25
25
  };
26
- //# sourceMappingURL=light.js.map
26
+ //# sourceMappingURL=light.js.map
package/es/core/stage.js CHANGED
@@ -499,7 +499,7 @@ export class Stage extends Group {
499
499
  throw new Error("暂不支持");
500
500
  }
501
501
  release() {
502
- var _a, _b;
502
+ var _a, _b, _d;
503
503
  super.release(), this.hooks.beforeRender.unTap("constructor", this.beforeRender),
504
504
  this.hooks.afterRender.unTap("constructor", this.afterRender), this.eventSystem && this.eventSystem.release(),
505
505
  this.layerService.releaseStage(this), this.pluginService.release(), this.forEach((layer => {
@@ -508,6 +508,7 @@ export class Stage extends Group {
508
508
  item.setStage && item.setStage(null, null), this.interactiveLayer.removeChild(item);
509
509
  })), this.interactiveLayer.release()), this.window.release(), null === (_a = this._ticker) || void 0 === _a || _a.remTimeline(null == this ? void 0 : this.timeline),
510
510
  null === (_b = this._ticker) || void 0 === _b || _b.removeListener("tick", this.afterTickCb),
511
+ this.params.ticker || null === (_d = this._ticker) || void 0 === _d || _d.release(),
511
512
  this.renderService.renderTreeRoots = [];
512
513
  }
513
514
  setStage(stage) {}
@@ -577,4 +578,4 @@ export class Stage extends Group {
577
578
  this.renderService.reInit(), this.pickerService.reInit();
578
579
  }
579
580
  }
580
- //# sourceMappingURL=stage.js.map
581
+ //# sourceMappingURL=stage.js.map