1 | import { __extends } from "tslib";
|
2 | import { Dictionary } from "./utils/Dictionary";
|
3 | import { TargetedEventDispatcher } from "./utils/EventDispatcher";
|
4 | import { MultiDisposer, CounterDisposer } from "./utils/Disposer";
|
5 | import * as $utils from "./utils/Utils";
|
6 | import * as $object from "./utils/Object";
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | var SpriteEventDispatcher = (function (_super) {
|
13 | __extends(SpriteEventDispatcher, _super);
|
14 | function SpriteEventDispatcher() {
|
15 | var _this = _super !== null && _super.apply(this, arguments) || this;
|
16 | |
17 |
|
18 |
|
19 |
|
20 |
|
21 | _this._interactionEvents = new Dictionary();
|
22 | return _this;
|
23 | }
|
24 | |
25 |
|
26 |
|
27 |
|
28 |
|
29 | SpriteEventDispatcher.prototype._dispatchSpriteEvent = function (ev) {
|
30 | if (this.target.disabled || this.target.isTemplate) {
|
31 | return;
|
32 | }
|
33 |
|
34 | if (this.target.events.isEnabled(ev.type)) {
|
35 | var imev = $object.merge(ev, {
|
36 | target: this.target
|
37 | });
|
38 | this.target.events.dispatchImmediately(imev.type, imev);
|
39 | }
|
40 | };
|
41 | |
42 |
|
43 |
|
44 |
|
45 |
|
46 | SpriteEventDispatcher.prototype._dispatchSpritePointEvent = function (ev) {
|
47 | if (this.target.disabled || this.target.isTemplate) {
|
48 | return;
|
49 | }
|
50 |
|
51 | if (this.target.events.isEnabled(ev.type)) {
|
52 | var imev = $object.merge(ev, {
|
53 | target: this.target,
|
54 | spritePoint: ev.point ? $utils.documentPointToSprite(ev.point, this.target) : undefined,
|
55 | svgPoint: this.target.getSvgPoint(ev.point)
|
56 | });
|
57 | this.target.events.dispatchImmediately(imev.type, imev);
|
58 | }
|
59 | };
|
60 | |
61 |
|
62 |
|
63 |
|
64 |
|
65 | SpriteEventDispatcher.prototype._addInteractionObjectEvent = function (type, callback, context, shouldClone) {
|
66 | var _this = this;
|
67 | var key = shouldClone + "-" + type;
|
68 | var counter = this._interactionEvents.insertKeyIfEmpty(key, function () {
|
69 | var disposer = _this.target.interactions.events.on(type, callback, context, shouldClone);
|
70 | return new CounterDisposer(function () {
|
71 | _this._interactionEvents.removeKey(key);
|
72 | disposer.dispose();
|
73 | });
|
74 | });
|
75 | return counter.increment();
|
76 | };
|
77 | |
78 |
|
79 |
|
80 |
|
81 |
|
82 | SpriteEventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {
|
83 | var info = _super.prototype._on.call(this, once, type, callback, context, shouldClone, dispatch);
|
84 | var disposers = [info.disposer];
|
85 | |
86 |
|
87 |
|
88 |
|
89 | switch (type) {
|
90 | case "hit":
|
91 | case "track":
|
92 | case "doublehit":
|
93 | case "wheel":
|
94 | case "wheelup":
|
95 | case "wheeldown":
|
96 | case "wheelleft":
|
97 | case "wheelright":
|
98 | disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpritePointEvent, this, shouldClone));
|
99 | break;
|
100 | case "rightclick":
|
101 | case "down":
|
102 |
|
103 | case "up":
|
104 | case "drag":
|
105 | case "dragged":
|
106 | case "dragstart":
|
107 | case "dragstop":
|
108 | case "over":
|
109 | case "out":
|
110 | case "swipe":
|
111 | case "swipeleft":
|
112 | case "swiperight":
|
113 | case "resize":
|
114 |
|
115 | case "focus":
|
116 | case "blur":
|
117 | case "toggled":
|
118 | disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpriteEvent, this, shouldClone));
|
119 | break;
|
120 | }
|
121 | |
122 |
|
123 |
|
124 |
|
125 |
|
126 | switch (type) {
|
127 | case "hit":
|
128 | case "doublehit":
|
129 | case "rightclick":
|
130 | case "down":
|
131 | case "up":
|
132 | this.target.clickable = true;
|
133 | break;
|
134 | case "toggled":
|
135 | this.target.togglable = true;
|
136 | break;
|
137 | case "drag":
|
138 | case "dragstart":
|
139 | case "dragstop":
|
140 | this.target.draggable = true;
|
141 | break;
|
142 | case "track":
|
143 | this.target.trackable = true;
|
144 | break;
|
145 | case "resize":
|
146 | this.target.resizable = true;
|
147 | break;
|
148 | case "swipe":
|
149 | case "swipeleft":
|
150 | case "swiperight":
|
151 | this.target.swipeable = true;
|
152 | break;
|
153 | case "wheel":
|
154 | case "wheelup":
|
155 | case "wheeldown":
|
156 | case "wheelleft":
|
157 | case "wheelright":
|
158 | this.target.wheelable = true;
|
159 | break;
|
160 | case "over":
|
161 | this.target.hoverable = true;
|
162 | case "out":
|
163 | this.target.hoverable = true;
|
164 | break;
|
165 | case "focus":
|
166 | case "blur":
|
167 | this.target.focusable = true;
|
168 | break;
|
169 | }
|
170 | info.disposer = new MultiDisposer(disposers);
|
171 | return info;
|
172 | };
|
173 | return SpriteEventDispatcher;
|
174 | }(TargetedEventDispatcher));
|
175 | export { SpriteEventDispatcher };
|
176 |
|
\ | No newline at end of file |