halo-theme-dream2.0-plus
Version:
306 lines (296 loc) • 20.2 kB
HTML
<th:block xmlns:th="https://www.thymeleaf.org">
<style th:inline="css"
th:with="fontSrc = ${theme.config.basic_style.web_font != 'default' ? theme.config.basic_style.custom_font : ''},
fontFormat = ${fontSrc.endsWith('.ttf') ? 'truetype' : fontSrc.endsWith('.eot') ? 'embedded-opentype' : fontSrc.replaceAll('^.*\.([\w]+)$', '$1')}">
[(${#strings.isEmpty(fontSrc) ? '' : '
@font-face {
font-family: "Dream Font";
font-display: swap;
font-weight: 400;
src: url("' + fontSrc + '")' + (#strings.isEmpty(fontFormat)? '' : ' format("' + fontFormat + '")') + ';
}'})]
html {
--theme: [(${theme.config.basic_style.theme_color})];
--pjax-animation-bg-alpha: calc([(${theme.config.enhance.pjax_config.animation_bg_alpha})]/100);
[(${theme.config.enhance.cursor_style == 'breeze' ? '--cursor-default:url('+#theme.assets('/cursor/breeze/Arrow.cur')+'),auto;--cursor-pointer:url('+#theme.assets('/cursor/breeze/Hand.cur')+'),pointer;--cursor-text:url('+#theme.assets('/cursor/breeze/IBeam.cur')+'),auto;--cursor-zoom-in:url('+#theme.assets('/cursor/breeze/Cross.cur')+'),zoom-in;'
: theme.config.enhance.cursor_style == 'black_cat' ? '--cursor-default:url('+#theme.assets('/cursor/black_cat/normal.cur')+'),auto;--cursor-pointer:url('+#theme.assets('/cursor/black_cat/ayuda.cur')+'),pointer;--cursor-text:url('+#theme.assets('/cursor/black_cat/texto.cur')+'),auto;--cursor-zoom-in:url('+#theme.assets('/cursor/black_cat/precision.cur')+'),zoom-in;'
: theme.config.enhance.cursor_style == 'overwatch' ? '--cursor-default:url('+#theme.assets('/cursor/overwatch/pointer.cur')+'),auto;--cursor-pointer:url('+#theme.assets('/cursor/overwatch/link.cur')+'),pointer;--cursor-text:url('+#theme.assets('/cursor/overwatch/text.cur')+'),auto;--cursor-zoom-in:url('+#theme.assets('/cursor/overwatch/cross.cur')+'),zoom-in;'
: theme.config.enhance.cursor_style == 'rainbow_rain' ? '--cursor-default:url('+#theme.assets('/cursor/rainbow_rain/normal.cur')+'),auto;--cursor-pointer:url('+#theme.assets('/cursor/rainbow_rain/link.cur')+'),pointer;--cursor-text:url('+#theme.assets('/cursor/rainbow_rain/texto.cur')+'),auto;--cursor-zoom-in:url('+#theme.assets('/cursor/rainbow_rain/precision.cur')+'),zoom-in;'
: theme.config.enhance.cursor_style == 'marry' ? '--cursor-default:url('+#theme.assets('/cursor/marry/arrow.cur')+'),auto;--cursor-pointer:url('+#theme.assets('/cursor/marry/arrow.cur')+'),pointer;--cursor-text:url('+#theme.assets('/cursor/marry/beam.cur')+'),auto;--cursor-zoom-in:url('+#theme.assets('/cursor/marry/move.cur')+'),zoom-in;'
: theme.config.enhance.cursor_style != 'none' ? '--cursor-default: url('+#theme.assets('/cursor/'+ theme.config.enhance.cursor_style + '/arrow.cur')+'), auto;--cursor-pointer: url('+#theme.assets('/cursor/'+ theme.config.enhance.cursor_style + '/hand.cur')+'), pointer;--cursor-text: url('+#theme.assets('/cursor/'+ theme.config.enhance.cursor_style + '/arrow.cur')+'), auto;--cursor-zoom-in: url('+#theme.assets('/cursor/'+theme.config.enhance.cursor_style + '/arrow.cur')+'), zoom-in;'
: ''})]
}
html.night {
--theme: [(${theme.config.basic_style.night_theme_color})];
}
body:before {
[(${(theme.config.basic_style.enable_image_bg && theme.config.basic_style.theme_style != 'clean' && !#strings.isEmpty(theme.config.basic_style.background_pc)) ? 'background: url("' + theme.config.basic_style.background_pc + '") center 0 no-repeat;' : ''})]
}
html.night body:before {
[(${(theme.config.basic_style.enable_image_bg && theme.config.basic_style.theme_style != 'clean' && !#strings.isEmpty(theme.config.basic_style.night_background_pc)) ? 'background: url("' + theme.config.basic_style.night_background_pc + '") center 0 no-repeat;' : ''})]
}
@media screen and (max-width: 768px) {
body:before {
[(${(theme.config.basic_style.enable_image_bg && theme.config.basic_style.theme_style != 'clean' && !#strings.isEmpty(theme.config.basic_style.background_mobile)) ? 'background: url("' + theme.config.basic_style.background_mobile + '") center 0 no-repeat;' : ''})]
}
html.night body:before {
[(${(theme.config.basic_style.enable_image_bg && theme.config.basic_style.theme_style != 'clean' && !#strings.isEmpty(theme.config.basic_style.night_background_mobile)) ? 'background: url("' + theme.config.basic_style.night_background_mobile + '") center 0 no-repeat;' : ''})]
}
}
</style>
<script th:inline="javascript">
window.logger = console.log;
[(${theme.config.enhance.enable_debug ? '' : '
console.logStorage = [];
console.log = function (message, ...optionalParams) {
console.logStorage.push(()=>window.logger(message, optionalParams));
if (console.logStorage.length > 100) {
console.logStorage.shift()
}
};
console.logPrint = function () {
for (let logItem of console.logStorage) {
logItem();
}
};'})]
[(${#strings.isEmpty(theme.config.basic_info.copy_explain) ? '' : '
document.addEventListener("copy", function (event) {
let clipboardData = event.clipboardData || window.clipboardData;
if (!clipboardData) { return; }
let text = window.getSelection().toString();
if (text) {
event.preventDefault();
clipboardData.setData("text/plain", text + "\\n' + #strings.escapeJavaScript(theme.config.basic_info.copy_explain) + '");
}
});'})]
/** 主题配置 */
const DreamConfig = {};
/** 站点名 */
DreamConfig["site_title"] = [[${site.title}]];
/** 灰色模式 */
DreamConfig["gray_mode"] = [[${theme.config.enhance.gray_mode_group.enable_gray_mode}]];
/** 定义多语言资源 */
DreamConfig["site_time_expression"]=[[#{footer.site_time.desc}]];
DreamConfig['love_time_template'] = [[#{widget.love.time.template}]];
DreamConfig["love_time_template_year"] = [[#{widget.love.time.template_year}]];
DreamConfig["timelife_template"] = [
{
title: [[#{widget.timelife.hour.title}]],
endTitle: [[#{widget.timelife.hour.end_title}]],
num: 0,
percent: '0%',
},
{
title: [[#{widget.timelife.week.title}]],
endTitle: [[#{widget.timelife.week.end_title}]],
num: 0,
percent: '0%',
},
{
title: [[#{widget.timelife.month.title}]],
endTitle: [[#{widget.timelife.month.end_title}]],
num: 0,
percent: '0%',
},
{
title: [[#{widget.timelife.year.title}]],
endTitle: [[#{widget.timelife.year.end_title}]],
num: 0,
percent: '0%',
},
]
/** 禁止debug资源 */
DreamConfig["ban_debug_tips"] = [[#{js.ban_debug.tips}]];
DreamConfig["ban_debug_back_home"] = [[#{js.ban_debug.back_home}]];
/** 分享 */
DreamConfig["dshare_qq_name"] = [[#{js.dshare.qq.name}]];
DreamConfig["dshare_qzone_name"] = [[#{js.dshare.qzone.name}]];
DreamConfig["dshare_wechat_name"] = [[#{js.dshare.wechat.name}]];
DreamConfig["dshare_wechat_qr_title"] = [[#{js.dshare.wechat.qr.title}]];
DreamConfig["dshare_weibo_name"] = [[#{js.dshare.weibo.name}]];
DreamConfig["dshare_douban_name"] = [[#{js.dshare.douban.name}]];
DreamConfig["dshare_linkedin_name"] = [[#{js.dshare.linkedin.name}]];
DreamConfig["dshare_facebook_name"] = [[#{js.dshare.facebook.name}]];
DreamConfig["dshare_twitter_name"] = [[#{js.dshare.twitter.name}]];
DreamConfig["dshare_google_name"] = [[#{js.dshare.google.name}]];
DreamConfig["dshare_link_name"] = [[#{js.dshare.link.name}]];
DreamConfig["dshare_poster_name"] = [[#{js.dshare.poster.name}]];
DreamConfig["dshare_poster_title"] = [[#{js.dshare.poster.title}]];
DreamConfig["dshare_poster_tip"] = [[#{js.dshare.poster.tip}]];
DreamConfig["dshare_poster_button_name"] = [[#{js.dshare.poster.button.name}]];
/** 瞬间分享标题 */
DreamConfig["journals_share_title"] = [[#{js.journals.share.title}]];
/** 主题扩展组件的资源 */
DreamConfig["mew_subtitle_default_title"] = [[#{js.mew_subtitle.default.title}]];
DreamConfig["mew_music_not_enabled_tip"] = [[#{js.mew_music.not_enabled.tip}]];
DreamConfig["mew_music_default_name"] = [[#{js.mew_music.default.name}]];
DreamConfig["mew_music_default_artist"] = [[#{js.mew_music.default.artist}]];
DreamConfig["mew_music_not_music_tip"] = [[#{js.mew_music.not_music.tip}]];
DreamConfig["mew_bilibili_not_bvid_tip"] = [[#{js.mew_bilibili.not_bvid.tip}]];
DreamConfig["mew_tabs_not_tab_tip"] = [[#{js.mew_tabs.not_tab.tip}]];
DreamConfig["mew_tabs_default_title"] = [[#{js.mew_tabs.default.title}]];
DreamConfig["mew_cloud_title"] = [[#{js.mew_cloud.title}]];
DreamConfig["mew_cloud_default_name"] = [[#{js.mew_cloud.default.name}]];
DreamConfig["mew_cloud_360_name"] = [[#{js.mew_cloud.360.name}]];
DreamConfig["mew_cloud_115_name"] = [[#{js.mew_cloud.115.name}]];
DreamConfig["mew_cloud_123_name"] = [[#{js.mew_cloud.123.name}]];
DreamConfig["mew_cloud_kk_name"] = [[#{js.mew_cloud.kk.name}]];
DreamConfig["mew_cloud_xl_name"] = [[#{js.mew_cloud.xl.name}]];
DreamConfig["mew_cloud_onedrive_name"] = [[#{js.mew_cloud.onedrive.name}]];
DreamConfig["mew_cloud_yd_name"] = [[#{js.mew_cloud.yd.name}]];
DreamConfig["mew_cloud_ty_name"] = [[#{js.mew_cloud.ty.name}]];
DreamConfig["mew_cloud_lt_name"] = [[#{js.mew_cloud.lt.name}]];
DreamConfig["mew_cloud_uc_name"] = [[#{js.mew_cloud.uc.name}]];
DreamConfig["mew_cloud_pan_name"] = [[#{js.mew_cloud.pan.name}]];
DreamConfig["mew_cloud_oss_name"] = [[#{js.mew_cloud.oss.name}]];
DreamConfig["mew_cloud_bd_name"] = [[#{js.mew_cloud.bd.name}]];
DreamConfig["mew_cloud_wy_name"] = [[#{js.mew_cloud.wy.name}]];
DreamConfig["mew_cloud_ali_name"] = [[#{js.mew_cloud.ali.name}]];
DreamConfig["mew_cloud_github_name"] = [[#{js.mew_cloud.github.name}]];
DreamConfig["mew_cloud_gitee_name"] = [[#{js.mew_cloud.gitee.name}]];
DreamConfig["mew_cloud_gitlab_name"] = [[#{js.mew_cloud.gitlab.name}]];
DreamConfig["mew_cloud_gitea_name"] = [[#{js.mew_cloud.gitea.name}]];
DreamConfig["mew_cloud_git_name"] = [[#{js.mew_cloud.git.name}]];
DreamConfig["mew_cloud_lz_name"] = [[#{js.mew_cloud.lz.name}]];
DreamConfig["mew_cloud_source"] = [[#{js.mew_cloud.source}]];
DreamConfig["mew_cloud_extraction"] = [[#{js.mew_cloud.extraction}]];
/** 一些通用多语言变量 */
DreamConfig["global_copy_name"] = [[#{global.copy.name}]];
DreamConfig["global_copy_success"] = [[#{global.copy.success}]];
DreamConfig["global_browser_not_supported"] = [[#{global.browser.not_supported}]];
DreamConfig["global_request_fail"] = [[#{global.request.fail}]];
DreamConfig["global_like_success"] = [[#{global.like.success}]];
/** 配置自定义灰色模式时段 */
let gray_mode_time_list = []
let custom_gray_mode_time_list = [[${theme.config.enhance.gray_mode_group.gray_mode_time_list}]];
if(custom_gray_mode_time_list) {
for (let time of custom_gray_mode_time_list) {
let type = time.realNode.time_span;
let desc = time.realNode.time_span_desc;
gray_mode_time_list.push({time: type, desc: desc});
}
}
DreamConfig["shiki_enable"] = [[${pluginFinder.available('shiki')}]];
DreamConfig["header_fixed"] = [[${theme.config.basic_info.header_fixed}]];
DreamConfig["gray_mode_time_list"] = gray_mode_time_list;
DreamConfig["pjax_state"] = [[${theme.config.enhance.enable_pjax}]];
DreamConfig["pjax_animation_style"] = [[${theme.config.enhance.pjax_config.animation_style}]];
/** 配置分享方式 */
DreamConfig["post_share_sites"] = [[${theme.config.post.custom_post_share}]];
/** 配置灯笼特效文本 */
let effects_lantern_left = [[${theme.config.enhance.effects_lantern.effects_lantern_left}]];
let effects_lantern_right = [[${theme.config.enhance.effects_lantern.effects_lantern_right}]];
if(effects_lantern_left && effects_lantern_left.length > 1) {
effects_lantern_left = effects_lantern_left.charAt(0);
}
if(effects_lantern_right && effects_lantern_right.length > 1) {
effects_lantern_right = effects_lantern_right.charAt(0);
}
DreamConfig["effects_lantern_left"] = effects_lantern_left;
DreamConfig["effects_lantern_right"] = effects_lantern_right;
DreamConfig["show_ai_summary"] = [[${theme.config.post.show_ai_summary}]];
/** 安全链接配置 */
DreamConfig["enable_security_link"] = [[${theme.config.security_link_config.enable_security_link}]];
DreamConfig['security_link_url'] = [[${theme.config.security_link_config.enable_security_link ? singlePageFinder.getByName(theme.config.security_link_config.security_link_single_page)?.status?.permalink : ''}]]
let whitelistStr = [[${theme.config.security_link_config.whitelist_domains}]]
let hostname = window.location.hostname
if (whitelistStr) {
DreamConfig['security_link_whitelist'] = whitelistStr.split('\n').map(domain => domain.toLowerCase().trim()).filter(domain => domain.length > 0)
if (DreamConfig['security_link_whitelist'].indexOf(hostname) === -1) {
DreamConfig['security_link_whitelist'].push(hostname)
}
} else {
DreamConfig['security_link_whitelist'] = [hostname]
}
/** 配置主题模式 */
DreamConfig["default_theme"] = [[${theme.config.basic_style.default_theme}]];
DreamConfig["theme_version"] = [[${theme.spec.version}]];
DreamConfig["theme_base"] = "[(${#theme.assets('/')})]".replace(/\?.*$/, '');
/** 移动端特效开关 */
DreamConfig["mobile_special_effects"] = [[${theme.config.enhance.mobile_special_effects}]];
[(${!#strings.isEmpty(theme.config.post.code_fold_line)?'DreamConfig["code_fold_line"] = "' + theme.config.post.code_fold_line + '";': ''})]
[(${!#strings.isEmpty(theme.config.basic_info.document_hidden_title)?'DreamConfig["document_hidden_title"] = "' + #strings.escapeJavaScript(theme.config.basic_info.document_hidden_title) + '";': ''})]
[(${!#strings.isEmpty(theme.config.basic_info.document_visible_title)?'DreamConfig["document_visible_title"] = "' + #strings.escapeJavaScript(theme.config.basic_info.document_visible_title) + '";' : ''})]
[(${!#strings.isEmpty(theme.config.basic_info.website_time)?'DreamConfig["website_time"] = "' + theme.config.basic_info.website_time + '";' : ''})]
[(${(theme.config.sidebar.enable_color_character && !#strings.isEmpty(theme.config.sidebar.color_character))? 'DreamConfig["spark_input_content"] = ["' + #strings.escapeJavaScript(theme.config.sidebar.color_character).replace('\\n', '","') + '"]' : ''})]
DreamConfig["notice_show_mode"] = '[(${theme.config.sidebar.notice_show_mode})]';
[(${(!#strings.isEmpty(theme.config.post.img_fold_height) && #numbers.sequence(theme.config.post.img_fold_height,theme.config.post.img_fold_height)[0] >= 400)?'DreamConfig["img_fold_height"] = ' + theme.config.post.img_fold_height + ';': ''})]
[(${(!#strings.isEmpty(theme.config.page_config.journals_fold_height) && #numbers.sequence(theme.config.page_config.journals_fold_height,theme.config.page_config.journals_fold_height)[0] >= 260)?'DreamConfig["journals_fold_height"] = ' + theme.config.page_config.journals_fold_height + ';': ''})]
[(${theme.config.enhance.cursor_move != 'none'?'DreamConfig["cursor_move"] = "' + theme.config.enhance.cursor_move + '";': ''})]
[(${theme.config.enhance.cursor_click != 'none'?'DreamConfig["cursor_click"] = "' + theme.config.enhance.cursor_click + '";': ''})]
[(${theme.config.enhance.effects_lantern_mode != 'none'?'DreamConfig["effects_lantern_mode"] = "' + theme.config.enhance.effects_lantern_mode + '";': ''})]
[(${theme.config.enhance.effects_sakura_mode != 'none'?'DreamConfig["effects_sakura_mode"] = "' + theme.config.enhance.effects_sakura_mode + '";': ''})]
[(${theme.config.enhance.effects_snowflake_mode != 'none'?'DreamConfig["effects_snowflake_mode"] = "' + theme.config.enhance.effects_snowflake_mode + '";': ''})]
[(${theme.config.enhance.effects_universe_mode != 'none'?'DreamConfig["effects_universe_mode"] = "' + theme.config.enhance.effects_universe_mode + '";': ''})]
[(${theme.config.enhance.effects_circle_magic_mode != 'none'?'DreamConfig["effects_circle_magic_mode"] = "' + theme.config.enhance.effects_circle_magic_mode + '";': ''})]
[(${theme.config.enhance.effects_quantum_silk_thread_mode != 'none'?'DreamConfig["effects_quantum_silk_thread_mode"] = "' + theme.config.enhance.effects_quantum_silk_thread_mode + '";': ''})]
[(${theme.config.enhance.effects_rain_mode != 'none'?'DreamConfig["effects_rain_mode"] = "' + theme.config.enhance.effects_rain_mode + '";': ''})]
[(${theme.config.basic_style.load_progress != 'none'?'DreamConfig["load_progress"] = "' + theme.config.basic_style.load_progress + '";': ''})]
[(${!#strings.isEmpty(theme.config.page_config.journals_share_image)?'DreamConfig["journals_share_image"] = "' + theme.config.page_config.journals_share_image + '";': ''})]
[(${!#strings.isEmpty(theme.config.sidebar.meting_api)?'var meting_api = "' + theme.config.sidebar.meting_api + '";': ''})]
(function () {
const hasNightInLocal = () => localStorage.getItem('night') !== null
const getNightInConfig = () => {
if (DreamConfig.default_theme === 'night') {
return true
}
if (DreamConfig.default_theme === 'system') {
return matchMedia('(prefers-color-scheme: dark)').matches
}
return false
}
let isNight = hasNightInLocal() ? localStorage.getItem('night') : getNightInConfig()
if (isNight.toString() === 'true') {
document.documentElement.classList.add('night')
document.documentElement.setAttribute('night', 'true')
document.documentElement.classList.add('color-scheme-dark')
} else {
document.documentElement.classList.add('color-scheme-light')
document.documentElement.removeAttribute('night')
}
//初始化灰色模式
sessionStorage.removeItem('gray-mode')
sessionStorage.removeItem('gray-mode-message')
if (DreamConfig.gray_mode === true) {
document.documentElement.classList.add('gray-mode')
sessionStorage.setItem('gray-mode', 'true')
} else if (DreamConfig.gray_mode === 'custom' && DreamConfig.gray_mode_time_list) {
const now = new Date()
const month = now.getMonth() + 1
const day = now.getDate()
const isDateInRange = (currentMonth, currentDay, timeRange) => {
let find = false
const timeParts = timeRange.time.split('|').map(part => part.trim());
const [startDate, endDate] = timeParts.length >= 2 ? timeParts : [timeParts[0], timeParts[0]];
if (!startDate || !endDate) {
return find
}
const [startMonth, startDay] = startDate.split('/').map(part => part.trim()).map(Number)
const [endMonth, endDay] = endDate.split('/').map(part => part.trim()).map(Number)
if (!startMonth || !startDay || !endMonth || !endDay) {
return find
}
const start = new Date(now.getFullYear(), startMonth - 1, startDay)
const end = new Date(now.getFullYear(), endMonth - 1, endDay)
const current = new Date(now.getFullYear(), currentMonth - 1, currentDay)
find = current >= start && current <= end
if (find) {
sessionStorage.setItem('gray-mode', 'true')
sessionStorage.setItem('gray-mode-message', timeRange.desc)
}
return find
}
for (const timeRange of DreamConfig.gray_mode_time_list) {
try {
if (isDateInRange(month, day, timeRange)) {
document.documentElement.classList.add('gray-mode')
break
}
} catch (e) {
console.log(e)
}
}
}
})()
</script>
</th:block>