| <!-- | 
 | @license | 
 | Copyright (C) 2019 The Android Open Source Project | 
 |  | 
 | Licensed under the Apache License, Version 2.0 (the "License"); | 
 | you may not use this file except in compliance with the License. | 
 | You may obtain a copy of the License at | 
 |  | 
 | http://www.apache.org/licenses/LICENSE-2.0 | 
 |  | 
 | Unless required by applicable law or agreed to in writing, software | 
 | distributed under the License is distributed on an "AS IS" BASIS, | 
 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | See the License for the specific language governing permissions and | 
 | limitations under the License. | 
 | --> | 
 |  | 
 | <script> | 
 | (function(window) { | 
 |   'use strict'; | 
 |  | 
 |   window.Gerrit = window.Gerrit || {}; | 
 |  | 
 |   /** @polymerBehavior Gerrit.FireBehavior */ | 
 |   Gerrit.FireBehavior = { | 
 |     /** | 
 |      * Dispatches a custom event with an optional detail value. | 
 |      * | 
 |      * @param {string} type Name of event type. | 
 |      * @param {*=} detail Detail value containing event-specific | 
 |      *   payload. | 
 |      * @param {{ bubbles: (boolean|undefined), cancelable: (boolean|undefined), | 
 |      *     composed: (boolean|undefined) }=} | 
 |      *  options Object specifying options.  These may include: | 
 |      *  `bubbles` (boolean, defaults to `true`), | 
 |      *  `cancelable` (boolean, defaults to false), and | 
 |      *  `composed` (boolean, defaults to true). | 
 |      * @return {!Event} The new event that was fired. | 
 |      * @override | 
 |      */ | 
 |     fire(type, detail, options) { | 
 |       options = options || {}; | 
 |       detail = (detail === null || detail === undefined) ? {} : detail; | 
 |       const event = new Event(type, { | 
 |         bubbles: options.bubbles === undefined ? true : options.bubbles, | 
 |         cancelable: Boolean(options.cancelable), | 
 |         composed: options.composed === undefined ? true: options.composed, | 
 |       }); | 
 |       event.detail = detail; | 
 |       this.dispatchEvent(event); | 
 |       return event; | 
 |     }, | 
 |   }; | 
 | })(window); | 
 | </script> |