| // Copyright (C) 2017 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. |
| (function(window) { |
| 'use strict'; |
| |
| // Prevent redefinition. |
| if (window.GrRepoApi) { return; } |
| |
| function GrRepoApi(plugin) { |
| this._hook = null; |
| this.plugin = plugin; |
| } |
| |
| GrRepoApi.prototype._createHook = function(title) { |
| this._hook = this.plugin.hook('repo-command').onAttached(element => { |
| const pluginCommand = |
| document.createElement('gr-plugin-repo-command'); |
| pluginCommand.title = title; |
| element.appendChild(pluginCommand); |
| }); |
| }; |
| |
| GrRepoApi.prototype.createCommand = function(title, callback) { |
| if (this._hook) { |
| console.warn('Already set up.'); |
| return this._hook; |
| } |
| this._createHook(title); |
| this._hook.onAttached(element => { |
| if (callback(element.repoName, element.config) === false) { |
| element.hidden = true; |
| } |
| }); |
| return this; |
| }; |
| |
| GrRepoApi.prototype.onTap = function(callback) { |
| if (!this._hook) { |
| console.warn('Call createCommand first.'); |
| return this; |
| } |
| this._hook.onAttached(element => { |
| this.plugin.eventHelper(element).on('command-tap', callback); |
| }); |
| return this; |
| }; |
| |
| window.GrRepoApi = GrRepoApi; |
| })(window); |