Subversion Repository Public Repository

Nextrek

Diff Revisions 1085 vs 1086 for /s2s/data/91139725K09EAA4678SBA18E0B484F480118.json

Diff revisions: vs.
  @@ -1 +1,19 @@
1 - {"uid":"91139725K09EAA4678SBA18E0B484F480118","isLoaded":true,"lastModificationTime":0,"items":{"name":"Component_BindingHandler","type":"game_script","order":9,"content":"# ===================================================================\n#\n# Script: Component_BindingHandler\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Component_BindingHandler extends ui.Component_Handler\n ###*\n * Caches already compiled binding-paths.\n * @property compiledPaths\n * @type Object\n * @static\n ###\n @compiledPaths: {}\n \n ###*\n * A binding-handler component allows a UI game object to execute\n * property-bindings.<br><br>\n *\n * For example: A text-label can bind its text-property to a backend-field \n * like the current music-volume to always display correct music-volume. \n * If the volume changes, the text-property will be updated\n * automatically.\n *\n * To define a binding, a special property-path syntax is used. For example:<br>\n * <br>\n * $myTextField.text<br>\n * <br>\n * is a property-path to access the text-property of a text-field object\n * with the identifier \"myTextField\". For more information, take a look\n * into the \"In Game UI System\" section of the help-file.\n * \n * @module ui\n * @class Component_BindingHandler\n * @extends ui.Component_Handler\n * @memberof ui\n * @constructor\n ###\n constructor: () ->\n\n ###*\n * Initializes the binding-handler.\n * \n * @method setup\n ###\n setup: ->\n \n ###*\n * Updates the binding-handler.\n * \n * @method update\n ### \n update: ->\n for binding in @object.bindings\n @executeBinding(binding)\n \n @object.initialized = yes\n \n return null\n \n ###*\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n ### \n executeBinding: (binding) ->\n return if not @checkObject(binding)\n \n source = binding.sourceFunc ? (binding.sourceFunc=@resolveFieldPath(binding.sourceField))\n target = binding.targetFunc ? (binding.targetFunc=@resolveFieldPath(binding.targetField))\n \n return if !target\n return target.set(@object, null) if !source\n \n value = source.get(@object)\n offset = 0\n \n if binding.offset?\n value += binding.offset\n if binding.max?\n value = Math.min(binding.max, value)\n if binding.min?\n value = Math.max(binding.min, value)\n \n target.set(@object, value)\n \n ###*\n * Evaluates a specified property-path and returns the result.\n * \n * @method fieldValue\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n ### \n fieldValue: (path) -> ui.Component_BindingHandler.fieldValue(@object, path) \n \n ###*\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n * @static\n ### \n @executeBinding: (sender, binding) ->\n binder = new ui.BindingHandler()\n binder.object = sender\n binder.executeBinding(binding)\n\n ###*\n * Evaluates a property-path on a specified object and returns the result.\n * \n * @method fieldValue\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n ### \n @fieldValue: (object, path) ->\n if typeof path == \"string\"\n field = ui.Component_BindingHandler.resolveFieldPath(object, path)\n return 0 unless field?\n return field.get(object)\n else\n return path\n \n ###*\n * Resolves a property-path of a specified object and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n ### \n @resolveFieldPath: (object, path) -> \n result = ui.Component_BindingHandler.compiledPaths[path]\n if result? then return result\n \n if path? \n result = { set: null, get: null }\n result.get = eval(\"(function(o) { return \" + path + \" })\")\n result.set = eval(\"(function(o, v) { \" + path + \" = v; })\")\n \n ui.Component_BindingHandler.compiledPaths[path] = result\n \n return result\n \n ###*\n * Resolves a property-path and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n ### \n resolveFieldPath: (path) -> ui.Component_BindingHandler.resolveFieldPath(@object, path)\n \nui.Component_BindingHandler = Component_BindingHandler","parentId":"01A95DA3K01E8A4CB4SBE17E790BCE1FC035","folder":false,"compiledContent":"var Component_BindingHandler,\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_BindingHandler = (function(superClass) {\n extend(Component_BindingHandler, superClass);\n\n\n /**\n * Caches already compiled binding-paths.\n * @property compiledPaths\n * @type Object\n * @static\n */\n\n Component_BindingHandler.compiledPaths = {};\n\n\n /**\n * A binding-handler component allows a UI game object to execute\n * property-bindings.<br><br>\n *\n * For example: A text-label can bind its text-property to a backend-field \n * like the current music-volume to always display correct music-volume. \n * If the volume changes, the text-property will be updated\n * automatically.\n *\n * To define a binding, a special property-path syntax is used. For example:<br>\n * <br>\n * $myTextField.text<br>\n * <br>\n * is a property-path to access the text-property of a text-field object\n * with the identifier \"myTextField\". For more information, take a look\n * into the \"In Game UI System\" section of the help-file.\n * \n * @module ui\n * @class Component_BindingHandler\n * @extends ui.Component_Handler\n * @memberof ui\n * @constructor\n */\n\n function Component_BindingHandler() {}\n\n\n /**\n * Initializes the binding-handler.\n * \n * @method setup\n */\n\n Component_BindingHandler.prototype.setup = function() {};\n\n\n /**\n * Updates the binding-handler.\n * \n * @method update\n */\n\n Component_BindingHandler.prototype.update = function() {\n var binding, i, len, ref;\n ref = this.object.bindings;\n for (i = 0, len = ref.length; i < len; i++) {\n binding = ref[i];\n this.executeBinding(binding);\n }\n this.object.initialized = true;\n return null;\n };\n\n\n /**\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n */\n\n Component_BindingHandler.prototype.executeBinding = function(binding) {\n var offset, ref, ref1, source, target, value;\n if (!this.checkObject(binding)) {\n return;\n }\n source = (ref = binding.sourceFunc) != null ? ref : (binding.sourceFunc = this.resolveFieldPath(binding.sourceField));\n target = (ref1 = binding.targetFunc) != null ? ref1 : (binding.targetFunc = this.resolveFieldPath(binding.targetField));\n if (!target) {\n return;\n }\n if (!source) {\n return target.set(this.object, null);\n }\n value = source.get(this.object);\n offset = 0;\n if (binding.offset != null) {\n value += binding.offset;\n }\n if (binding.max != null) {\n value = Math.min(binding.max, value);\n }\n if (binding.min != null) {\n value = Math.max(binding.min, value);\n }\n return target.set(this.object, value);\n };\n\n\n /**\n * Evaluates a specified property-path and returns the result.\n * \n * @method fieldValue\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n */\n\n Component_BindingHandler.prototype.fieldValue = function(path) {\n return ui.Component_BindingHandler.fieldValue(this.object, path);\n };\n\n\n /**\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n * @static\n */\n\n Component_BindingHandler.executeBinding = function(sender, binding) {\n var binder;\n binder = new ui.BindingHandler();\n binder.object = sender;\n return binder.executeBinding(binding);\n };\n\n\n /**\n * Evaluates a property-path on a specified object and returns the result.\n * \n * @method fieldValue\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n */\n\n Component_BindingHandler.fieldValue = function(object, path) {\n var field;\n if (typeof path === \"string\") {\n field = ui.Component_BindingHandler.resolveFieldPath(object, path);\n if (field == null) {\n return 0;\n }\n return field.get(object);\n } else {\n return path;\n }\n };\n\n\n /**\n * Resolves a property-path of a specified object and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n */\n\n Component_BindingHandler.resolveFieldPath = function(object, path) {\n var result;\n result = ui.Component_BindingHandler.compiledPaths[path];\n if (result != null) {\n return result;\n }\n if (path != null) {\n result = {\n set: null,\n get: null\n };\n result.get = eval(\"(function(o) { return \" + path + \" })\");\n result.set = eval(\"(function(o, v) { \" + path + \" = v; })\");\n ui.Component_BindingHandler.compiledPaths[path] = result;\n }\n return result;\n };\n\n\n /**\n * Resolves a property-path and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n */\n\n Component_BindingHandler.prototype.resolveFieldPath = function(path) {\n return ui.Component_BindingHandler.resolveFieldPath(this.object, path);\n };\n\n return Component_BindingHandler;\n\n})(ui.Component_Handler);\n\nui.Component_BindingHandler = Component_BindingHandler;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsd0JBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7OztFQU1BLHdCQUFDLENBQUEsYUFBRCxHQUFnQjs7O0FBRWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QmEsa0NBQUEsR0FBQTs7O0FBRWI7Ozs7OztxQ0FLQSxLQUFBLEdBQU8sU0FBQSxHQUFBOzs7QUFFUDs7Ozs7O3FDQUtBLE1BQUEsR0FBUSxTQUFBO0FBQ0osUUFBQTtBQUFBO0FBQUEsU0FBQSxxQ0FBQTs7TUFDSSxJQUFDLENBQUEsY0FBRCxDQUFnQixPQUFoQjtBQURKO0lBR0EsSUFBQyxDQUFBLE1BQU0sQ0FBQyxXQUFSLEdBQXNCO0FBRXRCLFdBQU87RUFOSDs7O0FBUVI7Ozs7Ozs7O3FDQU9BLGNBQUEsR0FBZ0IsU0FBQyxPQUFEO0FBQ1osUUFBQTtJQUFBLElBQVUsQ0FBSSxJQUFDLENBQUEsV0FBRCxDQUFhLE9BQWIsQ0FBZDtBQUFBLGFBQUE7O0lBRUEsTUFBQSw4Q0FBOEIsQ0FBQyxPQUFPLENBQUMsVUFBUixHQUFtQixJQUFDLENBQUEsZ0JBQUQsQ0FBa0IsT0FBTyxDQUFDLFdBQTFCLENBQXBCO0lBQzlCLE1BQUEsZ0RBQThCLENBQUMsT0FBTyxDQUFDLFVBQVIsR0FBbUIsSUFBQyxDQUFBLGdCQUFELENBQWtCLE9BQU8sQ0FBQyxXQUExQixDQUFwQjtJQUU5QixJQUFVLENBQUMsTUFBWDtBQUFBLGFBQUE7O0lBQ0EsSUFBb0MsQ0FBQyxNQUFyQztBQUFBLGFBQU8sTUFBTSxDQUFDLEdBQVAsQ0FBVyxJQUFDLENBQUEsTUFBWixFQUFvQixJQUFwQixFQUFQOztJQUVBLEtBQUEsR0FBUSxNQUFNLENBQUMsR0FBUCxDQUFXLElBQUMsQ0FBQSxNQUFaO0lBQ1IsTUFBQSxHQUFTO0lBRVQsSUFBRyxzQkFBSDtNQUNJLEtBQUEsSUFBUyxPQUFPLENBQUMsT0FEckI7O0lBRUEsSUFBRyxtQkFBSDtNQUNJLEtBQUEsR0FBUSxJQUFJLENBQUMsR0FBTCxDQUFTLE9BQU8sQ0FBQyxHQUFqQixFQUFzQixLQUF0QixFQURaOztJQUVBLElBQUcsbUJBQUg7TUFDSSxLQUFBLEdBQVEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxPQUFPLENBQUMsR0FBakIsRUFBc0IsS0FBdEIsRUFEWjs7V0FHQSxNQUFNLENBQUMsR0FBUCxDQUFXLElBQUMsQ0FBQSxNQUFaLEVBQW9CLEtBQXBCO0VBbkJZOzs7QUFxQmhCOzs7Ozs7OztxQ0FPQSxVQUFBLEdBQVksU0FBQyxJQUFEO1dBQVUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFVBQTVCLENBQXVDLElBQUMsQ0FBQSxNQUF4QyxFQUFnRCxJQUFoRDtFQUFWOzs7QUFFWjs7Ozs7Ozs7O0VBUUEsd0JBQUMsQ0FBQSxjQUFELEdBQWlCLFNBQUMsTUFBRCxFQUFTLE9BQVQ7QUFDYixRQUFBO0lBQUEsTUFBQSxHQUFhLElBQUEsRUFBRSxDQUFDLGNBQUgsQ0FBQTtJQUNiLE1BQU0sQ0FBQyxNQUFQLEdBQWdCO1dBQ2hCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE9BQXRCO0VBSGE7OztBQUtqQjs7Ozs7Ozs7OztFQVNBLHdCQUFDLENBQUEsVUFBRCxHQUFhLFNBQUMsTUFBRCxFQUFTLElBQVQ7QUFDVCxRQUFBO0lBQUEsSUFBRyxPQUFPLElBQVAsS0FBZSxRQUFsQjtNQUNJLEtBQUEsR0FBUSxFQUFFLENBQUMsd0JBQXdCLENBQUMsZ0JBQTVCLENBQTZDLE1BQTdDLEVBQXFELElBQXJEO01BQ1IsSUFBZ0IsYUFBaEI7QUFBQSxlQUFPLEVBQVA7O0FBQ0EsYUFBTyxLQUFLLENBQUMsR0FBTixDQUFVLE1BQVYsRUFIWDtLQUFBLE1BQUE7QUFLSSxhQUFPLEtBTFg7O0VBRFM7OztBQVFiOzs7Ozs7Ozs7Ozs7O0VBWUEsd0JBQUMsQ0FBQSxnQkFBRCxHQUFtQixTQUFDLE1BQUQsRUFBUyxJQUFUO0FBQ2YsUUFBQTtJQUFBLE1BQUEsR0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUMsYUFBYyxDQUFBLElBQUE7SUFDbkQsSUFBRyxjQUFIO0FBQWdCLGFBQU8sT0FBdkI7O0lBRUEsSUFBRyxZQUFIO01BQ0ksTUFBQSxHQUFTO1FBQUUsR0FBQSxFQUFLLElBQVA7UUFBYSxHQUFBLEVBQUssSUFBbEI7O01BQ1QsTUFBTSxDQUFDLEdBQVAsR0FBYSxJQUFBLENBQUssd0JBQUEsR0FBMkIsSUFBM0IsR0FBa0MsS0FBdkM7TUFDYixNQUFNLENBQUMsR0FBUCxHQUFhLElBQUEsQ0FBSyxvQkFBQSxHQUF1QixJQUF2QixHQUE4QixVQUFuQztNQUViLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFjLENBQUEsSUFBQSxDQUExQyxHQUFrRCxPQUx0RDs7QUFPQSxXQUFPO0VBWFE7OztBQWFuQjs7Ozs7Ozs7Ozs7O3FDQVdBLGdCQUFBLEdBQWtCLFNBQUMsSUFBRDtXQUFVLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBNUIsQ0FBNkMsSUFBQyxDQUFBLE1BQTlDLEVBQXNELElBQXREO0VBQVY7Ozs7R0E3SmlCLEVBQUUsQ0FBQzs7QUErSjFDLEVBQUUsQ0FBQyx3QkFBSCxHQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuI1xuIyAgIFNjcmlwdDogQ29tcG9uZW50X0JpbmRpbmdIYW5kbGVyXG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBDb21wb25lbnRfQmluZGluZ0hhbmRsZXIgZXh0ZW5kcyB1aS5Db21wb25lbnRfSGFuZGxlclxuICAgICMjIypcbiAgICAqIENhY2hlcyBhbHJlYWR5IGNvbXBpbGVkIGJpbmRpbmctcGF0aHMuXG4gICAgKiBAcHJvcGVydHkgY29tcGlsZWRQYXRoc1xuICAgICogQHR5cGUgT2JqZWN0XG4gICAgKiBAc3RhdGljXG4gICAgIyMjXG4gICAgQGNvbXBpbGVkUGF0aHM6IHt9XG4gICAgXG4gICAgIyMjKlxuICAgICogQSBiaW5kaW5nLWhhbmRsZXIgY29tcG9uZW50IGFsbG93cyBhIFVJIGdhbWUgb2JqZWN0IHRvIGV4ZWN1dGVcbiAgICAqIHByb3BlcnR5LWJpbmRpbmdzLjxicj48YnI+XG4gICAgKlxuICAgICogRm9yIGV4YW1wbGU6IEEgdGV4dC1sYWJlbCBjYW4gYmluZCBpdHMgdGV4dC1wcm9wZXJ0eSB0byBhIGJhY2tlbmQtZmllbGQgXG4gICAgKiBsaWtlIHRoZSBjdXJyZW50IG11c2ljLXZvbHVtZSB0byBhbHdheXMgZGlzcGxheSBjb3JyZWN0IG11c2ljLXZvbHVtZS4gXG4gICAgKiBJZiB0aGUgdm9sdW1lIGNoYW5nZXMsIHRoZSB0ZXh0LXByb3BlcnR5IHdpbGwgYmUgdXBkYXRlZFxuICAgICogYXV0b21hdGljYWxseS5cbiAgICAqXG4gICAgKiBUbyBkZWZpbmUgYSBiaW5kaW5nLCBhIHNwZWNpYWwgcHJvcGVydHktcGF0aCBzeW50YXggaXMgdXNlZC4gRm9yIGV4YW1wbGU6PGJyPlxuICAgICogPGJyPlxuICAgICogJG15VGV4dEZpZWxkLnRleHQ8YnI+XG4gICAgKiA8YnI+XG4gICAgKiBpcyBhIHByb3BlcnR5LXBhdGggdG8gYWNjZXNzIHRoZSB0ZXh0LXByb3BlcnR5IG9mIGEgdGV4dC1maWVsZCBvYmplY3RcbiAgICAqIHdpdGggdGhlIGlkZW50aWZpZXIgXCJteVRleHRGaWVsZFwiLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgdGFrZSBhIGxvb2tcbiAgICAqIGludG8gdGhlIFwiSW4gR2FtZSBVSSBTeXN0ZW1cIiBzZWN0aW9uIG9mIHRoZSBoZWxwLWZpbGUuXG4gICAgKiBcbiAgICAqIEBtb2R1bGUgdWlcbiAgICAqIEBjbGFzcyBDb21wb25lbnRfQmluZGluZ0hhbmRsZXJcbiAgICAqIEBleHRlbmRzIHVpLkNvbXBvbmVudF9IYW5kbGVyXG4gICAgKiBAbWVtYmVyb2YgdWlcbiAgICAqIEBjb25zdHJ1Y3RvclxuICAgICMjI1xuICAgIGNvbnN0cnVjdG9yOiAoKSAtPlxuXG4gICAgIyMjKlxuICAgICogSW5pdGlhbGl6ZXMgdGhlIGJpbmRpbmctaGFuZGxlci5cbiAgICAqIFxuICAgICogQG1ldGhvZCBzZXR1cFxuICAgICMjI1xuICAgIHNldHVwOiAtPlxuICAgICBcbiAgICAjIyMqXG4gICAgKiBVcGRhdGVzIHRoZSBiaW5kaW5nLWhhbmRsZXIuXG4gICAgKiBcbiAgICAqIEBtZXRob2QgdXBkYXRlXG4gICAgIyMjICAgXG4gICAgdXBkYXRlOiAtPlxuICAgICAgICBmb3IgYmluZGluZyBpbiBAb2JqZWN0LmJpbmRpbmdzXG4gICAgICAgICAgICBAZXhlY3V0ZUJpbmRpbmcoYmluZGluZylcbiAgICAgICAgXG4gICAgICAgIEBvYmplY3QuaW5pdGlhbGl6ZWQgPSB5ZXNcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgIFxuICAgICMjIypcbiAgICAqIEV4ZWN1dGVzIGEgc3BlY2lmaWVkIGJpbmRpbmcuIFRoZSBiaW5kaW5nIGlzIG9ubHkgZXhlY3V0ZWQgaWYgYWxsIGFzc2lnbmVkXG4gICAgKiBldmVudHMgYW5kIGNvbmRpdGlvbnMgYXJlIHRydWUuXG4gICAgKiBcbiAgICAqIEBtZXRob2QgZXhlY3V0ZUJpbmRpbmdcbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBiaW5kaW5nIC0gVGhlIGJpbmRpbmcgdG8gZXhlY3V0ZS5cbiAgICAjIyMgICAgXG4gICAgZXhlY3V0ZUJpbmRpbmc6IChiaW5kaW5nKSAtPlxuICAgICAgICByZXR1cm4gaWYgbm90IEBjaGVja09iamVjdChiaW5kaW5nKVxuICAgICAgICBcbiAgICAgICAgc291cmNlID0gYmluZGluZy5zb3VyY2VGdW5jID8gKGJpbmRpbmcuc291cmNlRnVuYz1AcmVzb2x2ZUZpZWxkUGF0aChiaW5kaW5nLnNvdXJjZUZpZWxkKSlcbiAgICAgICAgdGFyZ2V0ID0gYmluZGluZy50YXJnZXRGdW5jID8gKGJpbmRpbmcudGFyZ2V0RnVuYz1AcmVzb2x2ZUZpZWxkUGF0aChiaW5kaW5nLnRhcmdldEZpZWxkKSlcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBpZiAhdGFyZ2V0XG4gICAgICAgIHJldHVybiB0YXJnZXQuc2V0KEBvYmplY3QsIG51bGwpIGlmICFzb3VyY2VcbiAgICAgICAgICAgIFxuICAgICAgICB2YWx1ZSA9IHNvdXJjZS5nZXQoQG9iamVjdClcbiAgICAgICAgb2Zmc2V0ID0gMFxuICAgICAgICBcbiAgICAgICAgaWYgYmluZGluZy5vZmZzZXQ/XG4gICAgICAgICAgICB2YWx1ZSArPSBiaW5kaW5nLm9mZnNldFxuICAgICAgICBpZiBiaW5kaW5nLm1heD9cbiAgICAgICAgICAgIHZhbHVlID0gTWF0aC5taW4oYmluZGluZy5tYXgsIHZhbHVlKVxuICAgICAgICBpZiBiaW5kaW5nLm1pbj9cbiAgICAgICAgICAgIHZhbHVlID0gTWF0aC5tYXgoYmluZGluZy5taW4sIHZhbHVlKVxuICAgICAgICAgICAgXG4gICAgICAgIHRhcmdldC5zZXQoQG9iamVjdCwgdmFsdWUpXG4gICAgICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBFdmFsdWF0ZXMgYSBzcGVjaWZpZWQgcHJvcGVydHktcGF0aCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICAgICogXG4gICAgKiBAbWV0aG9kIGZpZWxkVmFsdWVcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gQSBwcm9wZXJ0eS1wYXRoLlxuICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LXBhdGguXG4gICAgIyMjIFxuICAgIGZpZWxkVmFsdWU6IChwYXRoKSAtPiB1aS5Db21wb25lbnRfQmluZGluZ0hhbmRsZXIuZmllbGRWYWx1ZShAb2JqZWN0LCBwYXRoKSAgXG4gICAgXG4gICAgIyMjKlxuICAgICogRXhlY3V0ZXMgYSBzcGVjaWZpZWQgYmluZGluZy4gVGhlIGJpbmRpbmcgaXMgb25seSBleGVjdXRlZCBpZiBhbGwgYXNzaWduZWRcbiAgICAqIGV2ZW50cyBhbmQgY29uZGl0aW9ucyBhcmUgdHJ1ZS5cbiAgICAqIFxuICAgICogQG1ldGhvZCBleGVjdXRlQmluZGluZ1xuICAgICogQHBhcmFtIHtPYmplY3R9IGJpbmRpbmcgLSBUaGUgYmluZGluZyB0byBleGVjdXRlLlxuICAgICogQHN0YXRpY1xuICAgICMjIyBcbiAgICBAZXhlY3V0ZUJpbmRpbmc6IChzZW5kZXIsIGJpbmRpbmcpIC0+XG4gICAgICAgIGJpbmRlciA9IG5ldyB1aS5CaW5kaW5nSGFuZGxlcigpXG4gICAgICAgIGJpbmRlci5vYmplY3QgPSBzZW5kZXJcbiAgICAgICAgYmluZGVyLmV4ZWN1dGVCaW5kaW5nKGJpbmRpbmcpXG5cbiAgICAjIyMqXG4gICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eS1wYXRoIG9uIGEgc3BlY2lmaWVkIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICAgICogXG4gICAgKiBAbWV0aG9kIGZpZWxkVmFsdWVcbiAgICAqIEBzdGF0aWNcbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgLSBBbiBvYmplY3QgdG8gZXZhbHVhdGUgdGhlIHByb3BlcnR5LXBhdGggb24uXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIEEgcHJvcGVydHktcGF0aC5cbiAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS1wYXRoLlxuICAgICMjIyBcbiAgICBAZmllbGRWYWx1ZTogKG9iamVjdCwgcGF0aCkgLT5cbiAgICAgICAgaWYgdHlwZW9mIHBhdGggPT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgZmllbGQgPSB1aS5Db21wb25lbnRfQmluZGluZ0hhbmRsZXIucmVzb2x2ZUZpZWxkUGF0aChvYmplY3QsIHBhdGgpXG4gICAgICAgICAgICByZXR1cm4gMCB1bmxlc3MgZmllbGQ/XG4gICAgICAgICAgICByZXR1cm4gZmllbGQuZ2V0KG9iamVjdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHBhdGhcbiAgICAgXG4gICAgIyMjKlxuICAgICogUmVzb2x2ZXMgYSBwcm9wZXJ0eS1wYXRoIG9mIGEgc3BlY2lmaWVkIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBUaGVcbiAgICAqIHJlc3VsdC1vYmplY3QgaGFzIGEgZ2V0LSBhbmQgYW4gb3B0aW9uYWwgc2V0LWZ1bmN0aW9uIHRvIGdldCBvciBzZXQgdGhlXG4gICAgKiB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LXBhdGguIFRoZSBzZXQtZnVuY3Rpb24gaXMgb25seSBwcmVzZW50IGZvciBwcm9wZXJ0eS1wYXRoc1xuICAgICogd2hpY2ggY2FuIGJlIHdyaXR0ZW4uXG4gICAgKiBcbiAgICAqIEBtZXRob2QgcmVzb2x2ZUZpZWxkUGF0aFxuICAgICogQHN0YXRpY1xuICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCAtIEFuIG9iamVjdCB0byBldmFsdWF0ZSB0aGUgcHJvcGVydHktcGF0aCBvbi5cbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gQSBwcm9wZXJ0eS1wYXRoLlxuICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0LW9iamVjdCBjb250YWluaW5nIGEgZ2V0LSBhbmQgc2V0LWZ1bmN0aW9uIHRvIG1hbmlwdWxhdGUgdGhlIHByb3BlcnR5LXZhbHVlLlxuICAgICMjIyAgICBcbiAgICBAcmVzb2x2ZUZpZWxkUGF0aDogKG9iamVjdCwgcGF0aCkgLT4gXG4gICAgICAgIHJlc3VsdCA9IHVpLkNvbXBvbmVudF9CaW5kaW5nSGFuZGxlci5jb21waWxlZFBhdGhzW3BhdGhdXG4gICAgICAgIGlmIHJlc3VsdD8gdGhlbiByZXR1cm4gcmVzdWx0XG4gICAgICAgIFxuICAgICAgICBpZiBwYXRoPyAgXG4gICAgICAgICAgICByZXN1bHQgPSB7IHNldDogbnVsbCwgZ2V0OiBudWxsIH1cbiAgICAgICAgICAgIHJlc3VsdC5nZXQgPSBldmFsKFwiKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIFwiICsgcGF0aCArIFwiIH0pXCIpXG4gICAgICAgICAgICByZXN1bHQuc2V0ID0gZXZhbChcIihmdW5jdGlvbihvLCB2KSB7IFwiICsgcGF0aCArIFwiID0gdjsgfSlcIilcbiAgICAgICAgICBcbiAgICAgICAgICAgIHVpLkNvbXBvbmVudF9CaW5kaW5nSGFuZGxlci5jb21waWxlZFBhdGhzW3BhdGhdID0gcmVzdWx0XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgXG4gICAgIyMjKlxuICAgICogUmVzb2x2ZXMgYSBwcm9wZXJ0eS1wYXRoIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIFRoZVxuICAgICogcmVzdWx0LW9iamVjdCBoYXMgYSBnZXQtIGFuZCBhbiBvcHRpb25hbCBzZXQtZnVuY3Rpb24gdG8gZ2V0IG9yIHNldCB0aGVcbiAgICAqIHZhbHVlIGZvciB0aGUgcHJvcGVydHktcGF0aC4gVGhlIHNldC1mdW5jdGlvbiBpcyBvbmx5IHByZXNlbnQgZm9yIHByb3BlcnR5LXBhdGhzXG4gICAgKiB3aGljaCBjYW4gYmUgd3JpdHRlbi5cbiAgICAqIFxuICAgICogQG1ldGhvZCByZXNvbHZlRmllbGRQYXRoXG4gICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IC0gQW4gb2JqZWN0IHRvIGV2YWx1YXRlIHRoZSBwcm9wZXJ0eS1wYXRoIG9uLlxuICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBBIHByb3BlcnR5LXBhdGguXG4gICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHQtb2JqZWN0IGNvbnRhaW5pbmcgYSBnZXQtIGFuZCBzZXQtZnVuY3Rpb24gdG8gbWFuaXB1bGF0ZSB0aGUgcHJvcGVydHktdmFsdWUuXG4gICAgIyMjICAgICBcbiAgICByZXNvbHZlRmllbGRQYXRoOiAocGF0aCkgLT4gdWkuQ29tcG9uZW50X0JpbmRpbmdIYW5kbGVyLnJlc29sdmVGaWVsZFBhdGgoQG9iamVjdCwgcGF0aClcbiAgICAgICAgXG51aS5Db21wb25lbnRfQmluZGluZ0hhbmRsZXIgPSBDb21wb25lbnRfQmluZGluZ0hhbmRsZXIiXX0=\n//# sourceURL=Component_BindingHandler_113.js"},"summary":["name","type","order"]}
1 + {
2 + "uid": "91139725K09EAA4678SBA18E0B484F480118",
3 + "isLoaded": true,
4 + "lastModificationTime": 0,
5 + "items": {
6 + "name": "Component_BindingHandler",
7 + "type": "game_script",
8 + "order": 9,
9 + "content": "# ===================================================================\n#\n# Script: Component_BindingHandler\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Component_BindingHandler extends ui.Component_Handler\n ###*\n * Caches already compiled binding-paths.\n * @property compiledPaths\n * @type Object\n * @static\n ###\n @compiledPaths: {}\n \n ###*\n * A binding-handler component allows a UI game object to execute\n * property-bindings.<br><br>\n *\n * For example: A text-label can bind its text-property to a backend-field \n * like the current music-volume to always display correct music-volume. \n * If the volume changes, the text-property will be updated\n * automatically.\n *\n * To define a binding, a special property-path syntax is used. For example:<br>\n * <br>\n * $myTextField.text<br>\n * <br>\n * is a property-path to access the text-property of a text-field object\n * with the identifier \"myTextField\". For more information, take a look\n * into the \"In Game UI System\" section of the help-file.\n * \n * @module ui\n * @class Component_BindingHandler\n * @extends ui.Component_Handler\n * @memberof ui\n * @constructor\n ###\n constructor: () ->\n\n ###*\n * Initializes the binding-handler.\n * \n * @method setup\n ###\n setup: ->\n \n ###*\n * Updates the binding-handler.\n * \n * @method update\n ### \n update: ->\n for binding in @object.bindings\n @executeBinding(binding)\n \n @object.initialized = yes\n \n return null\n \n ###*\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n ### \n executeBinding: (binding) ->\n return if not @checkObject(binding)\n \n source = binding.sourceFunc ? (binding.sourceFunc=@resolveFieldPath(binding.sourceField))\n target = binding.targetFunc ? (binding.targetFunc=@resolveFieldPath(binding.targetField))\n \n return if !target\n return target.set(@object, null) if !source\n \n value = source.get(@object)\n offset = 0\n \n if binding.offset?\n value += binding.offset\n if binding.max?\n value = Math.min(binding.max, value)\n if binding.min?\n value = Math.max(binding.min, value)\n \n target.set(@object, value)\n \n ###*\n * Evaluates a specified property-path and returns the result.\n * \n * @method fieldValue\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n ### \n fieldValue: (path) -> ui.Component_BindingHandler.fieldValue(@object, path) \n \n ###*\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n * @static\n ### \n @executeBinding: (sender, binding) ->\n binder = new ui.BindingHandler()\n binder.object = sender\n binder.executeBinding(binding)\n\n ###*\n * Evaluates a property-path on a specified object and returns the result.\n * \n * @method fieldValue\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n ### \n @fieldValue: (object, path) ->\n if typeof path == \"string\"\n field = ui.Component_BindingHandler.resolveFieldPath(object, path)\n return 0 unless field?\n return field.get(object)\n else\n return path\n \n ###*\n * Resolves a property-path of a specified object and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n ### \n @resolveFieldPath: (object, path) -> \n result = ui.Component_BindingHandler.compiledPaths[path]\n if result? then return result\n \n if path? \n result = { set: null, get: null }\n result.get = eval(\"(function(o) { return \" + path + \" })\")\n result.set = eval(\"(function(o, v) { \" + path + \" = v; })\")\n \n ui.Component_BindingHandler.compiledPaths[path] = result\n \n return result\n \n ###*\n * Resolves a property-path and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n ### \n resolveFieldPath: (path) -> ui.Component_BindingHandler.resolveFieldPath(@object, path)\n \nui.Component_BindingHandler = Component_BindingHandler",
10 + "parentId": "01A95DA3K01E8A4CB4SBE17E790BCE1FC035",
11 + "folder": false,
12 + "compiledContent": "var Component_BindingHandler,\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_BindingHandler = (function(superClass) {\n extend(Component_BindingHandler, superClass);\n\n\n /**\n * Caches already compiled binding-paths.\n * @property compiledPaths\n * @type Object\n * @static\n */\n\n Component_BindingHandler.compiledPaths = {};\n\n\n /**\n * A binding-handler component allows a UI game object to execute\n * property-bindings.<br><br>\n *\n * For example: A text-label can bind its text-property to a backend-field \n * like the current music-volume to always display correct music-volume. \n * If the volume changes, the text-property will be updated\n * automatically.\n *\n * To define a binding, a special property-path syntax is used. For example:<br>\n * <br>\n * $myTextField.text<br>\n * <br>\n * is a property-path to access the text-property of a text-field object\n * with the identifier \"myTextField\". For more information, take a look\n * into the \"In Game UI System\" section of the help-file.\n * \n * @module ui\n * @class Component_BindingHandler\n * @extends ui.Component_Handler\n * @memberof ui\n * @constructor\n */\n\n function Component_BindingHandler() {}\n\n\n /**\n * Initializes the binding-handler.\n * \n * @method setup\n */\n\n Component_BindingHandler.prototype.setup = function() {};\n\n\n /**\n * Updates the binding-handler.\n * \n * @method update\n */\n\n Component_BindingHandler.prototype.update = function() {\n var binding, i, len, ref;\n ref = this.object.bindings;\n for (i = 0, len = ref.length; i < len; i++) {\n binding = ref[i];\n this.executeBinding(binding);\n }\n this.object.initialized = true;\n return null;\n };\n\n\n /**\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n */\n\n Component_BindingHandler.prototype.executeBinding = function(binding) {\n var offset, ref, ref1, source, target, value;\n if (!this.checkObject(binding)) {\n return;\n }\n source = (ref = binding.sourceFunc) != null ? ref : (binding.sourceFunc = this.resolveFieldPath(binding.sourceField));\n target = (ref1 = binding.targetFunc) != null ? ref1 : (binding.targetFunc = this.resolveFieldPath(binding.targetField));\n if (!target) {\n return;\n }\n if (!source) {\n return target.set(this.object, null);\n }\n value = source.get(this.object);\n offset = 0;\n if (binding.offset != null) {\n value += binding.offset;\n }\n if (binding.max != null) {\n value = Math.min(binding.max, value);\n }\n if (binding.min != null) {\n value = Math.max(binding.min, value);\n }\n return target.set(this.object, value);\n };\n\n\n /**\n * Evaluates a specified property-path and returns the result.\n * \n * @method fieldValue\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n */\n\n Component_BindingHandler.prototype.fieldValue = function(path) {\n return ui.Component_BindingHandler.fieldValue(this.object, path);\n };\n\n\n /**\n * Executes a specified binding. The binding is only executed if all assigned\n * events and conditions are true.\n * \n * @method executeBinding\n * @param {Object} binding - The binding to execute.\n * @static\n */\n\n Component_BindingHandler.executeBinding = function(sender, binding) {\n var binder;\n binder = new ui.BindingHandler();\n binder.object = sender;\n return binder.executeBinding(binding);\n };\n\n\n /**\n * Evaluates a property-path on a specified object and returns the result.\n * \n * @method fieldValue\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The value of the property-path.\n */\n\n Component_BindingHandler.fieldValue = function(object, path) {\n var field;\n if (typeof path === \"string\") {\n field = ui.Component_BindingHandler.resolveFieldPath(object, path);\n if (field == null) {\n return 0;\n }\n return field.get(object);\n } else {\n return path;\n }\n };\n\n\n /**\n * Resolves a property-path of a specified object and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @static\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n */\n\n Component_BindingHandler.resolveFieldPath = function(object, path) {\n var result;\n result = ui.Component_BindingHandler.compiledPaths[path];\n if (result != null) {\n return result;\n }\n if (path != null) {\n result = {\n set: null,\n get: null\n };\n result.get = eval(\"(function(o) { return \" + path + \" })\");\n result.set = eval(\"(function(o, v) { \" + path + \" = v; })\");\n ui.Component_BindingHandler.compiledPaths[path] = result;\n }\n return result;\n };\n\n\n /**\n * Resolves a property-path and returns the result. The\n * result-object has a get- and an optional set-function to get or set the\n * value for the property-path. The set-function is only present for property-paths\n * which can be written.\n * \n * @method resolveFieldPath\n * @param {Object} object - An object to evaluate the property-path on.\n * @param {string} path - A property-path.\n * @return {Object} The result-object containing a get- and set-function to manipulate the property-value.\n */\n\n Component_BindingHandler.prototype.resolveFieldPath = function(path) {\n return ui.Component_BindingHandler.resolveFieldPath(this.object, path);\n };\n\n return Component_BindingHandler;\n\n})(ui.Component_Handler);\n\nui.Component_BindingHandler = Component_BindingHandler;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsd0JBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7OztFQU1BLHdCQUFDLENBQUEsYUFBRCxHQUFnQjs7O0FBRWhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QmEsa0NBQUEsR0FBQTs7O0FBRWI7Ozs7OztxQ0FLQSxLQUFBLEdBQU8sU0FBQSxHQUFBOzs7QUFFUDs7Ozs7O3FDQUtBLE1BQUEsR0FBUSxTQUFBO0FBQ0osUUFBQTtBQUFBO0FBQUEsU0FBQSxxQ0FBQTs7TUFDSSxJQUFDLENBQUEsY0FBRCxDQUFnQixPQUFoQjtBQURKO0lBR0EsSUFBQyxDQUFBLE1BQU0sQ0FBQyxXQUFSLEdBQXNCO0FBRXRCLFdBQU87RUFOSDs7O0FBUVI7Ozs7Ozs7O3FDQU9BLGNBQUEsR0FBZ0IsU0FBQyxPQUFEO0FBQ1osUUFBQTtJQUFBLElBQVUsQ0FBSSxJQUFDLENBQUEsV0FBRCxDQUFhLE9BQWIsQ0FBZDtBQUFBLGFBQUE7O0lBRUEsTUFBQSw4Q0FBOEIsQ0FBQyxPQUFPLENBQUMsVUFBUixHQUFtQixJQUFDLENBQUEsZ0JBQUQsQ0FBa0IsT0FBTyxDQUFDLFdBQTFCLENBQXBCO0lBQzlCLE1BQUEsZ0RBQThCLENBQUMsT0FBTyxDQUFDLFVBQVIsR0FBbUIsSUFBQyxDQUFBLGdCQUFELENBQWtCLE9BQU8sQ0FBQyxXQUExQixDQUFwQjtJQUU5QixJQUFVLENBQUMsTUFBWDtBQUFBLGFBQUE7O0lBQ0EsSUFBb0MsQ0FBQyxNQUFyQztBQUFBLGFBQU8sTUFBTSxDQUFDLEdBQVAsQ0FBVyxJQUFDLENBQUEsTUFBWixFQUFvQixJQUFwQixFQUFQOztJQUVBLEtBQUEsR0FBUSxNQUFNLENBQUMsR0FBUCxDQUFXLElBQUMsQ0FBQSxNQUFaO0lBQ1IsTUFBQSxHQUFTO0lBRVQsSUFBRyxzQkFBSDtNQUNJLEtBQUEsSUFBUyxPQUFPLENBQUMsT0FEckI7O0lBRUEsSUFBRyxtQkFBSDtNQUNJLEtBQUEsR0FBUSxJQUFJLENBQUMsR0FBTCxDQUFTLE9BQU8sQ0FBQyxHQUFqQixFQUFzQixLQUF0QixFQURaOztJQUVBLElBQUcsbUJBQUg7TUFDSSxLQUFBLEdBQVEsSUFBSSxDQUFDLEdBQUwsQ0FBUyxPQUFPLENBQUMsR0FBakIsRUFBc0IsS0FBdEIsRUFEWjs7V0FHQSxNQUFNLENBQUMsR0FBUCxDQUFXLElBQUMsQ0FBQSxNQUFaLEVBQW9CLEtBQXBCO0VBbkJZOzs7QUFxQmhCOzs7Ozs7OztxQ0FPQSxVQUFBLEdBQVksU0FBQyxJQUFEO1dBQVUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFVBQTVCLENBQXVDLElBQUMsQ0FBQSxNQUF4QyxFQUFnRCxJQUFoRDtFQUFWOzs7QUFFWjs7Ozs7Ozs7O0VBUUEsd0JBQUMsQ0FBQSxjQUFELEdBQWlCLFNBQUMsTUFBRCxFQUFTLE9BQVQ7QUFDYixRQUFBO0lBQUEsTUFBQSxHQUFhLElBQUEsRUFBRSxDQUFDLGNBQUgsQ0FBQTtJQUNiLE1BQU0sQ0FBQyxNQUFQLEdBQWdCO1dBQ2hCLE1BQU0sQ0FBQyxjQUFQLENBQXNCLE9BQXRCO0VBSGE7OztBQUtqQjs7Ozs7Ozs7OztFQVNBLHdCQUFDLENBQUEsVUFBRCxHQUFhLFNBQUMsTUFBRCxFQUFTLElBQVQ7QUFDVCxRQUFBO0lBQUEsSUFBRyxPQUFPLElBQVAsS0FBZSxRQUFsQjtNQUNJLEtBQUEsR0FBUSxFQUFFLENBQUMsd0JBQXdCLENBQUMsZ0JBQTVCLENBQTZDLE1BQTdDLEVBQXFELElBQXJEO01BQ1IsSUFBZ0IsYUFBaEI7QUFBQSxlQUFPLEVBQVA7O0FBQ0EsYUFBTyxLQUFLLENBQUMsR0FBTixDQUFVLE1BQVYsRUFIWDtLQUFBLE1BQUE7QUFLSSxhQUFPLEtBTFg7O0VBRFM7OztBQVFiOzs7Ozs7Ozs7Ozs7O0VBWUEsd0JBQUMsQ0FBQSxnQkFBRCxHQUFtQixTQUFDLE1BQUQsRUFBUyxJQUFUO0FBQ2YsUUFBQTtJQUFBLE1BQUEsR0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUMsYUFBYyxDQUFBLElBQUE7SUFDbkQsSUFBRyxjQUFIO0FBQWdCLGFBQU8sT0FBdkI7O0lBRUEsSUFBRyxZQUFIO01BQ0ksTUFBQSxHQUFTO1FBQUUsR0FBQSxFQUFLLElBQVA7UUFBYSxHQUFBLEVBQUssSUFBbEI7O01BQ1QsTUFBTSxDQUFDLEdBQVAsR0FBYSxJQUFBLENBQUssd0JBQUEsR0FBMkIsSUFBM0IsR0FBa0MsS0FBdkM7TUFDYixNQUFNLENBQUMsR0FBUCxHQUFhLElBQUEsQ0FBSyxvQkFBQSxHQUF1QixJQUF2QixHQUE4QixVQUFuQztNQUViLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFjLENBQUEsSUFBQSxDQUExQyxHQUFrRCxPQUx0RDs7QUFPQSxXQUFPO0VBWFE7OztBQWFuQjs7Ozs7Ozs7Ozs7O3FDQVdBLGdCQUFBLEdBQWtCLFNBQUMsSUFBRDtXQUFVLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBNUIsQ0FBNkMsSUFBQyxDQUFBLE1BQTlDLEVBQXNELElBQXREO0VBQVY7Ozs7R0E3SmlCLEVBQUUsQ0FBQzs7QUErSjFDLEVBQUUsQ0FBQyx3QkFBSCxHQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuI1xuIyAgIFNjcmlwdDogQ29tcG9uZW50X0JpbmRpbmdIYW5kbGVyXG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBDb21wb25lbnRfQmluZGluZ0hhbmRsZXIgZXh0ZW5kcyB1aS5Db21wb25lbnRfSGFuZGxlclxuICAgICMjIypcbiAgICAqIENhY2hlcyBhbHJlYWR5IGNvbXBpbGVkIGJpbmRpbmctcGF0aHMuXG4gICAgKiBAcHJvcGVydHkgY29tcGlsZWRQYXRoc1xuICAgICogQHR5cGUgT2JqZWN0XG4gICAgKiBAc3RhdGljXG4gICAgIyMjXG4gICAgQGNvbXBpbGVkUGF0aHM6IHt9XG4gICAgXG4gICAgIyMjKlxuICAgICogQSBiaW5kaW5nLWhhbmRsZXIgY29tcG9uZW50IGFsbG93cyBhIFVJIGdhbWUgb2JqZWN0IHRvIGV4ZWN1dGVcbiAgICAqIHByb3BlcnR5LWJpbmRpbmdzLjxicj48YnI+XG4gICAgKlxuICAgICogRm9yIGV4YW1wbGU6IEEgdGV4dC1sYWJlbCBjYW4gYmluZCBpdHMgdGV4dC1wcm9wZXJ0eSB0byBhIGJhY2tlbmQtZmllbGQgXG4gICAgKiBsaWtlIHRoZSBjdXJyZW50IG11c2ljLXZvbHVtZSB0byBhbHdheXMgZGlzcGxheSBjb3JyZWN0IG11c2ljLXZvbHVtZS4gXG4gICAgKiBJZiB0aGUgdm9sdW1lIGNoYW5nZXMsIHRoZSB0ZXh0LXByb3BlcnR5IHdpbGwgYmUgdXBkYXRlZFxuICAgICogYXV0b21hdGljYWxseS5cbiAgICAqXG4gICAgKiBUbyBkZWZpbmUgYSBiaW5kaW5nLCBhIHNwZWNpYWwgcHJvcGVydHktcGF0aCBzeW50YXggaXMgdXNlZC4gRm9yIGV4YW1wbGU6PGJyPlxuICAgICogPGJyPlxuICAgICogJG15VGV4dEZpZWxkLnRleHQ8YnI+XG4gICAgKiA8YnI+XG4gICAgKiBpcyBhIHByb3BlcnR5LXBhdGggdG8gYWNjZXNzIHRoZSB0ZXh0LXByb3BlcnR5IG9mIGEgdGV4dC1maWVsZCBvYmplY3RcbiAgICAqIHdpdGggdGhlIGlkZW50aWZpZXIgXCJteVRleHRGaWVsZFwiLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgdGFrZSBhIGxvb2tcbiAgICAqIGludG8gdGhlIFwiSW4gR2FtZSBVSSBTeXN0ZW1cIiBzZWN0aW9uIG9mIHRoZSBoZWxwLWZpbGUuXG4gICAgKiBcbiAgICAqIEBtb2R1bGUgdWlcbiAgICAqIEBjbGFzcyBDb21wb25lbnRfQmluZGluZ0hhbmRsZXJcbiAgICAqIEBleHRlbmRzIHVpLkNvbXBvbmVudF9IYW5kbGVyXG4gICAgKiBAbWVtYmVyb2YgdWlcbiAgICAqIEBjb25zdHJ1Y3RvclxuICAgICMjI1xuICAgIGNvbnN0cnVjdG9yOiAoKSAtPlxuXG4gICAgIyMjKlxuICAgICogSW5pdGlhbGl6ZXMgdGhlIGJpbmRpbmctaGFuZGxlci5cbiAgICAqIFxuICAgICogQG1ldGhvZCBzZXR1cFxuICAgICMjI1xuICAgIHNldHVwOiAtPlxuICAgICBcbiAgICAjIyMqXG4gICAgKiBVcGRhdGVzIHRoZSBiaW5kaW5nLWhhbmRsZXIuXG4gICAgKiBcbiAgICAqIEBtZXRob2QgdXBkYXRlXG4gICAgIyMjICAgXG4gICAgdXBkYXRlOiAtPlxuICAgICAgICBmb3IgYmluZGluZyBpbiBAb2JqZWN0LmJpbmRpbmdzXG4gICAgICAgICAgICBAZXhlY3V0ZUJpbmRpbmcoYmluZGluZylcbiAgICAgICAgXG4gICAgICAgIEBvYmplY3QuaW5pdGlhbGl6ZWQgPSB5ZXNcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgIFxuICAgICMjIypcbiAgICAqIEV4ZWN1dGVzIGEgc3BlY2lmaWVkIGJpbmRpbmcuIFRoZSBiaW5kaW5nIGlzIG9ubHkgZXhlY3V0ZWQgaWYgYWxsIGFzc2lnbmVkXG4gICAgKiBldmVudHMgYW5kIGNvbmRpdGlvbnMgYXJlIHRydWUuXG4gICAgKiBcbiAgICAqIEBtZXRob2QgZXhlY3V0ZUJpbmRpbmdcbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBiaW5kaW5nIC0gVGhlIGJpbmRpbmcgdG8gZXhlY3V0ZS5cbiAgICAjIyMgICAgXG4gICAgZXhlY3V0ZUJpbmRpbmc6IChiaW5kaW5nKSAtPlxuICAgICAgICByZXR1cm4gaWYgbm90IEBjaGVja09iamVjdChiaW5kaW5nKVxuICAgICAgICBcbiAgICAgICAgc291cmNlID0gYmluZGluZy5zb3VyY2VGdW5jID8gKGJpbmRpbmcuc291cmNlRnVuYz1AcmVzb2x2ZUZpZWxkUGF0aChiaW5kaW5nLnNvdXJjZUZpZWxkKSlcbiAgICAgICAgdGFyZ2V0ID0gYmluZGluZy50YXJnZXRGdW5jID8gKGJpbmRpbmcudGFyZ2V0RnVuYz1AcmVzb2x2ZUZpZWxkUGF0aChiaW5kaW5nLnRhcmdldEZpZWxkKSlcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBpZiAhdGFyZ2V0XG4gICAgICAgIHJldHVybiB0YXJnZXQuc2V0KEBvYmplY3QsIG51bGwpIGlmICFzb3VyY2VcbiAgICAgICAgICAgIFxuICAgICAgICB2YWx1ZSA9IHNvdXJjZS5nZXQoQG9iamVjdClcbiAgICAgICAgb2Zmc2V0ID0gMFxuICAgICAgICBcbiAgICAgICAgaWYgYmluZGluZy5vZmZzZXQ/XG4gICAgICAgICAgICB2YWx1ZSArPSBiaW5kaW5nLm9mZnNldFxuICAgICAgICBpZiBiaW5kaW5nLm1heD9cbiAgICAgICAgICAgIHZhbHVlID0gTWF0aC5taW4oYmluZGluZy5tYXgsIHZhbHVlKVxuICAgICAgICBpZiBiaW5kaW5nLm1pbj9cbiAgICAgICAgICAgIHZhbHVlID0gTWF0aC5tYXgoYmluZGluZy5taW4sIHZhbHVlKVxuICAgICAgICAgICAgXG4gICAgICAgIHRhcmdldC5zZXQoQG9iamVjdCwgdmFsdWUpXG4gICAgICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBFdmFsdWF0ZXMgYSBzcGVjaWZpZWQgcHJvcGVydHktcGF0aCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICAgICogXG4gICAgKiBAbWV0aG9kIGZpZWxkVmFsdWVcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gQSBwcm9wZXJ0eS1wYXRoLlxuICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5LXBhdGguXG4gICAgIyMjIFxuICAgIGZpZWxkVmFsdWU6IChwYXRoKSAtPiB1aS5Db21wb25lbnRfQmluZGluZ0hhbmRsZXIuZmllbGRWYWx1ZShAb2JqZWN0LCBwYXRoKSAgXG4gICAgXG4gICAgIyMjKlxuICAgICogRXhlY3V0ZXMgYSBzcGVjaWZpZWQgYmluZGluZy4gVGhlIGJpbmRpbmcgaXMgb25seSBleGVjdXRlZCBpZiBhbGwgYXNzaWduZWRcbiAgICAqIGV2ZW50cyBhbmQgY29uZGl0aW9ucyBhcmUgdHJ1ZS5cbiAgICAqIFxuICAgICogQG1ldGhvZCBleGVjdXRlQmluZGluZ1xuICAgICogQHBhcmFtIHtPYmplY3R9IGJpbmRpbmcgLSBUaGUgYmluZGluZyB0byBleGVjdXRlLlxuICAgICogQHN0YXRpY1xuICAgICMjIyBcbiAgICBAZXhlY3V0ZUJpbmRpbmc6IChzZW5kZXIsIGJpbmRpbmcpIC0+XG4gICAgICAgIGJpbmRlciA9IG5ldyB1aS5CaW5kaW5nSGFuZGxlcigpXG4gICAgICAgIGJpbmRlci5vYmplY3QgPSBzZW5kZXJcbiAgICAgICAgYmluZGVyLmV4ZWN1dGVCaW5kaW5nKGJpbmRpbmcpXG5cbiAgICAjIyMqXG4gICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eS1wYXRoIG9uIGEgc3BlY2lmaWVkIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICAgICogXG4gICAgKiBAbWV0aG9kIGZpZWxkVmFsdWVcbiAgICAqIEBzdGF0aWNcbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgLSBBbiBvYmplY3QgdG8gZXZhbHVhdGUgdGhlIHByb3BlcnR5LXBhdGggb24uXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIEEgcHJvcGVydHktcGF0aC5cbiAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS1wYXRoLlxuICAgICMjIyBcbiAgICBAZmllbGRWYWx1ZTogKG9iamVjdCwgcGF0aCkgLT5cbiAgICAgICAgaWYgdHlwZW9mIHBhdGggPT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgZmllbGQgPSB1aS5Db21wb25lbnRfQmluZGluZ0hhbmRsZXIucmVzb2x2ZUZpZWxkUGF0aChvYmplY3QsIHBhdGgpXG4gICAgICAgICAgICByZXR1cm4gMCB1bmxlc3MgZmllbGQ/XG4gICAgICAgICAgICByZXR1cm4gZmllbGQuZ2V0KG9iamVjdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHBhdGhcbiAgICAgXG4gICAgIyMjKlxuICAgICogUmVzb2x2ZXMgYSBwcm9wZXJ0eS1wYXRoIG9mIGEgc3BlY2lmaWVkIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBUaGVcbiAgICAqIHJlc3VsdC1vYmplY3QgaGFzIGEgZ2V0LSBhbmQgYW4gb3B0aW9uYWwgc2V0LWZ1bmN0aW9uIHRvIGdldCBvciBzZXQgdGhlXG4gICAgKiB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LXBhdGguIFRoZSBzZXQtZnVuY3Rpb24gaXMgb25seSBwcmVzZW50IGZvciBwcm9wZXJ0eS1wYXRoc1xuICAgICogd2hpY2ggY2FuIGJlIHdyaXR0ZW4uXG4gICAgKiBcbiAgICAqIEBtZXRob2QgcmVzb2x2ZUZpZWxkUGF0aFxuICAgICogQHN0YXRpY1xuICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCAtIEFuIG9iamVjdCB0byBldmFsdWF0ZSB0aGUgcHJvcGVydHktcGF0aCBvbi5cbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gQSBwcm9wZXJ0eS1wYXRoLlxuICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0LW9iamVjdCBjb250YWluaW5nIGEgZ2V0LSBhbmQgc2V0LWZ1bmN0aW9uIHRvIG1hbmlwdWxhdGUgdGhlIHByb3BlcnR5LXZhbHVlLlxuICAgICMjIyAgICBcbiAgICBAcmVzb2x2ZUZpZWxkUGF0aDogKG9iamVjdCwgcGF0aCkgLT4gXG4gICAgICAgIHJlc3VsdCA9IHVpLkNvbXBvbmVudF9CaW5kaW5nSGFuZGxlci5jb21waWxlZFBhdGhzW3BhdGhdXG4gICAgICAgIGlmIHJlc3VsdD8gdGhlbiByZXR1cm4gcmVzdWx0XG4gICAgICAgIFxuICAgICAgICBpZiBwYXRoPyAgXG4gICAgICAgICAgICByZXN1bHQgPSB7IHNldDogbnVsbCwgZ2V0OiBudWxsIH1cbiAgICAgICAgICAgIHJlc3VsdC5nZXQgPSBldmFsKFwiKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIFwiICsgcGF0aCArIFwiIH0pXCIpXG4gICAgICAgICAgICByZXN1bHQuc2V0ID0gZXZhbChcIihmdW5jdGlvbihvLCB2KSB7IFwiICsgcGF0aCArIFwiID0gdjsgfSlcIilcbiAgICAgICAgICBcbiAgICAgICAgICAgIHVpLkNvbXBvbmVudF9CaW5kaW5nSGFuZGxlci5jb21waWxlZFBhdGhzW3BhdGhdID0gcmVzdWx0XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgXG4gICAgIyMjKlxuICAgICogUmVzb2x2ZXMgYSBwcm9wZXJ0eS1wYXRoIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIFRoZVxuICAgICogcmVzdWx0LW9iamVjdCBoYXMgYSBnZXQtIGFuZCBhbiBvcHRpb25hbCBzZXQtZnVuY3Rpb24gdG8gZ2V0IG9yIHNldCB0aGVcbiAgICAqIHZhbHVlIGZvciB0aGUgcHJvcGVydHktcGF0aC4gVGhlIHNldC1mdW5jdGlvbiBpcyBvbmx5IHByZXNlbnQgZm9yIHByb3BlcnR5LXBhdGhzXG4gICAgKiB3aGljaCBjYW4gYmUgd3JpdHRlbi5cbiAgICAqIFxuICAgICogQG1ldGhvZCByZXNvbHZlRmllbGRQYXRoXG4gICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IC0gQW4gb2JqZWN0IHRvIGV2YWx1YXRlIHRoZSBwcm9wZXJ0eS1wYXRoIG9uLlxuICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBBIHByb3BlcnR5LXBhdGguXG4gICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHQtb2JqZWN0IGNvbnRhaW5pbmcgYSBnZXQtIGFuZCBzZXQtZnVuY3Rpb24gdG8gbWFuaXB1bGF0ZSB0aGUgcHJvcGVydHktdmFsdWUuXG4gICAgIyMjICAgICBcbiAgICByZXNvbHZlRmllbGRQYXRoOiAocGF0aCkgLT4gdWkuQ29tcG9uZW50X0JpbmRpbmdIYW5kbGVyLnJlc29sdmVGaWVsZFBhdGgoQG9iamVjdCwgcGF0aClcbiAgICAgICAgXG51aS5Db21wb25lbnRfQmluZGluZ0hhbmRsZXIgPSBDb21wb25lbnRfQmluZGluZ0hhbmRsZXIiXX0=\n//# sourceURL=Component_BindingHandler_111.js"
13 + },
14 + "summary": [
15 + "name",
16 + "type",
17 + "order"
18 + ]
19 + }