1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
{
"uid": "4C5917AAK0FD4A457ES869CEB180950AC2D4",
"isLoaded": true,
"lastModificationTime": 0,
"items": {
"name": "Object_UIElement",
"type": "game_script",
"order": 0,
"content": "# ===================================================================\n#\n# Script: Object_UIElement\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Object_UIElement extends gs.Object_Base\n #\n # The UI object's image used for visual presentation.\n # @property image\n # @type string\n #\n @accessors \"image\", \n set: (image) ->\n if image != @image_\n @image_ = image\n @needsUpdate = yes\n get: -> @image_\n \n #\n # The UI object's image used for visual presentation.\n # @property image\n # @type string\n #\n @accessors \"opacity\", \n set: (opacity) ->\n if opacity != @opacity_\n @opacity_ = opacity\n @needsUpdate = yes\n get: -> @opacity_\n \n #\n # The UI object's image used for visual presentation.\n # @property image\n # @type string\n #\n @accessors \"clipRect\", \n set: (clipRect) ->\n if clipRect != @clipRect_\n @clipRect_ = clipRect\n @needsUpdate = yes\n get: -> @clipRect_\n \n \n @accessors \"visible\", \n set: (v) -> \n if v != @visible_\n @visible_ = v\n @needsUpdate = yes\n @fullRefresh()\n \n get: -> @visible_ and (!@parent or @parent.visible)\n \n \n \n ###*\n * The base class for all In-Game UI objects.\n *\n * @module ui\n * @class Object_UIElement\n * @extends gs.Object_Base\n * @memberof ui\n * @constructor\n ### \n constructor: ->\n super()\n \n @id = \"\"\n \n ###*\n * Indicates if that UI object will break the binding-chain. If <b>true</b> the UI object\n * will not change any binding-targets for the current binding-execution period.\n * @property breakBindingChain\n * @type boolean\n ###\n @breakBindingChain = no\n @numbers = new Array(10)\n @data = new Array(10)\n @controlsByStyle = new Array(ui.UIManager.stylesById.length)\n @parentsByStyle = new Array(ui.UIManager.stylesById.length)\n @styles = []\n @activeStyles = []\n @focusable = no\n \n ###*\n * The UI object's destination rectangle on screen.\n * @property dstRect\n * @type ui.Component_UIElementRectangle\n ###\n @dstRect = new ui.UIElementRectangle(this)\n \n ###*\n * The UI object's margin. The margin defines an extra space around the UI object. \n * The default is { left: 0, top: 0, right: 0, bottom: 0 }.\n * @property margin\n * @type ui.Space\n ###\n @margin = new ui.Space(0, 0, 0, 0)\n \n ###*\n * The UI object's padding. The default is { left: 0, top: 0, right: 0, bottom: 0 }.\n * @property padding\n * @type ui.Space\n ###\n @padding = new ui.Space(0, 0, 0, 0)\n \n ###*\n * The UI object's alignment.\n * @property alignment\n * @type ui.Alignment\n ###\n @alignment = 0\n \n ###*\n * Indicates if the UI object is visible on screen.\n * @property visible\n * @type boolean\n ###\n @visible = yes\n \n ###*\n * Indicates if the UI object is enabled and responds to user actions.\n * @property enabled\n * @type boolean\n ###\n @enabled = yes\n \n ###*\n * The UI object's origin.\n * @property origin\n * @type gs.Vector2\n ###\n @origin = new ui.UIElementPoint(this) #x: 0, y: 0\n \n ###*\n * The UI object's offset.\n * @property offset\n * @type gs.Vector2\n ###\n @offset = new ui.UIElementPoint(this) #x: 0, y: 0\n \n ###*\n * The UI object's opacity to control transparency. For example: 0 = Transparent, 255 = Opaque, 128 = Semi-Transparent.\n * @property opacity\n * @type number\n ###\n @opacity = 255\n \n ###*\n * The UI object's resize behavior.\n * @property resizable\n * @type boolean\n ###\n @resizable = no\n \n ###*\n * The UI object's anchor-point. For example: An anchor-point with 0,0 places the object with its top-left corner\n * at its position but with an 0.5, 0.5 anchor-point the object is placed with its center. An anchor-point of 1,1\n * places the object with its lower-right corner.\n * @property anchor\n * @type gs.Point\n ###\n @anchor = new gs.Point(0.0, 0.0)\n \n ###*\n * The UI object's zoom-setting for x and y axis. The default value is\n * { x: 1.0, y: 1.0 }\n * @property zoom\n * @type gs.Point\n ###\n @zoom = new gs.Point(1.0, 1.0)\n \n ###*\n * The UI object's color.\n * @property color\n * @type gs.Color\n ###\n @color = new Color(255, 255, 255, 0)\n @tone = new Tone(0, 0, 0, 0)\n \n ###*\n * The UI object's rotation-angle in degrees. The rotation center depends on the\n * anchor-point.\n * @property angle\n * @type number\n ###\n @angle = 0\n \n ###*\n * The UI object's mask for masking-effects.\n * @property mask\n * @type gs.Mask\n ###\n @mask = new gs.Mask()\n \n ###*\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n ###\n @events = new gs.EventEmitter()\n \n ###*\n * The update-behavior of the UI object. The default is ui.UpdateBehavior.NORMAL.\n * @property updateBehavior\n * @type ui.UpdateBehavior\n ###\n @updateBehavior = ui.UpdateBehavior.NORMAL\n \n ###*\n * @property image_\n * @type string\n * @protected\n ###\n @image_ = null\n \n ###*\n * The object's clip-rect for visual presentation.\n * @property clipRect_\n * @type gs.Rect\n * @protected\n ###\n @clipRect_ = null\n \n ###*\n * @property visible_\n * @type boolean\n * @protected\n ###\n @visible_ = yes\n \n @addComponent(@events)\n \n \n ###*\n * Restores the object from a data-bundle.\n *\n * @method restore\n * @param {Object} data - The data-bundle.\n ### \n restore: (data) ->\n @anchor = new gs.Point(data.anchor.x, data.anchor.y)\n @offset = new gs.Point(data.offset.x, data.offset.y)\n @dstRect.x = data.x\n @dstRect.y = data.y\n @opacity = data.opacity\n @zoom = new gs.Point(data.zoom.x, data.zoom.y)\n @angle = data.angle\n @zIndex = data.zIndex\n @visible_ = data.visible\n @rid = data.rid\n \n ###*\n * Serializes the object into a data-bundle.\n *\n * @method toDataBundle\n * @return {Object} The data-bundle.\n ### \n toDataBundle: -> \n return {\n rid: @rid, \n x: @dstRect.x, \n y: @dstRect.y,\n opacity: @opacity,\n zoom: @zoom,\n angle: @angle,\n anchor: { x: @anchor.x, y: @anchor.y },\n zIndex: @zIndex,\n offset: { x: @offset.x, y: @offset.y },\n visible: @visible_\n }\n \nui.Object_UIElement = Object_UIElement",
"parentId": "4F9670D7KD392A494FS953DE4377B04AA7A6",
"folder": false,
"compiledContent": "var Object_UIElement,\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\nObject_UIElement = (function(superClass) {\n extend(Object_UIElement, superClass);\n\n Object_UIElement.accessors(\"image\", {\n set: function(image) {\n if (image !== this.image_) {\n this.image_ = image;\n return this.needsUpdate = true;\n }\n },\n get: function() {\n return this.image_;\n }\n });\n\n Object_UIElement.accessors(\"opacity\", {\n set: function(opacity) {\n if (opacity !== this.opacity_) {\n this.opacity_ = opacity;\n return this.needsUpdate = true;\n }\n },\n get: function() {\n return this.opacity_;\n }\n });\n\n Object_UIElement.accessors(\"clipRect\", {\n set: function(clipRect) {\n if (clipRect !== this.clipRect_) {\n this.clipRect_ = clipRect;\n return this.needsUpdate = true;\n }\n },\n get: function() {\n return this.clipRect_;\n }\n });\n\n Object_UIElement.accessors(\"visible\", {\n set: function(v) {\n if (v !== this.visible_) {\n this.visible_ = v;\n this.needsUpdate = true;\n return this.fullRefresh();\n }\n },\n get: function() {\n return this.visible_ && (!this.parent || this.parent.visible);\n }\n });\n\n\n /**\n * The base class for all In-Game UI objects.\n *\n * @module ui\n * @class Object_UIElement\n * @extends gs.Object_Base\n * @memberof ui\n * @constructor\n */\n\n function Object_UIElement() {\n Object_UIElement.__super__.constructor.call(this);\n this.id = \"\";\n\n /**\n * Indicates if that UI object will break the binding-chain. If <b>true</b> the UI object\n * will not change any binding-targets for the current binding-execution period.\n * @property breakBindingChain\n * @type boolean\n */\n this.breakBindingChain = false;\n this.numbers = new Array(10);\n this.data = new Array(10);\n this.controlsByStyle = new Array(ui.UIManager.stylesById.length);\n this.parentsByStyle = new Array(ui.UIManager.stylesById.length);\n this.styles = [];\n this.activeStyles = [];\n this.focusable = false;\n\n /**\n * The UI object's destination rectangle on screen.\n * @property dstRect\n * @type ui.Component_UIElementRectangle\n */\n this.dstRect = new ui.UIElementRectangle(this);\n\n /**\n * The UI object's margin. The margin defines an extra space around the UI object. \n * The default is { left: 0, top: 0, right: 0, bottom: 0 }.\n * @property margin\n * @type ui.Space\n */\n this.margin = new ui.Space(0, 0, 0, 0);\n\n /**\n * The UI object's padding. The default is { left: 0, top: 0, right: 0, bottom: 0 }.\n * @property padding\n * @type ui.Space\n */\n this.padding = new ui.Space(0, 0, 0, 0);\n\n /**\n * The UI object's alignment.\n * @property alignment\n * @type ui.Alignment\n */\n this.alignment = 0;\n\n /**\n * Indicates if the UI object is visible on screen.\n * @property visible\n * @type boolean\n */\n this.visible = true;\n\n /**\n * Indicates if the UI object is enabled and responds to user actions.\n * @property enabled\n * @type boolean\n */\n this.enabled = true;\n\n /**\n * The UI object's origin.\n * @property origin\n * @type gs.Vector2\n */\n this.origin = new ui.UIElementPoint(this);\n\n /**\n * The UI object's offset.\n * @property offset\n * @type gs.Vector2\n */\n this.offset = new ui.UIElementPoint(this);\n\n /**\n * The UI object's opacity to control transparency. For example: 0 = Transparent, 255 = Opaque, 128 = Semi-Transparent.\n * @property opacity\n * @type number\n */\n this.opacity = 255;\n\n /**\n * The UI object's resize behavior.\n * @property resizable\n * @type boolean\n */\n this.resizable = false;\n\n /**\n * The UI object's anchor-point. For example: An anchor-point with 0,0 places the object with its top-left corner\n * at its position but with an 0.5, 0.5 anchor-point the object is placed with its center. An anchor-point of 1,1\n * places the object with its lower-right corner.\n * @property anchor\n * @type gs.Point\n */\n this.anchor = new gs.Point(0.0, 0.0);\n\n /**\n * The UI object's zoom-setting for x and y axis. The default value is\n * { x: 1.0, y: 1.0 }\n * @property zoom\n * @type gs.Point\n */\n this.zoom = new gs.Point(1.0, 1.0);\n\n /**\n * The UI object's color.\n * @property color\n * @type gs.Color\n */\n this.color = new Color(255, 255, 255, 0);\n this.tone = new Tone(0, 0, 0, 0);\n\n /**\n * The UI object's rotation-angle in degrees. The rotation center depends on the\n * anchor-point.\n * @property angle\n * @type number\n */\n this.angle = 0;\n\n /**\n * The UI object's mask for masking-effects.\n * @property mask\n * @type gs.Mask\n */\n this.mask = new gs.Mask();\n\n /**\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n */\n this.events = new gs.EventEmitter();\n\n /**\n * The update-behavior of the UI object. The default is ui.UpdateBehavior.NORMAL.\n * @property updateBehavior\n * @type ui.UpdateBehavior\n */\n this.updateBehavior = ui.UpdateBehavior.NORMAL;\n\n /**\n * @property image_\n * @type string\n * @protected\n */\n this.image_ = null;\n\n /**\n * The object's clip-rect for visual presentation.\n * @property clipRect_\n * @type gs.Rect\n * @protected\n */\n this.clipRect_ = null;\n\n /**\n * @property visible_\n * @type boolean\n * @protected\n */\n this.visible_ = true;\n this.addComponent(this.events);\n }\n\n\n /**\n * Restores the object from a data-bundle.\n *\n * @method restore\n * @param {Object} data - The data-bundle.\n */\n\n Object_UIElement.prototype.restore = function(data) {\n this.anchor = new gs.Point(data.anchor.x, data.anchor.y);\n this.offset = new gs.Point(data.offset.x, data.offset.y);\n this.dstRect.x = data.x;\n this.dstRect.y = data.y;\n this.opacity = data.opacity;\n this.zoom = new gs.Point(data.zoom.x, data.zoom.y);\n this.angle = data.angle;\n this.zIndex = data.zIndex;\n this.visible_ = data.visible;\n return this.rid = data.rid;\n };\n\n\n /**\n * Serializes the object into a data-bundle.\n *\n * @method toDataBundle\n * @return {Object} The data-bundle.\n */\n\n Object_UIElement.prototype.toDataBundle = function() {\n return {\n rid: this.rid,\n x: this.dstRect.x,\n y: this.dstRect.y,\n opacity: this.opacity,\n zoom: this.zoom,\n angle: this.angle,\n anchor: {\n x: this.anchor.x,\n y: this.anchor.y\n },\n zIndex: this.zIndex,\n offset: {\n x: this.offset.x,\n y: this.offset.y\n },\n visible: this.visible_\n };\n };\n\n return Object_UIElement;\n\n})(gs.Object_Base);\n\nui.Object_UIElement = Object_UIElement;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsZ0JBQUE7RUFBQTs7O0FBQU07OztFQU1GLGdCQUFDLENBQUEsU0FBRCxDQUFXLE9BQVgsRUFDSTtJQUFBLEdBQUEsRUFBSyxTQUFDLEtBQUQ7TUFDRCxJQUFHLEtBQUEsS0FBUyxJQUFDLENBQUEsTUFBYjtRQUNJLElBQUMsQ0FBQSxNQUFELEdBQVU7ZUFDVixJQUFDLENBQUEsV0FBRCxHQUFlLEtBRm5COztJQURDLENBQUw7SUFJQSxHQUFBLEVBQUssU0FBQTthQUFHLElBQUMsQ0FBQTtJQUFKLENBSkw7R0FESjs7RUFZQSxnQkFBQyxDQUFBLFNBQUQsQ0FBVyxTQUFYLEVBQ0k7SUFBQSxHQUFBLEVBQUssU0FBQyxPQUFEO01BQ0QsSUFBRyxPQUFBLEtBQVcsSUFBQyxDQUFBLFFBQWY7UUFDSSxJQUFDLENBQUEsUUFBRCxHQUFZO2VBQ1osSUFBQyxDQUFBLFdBQUQsR0FBZSxLQUZuQjs7SUFEQyxDQUFMO0lBSUEsR0FBQSxFQUFLLFNBQUE7YUFBRyxJQUFDLENBQUE7SUFBSixDQUpMO0dBREo7O0VBWUEsZ0JBQUMsQ0FBQSxTQUFELENBQVcsVUFBWCxFQUNJO0lBQUEsR0FBQSxFQUFLLFNBQUMsUUFBRDtNQUNELElBQUcsUUFBQSxLQUFZLElBQUMsQ0FBQSxTQUFoQjtRQUNJLElBQUMsQ0FBQSxTQUFELEdBQWE7ZUFDYixJQUFDLENBQUEsV0FBRCxHQUFlLEtBRm5COztJQURDLENBQUw7SUFJQSxHQUFBLEVBQUssU0FBQTthQUFHLElBQUMsQ0FBQTtJQUFKLENBSkw7R0FESjs7RUFRQSxnQkFBQyxDQUFBLFNBQUQsQ0FBVyxTQUFYLEVBQ0k7SUFBQSxHQUFBLEVBQUssU0FBQyxDQUFEO01BQ0QsSUFBRyxDQUFBLEtBQUssSUFBQyxDQUFBLFFBQVQ7UUFDSSxJQUFDLENBQUEsUUFBRCxHQUFZO1FBQ1osSUFBQyxDQUFBLFdBQUQsR0FBZTtlQUNm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SUFBQyxDQUFBLEtBTkw7TUFPSCxNQUFBLEVBQVE7UUFBRSxDQUFBLEVBQUcsSUFBQyxDQUFBLE1BQU0sQ0FBQyxDQUFiO1FBQWdCLENBQUEsRUFBRyxJQUFDLENBQUEsTUFBTSxDQUFDLENBQTNCO09BUEw7TUFRSCxNQUFBLEVBQVEsSUFBQyxDQUFBLE1BUk47TUFTSCxNQUFBLEVBQVE7UUFBRSxDQUFBLEVBQUcsSUFBQyxDQUFBLE1BQU0sQ0FBQyxDQUFiO1FBQWdCLENBQUEsRUFBRyxJQUFDLENBQUEsTUFBTSxDQUFDLENBQTNCO09BVEw7TUFVSCxPQUFBLEVBQVMsSUFBQyxDQUFBLFFBVlA7O0VBREc7Ozs7R0E1UGEsRUFBRSxDQUFDOztBQTBRbEMsRUFBRSxDQUFDLGdCQUFILEdBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4jXG4jICAgU2NyaXB0OiBPYmplY3RfVUlFbGVtZW50XG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBPYmplY3RfVUlFbGVtZW50IGV4dGVuZHMgZ3MuT2JqZWN0X0Jhc2VcbiAgICAjXG4gICAgIyBUaGUgVUkgb2JqZWN0J3MgaW1hZ2UgdXNlZCBmb3IgdmlzdWFsIHByZXNlbnRhdGlvbi5cbiAgICAjIEBwcm9wZXJ0eSBpbWFnZVxuICAgICMgQHR5cGUgc3RyaW5nXG4gICAgI1xuICAgIEBhY2Nlc3NvcnMgXCJpbWFnZVwiLCBcbiAgICAgICAgc2V0OiAoaW1hZ2UpIC0+XG4gICAgICAgICAgICBpZiBpbWFnZSAhPSBAaW1hZ2VfXG4gICAgICAgICAgICAgICAgQGltYWdlXyA9IGltYWdlXG4gICAgICAgICAgICAgICAgQG5lZWRzVXBkYXRlID0geWVzXG4gICAgICAgIGdldDogLT4gQGltYWdlX1xuICAgICAgICBcbiAgICAjXG4gICAgIyBUaGUgVUkgb2JqZWN0J3MgaW1hZ2UgdXNlZCBmb3IgdmlzdWFsIHByZXNlbnRhdGlvbi5cbiAgICAjIEBwcm9wZXJ0eSBpbWFnZVxuICAgICMgQHR5cGUgc3RyaW5nXG4gICAgI1xuICAgIEBhY2Nlc3NvcnMgXCJvcGFjaXR5XCIsIFxuICAgICAgICBzZXQ6IChvcGFjaXR5KSAtPlxuICAgICAgICAgICAgaWYgb3BhY2l0eSAhPSBAb3BhY2l0eV9cbiAgICAgICAgICAgICAgICBAb3BhY2l0eV8gPSBvcGFjaXR5XG4gICAgICAgICAgICAgICAgQG5lZWRzVXBkYXRlID0geWVzXG4gICAgICAgIGdldDogLT4gQG9wYWNpdHlfXG4gICAgICAgIFxuICAgICNcbiAgICAjIFRoZSBVSSBvYmplY3QncyBpbWFnZSB1c2VkIGZvciB2aXN1YWwgcHJlc2VudGF0aW9uLlxuICAgICMgQHByb3BlcnR5IGltYWdlXG4gICAgIyBAdHlwZSBzdHJpbmdcbiAgICAjXG4gICAgQGFjY2Vzc29ycyBcImNsaXBSZWN0XCIsIFxuICAgICAgICBzZXQ6IChjbGlwUmVjdCkgLT5cbiAgICAgICAgICAgIGlmIGNsaXBSZWN0ICE9IEBjbGlwUmVjdF9cbiAgICAgICAgICAgICAgICBAY2xpcFJlY3RfID0gY2xpcFJlY3RcbiAgICAgICAgICAgICAgICBAbmVlZHNVcGRhdGUgPSB5ZXNcbiAgICAgICAgZ2V0OiAtPiBAY2xpcFJlY3RfXG4gICAgIFxuIFxuICAgIEBhY2Nlc3NvcnMgXCJ2aXNpYmxlXCIsIFxuICAgICAgICBzZXQ6ICh2KSAtPiBcbiAgICAgICAgICAgIGlmIHYgIT0gQHZpc2libGVfXG4gICAgICAgICAgICAgICAgQHZpc2libGVfID0gdlxuICAgICAgICAgICAgICAgIEBuZWVkc1VwZGF0ZSA9IHllc1xuICAgICAgICAgICAgICAgIEBmdWxsUmVmcmVzaCgpXG4gICAgICAgICAgICBcbiAgICAgICAgZ2V0OiAtPiBAdmlzaWJsZV8gYW5kICghQHBhcmVudCBvciBAcGFyZW50LnZpc2libGUpXG4gICAgICAgIFxuICAgIFxuICAgIFxuICAgICMjIypcbiAgICAqIFRoZSBiYXNlIGNsYXNzIGZvciBhbGwgSW4tR2FtZSBVSSBvYmplY3RzLlxuICAgICpcbiAgICAqIEBtb2R1bGUgdWlcbiAgICAqIEBjbGFzcyBPYmplY3RfVUlFbGVtZW50XG4gICAgKiBAZXh0ZW5kcyBncy5PYmplY3RfQmFzZVxuICAgICogQG1lbWJlcm9mIHVpXG4gICAgKiBAY29uc3RydWN0b3JcbiAgICAjIyMgICAgICAgIFxuICAgIGNvbnN0cnVjdG9yOiAtPlxuICAgICAgICBzdXBlcigpXG4gICAgICAgIFxuICAgICAgICBAaWQgPSBcIlwiXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogSW5kaWNhdGVzIGlmIHRoYXQgVUkgb2JqZWN0IHdpbGwgYnJlYWsgdGhlIGJpbmRpbmctY2hhaW4uIElmIDxiPnRydWU8L2I+IHRoZSBVSSBvYmplY3RcbiAgICAgICAgKiB3aWxsIG5vdCBjaGFuZ2UgYW55IGJpbmRpbmctdGFyZ2V0cyBmb3IgdGhlIGN1cnJlbnQgYmluZGluZy1leGVjdXRpb24gcGVyaW9kLlxuICAgICAgICAqIEBwcm9wZXJ0eSBicmVha0JpbmRpbmdDaGFpblxuICAgICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgICAgIyMjXG4gICAgICAgIEBicmVha0JpbmRpbmdDaGFpbiA9IG5vXG4gICAgICAgIEBudW1iZXJzID0gbmV3IEFycmF5KDEwKVxuICAgICAgICBAZGF0YSA9IG5ldyBBcnJheSgxMClcbiAgICAgICAgQGNvbnRyb2xzQnlTdHlsZSA9IG5ldyBBcnJheSh1aS5VSU1hbmFnZXIuc3R5bGVzQnlJZC5sZW5ndGgpXG4gICAgICAgIEBwYXJlbnRzQnlTdHlsZSA9IG5ldyBBcnJheSh1aS5VSU1hbmFnZXIuc3R5bGVzQnlJZC5sZW5ndGgpXG4gICAgICAgIEBzdHlsZXMgPSBbXVxuICAgICAgICBAYWN0aXZlU3R5bGVzID0gW11cbiAgICAgICAgQGZvY3VzYWJsZSA9IG5vXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIFVJIG9iamVjdCdzIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBvbiBzY3JlZW4uXG4gICAgICAgICogQHByb3BlcnR5IGRzdFJlY3RcbiAgICAgICAgKiBAdHlwZSB1aS5Db21wb25lbnRfVUlFbGVtZW50UmVjdGFuZ2xlXG4gICAgICAgICMjI1xuICAgICAgICBAZHN0UmVjdCA9IG5ldyB1aS5VSUVsZW1lbnRSZWN0YW5nbGUodGhpcylcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgVUkgb2JqZWN0J3MgbWFyZ2luLiBUaGUgbWFyZ2luIGRlZmluZXMgYW4gZXh0cmEgc3BhY2UgYXJvdW5kIHRoZSBVSSBvYmplY3QuIFxuICAgICAgICAqIFRoZSBkZWZhdWx0IGlzIHsgbGVmdDogMCwgdG9wOiAwLCByaWdodDogMCwgYm90dG9tOiAwIH0uXG4gICAgICAgICogQHByb3BlcnR5IG1hcmdpblxuICAgICAgICAqIEB0eXBlIHVpLlNwYWNlXG4gICAgICAgICMjI1xuICAgICAgICBAbWFyZ2luID0gbmV3IHVpLlNwYWNlKDAsIDAsIDAsIDApXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIFVJIG9iamVjdCdzIHBhZGRpbmcuIFRoZSBkZWZhdWx0IGlzIHsgbGVmdDogMCwgdG9wOiAwLCByaWdodDogMCwgYm90dG9tOiAwIH0uXG4gICAgICAgICogQHByb3BlcnR5IHBhZGRpbmdcbiAgICAgICAgKiBAdHlwZSB1aS5TcGFjZVxuICAgICAgICAjIyNcbiAgICAgICAgQHBhZGRpbmcgPSBuZXcgdWkuU3BhY2UoMCwgMCwgMCwgMClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgVUkgb2JqZWN0J3MgYWxpZ25tZW50LlxuICAgICAgICAqIEBwcm9wZXJ0eSBhbGlnbm1lbnRcbiAgICAgICAgKiBAdHlwZSB1aS5BbGlnbm1lbnRcbiAgICAgICAgIyMjXG4gICAgICAgIEBhbGlnbm1lbnQgPSAwXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogSW5kaWNhdGVzIGlmIHRoZSBVSSBvYmplY3QgaXMgdmlzaWJsZSBvbiBzY3JlZW4uXG4gICAgICAgICogQHByb3BlcnR5IHZpc2libGVcbiAgICAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICAgICMjI1xuICAgICAgICBAdmlzaWJsZSA9IHllc1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEluZGljYXRlcyBpZiB0aGUgVUkgb2JqZWN0IGlzIGVuYWJsZWQgYW5kIHJlc3BvbmRzIHRvIHVzZXIgYWN0aW9ucy5cbiAgICAgICAgKiBAcHJvcGVydHkgZW5hYmxlZFxuICAgICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgICAgIyMjXG4gICAgICAgIEBlbmFibGVkID0geWVzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIFVJIG9iamVjdCdzIG9yaWdpbi5cbiAgICAgICAgKiBAcHJvcGVydHkgb3JpZ2luXG4gICAgICAgICogQHR5cGUgZ3MuVmVjdG9yMlxuICAgICAgICAjIyNcbiAgICAgICAgQG9yaWdpbiA9IG5ldyB1aS5VSUVsZW1lbnRQb2ludCh0aGlzKSAjeDogMCwgeTogMFxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRoZSBVSSBvYmplY3QncyBvZmZzZXQuXG4gICAgICAgICogQHByb3BlcnR5IG9mZnNldFxuICAgICAgICAqIEB0eXBlIGdzLlZlY3RvcjJcbiAgICAgICAgIyMjXG4gICAgICAgIEBvZmZzZXQgPSBuZXcgdWkuVUlFbGVtZW50UG9pbnQodGhpcykgI3g6IDAsIHk6IDBcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgVUkgb2JqZWN0J3Mgb3BhY2l0eSB0byBjb250cm9sIHRyYW5zcGFyZW5jeS4gRm9yIGV4YW1wbGU6IDAgPSBUcmFuc3BhcmVudCwgMjU1ID0gT3BhcXVlLCAxMjggPSBTZW1pLVRyYW5zcGFyZW50LlxuICAgICAgICAqIEBwcm9wZXJ0eSBvcGFjaXR5XG4gICAgICAgICogQHR5cGUgbnVtYmVyXG4gICAgICAgICMjI1xuICAgICAgICBAb3BhY2l0eSA9IDI1NVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRoZSBVSSBvYmplY3QncyByZXNpemUgYmVoYXZpb3IuXG4gICAgICAgICogQHByb3BlcnR5IHJlc2l6YWJsZVxuICAgICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgICAgIyMjXG4gICAgICAgIEByZXNpemFibGUgPSBub1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRoZSBVSSBvYmplY3QncyBhbmNob3ItcG9pbnQuIEZvciBleGFtcGxlOiBBbiBhbmNob3ItcG9pbnQgd2l0aCAwLDAgcGxhY2VzIHRoZSBvYmplY3Qgd2l0aCBpdHMgdG9wLWxlZnQgY29ybmVyXG4gICAgICAgICogYXQgaXRzIHBvc2l0aW9uIGJ1dCB3aXRoIGFuIDAuNSwgMC41IGFuY2hvci1wb2ludCB0aGUgb2JqZWN0IGlzIHBsYWNlZCB3aXRoIGl0cyBjZW50ZXIuIEFuIGFuY2hvci1wb2ludCBvZiAxLDFcbiAgICAgICAgKiBwbGFjZXMgdGhlIG9iamVjdCB3aXRoIGl0cyBsb3dlci1yaWdodCBjb3JuZXIuXG4gICAgICAgICogQHByb3BlcnR5IGFuY2hvclxuICAgICAgICAqIEB0eXBlIGdzLlBvaW50XG4gICAgICAgICMjI1xuICAgICAgICBAYW5jaG9yID0gbmV3IGdzLlBvaW50KDAuMCwgMC4wKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRoZSBVSSBvYmplY3QncyB6b29tLXNldHRpbmcgZm9yIHggYW5kIHkgYXhpcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXNcbiAgICAgICAgKiB7IHg6IDEuMCwgeTogMS4wIH1cbiAgICAgICAgKiBAcHJvcGVydHkgem9vbVxuICAgICAgICAqIEB0eXBlIGdzLlBvaW50XG4gICAgICAgICMjI1xuICAgICAgICBAem9vbSA9IG5ldyBncy5Qb2ludCgxLjAsIDEuMClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgVUkgb2JqZWN0J3MgY29sb3IuXG4gICAgICAgICogQHByb3BlcnR5IGNvbG9yXG4gICAgICAgICogQHR5cGUgZ3MuQ29sb3JcbiAgICAgICAgIyMjXG4gICAgICAgIEBjb2xvciA9IG5ldyBDb2xvcigyNTUsIDI1NSwgMjU1LCAwKVxuICAgICAgICBAdG9uZSA9IG5ldyBUb25lKDAsIDAsIDAsIDApXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIFVJIG9iamVjdCdzIHJvdGF0aW9uLWFuZ2xlIGluIGRlZ3JlZXMuIFRoZSByb3RhdGlvbiBjZW50ZXIgZGVwZW5kcyBvbiB0aGVcbiAgICAgICAgKiBhbmNob3ItcG9pbnQuXG4gICAgICAgICogQHByb3BlcnR5IGFuZ2xlXG4gICAgICAgICogQHR5cGUgbnVtYmVyXG4gICAgICAgICMjI1xuICAgICAgICBAYW5nbGUgPSAwXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIFVJIG9iamVjdCdzIG1hc2sgZm9yIG1hc2tpbmctZWZmZWN0cy5cbiAgICAgICAgKiBAcHJvcGVydHkgbWFza1xuICAgICAgICAqIEB0eXBlIGdzLk1hc2tcbiAgICAgICAgIyMjXG4gICAgICAgIEBtYXNrID0gbmV3IGdzLk1hc2soKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFuIGV2ZW50LWVtaXR0ZXIgdG8gZW1pdCBldmVudHMuXG4gICAgICAgICogQHByb3BlcnR5IGV2ZW50c1xuICAgICAgICAqIEB0eXBlIGdzLkNvbXBvbmVudF9FdmVudEVtaXR0ZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEBldmVudHMgPSBuZXcgZ3MuRXZlbnRFbWl0dGVyKClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgdXBkYXRlLWJlaGF2aW9yIG9mIHRoZSBVSSBvYmplY3QuIFRoZSBkZWZhdWx0IGlzIHVpLlVwZGF0ZUJlaGF2aW9yLk5PUk1BTC5cbiAgICAgICAgKiBAcHJvcGVydHkgdXBkYXRlQmVoYXZpb3JcbiAgICAgICAgKiBAdHlwZSB1aS5VcGRhdGVCZWhhdmlvclxuICAgICAgICAjIyNcbiAgICAgICAgQHVwZGF0ZUJlaGF2aW9yID0gdWkuVXBkYXRlQmVoYXZpb3IuTk9STUFMXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQHByb3BlcnR5IGltYWdlX1xuICAgICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEBpbWFnZV8gPSBudWxsXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIG9iamVjdCdzIGNsaXAtcmVjdCBmb3IgdmlzdWFsIHByZXNlbnRhdGlvbi5cbiAgICAgICAgKiBAcHJvcGVydHkgY2xpcFJlY3RfXG4gICAgICAgICogQHR5cGUgZ3MuUmVjdFxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEBjbGlwUmVjdF8gPSBudWxsXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQHByb3BlcnR5IHZpc2libGVfXG4gICAgICAgICogQHR5cGUgYm9vbGVhblxuICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgIyMjXG4gICAgICAgIEB2aXNpYmxlXyA9IHllc1xuICAgICAgICBcbiAgICAgICAgQGFkZENvbXBvbmVudChAZXZlbnRzKVxuICAgICAgIFxuICAgICBcbiAgICAjIyMqXG4gICAgKiBSZXN0b3JlcyB0aGUgb2JqZWN0IGZyb20gYSBkYXRhLWJ1bmRsZS5cbiAgICAqXG4gICAgKiBAbWV0aG9kIHJlc3RvcmVcbiAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEtYnVuZGxlLlxuICAgICMjIyAgIFxuICAgIHJlc3RvcmU6IChkYXRhKSAtPlxuICAgICAgICBAYW5jaG9yID0gbmV3IGdzLlBvaW50KGRhdGEuYW5jaG9yLngsIGRhdGEuYW5jaG9yLnkpXG4gICAgICAgIEBvZmZzZXQgPSBuZXcgZ3MuUG9pbnQoZGF0YS5vZmZzZXQueCwgZGF0YS5vZmZzZXQueSlcbiAgICAgICAgQGRzdFJlY3QueCA9IGRhdGEueFxuICAgICAgICBAZHN0UmVjdC55ID0gZGF0YS55XG4gICAgICAgIEBvcGFjaXR5ID0gZGF0YS5vcGFjaXR5XG4gICAgICAgIEB6b29tID0gbmV3IGdzLlBvaW50KGRhdGEuem9vbS54LCBkYXRhLnpvb20ueSlcbiAgICAgICAgQGFuZ2xlID0gZGF0YS5hbmdsZVxuICAgICAgICBAekluZGV4ID0gZGF0YS56SW5kZXhcbiAgICAgICAgQHZpc2libGVfID0gZGF0YS52aXNpYmxlXG4gICAgICAgIEByaWQgPSBkYXRhLnJpZFxuICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBTZXJpYWxpemVzIHRoZSBvYmplY3QgaW50byBhIGRhdGEtYnVuZGxlLlxuICAgICpcbiAgICAqIEBtZXRob2QgdG9EYXRhQnVuZGxlXG4gICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBkYXRhLWJ1bmRsZS5cbiAgICAjIyMgICBcbiAgICB0b0RhdGFCdW5kbGU6IC0+IFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlkOiBAcmlkLCBcbiAgICAgICAgICAgIHg6IEBkc3RSZWN0LngsIFxuICAgICAgICAgICAgeTogQGRzdFJlY3QueSxcbiAgICAgICAgICAgIG9wYWNpdHk6IEBvcGFjaXR5LFxuICAgICAgICAgICAgem9vbTogQHpvb20sXG4gICAgICAgICAgICBhbmdsZTogQGFuZ2xlLFxuICAgICAgICAgICAgYW5jaG9yOiB7IHg6IEBhbmNob3IueCwgeTogQGFuY2hvci55IH0sXG4gICAgICAgICAgICB6SW5kZXg6IEB6SW5kZXgsXG4gICAgICAgICAgICBvZmZzZXQ6IHsgeDogQG9mZnNldC54LCB5OiBAb2Zmc2V0LnkgfSxcbiAgICAgICAgICAgIHZpc2libGU6IEB2aXNpYmxlX1xuICAgICAgICB9XG4gICAgICAgIFxudWkuT2JqZWN0X1VJRWxlbWVudCA9IE9iamVjdF9VSUVsZW1lbnQiXX0=\n//# sourceURL=Object_UIElement_8.js"
},
"summary": [
"name",
"type",
"order"
]
}
|