React = require 'react' _ = require "underscore" PackageSet = require './package-set' PackagesStore = require './packages-store' PluginsActions = require './plugins-actions' {Spinner, EventedIFrame, Flexbox} = require 'nylas-component-kit' classNames = require 'classnames' class TabInstalled extends React.Component @displayName: 'TabInstalled' constructor: (@props) -> @state = @_getStateFromStores() render: => searchEmpty = null if @state.search.length > 0 searchEmpty = "No matching packages." if atom.inDevMode() devPackages = @state.packages.dev devEmpty = <span> You don't have any packages installed in ~/.nylas/dev/packages. These plugins are only loaded when you run the app with debug flags enabled (via the Developer menu).<br/><br/>Learn more about building plugins at <a href='https://nylas.com/N1/docs'>https://nylas.com/N1/docs</a> </span> devCTA = <div className="btn btn-large" onClick={@_onCreatePackage}>Create New Plugin...</div> else devPackages = [] devEmpty = <span>Run with debug flags enabled to load ~/.nylas/dev/packages.</span> devCTA = <div className="btn btn-large" onClick={@_onEnableDevMode}>Enable Debug Flags</div> <div className="installed"> <div className="inner"> <input type="search" value={@state.search} onChange={@_onSearchChange } placeholder="Search Installed Plugins"/> <PackageSet packages={@state.packages.user} title="Installed" emptyText={searchEmpty ? <span>You don't have any plugins installed in ~/.nylas/packages.</span>} /> <PackageSet title="Development" packages={devPackages} emptyText={searchEmpty ? devEmpty} /> <div className="new-package"> {devCTA} </div> <PackageSet title="Core" packages={@state.packages.core} /> </div> </div> _onEnableDevMode: => require('ipc').send('command', 'application:toggle-dev') componentDidMount: => @_unsubscribers = [] @_unsubscribers.push PackagesStore.listen(@_onChange) PluginsActions.refreshInstalledPackages() componentWillUnmount: => unsubscribe() for unsubscribe in @_unsubscribers _getStateFromStores: => packages: PackagesStore.installed() search: PackagesStore.installedSearchValue() _onChange: => @setState(@_getStateFromStores()) _onCreatePackage: => PluginsActions.createPackage() _onSearchChange: (event) => PluginsActions.setInstalledSearchValue(event.target.value) module.exports = TabInstalled