lacona-osx
Version:
Lacona Extensions for OSX, tied into the global-context hosted API
61 lines (47 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Pane = exports.PaneSource = undefined;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _laconaPhrases = require('lacona-phrases');
var _elliptical = require('elliptical');
var _laconaApi = require('lacona-api');
var _map = require('rxjs/operator/map');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class PaneObject {
constructor({ path, name }) {
this.path = path;
this.name = name;
this.type = 'preference pane';
this.limitId = 'preference-pane';
}
open() {
(0, _laconaApi.openFile)({ path: this.path });
}
} /** @jsx createElement */
const PaneSource = exports.PaneSource = {
fetch() {
var _context;
return (_context = (0, _laconaApi.watchPreferencePanes)(), _map.map).call(_context, data => {
return _lodash2.default.map(data, item => new PaneObject(item));
});
}
};
const Pane = exports.Pane = {
extends: [_laconaPhrases.PreferencePane],
describe({ observe }) {
const data = observe((0, _elliptical.createElement)(PaneSource, null));
const panes = _lodash2.default.chain(data).filter().filter('name').filter('path').map(pane => ({
text: pane.name,
value: pane,
annotation: { type: 'icon', value: pane.path }
})).value();
return (0, _elliptical.createElement)(
'placeholder',
{ argument: 'preference pane' },
(0, _elliptical.createElement)('list', { strategy: 'fuzzy', items: panes, limit: 10, score: 1 })
);
}
};