hexo/node_modules/hexo-theme-fluid/scripts/helpers/export-config.js

41 lines
1.3 KiB
JavaScript

/* global hexo */
'use strict';
const url = require('url');
const urlJoin = require('../utils/url-join');
/**
* Export theme config to js
*/
hexo.extend.helper.register('export_config', function () {
let { config, theme, fluid_version } = this;
const exportConfig = {
hostname: url.parse(config.url).hostname || config.url,
root: config.root,
version: fluid_version,
typing: theme.fun_features.typing,
anchorjs: theme.fun_features.anchorjs,
progressbar: theme.fun_features.progressbar,
code_language: theme.code.language,
copy_btn: theme.code.copy_btn,
image_caption: theme.post.image_caption,
image_zoom: theme.post.image_zoom,
toc: theme.post.toc,
lazyload: theme.lazyload,
web_analytics: theme.web_analytics,
search_path: urlJoin(config.root, theme.search.path),
include_content_in_search: theme.search.content,
};
return `<script id="fluid-configs">
var Fluid = window.Fluid || {};
Fluid.ctx = Object.assign({}, Fluid.ctx)
var CONFIG = ${JSON.stringify(exportConfig)};
if (CONFIG.web_analytics.follow_dnt) {
var dntVal = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
Fluid.ctx.dnt = dntVal && (dntVal.startsWith('1') || dntVal.startsWith('yes') || dntVal.startsWith('on'));
}
</script>`;
});