1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
|
var Component_ActionHandler,
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
hasProp = {}.hasOwnProperty;
Component_ActionHandler = (function(superClass) {
extend(Component_ActionHandler, superClass);
/**
* Called if this object instance is restored from a data-bundle. It can be used
* re-assign event-handler, anonymous functions, etc.
*
* @method onDataBundleRestore.
* @param Object data - The data-bundle
* @param gs.ObjectCodecContext context - The codec-context.
*/
Component_ActionHandler.prototype.onDataBundleRestore = function(data, context) {
return this.setupEventHandlers();
};
/**
* An action-handler component allows a UI game object to execute
* actions. An action can be a method-call of a component or of the scene which
* always takes two parameters: Sender and Params. For more info about
* UI actions, see help-file.
*
* @module ui
* @class Component_ActionHandler
* @extends ui.Component_Handler
* @memberof ui
* @constructor
*/
function Component_ActionHandler() {
/**
* @property initialized
* @type boolean
* @protected
*/
this.initialized = false;
/**
* Counter for delayed/timed actions.
* @property waitCounter
* @type number
* @protected
*/
this.waitCounter = 0;
/**
* Indicates if the mouse/touch pointer is inside the UI object's bounds.
* @property contains
* @type boolean
* @protected
*/
this.containsPointer = false;
}
/**
* Disposes the component.
*
* @method dispose
*/
Component_ActionHandler.prototype.dispose = function() {
Component_ActionHandler.__super__.dispose.apply(this, arguments);
gs.GlobalEventManager.offByOwner("keyUp", this.object);
gs.GlobalEventManager.offByOwner("mouseUp", this.object);
return gs.GlobalEventManager.offByOwner("mouseMoved", this.object);
};
/**
* Adds event-handler for mouse/touch events to update the component only if
* a user-action happened.
*
* @method setupEventHandlers
*/
Component_ActionHandler.prototype.setupEventHandlers = function() {
var ref;
gs.GlobalEventManager.offByOwner("keyUp", this.object);
gs.GlobalEventManager.offByOwner("mouseUp", this.object);
gs.GlobalEventManager.offByOwner("mouseMoved", this.object);
if (this.object.focusable) {
gs.GlobalEventManager.on("keyUp", ((function(_this) {
return function(e) {
if (Input.release(Input.KEY_RETURN) && _this.object.ui.focused) {
_this.object.needsUpdate = true;
return _this.executeActions();
}
};
})(this)), null, this.object);
}
gs.GlobalEventManager.on("mouseUp", ((function(_this) {
return function(e) {
var action, actions, contains, exec, i, len;
contains = Rect.contains(_this.object.dstRect.x, _this.object.dstRect.y, _this.object.dstRect.width, _this.object.dstRect.height, Input.Mouse.x - _this.object.origin.x, Input.Mouse.y - _this.object.origin.y);
if (contains) {
exec = false;
actions = actions || _this.object.actions;
if (actions != null) {
for (i = 0, len = actions.length; i < len; i++) {
action = actions[i];
exec = _this.checkAction(action) && !_this.checkActionWait(action);
if (exec) {
break;
}
}
}
if (exec) {
e.breakChain = true;
_this.executeActions();
}
return _this.object.needsUpdate = true;
}
};
})(this)), null, this.object);
if ((ref = this.object.actions) != null ? ref.first(function(a) {
return a && (a.event === "onMouseEnter" || a.event === "onMouseLeave" || a.event === "onMouseHover");
}) : void 0) {
gs.GlobalEventManager.on("mouseMoved", ((function(_this) {
return function(e) {
var contains;
contains = Rect.contains(_this.object.dstRect.x, _this.object.dstRect.y, _this.object.dstRect.width, _this.object.dstRect.height, Input.Mouse.x - _this.object.origin.x, Input.Mouse.y - _this.object.origin.y);
if (_this.containsPointer !== contains) {
_this.containsPointer = contains;
return _this.object.needsUpdate = true;
}
};
})(this)), null, this.object);
}
return this.object.events.on("action", (function(_this) {
return function(e) {
if (e.actions || e.action) {
return _this.executeAction(e.actions != null ? e.actions[0] : e.action);
}
};
})(this));
};
/**
* Sets up associated actions. Each action is validated and specific default values for the action-target
* and other options are set if not specified.
*
* @method setupActions
*/
Component_ActionHandler.prototype.setupActions = function() {
var action, component, i, len, ref, results, target, targets;
if (this.object.actions != null) {
ref = this.object.actions;
results = [];
for (i = 0, len = ref.length; i < len; i++) {
action = ref[i];
if (!action) {
continue;
}
if (!action.event) {
action.event = "onAction";
}
if (action.wait != null) {
continue;
}
if (action.target == null) {
action.target = this.object.controller;
}
if (typeof action.target === "string") {
if (action.target.contains(".")) {
action.target = ui.Component_FormulaHandler.fieldValue(this.object, action.target);
}
targets = action.target.split(".");
target = gs.ObjectManager.current.objectById(targets[0]);
if (target != null) {
component = target.findComponentById(targets[1]);
if (component == null) {
target = target.components.where(function(v) {
return typeof v[action.name] === "function";
}).first();
} else {
target = component;
}
} else {
target = this.object;
}
action.target = target;
}
if (action.condition != null) {
action.conditions = [action.condition];
results.push(delete action.condition);
} else {
results.push(void 0);
}
}
return results;
}
};
/**
* Initializes the action-handler.
*
* @method setup
*/
Component_ActionHandler.prototype.setup = function() {
this.initialized = true;
this.setupEventHandlers();
return this.setupActions();
};
/**
* Updates the action-handler.
*
* @method update
*/
Component_ActionHandler.prototype.update = function() {};
Component_ActionHandler.prototype.checkAction = function(action) {
return ((action != null ? action.event : void 0) || (action != null ? action.events : void 0)) && this.checkObject(action);
};
Component_ActionHandler.prototype.checkActionWait = function(action) {
var result;
result = false;
if ((action.wait != null) && action.wait > 0) {
this.waitCounter = action.wait;
action.wait = 0;
result = true;
}
return result;
};
Component_ActionHandler.prototype.updateActionTarget = function(action) {
var component, target, targets;
if (action.target == null) {
action.target = this.object.controller;
}
if (action.target.exec || typeof action.target === "string") {
if (action.target.exec) {
action.target = ui.Component_FormulaHandler.fieldValue(this.object, action.target);
}
targets = action.target.split(".");
target = gs.ObjectManager.current.objectById(targets[0]);
if (target != null) {
component = target.findComponentById(targets[1]);
if (component == null) {
target = target.components.where(function(v) {
return typeof v[action.name] === "function";
}).first();
} else {
target = component;
}
} else {
target = this.object;
}
return action.target = target;
}
};
Component_ActionHandler.prototype.canExecuteActions = function() {
return this.waitCounter <= 0 && this.object.ui.enabled && this.object.visible;
};
/**
* Executes the specified actions. A single action is only executed if
* all assigned events and conditions are true.
*
* @method executeActions
* @return If <b>true</b> there was at least one action executed. Otherwise <b>false</b>
*/
Component_ActionHandler.prototype.executeActions = function(actions) {
var action, i, len, result;
if (!this.canExecuteActions()) {
return;
}
result = false;
actions = actions || this.object.actions;
if (actions != null) {
for (i = 0, len = actions.length; i < len; i++) {
action = actions[i];
if (!this.checkAction(action)) {
continue;
}
if (this.checkActionWait(action)) {
break;
}
this.updateActionTarget(action);
this.executeAction(action);
result = true;
}
}
return result;
};
/**
* Executes the specified action if all assigned events and conditions
* are true.
*
* @method executeAction
* @param {Object} action The action to execute.
*/
Component_ActionHandler.prototype.executeAction = function(action) {
var name, target;
target = action.target || this.object.target;
if (target != null) {
if (action.sound) {
AudioManager.playSound(action.sound);
}
return typeof target[name = action.name] === "function" ? target[name](this.object, action.params) : void 0;
}
};
return Component_ActionHandler;
})(ui.Component_Handler);
ui.Component_ActionHandler = Component_ActionHandler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsdUJBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7Ozs7O29DQVFBLG1CQUFBLEdBQXFCLFNBQUMsSUFBRCxFQUFPLE9BQVA7V0FDakIsSUFBQyxDQUFBLGtCQUFELENBQUE7RUFEaUI7OztBQUdyQjs7Ozs7Ozs7Ozs7OztFQVlhLGlDQUFBOztBQUNUOzs7OztJQUtBLElBQUMsQ0FBQSxXQUFELEdBQWU7O0FBRWY7Ozs7OztJQU1BLElBQUMsQ0FBQSxXQUFELEdBQWU7O0FBRWY7Ozs7OztJQU1BLElBQUMsQ0FBQSxlQUFELEdBQW1CO0VBdEJWOzs7QUF5QmI7Ozs7OztvQ0FLQSxPQUFBLEdBQVMsU0FBQTtJQUNMLHNEQUFBLFNBQUE7SUFFQSxFQUFFLENBQUMsa0JBQWtCLENBQUMsVUFBdEIsQ0FBaUMsT0FBakMsRUFBMEMsSUFBQyxDQUFBLE1BQTNDO0lBQ0EsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFVBQXRCLENBQWlDLFNBQWpDLEVBQTRDLElBQUMsQ0FBQSxNQUE3QztXQUNBLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUF0QixDQUFpQyxZQUFqQyxFQUErQyxJQUFDLENBQUEsTUFBaEQ7RUFMSzs7O0FBUVQ7Ozs7Ozs7b0NBTUEsa0JBQUEsR0FBb0IsU0FBQTtBQUNoQixRQUFBO0lBQUEsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFVBQXRCLENBQWlDLE9BQWpDLEVBQTBDLElBQUMsQ0FBQSxNQUEzQztJQUNBLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUF0QixDQUFpQyxTQUFqQyxFQUE0QyxJQUFDLENBQUEsTUFBN0M7SUFDQSxFQUFFLENBQUMsa0JBQWtCLENBQUMsVUFBdEIsQ0FBaUMsWUFBakMsRUFBK0MsSUFBQyxDQUFBLE1BQWhEO0lBR0EsSUFBRyxJQUFDLENBQUEsTUFBTSxDQUFDLFNBQVg7TUFDSSxFQUFFLENBQUMsa0JBQWtCLENB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QUUsQ0FBQyx1QkFBSCxHQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuI1xuIyAgIFNjcmlwdDogQ29tcG9uZW50X0FjdGlvbkhhbmRsZXJcbiNcbiMgICAkJENPUFlSSUdIVCQkXG4jXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmNsYXNzIENvbXBvbmVudF9BY3Rpb25IYW5kbGVyIGV4dGVuZHMgdWkuQ29tcG9uZW50X0hhbmRsZXJcbiAgICAjIyMqXG4gICAgKiBDYWxsZWQgaWYgdGhpcyBvYmplY3QgaW5zdGFuY2UgaXMgcmVzdG9yZWQgZnJvbSBhIGRhdGEtYnVuZGxlLiBJdCBjYW4gYmUgdXNlZFxuICAgICogcmUtYXNzaWduIGV2ZW50LWhhbmRsZXIsIGFub255bW91cyBmdW5jdGlvbnMsIGV0Yy5cbiAgICAqIFxuICAgICogQG1ldGhvZCBvbkRhdGFCdW5kbGVSZXN0b3JlLlxuICAgICogQHBhcmFtIE9iamVjdCBkYXRhIC0gVGhlIGRhdGEtYnVuZGxlXG4gICAgKiBAcGFyYW0gZ3MuT2JqZWN0Q29kZWNDb250ZXh0IGNvbnRleHQgLSBUaGUgY29kZWMtY29udGV4dC5cbiAgICAjIyNcbiAgICBvbkRhdGFCdW5kbGVSZXN0b3JlOiAoZGF0YSwgY29udGV4dCkgLT5cbiAgICAgICAgQHNldHVwRXZlbnRIYW5kbGVycygpXG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIEFuIGFjdGlvbi1oYW5kbGVyIGNvbXBvbmVudCBhbGxvd3MgYSBVSSBnYW1lIG9iamVjdCB0byBleGVjdXRlXG4gICAgKiBhY3Rpb25zLiBBbiBhY3Rpb24gY2FuIGJlIGEgbWV0aG9kLWNhbGwgb2YgYSBjb21wb25lbnQgb3Igb2YgdGhlIHNjZW5lIHdoaWNoXG4gICAgKiBhbHdheXMgdGFrZXMgdHdvIHBhcmFtZXRlcnM6IFNlbmRlciBhbmQgUGFyYW1zLiBGb3IgbW9yZSBpbmZvIGFib3V0XG4gICAgKiBVSSBhY3Rpb25zLCBzZWUgaGVscC1maWxlLlxuICAgICogXG4gICAgKiBAbW9kdWxlIHVpXG4gICAgKiBAY2xhc3MgQ29tcG9uZW50X0FjdGlvbkhhbmRsZXJcbiAgICAqIEBleHRlbmRzIHVpLkNvbXBvbmVudF9IYW5kbGVyXG4gICAgKiBAbWVtYmVyb2YgdWlcbiAgICAqIEBjb25zdHJ1Y3RvclxuICAgICMjI1xuICAgIGNvbnN0cnVjdG9yOiAtPlxuICAgICAgICAjIyMqXG4gICAgICAgICogQHByb3BlcnR5IGluaXRpYWxpemVkXG4gICAgICAgICogQHR5cGUgYm9vbGVhblxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEBpbml0aWFsaXplZCA9IG5vXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQ291bnRlciBmb3IgZGVsYXllZC90aW1lZCBhY3Rpb25zLlxuICAgICAgICAqIEBwcm9wZXJ0eSB3YWl0Q291bnRlclxuICAgICAgICAqIEB0eXBlIG51bWJlclxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEB3YWl0Q291bnRlciA9IDBcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIG1vdXNlL3RvdWNoIHBvaW50ZXIgaXMgaW5zaWRlIHRoZSBVSSBvYmplY3QncyBib3VuZHMuXG4gICAgICAgICogQHByb3BlcnR5IGNvbnRhaW5zXG4gICAgICAgICogQHR5cGUgYm9vbGVhblxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEBjb250YWluc1BvaW50ZXIgPSBub1xuICAgIFxuICAgIFxuICAgICMjIypcbiAgICAqIERpc3Bvc2VzIHRoZSBjb21wb25lbnQuXG4gICAgKlxuICAgICogQG1ldGhvZCBkaXNwb3NlXG4gICAgIyMjXG4gICAgZGlzcG9zZTogLT5cbiAgICAgICAgc3VwZXJcbiAgICAgICAgXG4gICAgICAgIGdzLkdsb2JhbEV2ZW50TWFuYWdlci5vZmZCeU93bmVyKFwia2V5VXBcIiwgQG9iamVjdClcbiAgICAgICAgZ3MuR2xvYmFsRXZlbnRNYW5hZ2VyLm9mZkJ5T3duZXIoXCJtb3VzZVVwXCIsIEBvYmplY3QpXG4gICAgICAgIGdzLkdsb2JhbEV2ZW50TWFuYWdlci5vZmZCeU93bmVyKFwibW91c2VNb3ZlZFwiLCBAb2JqZWN0KVxuICAgICAgICBcbiAgICBcbiAgICAjIyMqXG4gICAgKiBBZGRzIGV2ZW50LWhhbmRsZXIgZm9yIG1vdXNlL3RvdWNoIGV2ZW50cyB0byB1cGRhdGUgdGhlIGNvbXBvbmVudCBvbmx5IGlmIFxuICAgICogYSB1c2VyLWFjdGlvbiBoYXBwZW5lZC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIHNldHVwRXZlbnRIYW5kbGVyc1xuICAgICMjIyBcbiAgICBzZXR1cEV2ZW50SGFuZGxlcnM6IC0+XG4gICAgICAgIGdzLkdsb2JhbEV2ZW50TWFuYWdlci5vZmZCeU93bmVyKFwia2V5VXBcIiwgQG9iamVjdClcbiAgICAgICAgZ3MuR2xvYmFsRXZlbnRNYW5hZ2VyLm9mZkJ5T3duZXIoXCJtb3VzZVVwXCIsIEBvYmplY3QpXG4gICAgICAgIGdzLkdsb2JhbEV2ZW50TWFuYWdlci5vZmZCeU93bmVyKFwibW91c2VNb3ZlZFwiLCBAb2JqZWN0KVxuICAgICAgIFxuICAgICAgICBcbiAgICAgICAgaWYgQG9iamVjdC5mb2N1c2FibGVcbiAgICAgICAgICAgIGdzLkdsb2JhbEV2ZW50TWFuYWdlci5vbiBcImtleVVwXCIsICgoZSkgPT4gXG4gICAgICAgICAgICAgICAgaWYgSW5wdXQucmVsZWFzZShJbnB1dC5LRVlfUkVUVVJOKSBhbmQgQG9iamVjdC51aS5mb2N1c2VkXG4gICAgICAgICAgICAgICAgICAgIEBvYmplY3QubmVlZHNVcGRhdGUgPSB5ZXNcbiAgICAgICAgICAgICAgICAgICAgQGV4ZWN1dGVBY3Rpb25zKClcbiAgICAgICAgICAgICksIG51bGwsIEBvYmplY3RcbiAgICAgICAgXG4gICAgICAgIGdzLkdsb2JhbEV2ZW50TWFuYWdlci5vbiBcIm1vdXNlVXBcIiwgKChlKSA9PiBcbiAgICAgICAgICAgIGNvbnRhaW5zID0gUmVjdC5jb250YWlucyhAb2JqZWN0LmRzdFJlY3QueCwgQG9iamVjdC5kc3RSZWN0LnksIFxuICAgICAgICAgICAgICAgICAgICAgICAgIEBvYmplY3QuZHN0UmVjdC53aWR0aCwgQG9iamVjdC5kc3RSZWN0LmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dC5Nb3VzZS54IC0gQG9iamVjdC5vcmlnaW4ueCwgSW5wdXQuTW91c2UueSAtIEBvYmplY3Qub3JpZ2luLnkpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIGNvbnRhaW5zXG4gICAgICAgICAgICAgICAgZXhlYyA9IG5vXG4gICAgICAgICAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMgfHwgQG9iamVjdC5hY3Rpb25zXG4gICAgICAgICAgICAgICAgaWYgYWN0aW9ucz9cbiAgICAgICAgICAgICAgICAgICAgZm9yIGFjdGlvbiBpbiBhY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICBleGVjID0gQGNoZWNrQWN0aW9uKGFjdGlvbikgYW5kICFAY2hlY2tBY3Rpb25XYWl0KGFjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGlmIGV4ZWNcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmIGV4ZWNcbiAgICAgICAgICAgICAgICAgICAgZS5icmVha0NoYWluID0geWVzXG4gICAgICAgICAgICAgICAgICAgIEBleGVjdXRlQWN0aW9ucygpXG4gICAgICAgICAgICAgICAgQG9iamVjdC5uZWVkc1VwZGF0ZSA9IHllc1xuICAgICAgICAgICAgICAgIFxuICAgICAgICApLCBudWxsLCBAb2JqZWN0XG4gICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgIGlmIEBvYmplY3QuYWN0aW9ucz8uZmlyc3QoKGEpIC0+IGEgYW5kIChhLmV2ZW50ID09IFwib25Nb3VzZUVudGVyXCIgb3IgYS5ldmVudCA9PSBcIm9uTW91c2VMZWF2ZVwiIG9yIGEuZXZlbnQgPT0gXCJvbk1vdXNlSG92ZXJcIikpXG4gICAgICAgICAgICBncy5HbG9iYWxFdmVudE1hbmFnZXIub24gXCJtb3VzZU1vdmVkXCIsICgoZSkgPT5cbiAgICAgICAgICAgICAgICBjb250YWlucyA9IFJlY3QuY29udGFpbnMoQG9iamVjdC5kc3RSZWN0LngsIEBvYmplY3QuZHN0UmVjdC55LCBcbiAgICAgICAgICAgICAgICAgICAgICAgICBAb2JqZWN0LmRzdFJlY3Qud2lkdGgsIEBvYmplY3QuZHN0UmVjdC5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQuTW91c2UueCAtIEBvYmplY3Qub3JpZ2luLngsIElucHV0Lk1vdXNlLnkgLSBAb2JqZWN0Lm9yaWdpbi55KVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgQGNvbnRhaW5zUG9pbnRlciAhPSBjb250YWluc1xuICAgICAgICAgICAgICAgICAgICBAY29udGFpbnNQb2ludGVyID0gY29udGFpbnNcbiAgICAgICAgICAgICAgICAgICAgQG9iamVjdC5uZWVkc1VwZGF0ZSA9IHllc1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG51bGwsIEBvYmplY3RcbiAgICAgICAgICAgIFxuICAgICAgICBAb2JqZWN0LmV2ZW50cy5vbiBcImFjdGlvblwiLCAoZSkgPT5cbiAgICAgICAgICAgIGlmIGUuYWN0aW9ucyBvciBlLmFjdGlvblxuICAgICAgICAgICAgICAgIEBleGVjdXRlQWN0aW9uKGlmIGUuYWN0aW9ucz8gdGhlbiBlLmFjdGlvbnNbMF0gZWxzZSBlLmFjdGlvbilcbiAgICAgXG4gICAgIyMjKlxuICAgICogU2V0cyB1cCBhc3NvY2lhdGVkIGFjdGlvbnMuIEVhY2ggYWN0aW9uIGlzIHZhbGlkYXRlZCBhbmQgc3BlY2lmaWMgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBhY3Rpb24tdGFyZ2V0XG4gICAgKiBhbmQgb3RoZXIgb3B0aW9ucyBhcmUgc2V0IGlmIG5vdCBzcGVjaWZpZWQuXG4gICAgKlxuICAgICogQG1ldGhvZCBzZXR1cEFjdGlvbnNcbiAgICAjIyMgICAgICAgIFxuICAgIHNldHVwQWN0aW9uczogLT5cbiAgICAgICAgaWYgQG9iamVjdC5hY3Rpb25zP1xuICAgICAgICAgICAgZm9yIGFjdGlvbiBpbiBAb2JqZWN0LmFjdGlvbnNcbiAgICAgICAgICAgICAgICBjb250aW51ZSB1bmxlc3MgYWN0aW9uXG4gICAgICAgICAgICAgICAgaWYgbm90IGFjdGlvbi5ldmVudCB0aGVuIGFjdGlvbi5ldmVudCA9IFwib25BY3Rpb25cIlxuICAgICAgICAgICAgICAgIGlmIGFjdGlvbi53YWl0PyB0aGVuIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgaWYgbm90IGFjdGlvbi50YXJnZXQ/IHRoZW4gYWN0aW9uLnRhcmdldCA9IEBvYmplY3QuY29udHJvbGxlclxuICAgICAgICAgICAgICAgIGlmIHR5cGVvZiBhY3Rpb24udGFyZ2V0ID09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgaWYgYWN0aW9uLnRhcmdldC5jb250YWlucyhcIi5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi50YXJnZXQgPSB1aS5Db21wb25lbnRfRm9ybXVsYUhhbmRsZXIuZmllbGRWYWx1ZShAb2JqZWN0LCBhY3Rpb24udGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRzID0gYWN0aW9uLnRhcmdldC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gZ3MuT2JqZWN0TWFuYWdlci5jdXJyZW50Lm9iamVjdEJ5SWQodGFyZ2V0c1swXSlcbiAgICAgICAgICAgICAgICAgICAgaWYgdGFyZ2V0P1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50ID0gdGFyZ2V0LmZpbmRDb21wb25lbnRCeUlkKHRhcmdldHNbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29tcG9uZW50P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5jb21wb25lbnRzLndoZXJlKCh2KSAtPiB0eXBlb2YgdlthY3Rpb24ubmFtZV0gPT0gXCJmdW5jdGlvblwiKS5maXJzdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IEBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnRhcmdldCA9IHRhcmdldFxuICAgICAgICAgICAgICAgIGlmIGFjdGlvbi5jb25kaXRpb24/XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5jb25kaXRpb25zID0gW2FjdGlvbi5jb25kaXRpb25dXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhY3Rpb24uY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgXG4gICAgIyMjKlxuICAgICogSW5pdGlhbGl6ZXMgdGhlIGFjdGlvbi1oYW5kbGVyLlxuICAgICogXG4gICAgKiBAbWV0aG9kIHNldHVwXG4gICAgIyMjXG4gICAgc2V0dXA6IC0+XG4gICAgICAgIEBpbml0aWFsaXplZCA9IHllc1xuICAgICAgICBcbiAgICAgICAgQHNldHVwRXZlbnRIYW5kbGVycygpXG4gICAgICAgIEBzZXR1cEFjdGlvbnMoKSAgICBcbiAgICAgICAgXG4gICAgIyMjKlxuICAgICogVXBkYXRlcyB0aGUgYWN0aW9uLWhhbmRsZXIuXG4gICAgKiBcbiAgICAqIEBtZXRob2QgdXBkYXRlXG4gICAgIyMjXG4gICAgdXBkYXRlOiAtPlxuXG4gICAgICBcbiAgICBjaGVja0FjdGlvbjogKGFjdGlvbikgLT4gKGFjdGlvbj8uZXZlbnQgb3IgYWN0aW9uPy5ldmVudHMpIGFuZCBAY2hlY2tPYmplY3QoYWN0aW9uKVxuICAgIGNoZWNrQWN0aW9uV2FpdDogKGFjdGlvbikgLT5cbiAgICAgICAgcmVzdWx0ID0gbm9cbiAgICAgICAgXG4gICAgICAgIGlmIGFjdGlvbi53YWl0PyBhbmQgYWN0aW9uLndhaXQgPiAwXG4gICAgICAgICAgICBAd2FpdENvdW50ZXIgPSBhY3Rpb24ud2FpdFxuICAgICAgICAgICAgYWN0aW9uLndhaXQgPSAwXG4gICAgICAgICAgICByZXN1bHQgPSB5ZXNcbiAgICAgICAgICAgIFxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgdXBkYXRlQWN0aW9uVGFyZ2V0OiAoYWN0aW9uKSAtPlxuICAgICAgICBpZiBub3QgYWN0aW9uLnRhcmdldD8gdGhlbiBhY3Rpb24udGFyZ2V0ID0gQG9iamVjdC5jb250cm9sbGVyXG4gICAgICAgIGlmIGFjdGlvbi50YXJnZXQuZXhlYyBvciB0eXBlb2YgYWN0aW9uLnRhcmdldCA9PSBcInN0cmluZ1wiXG4gICAgICAgICAgICBpZiBhY3Rpb24udGFyZ2V0LmV4ZWNcbiAgICAgICAgICAgICAgIGFjdGlvbi50YXJnZXQgPSB1aS5Db21wb25lbnRfRm9ybXVsYUhhbmRsZXIuZmllbGRWYWx1ZShAb2JqZWN0LCBhY3Rpb24udGFyZ2V0KVxuICAgICAgICAgICAgdGFyZ2V0cyA9IGFjdGlvbi50YXJnZXQuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICB0YXJnZXQgPSBncy5PYmplY3RNYW5hZ2VyLmN1cnJlbnQub2JqZWN0QnlJZCh0YXJnZXRzWzBdKVxuICAgICAgICAgICAgaWYgdGFyZ2V0P1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IHRhcmdldC5maW5kQ29tcG9uZW50QnlJZCh0YXJnZXRzWzFdKVxuICAgICAgICAgICAgICAgIGlmIG5vdCBjb21wb25lbnQ/XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5jb21wb25lbnRzLndoZXJlKCh2KSAtPiB0eXBlb2YgdlthY3Rpb24ubmFtZV0gPT0gXCJmdW5jdGlvblwiKS5maXJzdCgpXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBjb21wb25lbnRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBAb2JqZWN0XG4gICAgICAgICAgICBhY3Rpb24udGFyZ2V0ID0gdGFyZ2V0XG4gICAgXG4gICAgY2FuRXhlY3V0ZUFjdGlvbnM6IC0+IEB3YWl0Q291bnRlciA8PSAwIGFuZCBAb2JqZWN0LnVpLmVuYWJsZWQgYW5kIEBvYmplY3QudmlzaWJsZSAgICAgICAgIFxuICAgIFxuICAgICMjIypcbiAgICAqIEV4ZWN1dGVzIHRoZSBzcGVjaWZpZWQgYWN0aW9ucy4gQSBzaW5nbGUgYWN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWZcbiAgICAqIGFsbCBhc3NpZ25lZCBldmVudHMgYW5kIGNvbmRpdGlvbnMgYXJlIHRydWUuXG4gICAgKiBcbiAgICAqIEBtZXRob2QgZXhlY3V0ZUFjdGlvbnNcbiAgICAqIEByZXR1cm4gSWYgPGI+dHJ1ZTwvYj4gdGhlcmUgd2FzIGF0IGxlYXN0IG9uZSBhY3Rpb24gZXhlY3V0ZWQuIE90aGVyd2lzZSA8Yj5mYWxzZTwvYj5cbiAgICAjIyNcbiAgICBleGVjdXRlQWN0aW9uczogKGFjdGlvbnMpIC0+XG4gICAgICAgIHJldHVybiBpZiBub3QgQGNhbkV4ZWN1dGVBY3Rpb25zKClcbiAgICAgICAgXG4gICAgICAgIHJlc3VsdCA9IG5vXG4gICAgICAgIGFjdGlvbnMgPSBhY3Rpb25zIHx8IEBvYmplY3QuYWN0aW9uc1xuICAgICAgICBpZiBhY3Rpb25zP1xuICAgICAgICAgICAgZm9yIGFjdGlvbiBpbiBhY3Rpb25zXG4gICAgICAgICAgICAgICAgY29udGludWUgaWYgbm90IEBjaGVja0FjdGlvbihhY3Rpb24pXG4gICAgICAgICAgICAgICAgYnJlYWsgaWYgQGNoZWNrQWN0aW9uV2FpdChhY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIEB1cGRhdGVBY3Rpb25UYXJnZXQoYWN0aW9uKVxuICAgICAgICAgICAgICAgIEBleGVjdXRlQWN0aW9uKGFjdGlvbilcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB5ZXNcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIFxuICAgICMjIypcbiAgICAqIEV4ZWN1dGVzIHRoZSBzcGVjaWZpZWQgYWN0aW9uIGlmIGFsbCBhc3NpZ25lZCBldmVudHMgYW5kIGNvbmRpdGlvbnNcbiAgICAqIGFyZSB0cnVlLlxuICAgICogXG4gICAgKiBAbWV0aG9kIGV4ZWN1dGVBY3Rpb25cbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3Rpb24gVGhlIGFjdGlvbiB0byBleGVjdXRlLlxuICAgICMjIyAgICAgICAgICAgIFxuICAgIGV4ZWN1dGVBY3Rpb246IChhY3Rpb24pIC0+XG4gICAgICAgIHRhcmdldCA9IGFjdGlvbi50YXJnZXQgfHwgQG9iamVjdC50YXJnZXRcbiAgICAgICAgXG4gICAgICAgIGlmIHRhcmdldD8gXG4gICAgICAgICAgICBBdWRpb01hbmFnZXIucGxheVNvdW5kKGFjdGlvbi5zb3VuZCkgaWYgYWN0aW9uLnNvdW5kXG4gICAgICAgICAgICB0YXJnZXRbYWN0aW9uLm5hbWVdPyhAb2JqZWN0LCBhY3Rpb24ucGFyYW1zKVxuICAgICAgICAgICAgXG51aS5Db21wb25lbnRfQWN0aW9uSGFuZGxlciA9IENvbXBvbmVudF9BY3Rpb25IYW5kbGVyIl19
//# sourceURL=Component_ActionHandler_125.js
|