open-consul/ui/packages/consul-ui/app/instance-initializers/ivy-codemirror.js

31 lines
981 B
JavaScript

/* globals CodeMirror */
export function initialize(application) {
const appName = application.application.name;
const doc = application.lookup('service:-document');
// pick codemirror syntax highlighting paths out of index.html
const fs = JSON.parse(doc.querySelector(`[data-${appName}-fs]`).textContent);
// configure syntax highlighting for CodeMirror
CodeMirror.modeURL = {
replace: function(n, mode) {
switch (mode) {
case 'javascript':
return fs['codemirror/mode/javascript/javascript.js'];
case 'ruby':
return fs['codemirror/mode/ruby/ruby.js'];
case 'yaml':
return fs['codemirror/mode/yaml/yaml.js'];
}
},
};
const IvyCodeMirrorComponent = application.resolveRegistration('component:ivy-codemirror');
// Make sure ivy-codemirror respects/maintains a `name=""` attribute
IvyCodeMirrorComponent.reopen({
attributeBindings: ['name'],
});
}
export default {
initialize,
};