scripts/apps/tansa/index.ts
import {appConfig} from 'appConfig';
/*
* This module enables the 'tansa' spellchecker functionality and installs
* it based on the documentation provided by the user guide.
*/
export const setupTansa = () => {
if (!appConfig?.tansa?.base_url) {
console.warn('tansa is not configured properly');
appConfig.features.useTansaProofing = false;
return;
}
const tansa = {
settings: {
baseUrl: appConfig.tansa.base_url,
parentAppId: appConfig.tansa.app_id,
tansaUserId: appConfig.tansa.user_id,
licenseKey: appConfig.tansa.license_key,
profileId: appConfig.tansa.profile_id,
parentAppVersion: appConfig.tansa.app_version,
checkboxPreference: false,
clientExtenstionJs: 'tansa4ClientExtensionSimple.js',
},
useDocumentWriteFun: false,
};
// tansa apparently likes to polute window scope
window.tansa = tansa;
window.afterProofing = (isCancelled) => {
let $rootScope = angular.element(document.body).injector().get('$rootScope');
$rootScope.$broadcast('tansa:after', isCancelled);
$rootScope.$broadcast('tansa:end', isCancelled);
};
let tansaLoaderScript = document.getElementById('tansaLoaderScript');
if (!tansaLoaderScript) {
const script = document.createElement('script');
script.src = tansa.settings.baseUrl + 'tansaLoader.js?' + new Date().getTime();
script.async = true;
script.onload = () => {
const setupBrowser = () => { // let tansa finish loading
if (!window.tansaJQuery) {
return;
}
const browser = window.tansaJQuery.pgwBrowser();
window.tansa.settings.platformName = browser.os.name;
window.tansa.settings.platformVersion = browser.os.fullVersion;
window.removeEventListener('load', setupBrowser);
};
window.addEventListener('load', setupBrowser);
};
document.querySelector('head').appendChild(script);
}
};