mirror of https://github.com/rancher/ui.git
69 lines
1.5 KiB
JavaScript
69 lines
1.5 KiB
JavaScript
import CodeMirror from 'codemirror';
|
|
import { singleton } from 'shared/utils/pipelineStep';
|
|
import Service from '@ember/service';
|
|
|
|
export default Service.extend({
|
|
init() {
|
|
this._super(...arguments);
|
|
this._instances = Object.create(null);
|
|
},
|
|
|
|
fromTextArea(id, textarea) {
|
|
return this.registerInstance(id, CodeMirror.fromTextArea(textarea));
|
|
},
|
|
|
|
instanceFor(id) {
|
|
return this._instances[id];
|
|
},
|
|
|
|
registerInstance(id, instance) {
|
|
this._instances[id] = instance;
|
|
|
|
return instance;
|
|
},
|
|
|
|
signal(emitter, type, ...values) {
|
|
CodeMirror.signal(emitter, type, ...values);
|
|
},
|
|
|
|
unregisterInstance(id) {
|
|
delete this._instances[id];
|
|
},
|
|
|
|
getMatchedHint(value, editor) {
|
|
var hintAry = singleton.hintAry;
|
|
var cur = editor.getCursor();
|
|
var cursorPosition = cur.ch;
|
|
var cursorValue = editor.getLine(cur.line).slice(0, cursorPosition);
|
|
|
|
var matched = false;
|
|
var _$valueIndex = cursorValue.lastIndexOf('$');
|
|
|
|
var _$value = cursorValue.slice(_$valueIndex, cursorValue.length);
|
|
var matchedArry = [];
|
|
|
|
if (_$value) {
|
|
for (var i = 0; i < hintAry.length; i++) {
|
|
var item = hintAry[i];
|
|
|
|
// if matched on end
|
|
if ((item.indexOf(_$value) === 0)) {
|
|
matched = true;
|
|
matchedArry.push(item);
|
|
}
|
|
}
|
|
if (matched) {
|
|
return {
|
|
matchedArry,
|
|
index: cursorPosition - _$valueIndex
|
|
};
|
|
}
|
|
}
|
|
|
|
return {
|
|
matchedArry: [],
|
|
index: -1
|
|
};
|
|
}
|
|
});
|