UNPKG

lacona-osx

Version:

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

94 lines (75 loc) 3.07 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.SpotlightDirectory = exports.SpotlightFile = undefined; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _elliptical = require('elliptical'); var _laconaPhrases = require('lacona-phrases'); var _laconaApi = require('lacona-api'); var _path = require('path'); var _fromPromise = require('rxjs/observable/fromPromise'); var _startWith = require('rxjs/operator/startWith'); var _utils = require('./utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @jsx createElement */ const Files = { fetch({ props }) { var _context; return (_context = (0, _fromPromise.fromPromise)((0, _laconaApi.fetchFiles)({ query: props.query })), _startWith.startWith).call(_context, []); }, clear: true }; function describeFiles(input, observe) { const data = input != null ? observe((0, _elliptical.createElement)(Files, { query: input.toLowerCase() })) : []; const items = _lodash2.default.chain(data).filter().filter(({ contentType }) => contentType !== 'public.folder').filter('path').map(({ path }) => ({ text: (0, _path.basename)(path), value: path, qualifiers: (0, _utils.subPaths)((0, _path.dirname)(path)), annotation: { type: 'icon', value: path } })).value(); return (0, _elliptical.createElement)('list', { strategy: 'contain', items: items, limit: 10, strategy: 'fuzzy' }); } function describeFolders(input, observe) { const data = input != null ? observe((0, _elliptical.createElement)(Files, { query: input.toLowerCase() })) : []; const items = _lodash2.default.chain(data).filter(({ contentType }) => contentType === 'public.folder').filter('path').map(({ path }) => ({ text: (0, _path.basename)(path), value: path, qualifiers: (0, _utils.subPaths)((0, _path.dirname)(path)), annotation: { type: 'icon', value: path } })).value(); return (0, _elliptical.createElement)('list', { strategy: 'contain', items: items, limit: 10, strategy: 'fuzzy' }); } const SpotlightFile = exports.SpotlightFile = { extends: [_laconaPhrases.File], describe({ props, observe, config }) { if (config.enableSpotlightFiles) { return (0, _elliptical.createElement)( 'placeholder', { argument: 'file' }, (0, _elliptical.createElement)('dynamic', { describe: input => describeFiles(input, observe), greedy: true, splitOn: props.splitOn, limit: 1 }) ); } } }; const SpotlightDirectory = exports.SpotlightDirectory = { extends: [_laconaPhrases.Directory], describe({ props, observe, config }) { if (config.enableSpotlightDirectories) { return (0, _elliptical.createElement)( 'placeholder', { argument: 'folder' }, (0, _elliptical.createElement)('dynamic', { describe: input => describeFolders(input, observe), greedy: true, splitOn: props.splitOn, limit: 1 }) ); } } };