UNPKG

@mitre/nuxt-smartscript

Version:

Smart typography transformations for Nuxt - automatic superscript, subscript, and symbol formatting

66 lines (65 loc) 1.52 kB
import { useNuxtApp } from "#imports"; import { onMounted, ref } from "vue"; export function useSmartScript() { const nuxtApp = useNuxtApp(); const smartscript = nuxtApp.$smartscript; const isProcessing = ref(false); const stats = ref({ processedElements: 0, superscripts: 0, subscripts: 0, total: 0 }); const updateStats = () => { if (!smartscript) return; stats.value = smartscript.getStats(); }; const process = async () => { if (!smartscript || isProcessing.value) return; isProcessing.value = true; try { await smartscript.process(); updateStats(); } finally { isProcessing.value = false; } }; const enableForElement = (element) => { if (element.dataset.superscriptProcessed === "true") { delete element.dataset.superscriptProcessed; } element.classList.remove("no-superscript"); }; const disableForElement = (element) => { element.classList.add("no-superscript"); }; const toggleForElement = (element) => { if (element.classList.contains("no-superscript")) { enableForElement(element); } else { disableForElement(element); } }; onMounted(() => { if (smartscript) { setTimeout(() => { process(); }, 100); } }); return { // State isProcessing, stats, // Methods process, updateStats, enableForElement, disableForElement, toggleForElement, // Direct access to API api: smartscript }; }