Subversion Repository Public Repository

Nextrek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
    "uid": "7BE82043K96A3A41D6SAAFBEC5EA0135ADF9",
    "isLoaded": true,
    "lastModificationTime": 0,
    "items": {
        "name": "Component_Handler",
        "type": "game_script",
        "order": 8,
        "content": "# ===================================================================\n#\n#   Script: Component_FreeLayoutBehavior\n#\n#   $$COPYRIGHT$$\n#\n# ===================================================================\nclass Component_Handler extends gs.Component\n    ###*\n    * The base class for all handler-components. A handler-component is\n    * used to handle condition- or event-based processes of a In-Game UI\n    * object like executing bindings or triggering actions.\n    *\n    * A handler is only executed if all assigned conditions and events are\n    * true.\n    *\n    * @module ui\n    * @class Component_Handler\n    * @extends gs.Component\n    * @memberof ui\n    * @constructor\n    ###\n    constructor: ->\n        ###*\n        * @property mouseEntered\n        * @type boolean\n        * @protected\n        ###\n        @mouseEntered = no\n        \n        ###*\n        * @property mouseLeaved\n        * @type boolean\n        * @protected\n        ###\n        @mouseLeaved = yes\n     \n    ###*\n    * Checks if the condition is <b>true</b> for the specified game object.\n    *\n    * @method checkCondition\n    * @param {gs.Object_Base} object The game object.\n    * @param {Object} condition The condition-object.\n    * @return {boolean} If <b>true</b> the condition is true. Otherwise <b>false</b>.\n    * @static\n    ###   \n    @checkCondition: (object, condition) ->\n        result = no\n        \n        if condition.equalTo?\n            result = ui.Component_FormulaHandler.fieldValue(object, condition.field) == ui.Component_FormulaHandler.fieldValue(object, condition.equalTo)\n        else if condition.greaterThan?\n            result = ui.Component_FormulaHandler.fieldValue(object, condition.field) > ui.Component_FormulaHandler.fieldValue(object, condition.greaterThan)\n        else if condition.lessThan?\n            result = ui.Component_FormulaHandler.fieldValue(object, condition.field) < ui.Component_FormulaHandler.fieldValue(object, condition.lessThan)\n        else if condition.notEqualTo?\n            result = ui.Component_FormulaHandler.fieldValue(object, condition.field) != ui.Component_FormulaHandler.fieldValue(object, condition.notEqualTo)\n        \n        return result\n     \n    ###*\n    * Checks if the specified condition is <b>true</b>.\n    *\n    * @method checkCondition\n    * @param {Object} condition The condition-object.\n    * @return {boolean} If <b>true</b> the condition is true. Otherwise <b>false</b>.\n    ###     \n    checkCondition: (condition) -> ui.Component_Handler.checkCondition(@object, condition)\n    \n    ###*\n    * Checks if the specified conditions are <b>true</b>.\n    *\n    * @method checkConditions\n    * @param {Object[]} conditions An array of condition-objects.\n    * @return {boolean} If <b>true</b> all conditions are true. Otherwise <b>false</b>.\n    ###\n    checkConditions: (conditions) ->\n        result = yes\n        for condition in conditions\n            if not @checkCondition(condition)\n                result = no\n                break\n                \n        return result\n        \n    ###*\n    * Checks if the specified event is true.\n    *\n    * @method checkEvent\n    * @param {Object} event The event to check for.\n    * @param {Object} [binding=null] binding An optional binding-object necessary for some event-types.\n    * @return {boolean} If <b>true</b> the event is true. Otherwise <b>false</b>.\n    ###  \n    checkEvent: (event, binding) ->\n        result = no\n        \n        #if event == \"onInitialize\" and !SceneManager.scene.preparing\n        #    result = !@initializeEventEmitted\n        #    @initializeEventEmitted = yes\n        if event == \"onAlways\"\n            result = yes\n        else if event == \"onAction\"\n            result = Input.Mouse.buttons[Input.Mouse.LEFT] == 2 and @object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y) \n        else if event == \"onCancel\"\n            result = Input.Mouse.buttons[Input.Mouse.RIGHT] == 2 and @object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y)     \n        else if event == \"onAccept\"\n            result = Input.release(Input.KEY_RETURN) or (Input.Mouse.buttons[Input.Mouse.LEFT] == 2 and @object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y))         \n        else if event == \"onDragEnter\"    \n            entered = @object.dragDrop?.isDragging and @object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y)\n            result = !@mouseEntered and entered\n            @mouseEntered = entered\n        else if event == \"onDragLeave\"\n            leaved = @object.dragDrop?.isDragging and !@object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y)\n            result = !@mouseLeaved and leaved\n            @mouseLeaved = leaved\n        else if event == \"onMouseEnter\"\n            entered = @object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y)\n            result = !@mouseEntered and entered\n            @mouseEntered = entered\n        else if event == \"onMouseLeave\"\n            leaved = !@object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y)\n            result = !@mouseLeaved and leaved\n            @mouseLeaved = leaved\n        else if event == \"onMouseHover\"\n            result = @object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y)\n        else if event == \"onMouseClick\"\n            result = Input.Mouse.buttons[Input.Mouse.LEFT] == 2 and @object.dstRect.contains(Input.Mouse.x - @object.origin.x, Input.Mouse.y - @object.origin.y)\n        else if event.onChange?\n            value = @resolveFieldPath(event.onChange)\n            if value? \n                value = value.get(@object)\n                if binding[event.onChange] != value\n                    binding[event.onChange] = value\n                    result = yes\n            else\n                result = yes\n        \n        \n        return result\n     \n    ###*\n    * Checks if all events and conditions defined for the handler\n    * are true. If that check returns <b>true</b> the handler must be\n    * executed.\n    *\n    * @method checkObject\n    * @param {Object} object The game object to check.\n    * @return {boolean} If <b>true</b> the handler must be executed. Otherwise <b>false</b>.\n    ###     \n    checkObject: (object) ->\n        execute = yes\n            \n        if object.event?\n            object.events = [object.event]\n            delete object.event\n        if object.condition?\n            object.conditions = [object.condition]\n            delete object.condition\n        if object.events?\n            for event in object.events\n                execute = @checkEvent(event, object)\n                if execute then break\n        if object.conditions? and execute\n            execute = @checkConditions(object.conditions)\n        \n        return execute\n\nui.Component_Handler = Component_Handler",
        "parentId": "01A95DA3K01E8A4CB4SBE17E790BCE1FC035",
        "folder": false,
        "compiledContent": "var Component_Handler,\n  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; },\n  hasProp = {}.hasOwnProperty;\n\nComponent_Handler = (function(superClass) {\n  extend(Component_Handler, superClass);\n\n\n  /**\n  * The base class for all handler-components. A handler-component is\n  * used to handle condition- or event-based processes of a In-Game UI\n  * object like executing bindings or triggering actions.\n  *\n  * A handler is only executed if all assigned conditions and events are\n  * true.\n  *\n  * @module ui\n  * @class Component_Handler\n  * @extends gs.Component\n  * @memberof ui\n  * @constructor\n   */\n\n  function Component_Handler() {\n\n    /**\n    * @property mouseEntered\n    * @type boolean\n    * @protected\n     */\n    this.mouseEntered = false;\n\n    /**\n    * @property mouseLeaved\n    * @type boolean\n    * @protected\n     */\n    this.mouseLeaved = true;\n  }\n\n\n  /**\n  * Checks if the condition is <b>true</b> for the specified game object.\n  *\n  * @method checkCondition\n  * @param {gs.Object_Base} object The game object.\n  * @param {Object} condition The condition-object.\n  * @return {boolean} If <b>true</b> the condition is true. Otherwise <b>false</b>.\n  * @static\n   */\n\n  Component_Handler.checkCondition = function(object, condition) {\n    var result;\n    result = false;\n    if (condition.equalTo != null) {\n      result = ui.Component_FormulaHandler.fieldValue(object, condition.field) === ui.Component_FormulaHandler.fieldValue(object, condition.equalTo);\n    } else if (condition.greaterThan != null) {\n      result = ui.Component_FormulaHandler.fieldValue(object, condition.field) > ui.Component_FormulaHandler.fieldValue(object, condition.greaterThan);\n    } else if (condition.lessThan != null) {\n      result = ui.Component_FormulaHandler.fieldValue(object, condition.field) < ui.Component_FormulaHandler.fieldValue(object, condition.lessThan);\n    } else if (condition.notEqualTo != null) {\n      result = ui.Component_FormulaHandler.fieldValue(object, condition.field) !== ui.Component_FormulaHandler.fieldValue(object, condition.notEqualTo);\n    }\n    return result;\n  };\n\n\n  /**\n  * Checks if the specified condition is <b>true</b>.\n  *\n  * @method checkCondition\n  * @param {Object} condition The condition-object.\n  * @return {boolean} If <b>true</b> the condition is true. Otherwise <b>false</b>.\n   */\n\n  Component_Handler.prototype.checkCondition = function(condition) {\n    return ui.Component_Handler.checkCondition(this.object, condition);\n  };\n\n\n  /**\n  * Checks if the specified conditions are <b>true</b>.\n  *\n  * @method checkConditions\n  * @param {Object[]} conditions An array of condition-objects.\n  * @return {boolean} If <b>true</b> all conditions are true. Otherwise <b>false</b>.\n   */\n\n  Component_Handler.prototype.checkConditions = function(conditions) {\n    var condition, i, len, result;\n    result = true;\n    for (i = 0, len = conditions.length; i < len; i++) {\n      condition = conditions[i];\n      if (!this.checkCondition(condition)) {\n        result = false;\n        break;\n      }\n    }\n    return result;\n  };\n\n\n  /**\n  * Checks if the specified event is true.\n  *\n  * @method checkEvent\n  * @param {Object} event The event to check for.\n  * @param {Object} [binding=null] binding An optional binding-object necessary for some event-types.\n  * @return {boolean} If <b>true</b> the event is true. Otherwise <b>false</b>.\n   */\n\n  Component_Handler.prototype.checkEvent = function(event, binding) {\n    var entered, leaved, ref, ref1, result, value;\n    result = false;\n    if (event === \"onAlways\") {\n      result = true;\n    } else if (event === \"onAction\") {\n      result = Input.Mouse.buttons[Input.Mouse.LEFT] === 2 && this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n    } else if (event === \"onCancel\") {\n      result = Input.Mouse.buttons[Input.Mouse.RIGHT] === 2 && this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n    } else if (event === \"onAccept\") {\n      result = Input.release(Input.KEY_RETURN) || (Input.Mouse.buttons[Input.Mouse.LEFT] === 2 && this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y));\n    } else if (event === \"onDragEnter\") {\n      entered = ((ref = this.object.dragDrop) != null ? ref.isDragging : void 0) && this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n      result = !this.mouseEntered && entered;\n      this.mouseEntered = entered;\n    } else if (event === \"onDragLeave\") {\n      leaved = ((ref1 = this.object.dragDrop) != null ? ref1.isDragging : void 0) && !this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n      result = !this.mouseLeaved && leaved;\n      this.mouseLeaved = leaved;\n    } else if (event === \"onMouseEnter\") {\n      entered = this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n      result = !this.mouseEntered && entered;\n      this.mouseEntered = entered;\n    } else if (event === \"onMouseLeave\") {\n      leaved = !this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n      result = !this.mouseLeaved && leaved;\n      this.mouseLeaved = leaved;\n    } else if (event === \"onMouseHover\") {\n      result = this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n    } else if (event === \"onMouseClick\") {\n      result = Input.Mouse.buttons[Input.Mouse.LEFT] === 2 && this.object.dstRect.contains(Input.Mouse.x - this.object.origin.x, Input.Mouse.y - this.object.origin.y);\n    } else if (event.onChange != null) {\n      value = this.resolveFieldPath(event.onChange);\n      if (value != null) {\n        value = value.get(this.object);\n        if (binding[event.onChange] !== value) {\n          binding[event.onChange] = value;\n          result = true;\n        }\n      } else {\n        result = true;\n      }\n    }\n    return result;\n  };\n\n\n  /**\n  * Checks if all events and conditions defined for the handler\n  * are true. If that check returns <b>true</b> the handler must be\n  * executed.\n  *\n  * @method checkObject\n  * @param {Object} object The game object to check.\n  * @return {boolean} If <b>true</b> the handler must be executed. Otherwise <b>false</b>.\n   */\n\n  Component_Handler.prototype.checkObject = function(object) {\n    var event, execute, i, len, ref;\n    execute = true;\n    if (object.event != null) {\n      object.events = [object.event];\n      delete object.event;\n    }\n    if (object.condition != null) {\n      object.conditions = [object.condition];\n      delete object.condition;\n    }\n    if (object.events != null) {\n      ref = object.events;\n      for (i = 0, len = ref.length; i < len; i++) {\n        event = ref[i];\n        execute = this.checkEvent(event, object);\n        if (execute) {\n          break;\n        }\n      }\n    }\n    if ((object.conditions != null) && execute) {\n      execute = this.checkConditions(object.conditions);\n    }\n    return execute;\n  };\n\n  return Component_Handler;\n\n})(gs.Component);\n\nui.Component_Handler = Component_Handler;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsaUJBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7Ozs7Ozs7Ozs7O0VBY2EsMkJBQUE7O0FBQ1Q7Ozs7O0lBS0EsSUFBQyxDQUFBLFlBQUQsR0FBZ0I7O0FBRWhCOzs7OztJQUtBLElBQUMsQ0FBQSxXQUFELEdBQWU7RUFiTjs7O0FBZWI7Ozs7Ozs7Ozs7RUFTQSxpQkFBQyxDQUFBLGNBQUQsR0FBaUIsU0FBQyxNQUFELEVBQVMsU0FBVDtBQUNiLFFBQUE7SUFBQSxNQUFBLEdBQVM7SUFFVCxJQUFHLHlCQUFIO01BQ0ksTUFBQSxHQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUE1QixDQUF1QyxNQUF2QyxFQUErQyxTQUFTLENBQUMsS0FBekQsQ0FBQSxLQUFtRSxFQUFFLENBQUMsd0JBQXdCLENBQUMsVUFBNUIsQ0FBdUMsTUFBdkMsRUFBK0MsU0FBUyxDQUFDLE9BQXpELEVBRGhGO0tBQUEsTUFFSyxJQUFHLDZCQUFIO01BQ0QsTUFBQSxHQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUE1QixDQUF1QyxNQUF2QyxFQUErQyxTQUFTLENBQUMsS0FBekQsQ0FBQSxHQUFrRSxFQUFFLENBQUMsd0JBQXdCLENBQUMsVUFBNUIsQ0FBdUMsTUFBdkMsRUFBK0MsU0FBUyxDQUFDLFdBQXpELEVBRDFFO0tBQUEsTUFFQSxJQUFHLDBCQUFIO01BQ0QsTUFBQSxHQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUE1QixDQUF1QyxNQUF2QyxFQUErQyxTQUFTLENBQUMsS0FBekQsQ0FBQSxHQUFrRSxFQUFFLENBQUMsd0JBQXdCLENBQUMsVUFBNUIsQ0FBdUMsTUFBdkMsRUFBK0MsU0FBUyxDQUFDLFFBQXpELEVBRDFFO0tBQUEsTUFFQSxJQUFHLDRCQUFIO01BQ0QsTUFBQSxHQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUE1QixDQUF1QyxN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LEdBQVMsS0FOYjtPQUZDOztBQVdMLFdBQU87RUE3Q0M7OztBQStDWjs7Ozs7Ozs7Ozs4QkFTQSxXQUFBLEdBQWEsU0FBQyxNQUFEO0FBQ1QsUUFBQTtJQUFBLE9BQUEsR0FBVTtJQUVWLElBQUcsb0JBQUg7TUFDSSxNQUFNLENBQUMsTUFBUCxHQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFSO01BQ2hCLE9BQU8sTUFBTSxDQUFDLE1BRmxCOztJQUdBLElBQUcsd0JBQUg7TUFDSSxNQUFNLENBQUMsVUFBUCxHQUFvQixDQUFDLE1BQU0sQ0FBQyxTQUFSO01BQ3BCLE9BQU8sTUFBTSxDQUFDLFVBRmxCOztJQUdBLElBQUcscUJBQUg7QUFDSTtBQUFBLFdBQUEscUNBQUE7O1FBQ0ksT0FBQSxHQUFVLElBQUMsQ0FBQSxVQUFELENBQVksS0FBWixFQUFtQixNQUFuQjtRQUNWLElBQUcsT0FBSDtBQUFnQixnQkFBaEI7O0FBRkosT0FESjs7SUFJQSxJQUFHLDJCQUFBLElBQXVCLE9BQTFCO01BQ0ksT0FBQSxHQUFVLElBQUMsQ0FBQSxlQUFELENBQWlCLE1BQU0sQ0FBQyxVQUF4QixFQURkOztBQUdBLFdBQU87RUFoQkU7Ozs7R0E5SWUsRUFBRSxDQUFDOztBQWdLbkMsRUFBRSxDQUFDLGlCQUFILEdBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4jXG4jICAgU2NyaXB0OiBDb21wb25lbnRfRnJlZUxheW91dEJlaGF2aW9yXG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBDb21wb25lbnRfSGFuZGxlciBleHRlbmRzIGdzLkNvbXBvbmVudFxuICAgICMjIypcbiAgICAqIFRoZSBiYXNlIGNsYXNzIGZvciBhbGwgaGFuZGxlci1jb21wb25lbnRzLiBBIGhhbmRsZXItY29tcG9uZW50IGlzXG4gICAgKiB1c2VkIHRvIGhhbmRsZSBjb25kaXRpb24tIG9yIGV2ZW50LWJhc2VkIHByb2Nlc3NlcyBvZiBhIEluLUdhbWUgVUlcbiAgICAqIG9iamVjdCBsaWtlIGV4ZWN1dGluZyBiaW5kaW5ncyBvciB0cmlnZ2VyaW5nIGFjdGlvbnMuXG4gICAgKlxuICAgICogQSBoYW5kbGVyIGlzIG9ubHkgZXhlY3V0ZWQgaWYgYWxsIGFzc2lnbmVkIGNvbmRpdGlvbnMgYW5kIGV2ZW50cyBhcmVcbiAgICAqIHRydWUuXG4gICAgKlxuICAgICogQG1vZHVsZSB1aVxuICAgICogQGNsYXNzIENvbXBvbmVudF9IYW5kbGVyXG4gICAgKiBAZXh0ZW5kcyBncy5Db21wb25lbnRcbiAgICAqIEBtZW1iZXJvZiB1aVxuICAgICogQGNvbnN0cnVjdG9yXG4gICAgIyMjXG4gICAgY29uc3RydWN0b3I6IC0+XG4gICAgICAgICMjIypcbiAgICAgICAgKiBAcHJvcGVydHkgbW91c2VFbnRlcmVkXG4gICAgICAgICogQHR5cGUgYm9vbGVhblxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEBtb3VzZUVudGVyZWQgPSBub1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEBwcm9wZXJ0eSBtb3VzZUxlYXZlZFxuICAgICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICMjI1xuICAgICAgICBAbW91c2VMZWF2ZWQgPSB5ZXNcbiAgICAgXG4gICAgIyMjKlxuICAgICogQ2hlY2tzIGlmIHRoZSBjb25kaXRpb24gaXMgPGI+dHJ1ZTwvYj4gZm9yIHRoZSBzcGVjaWZpZWQgZ2FtZSBvYmplY3QuXG4gICAgKlxuICAgICogQG1ldGhvZCBjaGVja0NvbmRpdGlvblxuICAgICogQHBhcmFtIHtncy5PYmplY3RfQmFzZX0gb2JqZWN0IFRoZSBnYW1lIG9iamVjdC5cbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb25kaXRpb24gVGhlIGNvbmRpdGlvbi1vYmplY3QuXG4gICAgKiBAcmV0dXJuIHtib29sZWFufSBJZiA8Yj50cnVlPC9iPiB0aGUgY29uZGl0aW9uIGlzIHRydWUuIE90aGVyd2lzZSA8Yj5mYWxzZTwvYj4uXG4gICAgKiBAc3RhdGljXG4gICAgIyMjICAgXG4gICAgQGNoZWNrQ29uZGl0aW9uOiAob2JqZWN0LCBjb25kaXRpb24pIC0+XG4gICAgICAgIHJlc3VsdCA9IG5vXG4gICAgICAgIFxuICAgICAgICBpZiBjb25kaXRpb24uZXF1YWxUbz9cbiAgICAgICAgICAgIHJlc3VsdCA9IHVpLkNvbXBvbmVudF9Gb3JtdWxhSGFuZGxlci5maWVsZFZhbHVlKG9iamVjdCwgY29uZGl0aW9uLmZpZWxkKSA9PSB1aS5Db21wb25lbnRfRm9ybXVsYUhhbmRsZXIuZmllbGRWYWx1ZShvYmplY3QsIGNvbmRpdGlvbi5lcXVhbFRvKVxuICAgICAgICBlbHNlIGlmIGNvbmRpdGlvbi5ncmVhdGVyVGhhbj9cbiAgICAgICAgICAgIHJlc3VsdCA9IHVpLkNvbXBvbmVudF9Gb3JtdWxhSGFuZGxlci5maWVsZFZhbHVlKG9iamVjdCwgY29uZGl0aW9uLmZpZWxkKSA+IHVpLkNvbXBvbmVudF9Gb3JtdWxhSGFuZGxlci5maWVsZFZhbHVlKG9iamVjdCwgY29uZGl0aW9uLmdyZWF0ZXJUaGFuKVxuICAgICAgICBlbHNlIGlmIGNvbmRpdGlvbi5sZXNzVGhhbj9cbiAgICAgICAgICAgIHJlc3VsdCA9IHVpLkNvbXBvbmVudF9Gb3JtdWxhSGFuZGxlci5maWVsZFZhbHVlKG9iamVjdCwgY29uZGl0aW9uLmZpZWxkKSA8IHVpLkNvbXBvbmVudF9Gb3JtdWxhSGFuZGxlci5maWVsZFZhbHVlKG9iamVjdCwgY29uZGl0aW9uLmxlc3NUaGFuKVxuICAgICAgICBlbHNlIGlmIGNvbmRpdGlvbi5ub3RFcXVhbFRvP1xuICAgICAgICAgICAgcmVzdWx0ID0gdWkuQ29tcG9uZW50X0Zvcm11bGFIYW5kbGVyLmZpZWxkVmFsdWUob2JqZWN0LCBjb25kaXRpb24uZmllbGQpICE9IHVpLkNvbXBvbmVudF9Gb3JtdWxhSGFuZGxlci5maWVsZFZhbHVlKG9iamVjdCwgY29uZGl0aW9uLm5vdEVxdWFsVG8pXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgIFxuICAgICMjIypcbiAgICAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGNvbmRpdGlvbiBpcyA8Yj50cnVlPC9iPi5cbiAgICAqXG4gICAgKiBAbWV0aG9kIGNoZWNrQ29uZGl0aW9uXG4gICAgKiBAcGFyYW0ge09iamVjdH0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24tb2JqZWN0LlxuICAgICogQHJldHVybiB7Ym9vbGVhbn0gSWYgPGI+dHJ1ZTwvYj4gdGhlIGNvbmRpdGlvbiBpcyB0cnVlLiBPdGhlcndpc2UgPGI+ZmFsc2U8L2I+LlxuICAgICMjIyAgICAgXG4gICAgY2hlY2tDb25kaXRpb246IChjb25kaXRpb24pIC0+IHVpLkNvbXBvbmVudF9IYW5kbGVyLmNoZWNrQ29uZGl0aW9uKEBvYmplY3QsIGNvbmRpdGlvbilcbiAgICBcbiAgICAjIyMqXG4gICAgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBjb25kaXRpb25zIGFyZSA8Yj50cnVlPC9iPi5cbiAgICAqXG4gICAgKiBAbWV0aG9kIGNoZWNrQ29uZGl0aW9uc1xuICAgICogQHBhcmFtIHtPYmplY3RbXX0gY29uZGl0aW9ucyBBbiBhcnJheSBvZiBjb25kaXRpb24tb2JqZWN0cy5cbiAgICAqIEByZXR1cm4ge2Jvb2xlYW59IElmIDxiPnRydWU8L2I+IGFsbCBjb25kaXRpb25zIGFyZSB0cnVlLiBPdGhlcndpc2UgPGI+ZmFsc2U8L2I+LlxuICAgICMjI1xuICAgIGNoZWNrQ29uZGl0aW9uczogKGNvbmRpdGlvbnMpIC0+XG4gICAgICAgIHJlc3VsdCA9IHllc1xuICAgICAgICBmb3IgY29uZGl0aW9uIGluIGNvbmRpdGlvbnNcbiAgICAgICAgICAgIGlmIG5vdCBAY2hlY2tDb25kaXRpb24oY29uZGl0aW9uKVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5vXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBldmVudCBpcyB0cnVlLlxuICAgICpcbiAgICAqIEBtZXRob2QgY2hlY2tFdmVudFxuICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50IFRoZSBldmVudCB0byBjaGVjayBmb3IuXG4gICAgKiBAcGFyYW0ge09iamVjdH0gW2JpbmRpbmc9bnVsbF0gYmluZGluZyBBbiBvcHRpb25hbCBiaW5kaW5nLW9iamVjdCBuZWNlc3NhcnkgZm9yIHNvbWUgZXZlbnQtdHlwZXMuXG4gICAgKiBAcmV0dXJuIHtib29sZWFufSBJZiA8Yj50cnVlPC9iPiB0aGUgZXZlbnQgaXMgdHJ1ZS4gT3RoZXJ3aXNlIDxiPmZhbHNlPC9iPi5cbiAgICAjIyMgIFxuICAgIGNoZWNrRXZlbnQ6IChldmVudCwgYmluZGluZykgLT5cbiAgICAgICAgcmVzdWx0ID0gbm9cbiAgICAgICAgXG4gICAgICAgICNpZiBldmVudCA9PSBcIm9uSW5pdGlhbGl6ZVwiIGFuZCAhU2NlbmVNYW5hZ2VyLnNjZW5lLnByZXBhcmluZ1xuICAgICAgICAjICAgIHJlc3VsdCA9ICFAaW5pdGlhbGl6ZUV2ZW50RW1pdHRlZFxuICAgICAgICAjICAgIEBpbml0aWFsaXplRXZlbnRFbWl0dGVkID0geWVzXG4gICAgICAgIGlmIGV2ZW50ID09IFwib25BbHdheXNcIlxuICAgICAgICAgICAgcmVzdWx0ID0geWVzXG4gICAgICAgIGVsc2UgaWYgZXZlbnQgPT0gXCJvbkFjdGlvblwiXG4gICAgICAgICAgICByZXN1bHQgPSBJbnB1dC5Nb3VzZS5idXR0b25zW0lucHV0Lk1vdXNlLkxFRlRdID09IDIgYW5kIEBvYmplY3QuZHN0UmVjdC5jb250YWlucyhJbnB1dC5Nb3VzZS54IC0gQG9iamVjdC5vcmlnaW4ueCwgSW5wdXQuTW91c2UueSAtIEBvYmplY3Qub3JpZ2luLnkpIFxuICAgICAgICBlbHNlIGlmIGV2ZW50ID09IFwib25DYW5jZWxcIlxuICAgICAgICAgICAgcmVzdWx0ID0gSW5wdXQuTW91c2UuYnV0dG9uc1tJbnB1dC5Nb3VzZS5SSUdIVF0gPT0gMiBhbmQgQG9iamVjdC5kc3RSZWN0LmNvbnRhaW5zKElucHV0Lk1vdXNlLnggLSBAb2JqZWN0Lm9yaWdpbi54LCBJbnB1dC5Nb3VzZS55IC0gQG9iamVjdC5vcmlnaW4ueSkgICAgIFxuICAgICAgICBlbHNlIGlmIGV2ZW50ID09IFwib25BY2NlcHRcIlxuICAgICAgICAgICAgcmVzdWx0ID0gSW5wdXQucmVsZWFzZShJbnB1dC5LRVlfUkVUVVJOKSBvciAoSW5wdXQuTW91c2UuYnV0dG9uc1tJbnB1dC5Nb3VzZS5MRUZUXSA9PSAyIGFuZCBAb2JqZWN0LmRzdFJlY3QuY29udGFpbnMoSW5wdXQuTW91c2UueCAtIEBvYmplY3Qub3JpZ2luLngsIElucHV0Lk1vdXNlLnkgLSBAb2JqZWN0Lm9yaWdpbi55KSkgICAgICAgICBcbiAgICAgICAgZWxzZSBpZiBldmVudCA9PSBcIm9uRHJhZ0VudGVyXCIgICAgXG4gICAgICAgICAgICBlbnRlcmVkID0gQG9iamVjdC5kcmFnRHJvcD8uaXNEcmFnZ2luZyBhbmQgQG9iamVjdC5kc3RSZWN0LmNvbnRhaW5zKElucHV0Lk1vdXNlLnggLSBAb2JqZWN0Lm9yaWdpbi54LCBJbnB1dC5Nb3VzZS55IC0gQG9iamVjdC5vcmlnaW4ueSlcbiAgICAgICAgICAgIHJlc3VsdCA9ICFAbW91c2VFbnRlcmVkIGFuZCBlbnRlcmVkXG4gICAgICAgICAgICBAbW91c2VFbnRlcmVkID0gZW50ZXJlZFxuICAgICAgICBlbHNlIGlmIGV2ZW50ID09IFwib25EcmFnTGVhdmVcIlxuICAgICAgICAgICAgbGVhdmVkID0gQG9iamVjdC5kcmFnRHJvcD8uaXNEcmFnZ2luZyBhbmQgIUBvYmplY3QuZHN0UmVjdC5jb250YWlucyhJbnB1dC5Nb3VzZS54IC0gQG9iamVjdC5vcmlnaW4ueCwgSW5wdXQuTW91c2UueSAtIEBvYmplY3Qub3JpZ2luLnkpXG4gICAgICAgICAgICByZXN1bHQgPSAhQG1vdXNlTGVhdmVkIGFuZCBsZWF2ZWRcbiAgICAgICAgICAgIEBtb3VzZUxlYXZlZCA9IGxlYXZlZFxuICAgICAgICBlbHNlIGlmIGV2ZW50ID09IFwib25Nb3VzZUVudGVyXCJcbiAgICAgICAgICAgIGVudGVyZWQgPSBAb2JqZWN0LmRzdFJlY3QuY29udGFpbnMoSW5wdXQuTW91c2UueCAtIEBvYmplY3Qub3JpZ2luLngsIElucHV0Lk1vdXNlLnkgLSBAb2JqZWN0Lm9yaWdpbi55KVxuICAgICAgICAgICAgcmVzdWx0ID0gIUBtb3VzZUVudGVyZWQgYW5kIGVudGVyZWRcbiAgICAgICAgICAgIEBtb3VzZUVudGVyZWQgPSBlbnRlcmVkXG4gICAgICAgIGVsc2UgaWYgZXZlbnQgPT0gXCJvbk1vdXNlTGVhdmVcIlxuICAgICAgICAgICAgbGVhdmVkID0gIUBvYmplY3QuZHN0UmVjdC5jb250YWlucyhJbnB1dC5Nb3VzZS54IC0gQG9iamVjdC5vcmlnaW4ueCwgSW5wdXQuTW91c2UueSAtIEBvYmplY3Qub3JpZ2luLnkpXG4gICAgICAgICAgICByZXN1bHQgPSAhQG1vdXNlTGVhdmVkIGFuZCBsZWF2ZWRcbiAgICAgICAgICAgIEBtb3VzZUxlYXZlZCA9IGxlYXZlZFxuICAgICAgICBlbHNlIGlmIGV2ZW50ID09IFwib25Nb3VzZUhvdmVyXCJcbiAgICAgICAgICAgIHJlc3VsdCA9IEBvYmplY3QuZHN0UmVjdC5jb250YWlucyhJbnB1dC5Nb3VzZS54IC0gQG9iamVjdC5vcmlnaW4ueCwgSW5wdXQuTW91c2UueSAtIEBvYmplY3Qub3JpZ2luLnkpXG4gICAgICAgIGVsc2UgaWYgZXZlbnQgPT0gXCJvbk1vdXNlQ2xpY2tcIlxuICAgICAgICAgICAgcmVzdWx0ID0gSW5wdXQuTW91c2UuYnV0dG9uc1tJbnB1dC5Nb3VzZS5MRUZUXSA9PSAyIGFuZCBAb2JqZWN0LmRzdFJlY3QuY29udGFpbnMoSW5wdXQuTW91c2UueCAtIEBvYmplY3Qub3JpZ2luLngsIElucHV0Lk1vdXNlLnkgLSBAb2JqZWN0Lm9yaWdpbi55KVxuICAgICAgICBlbHNlIGlmIGV2ZW50Lm9uQ2hhbmdlP1xuICAgICAgICAgICAgdmFsdWUgPSBAcmVzb2x2ZUZpZWxkUGF0aChldmVudC5vbkNoYW5nZSlcbiAgICAgICAgICAgIGlmIHZhbHVlPyBcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmdldChAb2JqZWN0KVxuICAgICAgICAgICAgICAgIGlmIGJpbmRpbmdbZXZlbnQub25DaGFuZ2VdICE9IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGJpbmRpbmdbZXZlbnQub25DaGFuZ2VdID0gdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0geWVzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0geWVzXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICBcbiAgICAjIyMqXG4gICAgKiBDaGVja3MgaWYgYWxsIGV2ZW50cyBhbmQgY29uZGl0aW9ucyBkZWZpbmVkIGZvciB0aGUgaGFuZGxlclxuICAgICogYXJlIHRydWUuIElmIHRoYXQgY2hlY2sgcmV0dXJucyA8Yj50cnVlPC9iPiB0aGUgaGFuZGxlciBtdXN0IGJlXG4gICAgKiBleGVjdXRlZC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIGNoZWNrT2JqZWN0XG4gICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBnYW1lIG9iamVjdCB0byBjaGVjay5cbiAgICAqIEByZXR1cm4ge2Jvb2xlYW59IElmIDxiPnRydWU8L2I+IHRoZSBoYW5kbGVyIG11c3QgYmUgZXhlY3V0ZWQuIE90aGVyd2lzZSA8Yj5mYWxzZTwvYj4uXG4gICAgIyMjICAgICBcbiAgICBjaGVja09iamVjdDogKG9iamVjdCkgLT5cbiAgICAgICAgZXhlY3V0ZSA9IHllc1xuICAgICAgICAgICAgXG4gICAgICAgIGlmIG9iamVjdC5ldmVudD9cbiAgICAgICAgICAgIG9iamVjdC5ldmVudHMgPSBbb2JqZWN0LmV2ZW50XVxuICAgICAgICAgICAgZGVsZXRlIG9iamVjdC5ldmVudFxuICAgICAgICBpZiBvYmplY3QuY29uZGl0aW9uP1xuICAgICAgICAgICAgb2JqZWN0LmNvbmRpdGlvbnMgPSBbb2JqZWN0LmNvbmRpdGlvbl1cbiAgICAgICAgICAgIGRlbGV0ZSBvYmplY3QuY29uZGl0aW9uXG4gICAgICAgIGlmIG9iamVjdC5ldmVudHM/XG4gICAgICAgICAgICBmb3IgZXZlbnQgaW4gb2JqZWN0LmV2ZW50c1xuICAgICAgICAgICAgICAgIGV4ZWN1dGUgPSBAY2hlY2tFdmVudChldmVudCwgb2JqZWN0KVxuICAgICAgICAgICAgICAgIGlmIGV4ZWN1dGUgdGhlbiBicmVha1xuICAgICAgICBpZiBvYmplY3QuY29uZGl0aW9ucz8gYW5kIGV4ZWN1dGVcbiAgICAgICAgICAgIGV4ZWN1dGUgPSBAY2hlY2tDb25kaXRpb25zKG9iamVjdC5jb25kaXRpb25zKVxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGV4ZWN1dGVcblxudWkuQ29tcG9uZW50X0hhbmRsZXIgPSBDb21wb25lbnRfSGFuZGxlciJdfQ==\n//# sourceURL=Component_Handler_100.js"
    },
    "summary": [
        "name",
        "type",
        "order"
    ]
}

Commits for Nextrek/s2s/data/7BE82043K96A3A41D6SAAFBEC5EA0135ADF9.json

Diff revisions: vs.
Revision Author Commited Message
1084 MOliva picture MOliva Fri 11 May, 2018 12:41:55 +0000