diff --git a/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue b/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue index 9e5786750c8048b3fc0564605b95b5e0df39e151..a0dd11543b98b9c4664c88526fb1a5da5036dc2c 100644 --- a/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue +++ b/resources/vue/components/courseware/blocks/CoursewareCodeBlock.vue @@ -10,7 +10,7 @@ @closeEdit="initCurrentData" > <template #content> - <pre v-show="currentContent !== ''" v-highlightjs="currentContent"><code ref="code" :class="[currentLang]"></code></pre> + <pre v-show="currentContent !== ''"><code v-html="highlightContent" class="hljs"></code></pre> <div v-show="currentLang !== ''" class="code-lang"> <span>{{ currentLang }}</span> </div> @@ -63,28 +63,9 @@ export default { lang() { return this.block?.attributes?.payload?.lang; }, - }, - directives: { - highlightjs: { - deep: true, - bind(el, binding) { - let targets = el.querySelectorAll('code'); - targets.forEach((target) => { - if (binding.value) { - target.innerHTML = binding.value; - } - hljs.highlightBlock(target); - }); - }, - componentUpdated(el, binding) { - let targets = el.querySelectorAll('code'); - targets.forEach((target) => { - if (binding.value) { - target.innerHTML = binding.value; - hljs.highlightBlock(target); - } - }); - }, + highlightContent() { + let language = this.currentLang !== '' ? [this.currentLang] : null; + return hljs.highlightAuto(this.currentContent, language).value; }, }, mounted() {