UNPKG

lacona-osx

Version:

Lacona Extensions for OSX, tied into the global-context hosted API

127 lines (100 loc) 3.58 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.RunningApp = exports.RunningAppSource = undefined; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _elliptical = require('elliptical'); var _laconaPhrases = require('lacona-phrases'); var _laconaApi = require('lacona-api'); var _Observable = require('rxjs/Observable'); var _map = require('rxjs/operator/map'); var _mergeMap = require('rxjs/operator/mergeMap'); var _startWith = require('rxjs/operator/startWith'); var _concat = require('rxjs/operator/concat'); var _fromPromise = require('rxjs/observable/fromPromise'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @jsx createElement */ const RunningAppSource = exports.RunningAppSource = { fetch({ activate }) { if ((0, _laconaApi.isDemo)()) { return new _Observable.Observable(observer => { (0, _laconaApi.fetchRunningApplications)((err, apps) => { const trueData = _lodash2.default.map(apps, app => { if (app.activationPolicy === 'regular') { return new DockAppObject(app); } else { return new MenuBarAppObject(app); } }); observer.next(trueData); }); }); } else { var _context; return (_context = (_context = (_context = (0, _fromPromise.fromPromise)((0, _laconaApi.fetchRunningApplications)()), _concat.concat).call(_context, _mergeMap.mergeMap.call(activate, () => { return (0, _fromPromise.fromPromise)((0, _laconaApi.fetchRunningApplications)()); })), _map.map).call(_context, apps => { return _lodash2.default.map(apps, app => { if (app.activationPolicy === 'regular') { return new DockAppObject(app); } else { return new MenuBarAppObject(app); } }); }), _startWith.startWith).call(_context, []); } } }; class MenuBarAppObject { constructor({ bundleId, name, path }) { this.path = path; this.name = name; this.type = 'application'; this.bundleId = bundleId; this[_elliptical.unique] = path; } quit() { return (0, _laconaApi.quitApplication)({ path: this.path }); } launch() { return (0, _laconaApi.openFile)({ path: this.path }); } } class DockAppObject { constructor({ bundleId, name, path }) { this.name = name; this.type = 'application'; this.path = path; this.bundleId = bundleId; this[_elliptical.unique] = path; } activate() { return (0, _laconaApi.activateApplication)({ path: this.path }); } launch() { return (0, _laconaApi.openFile)({ path: this.path }); } hide() { return (0, _laconaApi.hideApplication)({ path: this.path }); } close() { return (0, _laconaApi.closeApplicationWindows)({ bundleId: this.bundleId }); } quit() { return (0, _laconaApi.quitApplication)({ path: this.path }); } } const RunningApp = exports.RunningApp = { extends: [_laconaPhrases.RunningApplication], describe({ observe, props }) { const data = observe((0, _elliptical.createElement)(RunningAppSource, null)); const apps = _lodash2.default.chain(data).filter().filter('name').map(app => ({ text: app.name, value: app })).value(); return (0, _elliptical.createElement)( 'placeholder', { argument: 'application', suppressEmpty: props.suppressEmpty }, (0, _elliptical.createElement)('list', { strategy: 'fuzzy', items: apps, unique: true }) ); } };