breaking change:

1. 部分配置更改

feat:
1. 移除 messenger 聊天插件
2. 更新 fackbook 版本號
3. 增加 香港繁體、日文和韓語
4. 使用的新的複製api 代替舊的
5. 增加 umami 分析
6. 增加 umami 獲取訪問量/訪客數
7. snackbar 增加透明度
8. 文章頁下, nav fixed 下 顯示文章標題

improvement:
1. 代碼優化
2. 修改部分用語
3. 回復之前的相對時間邏輯
4. timeline tag 樣式優化
5. 優化 seo
6. 優化 artalk 的最新評論

fix:
1. tag-hide toggle 圓角問題
2. lazyload 為 false 時,artalk 無法正常加載評論的 bug
3. 修復 gallery 出現抖動的 bug
This commit is contained in:
Jerry
2024-09-15 00:43:03 +08:00
Unverified
parent 48212b9610
commit d8a1fa6417
76 changed files with 1315 additions and 1296 deletions
+10 -13
View File
@@ -82,11 +82,12 @@ document.addEventListener('DOMContentLoaded', () => {
}
}
const copy = ctx => {
if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
document.execCommand('copy')
const copy = async (text, ctx) => {
try {
await navigator.clipboard.writeText(text)
alertInfo(ctx, GLOBAL_CONFIG.copy.success)
} else {
} catch (err) {
console.error('Failed to copy: ', err)
alertInfo(ctx, GLOBAL_CONFIG.copy.noSupport)
}
}
@@ -95,14 +96,10 @@ document.addEventListener('DOMContentLoaded', () => {
const highlightCopyFn = (ele, clickEle) => {
const $buttonParent = ele.parentNode
$buttonParent.classList.add('copy-true')
const selection = window.getSelection()
const range = document.createRange()
const preCodeSelector = isPrismjs ? 'pre code' : 'table .code pre'
range.selectNodeContents($buttonParent.querySelector(`${preCodeSelector}`))
selection.removeAllRanges()
selection.addRange(range)
copy(clickEle.previousElementSibling)
selection.removeAllRanges()
const codeElement = $buttonParent.querySelector(preCodeSelector)
if (!codeElement) return
copy(codeElement.innerText, clickEle.previousElementSibling)
$buttonParent.classList.remove('copy-true')
}
@@ -238,8 +235,8 @@ document.addEventListener('DOMContentLoaded', () => {
gap: 5,
isConstantSize: true,
sizeRange: [150, 600],
useResizeObserver: true,
observeChildren: true,
// useResizeObserver: true,
// observeChildren: true,
useTransform: true
// useRecycle: false
})
+23 -11
View File
@@ -20,19 +20,31 @@ document.addEventListener('DOMContentLoaded', () => {
}
const translateBody = (fobj) => {
const objs = typeof fobj === 'object' ? fobj.childNodes : document.body.childNodes
for (let i = 0; i < objs.length; i++) {
const obj = objs.item(i)
if ('BR|HR'.includes(obj.tagName) || obj === translateButtonObject) continue
const nodes = typeof fobj === 'object' ? fobj.childNodes : document.body.childNodes
if (obj.title) obj.title = translateText(obj.title)
if (obj.alt) obj.alt = translateText(obj.alt)
if (obj.placeholder) obj.placeholder = translateText(obj.placeholder)
if (obj.tagName === 'INPUT' && obj.value && obj.type !== 'text' && obj.type !== 'hidden') {
obj.value = translateText(obj.value)
for (const node of nodes) {
// Skip BR, HR tags, or the translate button object
if (['BR', 'HR'].includes(node.tagName) || node === translateButtonObject) continue
if (node.nodeType === Node.ELEMENT_NODE) {
const { tagName, title, alt, placeholder, value, type } = node
// Translate title, alt, placeholder
if (title) node.title = translateText(title)
if (alt) node.alt = translateText(alt)
if (placeholder) node.placeholder = translateText(placeholder)
// Translate input value except text and hidden types
if (tagName === 'INPUT' && value && type !== 'text' && type !== 'hidden') {
node.value = translateText(value)
}
// Recursively translate child nodes
translateBody(node)
} else if (node.nodeType === Node.TEXT_NODE) {
// Translate text node data
node.data = translateText(node.data)
}
if (obj.nodeType === 3) obj.data = translateText(obj.data)
else translateBody(obj)
}
}
+12 -11
View File
@@ -98,10 +98,10 @@
if (!more) return Math.floor(diffDay)
if (diffMonth > 24) return datePost.toISOString().slice(0, 10)
if (diffMonth >= 3) return `${Math.floor(diffMonth)} ${dateSuffix.month}`
if (diffDay >= 3) return `${Math.floor(diffDay)} ${dateSuffix.day}`
if (diffHour >= 3) return `${Math.floor(diffHour)} ${dateSuffix.hour}`
if (diffMonth > 12) return datePost.toISOString().slice(0, 10)
if (diffMonth >= 1) return `${Math.floor(diffMonth)} ${dateSuffix.month}`
if (diffDay >= 1) return `${Math.floor(diffDay)} ${dateSuffix.day}`
if (diffHour >= 1) return `${Math.floor(diffHour)} ${dateSuffix.hour}`
if (diffMin >= 1) return `${Math.floor(diffMin)} ${dateSuffix.min}`
return dateSuffix.just
},
@@ -145,18 +145,19 @@
requestAnimationFrame(animate)
},
animateIn: (ele, text) => {
animateIn: (ele, animation) => {
ele.style.display = 'block'
ele.style.animation = text
ele.style.animation = animation
},
animateOut: (ele, text) => {
ele.addEventListener('animationend', function f () {
animateOut: (ele, animation) => {
const handleAnimationEnd = () => {
ele.style.display = ''
ele.style.animation = ''
ele.removeEventListener('animationend', f)
})
ele.style.animation = text
ele.removeEventListener('animationend', handleAnimationEnd)
}
ele.addEventListener('animationend', handleAnimationEnd)
ele.style.animation = animation
},
wrap: (selector, eleType, options) => {