ui/lib/shared/addon/components/code-block/component.js

34 lines
863 B
JavaScript

import Component from '@ember/component';
import layout from './template';
import { observer } from '@ember/object'
export default Component.extend({
layout,
language: 'javascript',
code: '',
hide: false,
constrained: true,
tagName: 'PRE',
classNames: ['line-numbers'],
classNameBindings: ['languageClass','hide:hide','constrained:constrained'],
languageClass: function() {
var lang = this.get('language');
if ( lang )
{
return 'language-'+lang;
}
}.property('language'),
didReceiveAttrs() {
this.highlightedChanged();
},
highlighted: null,
highlightedChanged: observer('language','code', function() {
var lang = this.get('language');
this.set('highlighted', Prism.highlight(this.get('code')||'', Prism.languages[lang], lang));
}),
});