motion
Version:
motion - moving development forward
82 lines (63 loc) • 2.19 kB
JavaScript
;
'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