vuepress-plugin-disqus
Version:
Register a global Disqus component to add to your layouts
36 lines (31 loc) • 1.03 kB
JavaScript
export default ({ Vue }) => {
const options = JSON.parse(DISQUS_OPTIONS);
const name = options.name || "Disqus"
const component = () => import('vue-disqus/src/vue-disqus.vue')
// options will be pass down as props to the components later
delete options.name
Vue.component(name, {
functional: true,
render(h, { parent, props }) {
// Get default lang
let DefaultLanguage;
// The default value is en-US, but it's not a option for Disqus localization
if (parent.$lang === "en-US") {
DefaultLanguage = "en";
} else {
DefaultLanguage = parent.$lang.replace(/\-/, "_");
}
// SSR-friendly
if (parent._isMounted) {
return h(component, {
// Priority: VuePress's $lang as default language < global configuration < props
props: Object.assign({ language: DefaultLanguage }, options, props)
});
} else {
parent.$once("hook:mounted", () => {
parent.$forceUpdate();
});
}
}
});
};