UNPKG

lacona-osx

Version:

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

121 lines (87 loc) 4.51 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClipboardDirectory = exports.ClipboardFile = exports.ClipboardURL = exports.ClipboardString = undefined; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _elliptical = require('elliptical'); var _laconaPhrases = require('lacona-phrases'); var _laconaApi = require('lacona-api'); var _laconaSourceHelpers = require('lacona-source-helpers'); var _path = require('path'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @jsx createElement */ const CLIPBOARD_ICON = (0, _path.join)(__dirname, '../img/Cut-48.png'); const ClipboardSource = (0, _laconaSourceHelpers.onActivate)(_laconaApi.fetchClipboard, {}); const ClipboardString = exports.ClipboardString = { extends: [_laconaPhrases.String], describe({ config, observe }) { if (!config.enableClipboardText) return; const clipboard = observe((0, _elliptical.createElement)(ClipboardSource, null)); if (clipboard.strings && clipboard.strings.length > 0) { const items = _lodash2.default.chain(clipboard.strings).map(string => { const noNewlinesString = string.replace(/(?:\r\n|\r|\n)/g, ' '); const qualifier = string.length < 50 ? string : `${noNewlinesString.slice(0, 47)}...`; const items = [{ text: 'clipboard string', value: string, qualifier, category: 'symbol' }, { text: 'clipboard contents', value: string, qualifier, category: 'symbol' }, { text: 'clipboard', value: string, qualifier, category: 'symbol' }]; if (string.length < 50) { items.unshift({ text: noNewlinesString, value: string }); } return items; }).flatten().value(); return (0, _elliptical.createElement)( 'placeholder', { argument: 'clipboard string', suppressEmpty: false }, (0, _elliptical.createElement)('list', { items: items, unique: true, annotation: { type: 'image', value: CLIPBOARD_ICON }, limit: 1 }) ); } } }; const ClipboardURL = exports.ClipboardURL = { extends: [_laconaPhrases.URL], describe({ config, observe }) { if (!config.enableClipboardURLs) return; const clipboard = observe((0, _elliptical.createElement)(ClipboardSource, null)); if (clipboard.urls && clipboard.urls.length > 0) { const items = _lodash2.default.chain(clipboard.urls).map(url => { const items = [{ text: 'clipboard url', value: url, qualifier: url, category: 'symbol' }, { text: 'clipboard contents', value: url, qualifier: url, category: 'symbol' }, { text: 'clipboard', value: url, qualifier: url, category: 'symbol' }]; if (url.length < 50) { items.unshift({ text: url, value: url }); } return items; }).flatten().value(); return (0, _elliptical.createElement)( 'placeholder', { argument: 'clipboard url', suppressEmpty: false }, (0, _elliptical.createElement)('list', { items: items, unique: true, annotation: { type: 'image', value: CLIPBOARD_ICON }, limit: 1 }) ); } } }; function describeClipboardFS(observe, config, filter, argument) { if (!config.enableClipboardFiles) return; const clipboard = observe((0, _elliptical.createElement)(ClipboardSource, null)); let items = []; if (clipboard.files && clipboard.files.length > 0) { items = _lodash2.default.chain(clipboard.files).filter(file => filter(file)).map(file => [{ text: file, value: file }, { text: argument, value: file, category: 'symbol' }, { text: 'clipboard contents', value: file, category: 'symbol' }, { text: 'clipboard', value: file, category: 'symbol' }]).flatten().value(); } if (items.length > 0) { return (0, _elliptical.createElement)( 'placeholder', { argument: argument, suppressEmpty: false }, (0, _elliptical.createElement)('list', { items: items, unique: true, annotation: { type: 'image', value: CLIPBOARD_ICON }, limit: 1 }) ); } } const ClipboardFile = exports.ClipboardFile = { extends: [_laconaPhrases.File], describe({ config, observe }) { return describeClipboardFS(observe, config, file => !_lodash2.default.endsWith(file, '/'), 'clipboard file'); } }; const ClipboardDirectory = exports.ClipboardDirectory = { extends: [_laconaPhrases.Directory], describe({ config, observe }) { return describeClipboardFS(observe, config, file => _lodash2.default.endsWith(file, '/'), 'clipboard directory'); } };