brackets-npm-registry
Version:
Install your extensions into Brackets using npm
145 lines (129 loc) • 4.51 kB
JavaScript
define(function (require, exports) {
'use strict';
var Commands = brackets.getModule('command/Commands');
var CommandManager = brackets.getModule('command/CommandManager');
var Dialogs = brackets.getModule('widgets/Dialogs');
var DefaultDialogs = brackets.getModule('widgets/DefaultDialogs');
var Logger = require('../../utils/logger');
var React = brackets.getModule('thirdparty/react');
var ReactDOM = brackets.getModule('thirdparty/react-dom');
var Strings = require('strings');
var BracketsStrings = brackets.getModule('strings');
var RegistryItem = require('./registry-item');
var RegistryUtils = require('../registry-utils');
var restartRequiredAfterClose = false;
var RegistryDialog = React.createClass({
displayName: 'RegistryDialog',
getInitialState: function getInitialState() {
return {
registry: [],
registryLoading: true
};
},
// get the registry after the dialog is opened
componentDidMount: function componentDidMount() {
var _this = this;
RegistryUtils.getRegistry().then(function (registry) {
if (_this.isMounted()) {
_this.setState({
registry: registry,
registryLoading: false
});
}
})['catch'](function (err) {
Logger.error(err);
if (_this.isMounted()) {
_this.setState({ registryLoading: false });
}
});
RegistryUtils.on('change', this.handleRegistryChange);
},
componentWillUnmount: function componentWillUnmount() {
RegistryUtils.off('change', this.handleRegistryChange);
},
handleRegistryChange: function handleRegistryChange(npmRegistry) {
// extension has been installed/updated/removed
this.setState({ registry: npmRegistry });
restartRequiredAfterClose = true;
},
render: function render() {
var contents = undefined;
if (this.state.registryLoading) {
contents = React.createElement(
'div',
{ className: 'text-center' },
React.createElement('span', { className: 'spinner inline large spin' })
);
} else {
contents = this.state.registry.map(function (entry) {
return React.createElement(RegistryItem, { key: entry._id, registryInfo: entry });
});
}
return React.createElement(
'div',
null,
React.createElement(
'div',
{ className: 'modal-header' },
React.createElement(
'h1',
{ className: 'dialog-title' },
Strings.REGISTRY_DIALOG_TITLE
)
),
React.createElement(
'div',
{ className: 'modal-body' },
React.createElement(
'div',
{ className: 'dialog-message' },
contents
)
),
React.createElement(
'div',
{ className: 'modal-footer' },
React.createElement(
'button',
{ className: 'dialog-button btn primary', 'data-button-id': 'close' },
Strings.CLOSE
)
)
);
}
});
var afterClose = function afterClose() {
// prompt the user to restart Brackets
if (!restartRequiredAfterClose) {
return;
}
var dialog = Dialogs.showModalDialog(DefaultDialogs.DIALOG_ID_CHANGE_EXTENSIONS, BracketsStrings.CHANGE_AND_RELOAD_TITLE, Strings.CLOSE_AND_RELOAD_MESSAGE, [{
className: Dialogs.DIALOG_BTN_CLASS_NORMAL,
id: 'cancel',
text: Strings.CANCEL
}, {
className: Dialogs.DIALOG_BTN_CLASS_PRIMARY,
id: 'reload',
text: Strings.RELOAD
}], true);
dialog.done(function (buttonId) {
if (buttonId === 'reload') {
CommandManager.execute(Commands.APP_RELOAD);
}
});
};
var show = function show() {
var template = '<div id="brackets-npm-registry-dialog" class="template modal"/>';
var dialog = Dialogs.showModalDialogUsingTemplate(template);
var $dialog = dialog.getElement();
ReactDOM.render(React.createElement(RegistryDialog, null), $dialog[0]);
dialog.done(function () {
React.unmountComponentAtNode($dialog[0]);
afterClose();
});
};
exports.show = show;
exports._RegistryItem = RegistryItem;
exports._RegistryDialog = RegistryDialog;
});
//# sourceMappingURL=C:\Users\Zaggi\AppData\Roaming\Brackets-Electron\extensions\user\brackets-npm-registry\dist//../ui/react-components/registry-dialog.js.map