UNPKG

motion

Version:

motion - moving development forward

82 lines (63 loc) 2.19 kB
'use strict'; 'use babel'; Object.defineProperty(exports, "__esModule", { value: true }); var _atomTextBufferPoint = require('atom-text-buffer-point'); var _atomTextBufferPoint2 = _interopRequireDefault(_atomTextBufferPoint); var _sbEventKit = require('sb-event-kit'); var _autocomplete = require('./autocomplete'); var _autocomplete2 = _interopRequireDefault(_autocomplete); var _fns = require('../lib/fns'); var _helpers = require('./helpers'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class Editor { constructor() { this.subscriptions = new _sbEventKit.CompositeDisposable(); this.autocomplete = new _autocomplete2.default(); this.subscriptions.add(this.autocomplete); } activate(bridge) { this.subscriptions.add(bridge.onDidReceiveMessage('editor:autocomplete', message => { message.result = { suggestions: this.complete(message.text, message.position) }; })); this.subscriptions.add(bridge.onDidReceiveMessage('editor:collect:views', message => { message.result = { views: (0, _helpers.collectViews)(message.contents || '') }; })); } complete(text, position) { const point = _atomTextBufferPoint2.default.fromObject(position); const positionInfo = this.positionInfo(text, point); return this.autocomplete.complete(text, point, positionInfo); } positionInfo(text, position) { const info = { views: (0, _helpers.collectViews)(text), active: null, position: null }; info.active = (0, _helpers.getObjectAtPosition)(info.views, position); if (info.active) { info.position = this.getPositionInfo(info.active, position); } return info; } getPositionInfo(view, position) { if ((0, _helpers.getObjectAtPosition)(view.els, position)) { return _helpers.POSITION_TYPE.VIEW_JSX; } if ((0, _helpers.getObjectAtPosition)(view.styles, position)) { return _helpers.POSITION_TYPE.STYLE; } return _helpers.POSITION_TYPE.VIEW_TOP; } dispose() { this.subscriptions.dispose(); } } exports.default = Editor; //# sourceMappingURL=index.js.map