sls-dev-tools
Version:
The Dev Tools for the Serverless World
55 lines (45 loc) • 1.68 kB
JavaScript
;
var _index = require("./index");
var _box = require("../components/box");
var _modalLayout = require("../components/modalLayout");
var _modalTitle = require("../components/modalTitle");
var _interactiveList = require("../components/interactiveList");
function updateRegistryTable(api, table) {
api.listRegistries({
Scope: "LOCAL"
}, (err, data) => {
if (err) {
console.error(err);
} else {
const registries = [];
data.Registries.forEach(r => registries.push(r.RegistryName));
table.setItems(registries);
}
});
}
const eventRegistryModal = (screen, eventBridge, application, api, injectEvent) => {
const eventRegistryLayout = new _modalLayout.ModalLayout(screen, 112, 27, true);
const closeModal = () => {
// Store all text to populate modal when next opened
application.setIsModalOpen(false);
application.returnFocus();
eventRegistryLayout.destroy();
};
new _modalTitle.ModalTitle(eventRegistryLayout, 110, "Event Registry");
const registryTable = new _interactiveList.InteractiveList(eventRegistryLayout, 110, 20, "Registries");
new _box.Box(eventRegistryLayout, 110, 4, "Arrow keys to navigate | ENTER to select \nESC to close");
updateRegistryTable(api, registryTable);
registryTable.focus();
registryTable.key(["enter"], () => {
const registry = registryTable.ritems[registryTable.selected];
eventRegistryLayout.destroy();
return (0, _index.eventSchemaModal)(screen, eventBridge, application, api, registry, injectEvent);
});
registryTable.key(["escape"], () => {
// Discard modal
closeModal();
});
};
module.exports = {
eventRegistryModal
};