1
|
{"uid":"B54FB0D1K9DC1A4671S9BE6E84D78A18EAD1","isLoaded":true,"lastModificationTime":0,"items":{"name":"Component_LayoutBehavior","type":"game_script","order":3,"content":"# ===================================================================\n#\n# Script: Component_LayoutBehavior\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Component_LayoutBehavior extends gs.Component_Visual\n ###*\n * The base class of all layout-components. A layout-component is used\n * to layout assigned sub-objects in a specific way depending on the layout-type.\n * For example: A grid-layout layouts its sub-objects like a grid using rows\n * and columns. The game object needs a container-component.<br><br>\n *\n * A layout can also be configured as scrollable. In that case, layout's content\n * can be larger than the layout-bounds and is automatically clipped. The content\n * can be scrolled using mouse-wheel or touch-gesture.\n *\n * @module gs\n * @class Component_LayoutBehavior\n * @extends gs.Component\n * @memberof gs\n * @constructor\n ###\n constructor: ->\n ###*\n * Content size of the layout.\n * @property contentSize\n * @type gs.Size\n * @readOnly\n ###\n @contentSize = width: 0, height: 0\n\n ###*\n * Disposes the layout and all its sub-objects.\n *\n * @method dispose\n ### \n # FIXME: Is that still necessary? If the parent game object is disposed\n # all sub-objects are disposed as well.\n dispose: ->\n for control in @object.controls\n control?.dispose()\n \n ###*\n * Initializes the layout.\n *\n * @method setup\n ### \n setup: ->\n \n ###*\n * Sizes the layout to fit its content.\n *\n * @method sizeToFit\n * @abstract\n ### \n sizeToFit: ->\n \n ###*\n * Sort-Function to sort sub-objects by order-index.\n *\n * @method sort_\n * @protected\n * @param {gs.Object_Base} a Object A\n * @param {gs.Object_Base} b Object B\n ### \n sort_: (a, b) ->\n if a.order > b.order\n return -1\n else if a.order < b.order\n return 1\n else\n return 0\n \n ###*\n * Updates a specified control.\n *\n * @method updateControl\n * @protected\n * @param {gs.Object_Base} control The control to update\n ### \n updateControl: (control) ->\n @object.rIndex = Math.max(@object.rIndex, control.rIndex)\n \n if control.updateBehavior == ui.UpdateBehavior.CONTINUOUS\n control.needsUpdate = yes\n \n if control.inheritProperties\n control.ui.enabled = @object.ui.enabled\n control.opacity = @object.opacity\n control.zoom = @object.zoom\n control.color = @object.color\n control.tone = @object.tone\n control.angle = @object.angle\n control.anchor.x = @object.anchor.x\n control.anchor.y = @object.anchor.y\n \n \n if control.needsUpdate\n control.needsUpdate = no\n control.update()\n control.parent = @object\n \n \n if @object.clipRect?\n control.clipRect = @object.clipRect\n \n ###*\n * Updates the content size of the layout. Only works if scrolling is\n * enabled.\n *\n * @method updateContentSize\n * @protected\n ### \n updateContentSize: ->\n if @object.scrollable\n @contentSize.width = 0\n @contentSize.height = 0\n for control in @object.controls\n if control\n @contentSize.width += control.margin.left + control.dstRect.width + control.margin.right\n @contentSize.height += control.margin.top + control.dstRect.height + control.margin.bottom\n \n @object.contentHeight = @contentSize.height\n @object.contentWidth = @contentSize.width\n \n ###*\n * Updates scrolling.\n *\n * @method updateScroll\n ###\n updateScroll: ->\n if @object.scrollable\n @object.scrollableHeight = Math.max(0, @contentSize.height - @object.dstRect.height)\n if Input.Mouse.wheel <= -1\n @object.scrollOffsetY = Math.max(@object.scrollOffsetY - Input.Mouse.wheelSpeed * 0.1, 0)\n \n if Input.Mouse.wheel >= 1\n @object.scrollOffsetY = Math.min(@object.scrollOffsetY - Input.Mouse.wheelSpeed * 0.1, @object.scrollableHeight)\n \n \n @object.scrollOffsetY = Math.max(Math.min(@object.scrollOffsetY, @object.scrollableHeight), 0)\n \n ###*\n * Updates the layout's content.\n *\n * @method updateContent\n ### \n updateContent: ->\n \n ###*\n * Updates the layout.\n *\n * @method update\n ### \n update: ->\n super\n \n @updateContentSize()\n @updateScroll()\n \n \n #if @object.needsSort\n # @object.subObjects.sort(@sort_)\n # @object.needsSort = no\n \n \ngs.Component_LayoutBehavior = Component_LayoutBehavior","parentId":"01A95DA3K01E8A4CB4SBE17E790BCE1FC035","folder":false,"compiledContent":"var Component_LayoutBehavior,\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_LayoutBehavior = (function(superClass) {\n extend(Component_LayoutBehavior, superClass);\n\n\n /**\n * The base class of all layout-components. A layout-component is used\n * to layout assigned sub-objects in a specific way depending on the layout-type.\n * For example: A grid-layout layouts its sub-objects like a grid using rows\n * and columns. The game object needs a container-component.<br><br>\n *\n * A layout can also be configured as scrollable. In that case, layout's content\n * can be larger than the layout-bounds and is automatically clipped. The content\n * can be scrolled using mouse-wheel or touch-gesture.\n *\n * @module gs\n * @class Component_LayoutBehavior\n * @extends gs.Component\n * @memberof gs\n * @constructor\n */\n\n function Component_LayoutBehavior() {\n\n /**\n * Content size of the layout.\n * @property contentSize\n * @type gs.Size\n * @readOnly\n */\n this.contentSize = {\n width: 0,\n height: 0\n };\n }\n\n\n /**\n * Disposes the layout and all its sub-objects.\n *\n * @method dispose\n */\n\n Component_LayoutBehavior.prototype.dispose = function() {\n var control, i, len, ref, results;\n ref = this.object.controls;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n control = ref[i];\n results.push(control != null ? control.dispose() : void 0);\n }\n return results;\n };\n\n\n /**\n * Initializes the layout.\n *\n * @method setup\n */\n\n Component_LayoutBehavior.prototype.setup = function() {};\n\n\n /**\n * Sizes the layout to fit its content.\n *\n * @method sizeToFit\n * @abstract\n */\n\n Component_LayoutBehavior.prototype.sizeToFit = function() {};\n\n\n /**\n * Sort-Function to sort sub-objects by order-index.\n *\n * @method sort_\n * @protected\n * @param {gs.Object_Base} a Object A\n * @param {gs.Object_Base} b Object B\n */\n\n Component_LayoutBehavior.prototype.sort_ = function(a, b) {\n if (a.order > b.order) {\n return -1;\n } else if (a.order < b.order) {\n return 1;\n } else {\n return 0;\n }\n };\n\n\n /**\n * Updates a specified control.\n *\n * @method updateControl\n * @protected\n * @param {gs.Object_Base} control The control to update\n */\n\n Component_LayoutBehavior.prototype.updateControl = function(control) {\n this.object.rIndex = Math.max(this.object.rIndex, control.rIndex);\n if (control.updateBehavior === ui.UpdateBehavior.CONTINUOUS) {\n control.needsUpdate = true;\n }\n if (control.inheritProperties) {\n control.ui.enabled = this.object.ui.enabled;\n control.opacity = this.object.opacity;\n control.zoom = this.object.zoom;\n control.color = this.object.color;\n control.tone = this.object.tone;\n control.angle = this.object.angle;\n control.anchor.x = this.object.anchor.x;\n control.anchor.y = this.object.anchor.y;\n }\n if (control.needsUpdate) {\n control.needsUpdate = false;\n control.update();\n control.parent = this.object;\n }\n if (this.object.clipRect != null) {\n return control.clipRect = this.object.clipRect;\n }\n };\n\n\n /**\n * Updates the content size of the layout. Only works if scrolling is\n * enabled.\n *\n * @method updateContentSize\n * @protected\n */\n\n Component_LayoutBehavior.prototype.updateContentSize = function() {\n var control, i, len, ref;\n if (this.object.scrollable) {\n this.contentSize.width = 0;\n this.contentSize.height = 0;\n ref = this.object.controls;\n for (i = 0, len = ref.length; i < len; i++) {\n control = ref[i];\n if (control) {\n this.contentSize.width += control.margin.left + control.dstRect.width + control.margin.right;\n this.contentSize.height += control.margin.top + control.dstRect.height + control.margin.bottom;\n }\n }\n this.object.contentHeight = this.contentSize.height;\n return this.object.contentWidth = this.contentSize.width;\n }\n };\n\n\n /**\n * Updates scrolling.\n *\n * @method updateScroll\n */\n\n Component_LayoutBehavior.prototype.updateScroll = function() {\n if (this.object.scrollable) {\n this.object.scrollableHeight = Math.max(0, this.contentSize.height - this.object.dstRect.height);\n if (Input.Mouse.wheel <= -1) {\n this.object.scrollOffsetY = Math.max(this.object.scrollOffsetY - Input.Mouse.wheelSpeed * 0.1, 0);\n }\n if (Input.Mouse.wheel >= 1) {\n this.object.scrollOffsetY = Math.min(this.object.scrollOffsetY - Input.Mouse.wheelSpeed * 0.1, this.object.scrollableHeight);\n }\n return this.object.scrollOffsetY = Math.max(Math.min(this.object.scrollOffsetY, this.object.scrollableHeight), 0);\n }\n };\n\n\n /**\n * Updates the layout's content.\n *\n * @method updateContent\n */\n\n Component_LayoutBehavior.prototype.updateContent = function() {};\n\n\n /**\n * Updates the layout.\n *\n * @method update\n */\n\n Component_LayoutBehavior.prototype.update = function() {\n Component_LayoutBehavior.__super__.update.apply(this, arguments);\n this.updateContentSize();\n return this.updateScroll();\n };\n\n return Component_LayoutBehavior;\n\n})(gs.Component_Visual);\n\ngs.Component_LayoutBehavior = Component_LayoutBehavior;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsd0JBQUE7RUFBQTs7O0FBQU07Ozs7QUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQmEsa0NBQUE7O0FBQ1Q7Ozs7OztJQU1BLElBQUMsQ0FBQSxXQUFELEdBQWU7TUFBQSxLQUFBLEVBQU8sQ0FBUDtNQUFVLE1BQUEsRUFBUSxDQUFsQjs7RUFQTjs7O0FBU2I7Ozs7OztxQ0FPQSxPQUFBLEdBQVMsU0FBQTtBQUNMLFFBQUE7QUFBQTtBQUFBO1NBQUEscUNBQUE7O3FDQUNJLE9BQU8sQ0FBRSxPQUFULENBQUE7QUFESjs7RUFESzs7O0FBSVQ7Ozs7OztxQ0FLQSxLQUFBLEdBQU8sU0FBQSxHQUFBOzs7QUFFUDs7Ozs7OztxQ0FNQSxTQUFBLEdBQVcsU0FBQSxHQUFBOzs7QUFFWDs7Ozs7Ozs7O3FDQVFBLEtBQUEsR0FBTyxTQUFDLENBQUQsRUFBSSxDQUFKO0lBQ0gsSUFBRyxDQUFDLENBQUMsS0FBRixHQUFVLENBQUMsQ0FBQyxLQUFmO0FBQ0UsYUFBTyxDQUFDLEVBRFY7S0FBQSxNQUVLLElBQUcsQ0FBQyxDQUFDLEtBQUYsR0FBVSxDQUFDLENBQUMsS0FBZjtBQUNILGFBQU8sRUFESjtLQUFBLE1BQUE7QUFHSCxhQUFPLEVBSEo7O0VBSEY7OztBQVFQOzs7Ozs7OztxQ0FPQSxhQUFBLEdBQWUsU0FBQyxPQUFEO0lBQ1gsSUFBQyxDQUFBLE1BQU0sQ0FBQyxNQUFSLEdBQWlCLElBQUksQ0FBQyxHQUFMLENBQVMsSUFBQyxDQUFBLE1BQU0sQ0FBQyxNQUFqQixFQUF5QixPQUFPLENBQUMsTUFBakM7SUFFakIsSUFBRyxPQUFPLENBQUMsY0FBUixLQUEwQixFQUFFLENBQUMsY0FBYyxDQUFDLFVBQS9DO01BQ0ksT0FBTyxDQUFDLFdBQVIsR0FBc0IsS0FEMUI7O0lBR0EsSUFBRyxPQUFPLENBQUMsaUJBQVg7TUFDSSxPQUFPLENBQUMsRUFBRSxDQUFD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LENBQUEsTUFBTSxDQUFDLGFBQVIsR0FBd0IsSUFBSSxDQUFDLEdBQUwsQ0FBUyxJQUFJLENBQUMsR0FBTCxDQUFTLElBQUMsQ0FBQSxNQUFNLENBQUMsYUFBakIsRUFBZ0MsSUFBQyxDQUFBLE1BQU0sQ0FBQyxnQkFBeEMsQ0FBVCxFQUFvRSxDQUFwRSxFQVQ1Qjs7RUFEVTs7O0FBWWQ7Ozs7OztxQ0FLQSxhQUFBLEdBQWUsU0FBQSxHQUFBOzs7QUFFZjs7Ozs7O3FDQUtBLE1BQUEsR0FBUSxTQUFBO0lBQ0osc0RBQUEsU0FBQTtJQUVBLElBQUMsQ0FBQSxpQkFBRCxDQUFBO1dBQ0EsSUFBQyxDQUFBLFlBQUQsQ0FBQTtFQUpJOzs7O0dBckoyQixFQUFFLENBQUM7O0FBaUsxQyxFQUFFLENBQUMsd0JBQUgsR0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiNcbiMgICBTY3JpcHQ6IENvbXBvbmVudF9MYXlvdXRCZWhhdmlvclxuI1xuIyAgICQkQ09QWVJJR0hUJCRcbiNcbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuY2xhc3MgQ29tcG9uZW50X0xheW91dEJlaGF2aW9yIGV4dGVuZHMgZ3MuQ29tcG9uZW50X1Zpc3VhbFxuICAgICMjIypcbiAgICAqIFRoZSBiYXNlIGNsYXNzIG9mIGFsbCBsYXlvdXQtY29tcG9uZW50cy4gQSBsYXlvdXQtY29tcG9uZW50IGlzIHVzZWRcbiAgICAqIHRvIGxheW91dCBhc3NpZ25lZCBzdWItb2JqZWN0cyBpbiBhIHNwZWNpZmljIHdheSBkZXBlbmRpbmcgb24gdGhlIGxheW91dC10eXBlLlxuICAgICogRm9yIGV4YW1wbGU6IEEgZ3JpZC1sYXlvdXQgbGF5b3V0cyBpdHMgc3ViLW9iamVjdHMgbGlrZSBhIGdyaWQgdXNpbmcgcm93c1xuICAgICogYW5kIGNvbHVtbnMuIFRoZSBnYW1lIG9iamVjdCBuZWVkcyBhIGNvbnRhaW5lci1jb21wb25lbnQuPGJyPjxicj5cbiAgICAqXG4gICAgKiBBIGxheW91dCBjYW4gYWxzbyBiZSBjb25maWd1cmVkIGFzIHNjcm9sbGFibGUuIEluIHRoYXQgY2FzZSwgbGF5b3V0J3MgY29udGVudFxuICAgICogY2FuIGJlIGxhcmdlciB0aGFuIHRoZSBsYXlvdXQtYm91bmRzIGFuZCBpcyBhdXRvbWF0aWNhbGx5IGNsaXBwZWQuIFRoZSBjb250ZW50XG4gICAgKiBjYW4gYmUgc2Nyb2xsZWQgdXNpbmcgbW91c2Utd2hlZWwgb3IgdG91Y2gtZ2VzdHVyZS5cbiAgICAqXG4gICAgKiBAbW9kdWxlIGdzXG4gICAgKiBAY2xhc3MgQ29tcG9uZW50X0xheW91dEJlaGF2aW9yXG4gICAgKiBAZXh0ZW5kcyBncy5Db21wb25lbnRcbiAgICAqIEBtZW1iZXJvZiBnc1xuICAgICogQGNvbnN0cnVjdG9yXG4gICAgIyMjXG4gICAgY29uc3RydWN0b3I6IC0+XG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250ZW50IHNpemUgb2YgdGhlIGxheW91dC5cbiAgICAgICAgKiBAcHJvcGVydHkgY29udGVudFNpemVcbiAgICAgICAgKiBAdHlwZSBncy5TaXplXG4gICAgICAgICogQHJlYWRPbmx5XG4gICAgICAgICMjI1xuICAgICAgICBAY29udGVudFNpemUgPSB3aWR0aDogMCwgaGVpZ2h0OiAwXG5cbiAgICAjIyMqXG4gICAgKiBEaXNwb3NlcyB0aGUgbGF5b3V0IGFuZCBhbGwgaXRzIHN1Yi1vYmplY3RzLlxuICAgICpcbiAgICAqIEBtZXRob2QgZGlzcG9zZVxuICAgICMjIyAgXG4gICAgIyBGSVhNRTogSXMgdGhhdCBzdGlsbCBuZWNlc3Nhcnk/IElmIHRoZSBwYXJlbnQgZ2FtZSBvYmplY3QgaXMgZGlzcG9zZWRcbiAgICAjIGFsbCBzdWItb2JqZWN0cyBhcmUgZGlzcG9zZWQgYXMgd2VsbC5cbiAgICBkaXNwb3NlOiAtPlxuICAgICAgICBmb3IgY29udHJvbCBpbiBAb2JqZWN0LmNvbnRyb2xzXG4gICAgICAgICAgICBjb250cm9sPy5kaXNwb3NlKClcbiAgICBcbiAgICAjIyMqXG4gICAgKiBJbml0aWFsaXplcyB0aGUgbGF5b3V0LlxuICAgICpcbiAgICAqIEBtZXRob2Qgc2V0dXBcbiAgICAjIyMgXG4gICAgc2V0dXA6IC0+XG4gICAgIFxuICAgICMjIypcbiAgICAqIFNpemVzIHRoZSBsYXlvdXQgdG8gZml0IGl0cyBjb250ZW50LlxuICAgICpcbiAgICAqIEBtZXRob2Qgc2l6ZVRvRml0XG4gICAgKiBAYWJzdHJhY3RcbiAgICAjIyMgXG4gICAgc2l6ZVRvRml0OiAtPlxuICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBTb3J0LUZ1bmN0aW9uIHRvIHNvcnQgc3ViLW9iamVjdHMgYnkgb3JkZXItaW5kZXguXG4gICAgKlxuICAgICogQG1ldGhvZCBzb3J0X1xuICAgICogQHByb3RlY3RlZFxuICAgICogQHBhcmFtIHtncy5PYmplY3RfQmFzZX0gYSBPYmplY3QgQVxuICAgICogQHBhcmFtIHtncy5PYmplY3RfQmFzZX0gYiBPYmplY3QgQlxuICAgICMjIyAgICBcbiAgICBzb3J0XzogKGEsIGIpIC0+XG4gICAgICAgIGlmIGEub3JkZXIgPiBiLm9yZGVyXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIGVsc2UgaWYgYS5vcmRlciA8IGIub3JkZXJcbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0dXJuIDBcbiAgICBcbiAgICAjIyMqXG4gICAgKiBVcGRhdGVzIGEgc3BlY2lmaWVkIGNvbnRyb2wuXG4gICAgKlxuICAgICogQG1ldGhvZCB1cGRhdGVDb250cm9sXG4gICAgKiBAcHJvdGVjdGVkXG4gICAgKiBAcGFyYW0ge2dzLk9iamVjdF9CYXNlfSBjb250cm9sIFRoZSBjb250cm9sIHRvIHVwZGF0ZVxuICAgICMjIyBcbiAgICB1cGRhdGVDb250cm9sOiAoY29udHJvbCkgLT5cbiAgICAgICAgQG9iamVjdC5ySW5kZXggPSBNYXRoLm1heChAb2JqZWN0LnJJbmRleCwgY29udHJvbC5ySW5kZXgpXG4gICAgICAgIFxuICAgICAgICBpZiBjb250cm9sLnVwZGF0ZUJlaGF2aW9yID09IHVpLlVwZGF0ZUJlaGF2aW9yLkNPTlRJTlVPVVNcbiAgICAgICAgICAgIGNvbnRyb2wubmVlZHNVcGRhdGUgPSB5ZXNcbiAgICAgICAgICAgIFxuICAgICAgICBpZiBjb250cm9sLmluaGVyaXRQcm9wZXJ0aWVzXG4gICAgICAgICAgICBjb250cm9sLnVpLmVuYWJsZWQgPSBAb2JqZWN0LnVpLmVuYWJsZWRcbiAgICAgICAgICAgIGNvbnRyb2wub3BhY2l0eSA9IEBvYmplY3Qub3BhY2l0eVxuICAgICAgICAgICAgY29udHJvbC56b29tID0gQG9iamVjdC56b29tXG4gICAgICAgICAgICBjb250cm9sLmNvbG9yID0gQG9iamVjdC5jb2xvclxuICAgICAgICAgICAgY29udHJvbC50b25lID0gQG9iamVjdC50b25lXG4gICAgICAgICAgICBjb250cm9sLmFuZ2xlID0gQG9iamVjdC5hbmdsZVxuICAgICAgICAgICAgY29udHJvbC5hbmNob3IueCA9IEBvYmplY3QuYW5jaG9yLnhcbiAgICAgICAgICAgIGNvbnRyb2wuYW5jaG9yLnkgPSBAb2JqZWN0LmFuY2hvci55XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICBpZiBjb250cm9sLm5lZWRzVXBkYXRlXG4gICAgICAgICAgICBjb250cm9sLm5lZWRzVXBkYXRlID0gbm9cbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlKClcbiAgICAgICAgICAgIGNvbnRyb2wucGFyZW50ID0gQG9iamVjdFxuICAgICAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBpZiBAb2JqZWN0LmNsaXBSZWN0P1xuICAgICAgICAgICAgY29udHJvbC5jbGlwUmVjdCA9IEBvYmplY3QuY2xpcFJlY3RcbiAgICAgXG4gICAgIyMjKlxuICAgICogVXBkYXRlcyB0aGUgY29udGVudCBzaXplIG9mIHRoZSBsYXlvdXQuIE9ubHkgd29ya3MgaWYgc2Nyb2xsaW5nIGlzXG4gICAgKiBlbmFibGVkLlxuICAgICpcbiAgICAqIEBtZXRob2QgdXBkYXRlQ29udGVudFNpemVcbiAgICAqIEBwcm90ZWN0ZWRcbiAgICAjIyMgXG4gICAgdXBkYXRlQ29udGVudFNpemU6IC0+XG4gICAgICAgIGlmIEBvYmplY3Quc2Nyb2xsYWJsZVxuICAgICAgICAgICAgQGNvbnRlbnRTaXplLndpZHRoID0gMFxuICAgICAgICAgICAgQGNvbnRlbnRTaXplLmhlaWdodCA9IDBcbiAgICAgICAgICAgIGZvciBjb250cm9sIGluIEBvYmplY3QuY29udHJvbHNcbiAgICAgICAgICAgICAgICBpZiBjb250cm9sXG4gICAgICAgICAgICAgICAgICAgIEBjb250ZW50U2l6ZS53aWR0aCArPSBjb250cm9sLm1hcmdpbi5sZWZ0ICsgY29udHJvbC5kc3RSZWN0LndpZHRoICsgY29udHJvbC5tYXJnaW4ucmlnaHRcbiAgICAgICAgICAgICAgICAgICAgQGNvbnRlbnRTaXplLmhlaWdodCArPSBjb250cm9sLm1hcmdpbi50b3AgKyBjb250cm9sLmRzdFJlY3QuaGVpZ2h0ICsgY29udHJvbC5tYXJnaW4uYm90dG9tXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIEBvYmplY3QuY29udGVudEhlaWdodCA9IEBjb250ZW50U2l6ZS5oZWlnaHRcbiAgICAgICAgICAgIEBvYmplY3QuY29udGVudFdpZHRoID0gQGNvbnRlbnRTaXplLndpZHRoXG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIFVwZGF0ZXMgc2Nyb2xsaW5nLlxuICAgICpcbiAgICAqIEBtZXRob2QgdXBkYXRlU2Nyb2xsXG4gICAgIyMjXG4gICAgdXBkYXRlU2Nyb2xsOiAtPlxuICAgICAgICBpZiBAb2JqZWN0LnNjcm9sbGFibGVcbiAgICAgICAgICAgIEBvYmplY3Quc2Nyb2xsYWJsZUhlaWdodCA9IE1hdGgubWF4KDAsIEBjb250ZW50U2l6ZS5oZWlnaHQgLSBAb2JqZWN0LmRzdFJlY3QuaGVpZ2h0KVxuICAgICAgICAgICAgaWYgSW5wdXQuTW91c2Uud2hlZWwgPD0gLTFcbiAgICAgICAgICAgICAgICBAb2JqZWN0LnNjcm9sbE9mZnNldFkgPSBNYXRoLm1heChAb2JqZWN0LnNjcm9sbE9mZnNldFkgLSBJbnB1dC5Nb3VzZS53aGVlbFNwZWVkICogMC4xLCAwKVxuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiBJbnB1dC5Nb3VzZS53aGVlbCA+PSAxXG4gICAgICAgICAgICAgICAgQG9iamVjdC5zY3JvbGxPZmZzZXRZID0gTWF0aC5taW4oQG9iamVjdC5zY3JvbGxPZmZzZXRZIC0gSW5wdXQuTW91c2Uud2hlZWxTcGVlZCAqIDAuMSwgQG9iamVjdC5zY3JvbGxhYmxlSGVpZ2h0KVxuICAgICAgICAgICAgICAgIFxuICAgICAgICBcbiAgICAgICAgICAgIEBvYmplY3Quc2Nyb2xsT2Zmc2V0WSA9IE1hdGgubWF4KE1hdGgubWluKEBvYmplY3Quc2Nyb2xsT2Zmc2V0WSwgQG9iamVjdC5zY3JvbGxhYmxlSGVpZ2h0KSwgMClcbiAgICAgXG4gICAgIyMjKlxuICAgICogVXBkYXRlcyB0aGUgbGF5b3V0J3MgY29udGVudC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIHVwZGF0ZUNvbnRlbnRcbiAgICAjIyMgIFxuICAgIHVwZGF0ZUNvbnRlbnQ6IC0+XG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIFVwZGF0ZXMgdGhlIGxheW91dC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIHVwZGF0ZVxuICAgICMjIyAgICBcbiAgICB1cGRhdGU6IC0+XG4gICAgICAgIHN1cGVyXG4gICAgICAgIFxuICAgICAgICBAdXBkYXRlQ29udGVudFNpemUoKVxuICAgICAgICBAdXBkYXRlU2Nyb2xsKClcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICAjaWYgQG9iamVjdC5uZWVkc1NvcnRcbiAgICAgICAgIyAgICBAb2JqZWN0LnN1Yk9iamVjdHMuc29ydChAc29ydF8pXG4gICAgICAgICMgICAgQG9iamVjdC5uZWVkc1NvcnQgPSBub1xuICAgIFxuICAgICAgICBcbmdzLkNvbXBvbmVudF9MYXlvdXRCZWhhdmlvciA9IENvbXBvbmVudF9MYXlvdXRCZWhhdmlvciJdfQ==\n//# sourceURL=Component_LayoutBehavior_46.js"},"summary":["name","type","order"]}
|