From 55c429d67743cb6615308cd5651ee0a8cdb4555a Mon Sep 17 00:00:00 2001
From: Mimi <1119186082@qq.com>
Date: Thu, 10 Jul 2025 10:56:43 +0800
Subject: [PATCH] Use async/await
---
source/js/schedule.js | 14 ++-
source/js/third-party/addtoany.js | 8 +-
source/js/third-party/comments/changyan.js | 33 +++----
source/js/third-party/comments/disqus.js | 25 +++--
source/js/third-party/comments/disqusjs.js | 26 +++---
source/js/third-party/comments/gitalk.js | 36 ++++----
source/js/third-party/comments/isso.js | 20 ++--
source/js/third-party/comments/livere.js | 21 ++---
source/js/third-party/comments/utterances.js | 24 ++---
.../js/third-party/search/algolia-search.js | 4 +-
source/js/third-party/statistics/firestore.js | 43 ++++-----
.../third-party/statistics/lean-analytics.js | 92 +++++++++----------
source/js/third-party/tags/mermaid.js | 47 +++++-----
source/js/third-party/tags/pdf.js | 29 +++---
source/js/third-party/tags/wavedrom.js | 14 ++-
source/js/utils.js | 9 +-
16 files changed, 216 insertions(+), 229 deletions(-)
diff --git a/source/js/schedule.js b/source/js/schedule.js
index 8f0c26c..b15fb8a 100644
--- a/source/js/schedule.js
+++ b/source/js/schedule.js
@@ -92,13 +92,14 @@
return eventContent;
}
- function fetchData() {
+ async function fetchData() {
const eventList = document.querySelector('.event-list');
if (!eventList) return;
- fetch(request_url.href).then(response => {
- return response.json();
- }).then(data => {
+ try {
+ const response = await fetch(request_url.href);
+ const data = await response.json();
+
if (data.items.length === 0) {
eventList.innerHTML = '
';
return;
@@ -127,7 +128,10 @@
eventList.insertAdjacentHTML('beforeend', buildEventDOM(tense, event, start, end));
prevEnd = end;
});
- });
+ } catch (error) {
+ // eslint-disable-next-line no-console
+ console.error('Error fetching calendar data:', error);
+ }
}
fetchData();
diff --git a/source/js/third-party/addtoany.js b/source/js/third-party/addtoany.js
index f9009f8..b0473aa 100644
--- a/source/js/third-party/addtoany.js
+++ b/source/js/third-party/addtoany.js
@@ -1,8 +1,6 @@
/* global NexT */
-document.addEventListener('page:loaded', () => {
- NexT.utils.getScript('https://static.addtoany.com/menu/page.js', { condition: window.a2a })
- .then(() => {
- window.a2a.init();
- });
+document.addEventListener('page:loaded', async () => {
+ await NexT.utils.getScript('https://static.addtoany.com/menu/page.js', { condition: window.a2a });
+ window.a2a.init();
});
diff --git a/source/js/third-party/comments/changyan.js b/source/js/third-party/comments/changyan.js
index 18a1be4..cac35c5 100644
--- a/source/js/third-party/comments/changyan.js
+++ b/source/js/third-party/comments/changyan.js
@@ -1,6 +1,6 @@
/* global NexT, CONFIG */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
const { appid, appkey } = CONFIG.changyan;
const mainJs = 'https://cy-cdn.kuaizhan.com/upload/changyan.js';
const countJs = `https://cy-cdn.kuaizhan.com/upload/plugins/plugins.list.count.js?clientId=${appid}`;
@@ -17,23 +17,20 @@ document.addEventListener('page:loaded', () => {
// When scroll to comment section
if (CONFIG.page.comments && !CONFIG.page.isHome) {
- NexT.utils.loadComments('#SOHUCS')
- .then(() => {
- return NexT.utils.getScript(mainJs, {
- attributes: {
- async: true
- }
- });
- })
- .then(() => {
- window.changyan.api.config({
- appid,
- conf: appkey
- });
- })
- .catch(error => {
- // eslint-disable-next-line no-console
- console.error('Failed to load Changyan', error);
+ try {
+ await NexT.utils.loadComments('#SOHUCS');
+ await NexT.utils.getScript(mainJs, {
+ attributes: {
+ async: true
+ }
});
+ window.changyan.api.config({
+ appid,
+ conf: appkey
+ });
+ } catch (error) {
+ // eslint-disable-next-line no-console
+ console.error('Failed to load Changyan', error);
+ }
}
});
diff --git a/source/js/third-party/comments/disqus.js b/source/js/third-party/comments/disqus.js
index 4d1ca9e..ce5b8c3 100644
--- a/source/js/third-party/comments/disqus.js
+++ b/source/js/third-party/comments/disqus.js
@@ -1,6 +1,6 @@
/* global NexT, CONFIG, DISQUS */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
if (CONFIG.disqus.count) {
if (window.DISQUSWIDGETS) {
@@ -24,18 +24,17 @@ document.addEventListener('page:loaded', () => {
this.language = CONFIG.disqus.i18n.disqus;
}
};
- NexT.utils.loadComments('#disqus_thread').then(() => {
- if (window.DISQUS) {
- DISQUS.reset({
- reload: true,
- config: window.disqus_config
- });
- } else {
- NexT.utils.getScript(`https://${CONFIG.disqus.shortname}.disqus.com/embed.js`, {
- attributes: { dataset: { timestamp: '' + +new Date() } }
- });
- }
- });
+ await NexT.utils.loadComments('#disqus_thread');
+ if (window.DISQUS) {
+ DISQUS.reset({
+ reload: true,
+ config: window.disqus_config
+ });
+ } else {
+ NexT.utils.getScript(`https://${CONFIG.disqus.shortname}.disqus.com/embed.js`, {
+ attributes: { dataset: { timestamp: '' + +new Date() } }
+ });
+ }
}
});
diff --git a/source/js/third-party/comments/disqusjs.js b/source/js/third-party/comments/disqusjs.js
index d8401ee..4975d35 100644
--- a/source/js/third-party/comments/disqusjs.js
+++ b/source/js/third-party/comments/disqusjs.js
@@ -1,21 +1,19 @@
/* global NexT, CONFIG, DisqusJS */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
if (!CONFIG.page.comments) return;
- NexT.utils.loadComments('#disqus_thread')
- .then(() => NexT.utils.getScript(CONFIG.disqusjs.js, { condition: window.DisqusJS }))
- .then(() => {
- window.dsqjs = new DisqusJS({
- api : CONFIG.disqusjs.api || 'https://disqus.com/api/',
- apikey : CONFIG.disqusjs.apikey,
- shortname : CONFIG.disqusjs.shortname,
- url : CONFIG.page.permalink,
- identifier: CONFIG.page.path,
- title : CONFIG.page.title
- });
- window.dsqjs.render(document.querySelector('.disqusjs-container'));
- });
+ await NexT.utils.loadComments('#disqus_thread');
+ await NexT.utils.getScript(CONFIG.disqusjs.js, { condition: window.DisqusJS });
+ window.dsqjs = new DisqusJS({
+ api : CONFIG.disqusjs.api || 'https://disqus.com/api/',
+ apikey : CONFIG.disqusjs.apikey,
+ shortname : CONFIG.disqusjs.shortname,
+ url : CONFIG.page.permalink,
+ identifier: CONFIG.page.path,
+ title : CONFIG.page.title
+ });
+ window.dsqjs.render(document.querySelector('.disqusjs-container'));
});
document.addEventListener('pjax:send', () => {
diff --git a/source/js/third-party/comments/gitalk.js b/source/js/third-party/comments/gitalk.js
index 08d07f4..983d539 100644
--- a/source/js/third-party/comments/gitalk.js
+++ b/source/js/third-party/comments/gitalk.js
@@ -1,24 +1,22 @@
/* global NexT, CONFIG, Gitalk */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
if (!CONFIG.page.comments) return;
- NexT.utils.loadComments('.gitalk-container')
- .then(() => NexT.utils.getScript(CONFIG.gitalk.js, {
- condition: window.Gitalk
- }))
- .then(() => {
- const gitalk = new Gitalk({
- clientID : CONFIG.gitalk.client_id,
- clientSecret : CONFIG.gitalk.client_secret,
- repo : CONFIG.gitalk.repo,
- owner : CONFIG.gitalk.github_id,
- admin : [CONFIG.gitalk.admin_user],
- id : CONFIG.gitalk.path_md5,
- proxy : CONFIG.gitalk.proxy,
- language : CONFIG.gitalk.language || window.navigator.language,
- distractionFreeMode: CONFIG.gitalk.distraction_free_mode
- });
- gitalk.render(document.querySelector('.gitalk-container'));
- });
+ await NexT.utils.loadComments('.gitalk-container');
+ await NexT.utils.getScript(CONFIG.gitalk.js, {
+ condition: window.Gitalk
+ });
+ const gitalk = new Gitalk({
+ clientID : CONFIG.gitalk.client_id,
+ clientSecret : CONFIG.gitalk.client_secret,
+ repo : CONFIG.gitalk.repo,
+ owner : CONFIG.gitalk.github_id,
+ admin : [CONFIG.gitalk.admin_user],
+ id : CONFIG.gitalk.path_md5,
+ proxy : CONFIG.gitalk.proxy,
+ language : CONFIG.gitalk.language || window.navigator.language,
+ distractionFreeMode: CONFIG.gitalk.distraction_free_mode
+ });
+ gitalk.render(document.querySelector('.gitalk-container'));
});
diff --git a/source/js/third-party/comments/isso.js b/source/js/third-party/comments/isso.js
index 2c70601..ac70745 100644
--- a/source/js/third-party/comments/isso.js
+++ b/source/js/third-party/comments/isso.js
@@ -1,15 +1,15 @@
/* global NexT, CONFIG */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
if (!CONFIG.page.comments) return;
- NexT.utils.loadComments('#isso-thread')
- .then(() => NexT.utils.getScript(`${CONFIG.isso}js/embed.min.js`, {
- attributes: {
- dataset: {
- isso: `${CONFIG.isso}`
- }
- },
- parentNode: document.querySelector('#isso-thread')
- }));
+ await NexT.utils.loadComments('#isso-thread');
+ await NexT.utils.getScript(`${CONFIG.isso}js/embed.min.js`, {
+ attributes: {
+ dataset: {
+ isso: `${CONFIG.isso}`
+ }
+ },
+ parentNode: document.querySelector('#isso-thread')
+ });
});
diff --git a/source/js/third-party/comments/livere.js b/source/js/third-party/comments/livere.js
index c4bcd2e..9166261 100644
--- a/source/js/third-party/comments/livere.js
+++ b/source/js/third-party/comments/livere.js
@@ -1,19 +1,18 @@
/* global NexT, CONFIG, LivereTower */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
if (!CONFIG.page.comments) return;
- NexT.utils.loadComments('#lv-container').then(() => {
- window.livereOptions = {
- refer: CONFIG.page.path.replace(/index\.html$/, '')
- };
+ await NexT.utils.loadComments('#lv-container');
+ window.livereOptions = {
+ refer: CONFIG.page.path.replace(/index\.html$/, '')
+ };
- if (typeof LivereTower === 'function') return;
+ if (typeof LivereTower === 'function') return;
- NexT.utils.getScript('https://cdn-city.livere.com/js/embed.dist.js', {
- attributes: {
- async: true
- }
- });
+ NexT.utils.getScript('https://cdn-city.livere.com/js/embed.dist.js', {
+ attributes: {
+ async: true
+ }
});
});
diff --git a/source/js/third-party/comments/utterances.js b/source/js/third-party/comments/utterances.js
index 332ee05..19af9d5 100644
--- a/source/js/third-party/comments/utterances.js
+++ b/source/js/third-party/comments/utterances.js
@@ -1,17 +1,17 @@
/* global NexT, CONFIG */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
if (!CONFIG.page.comments) return;
- NexT.utils.loadComments('.utterances-container')
- .then(() => NexT.utils.getScript('https://utteranc.es/client.js', {
- attributes: {
- async : true,
- crossOrigin : 'anonymous',
- 'repo' : CONFIG.utterances.repo,
- 'issue-term': CONFIG.utterances.issue_term,
- 'theme' : CONFIG.utterances.theme
- },
- parentNode: document.querySelector('.utterances-container')
- }));
+ await NexT.utils.loadComments('.utterances-container');
+ await NexT.utils.getScript('https://utteranc.es/client.js', {
+ attributes: {
+ async : true,
+ crossOrigin : 'anonymous',
+ 'repo' : CONFIG.utterances.repo,
+ 'issue-term': CONFIG.utterances.issue_term,
+ 'theme' : CONFIG.utterances.theme
+ },
+ parentNode: document.querySelector('.utterances-container')
+ });
});
diff --git a/source/js/third-party/search/algolia-search.js b/source/js/third-party/search/algolia-search.js
index 047b6d3..e77dcf2 100644
--- a/source/js/third-party/search/algolia-search.js
+++ b/source/js/third-party/search/algolia-search.js
@@ -22,7 +22,7 @@ document.addEventListener('DOMContentLoaded', () => {
let isSearching = false;
let pendingQuery = null;
- const searchAlgolia = async(searchText, page = 0) => {
+ const searchAlgolia = async (searchText, page = 0) => {
if (isSearching) {
pendingQuery = { searchText, page };
return;
@@ -84,7 +84,7 @@ document.addEventListener('DOMContentLoaded', () => {
}
};
- const inputEventFunction = async() => {
+ const inputEventFunction = async () => {
const searchText = input.value.trim();
if (searchText === '') {
container.innerHTML = '
';
diff --git a/source/js/third-party/statistics/firestore.js b/source/js/third-party/statistics/firestore.js
index 3ea7ba6..043df2f 100644
--- a/source/js/third-party/statistics/firestore.js
+++ b/source/js/third-party/statistics/firestore.js
@@ -6,27 +6,26 @@ firebase.initializeApp({
});
(function() {
- const getCount = (doc, increaseCount) => {
+ const getCount = async (doc, increaseCount) => {
// IncreaseCount will be false when not in article page
- return doc.get().then(d => {
- // Has no data, initialize count
- let count = d.exists ? d.data().count : 0;
- // If first view this article
- if (increaseCount) {
- // Increase count
- count++;
- doc.set({
- count
- });
- }
- return count;
- });
+ const d = await doc.get();
+ // Has no data, initialize count
+ let count = d.exists ? d.data().count : 0;
+ // If first view this article
+ if (increaseCount) {
+ // Increase count
+ count++;
+ doc.set({
+ count
+ });
+ }
+ return count;
};
const db = firebase.firestore();
const articles = db.collection(CONFIG.firestore.collection);
- document.addEventListener('page:loaded', () => {
+ document.addEventListener('page:loaded', async () => {
if (CONFIG.page.isPost) {
// Fix issue #118
@@ -40,20 +39,18 @@ firebase.initializeApp({
// Mark as visited
localStorage.setItem(title, true);
}
- getCount(doc, increaseCount).then(count => {
- document.querySelector('.firestore-visitors-count').innerText = count;
- });
+ const count = await getCount(doc, increaseCount);
+ document.querySelector('.firestore-visitors-count').innerText = count;
} else if (CONFIG.page.isHome) {
const promises = [...document.querySelectorAll('.post-title')].map(element => {
const title = element.textContent.trim();
const doc = articles.doc(title);
return getCount(doc);
});
- Promise.all(promises).then(counts => {
- const metas = document.querySelectorAll('.firestore-visitors-count');
- counts.forEach((val, idx) => {
- metas[idx].innerText = val;
- });
+ const counts = await Promise.all(promises);
+ const metas = document.querySelectorAll('.firestore-visitors-count');
+ counts.forEach((val, idx) => {
+ metas[idx].innerText = val;
});
}
});
diff --git a/source/js/third-party/statistics/lean-analytics.js b/source/js/third-party/statistics/lean-analytics.js
index 8397112..5c624ef 100644
--- a/source/js/third-party/statistics/lean-analytics.js
+++ b/source/js/third-party/statistics/lean-analytics.js
@@ -7,62 +7,60 @@
return document.getElementById(url).querySelector('.leancloud-visitors-count');
};
- const addCount = Counter => {
+ const addCount = async Counter => {
const visitors = document.querySelector('.leancloud_visitors');
const url = decodeURI(visitors.id);
const title = visitors.dataset.flagTitle;
- Counter('get', `/classes/Counter?where=${encodeURIComponent(JSON.stringify({ url }))}`)
- .then(response => response.json())
- .then(({ results }) => {
- if (results.length > 0) {
- const counter = results[0];
- leancloudSelector(url).innerText = counter.time + 1;
- Counter('put', '/classes/Counter/' + counter.objectId, {
+ try {
+ const response = await Counter('get', `/classes/Counter?where=${encodeURIComponent(JSON.stringify({ url }))}`);
+ const { results } = await response.json();
+ if (results.length > 0) {
+ const counter = results[0];
+ leancloudSelector(url).innerText = counter.time + 1;
+ try {
+ await Counter('put', '/classes/Counter/' + counter.objectId, {
time: {
'__op' : 'Increment',
'amount': 1
}
- })
- .catch(error => {
- console.error('Failed to save visitor count', error);
- });
- } else if (CONFIG.leancloud_visitors.security) {
- leancloudSelector(url).innerText = 'Counter not initialized! More info at console err msg.';
- console.error('ATTENTION! LeanCloud counter has security bug, see how to solve it here: https://github.com/theme-next/hexo-leancloud-counter-security. \n However, you can still use LeanCloud without security, by setting `security` option to `false`.');
- } else {
- Counter('post', '/classes/Counter', { title, url, time: 1 })
- .then(response => response.json())
- .then(() => {
- leancloudSelector(url).innerText = 1;
- })
- .catch(error => {
- console.error('Failed to create', error);
- });
+ });
+ } catch (error) {
+ console.error('Failed to save visitor count', error);
}
- })
- .catch(error => {
- console.error('LeanCloud Counter Error', error);
- });
+ } else if (CONFIG.leancloud_visitors.security) {
+ leancloudSelector(url).innerText = 'Counter not initialized! More info at console err msg.';
+ console.error('ATTENTION! LeanCloud counter has security bug, see how to solve it here: https://github.com/theme-next/hexo-leancloud-counter-security. \n However, you can still use LeanCloud without security, by setting `security` option to `false`.');
+ } else {
+ try {
+ const response = await Counter('post', '/classes/Counter', { title, url, time: 1 });
+ await response.json();
+ leancloudSelector(url).innerText = 1;
+ } catch (error) {
+ console.error('Failed to create', error);
+ }
+ }
+ } catch (error) {
+ console.error('LeanCloud Counter Error', error);
+ }
};
- const showTime = Counter => {
+ const showTime = async Counter => {
const visitors = document.querySelectorAll('.leancloud_visitors');
const entries = [...visitors].map(element => {
return decodeURI(element.id);
});
- Counter('get', `/classes/Counter?where=${encodeURIComponent(JSON.stringify({ url: { '$in': entries } }))}`)
- .then(response => response.json())
- .then(({ results }) => {
- for (const url of entries) {
- const target = results.find(item => item.url === url);
- leancloudSelector(url).innerText = target ? target.time : 0;
- }
- })
- .catch(error => {
- console.error('LeanCloud Counter Error', error);
- });
+ try {
+ const response = await Counter('get', `/classes/Counter?where=${encodeURIComponent(JSON.stringify({ url: { '$in': entries } }))}`);
+ const { results } = await response.json();
+ for (const url of entries) {
+ const target = results.find(item => item.url === url);
+ leancloudSelector(url).innerText = target ? target.time : 0;
+ }
+ } catch (error) {
+ console.error('LeanCloud Counter Error', error);
+ }
};
const { app_id, app_key, server_url } = CONFIG.leancloud_visitors;
@@ -93,15 +91,17 @@
api_server = `https://${app_id.slice(0, 8).toLowerCase()}.api.lncldglobal.com`;
}
- document.addEventListener('page:loaded', () => {
+ document.addEventListener('page:loaded', async () => {
if (api_server) {
fetchData(api_server);
} else {
- fetch(`https://app-router.leancloud.cn/2/route?appId=${app_id}`)
- .then(response => response.json())
- .then(({ api_server }) => {
- fetchData(`https://${api_server}`);
- });
+ try {
+ const response = await fetch(`https://app-router.leancloud.cn/2/route?appId=${app_id}`);
+ const { api_server } = await response.json();
+ fetchData(`https://${api_server}`);
+ } catch (error) {
+ console.error('Failed to fetch API server', error);
+ }
}
});
})();
diff --git a/source/js/third-party/tags/mermaid.js b/source/js/third-party/tags/mermaid.js
index e913c0e..14e2445 100644
--- a/source/js/third-party/tags/mermaid.js
+++ b/source/js/third-party/tags/mermaid.js
@@ -1,32 +1,31 @@
/* global NexT, CONFIG, mermaid */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
const mermaidElements = document.querySelectorAll('pre > .mermaid');
if (mermaidElements.length) {
- NexT.utils.getScript(CONFIG.mermaid.js, {
+ await NexT.utils.getScript(CONFIG.mermaid.js, {
condition: window.mermaid
- }).then(() => {
- mermaidElements.forEach(element => {
- const box = document.createElement('div');
- box.className = 'code-container';
- const newElement = document.createElement('div');
- newElement.innerHTML = element.innerHTML;
- newElement.className = 'mermaid';
- box.appendChild(newElement);
- if (CONFIG.codeblock.copy_button.enable) {
- NexT.utils.registerCopyButton(box, box, element.textContent);
- }
- const parent = element.parentNode;
- parent.parentNode.replaceChild(box, parent);
- });
- mermaid.initialize({
- theme : CONFIG.darkmode && window.matchMedia('(prefers-color-scheme: dark)').matches ? CONFIG.mermaid.theme.dark : CONFIG.mermaid.theme.light,
- logLevel : 4,
- flowchart: { curve: 'linear' },
- gantt : { axisFormat: '%m/%d/%Y' },
- sequence : { actorMargin: 50 }
- });
- mermaid.run();
});
+ mermaidElements.forEach(element => {
+ const box = document.createElement('div');
+ box.className = 'code-container';
+ const newElement = document.createElement('div');
+ newElement.innerHTML = element.innerHTML;
+ newElement.className = 'mermaid';
+ box.appendChild(newElement);
+ if (CONFIG.codeblock.copy_button.enable) {
+ NexT.utils.registerCopyButton(box, box, element.textContent);
+ }
+ const parent = element.parentNode;
+ parent.parentNode.replaceChild(box, parent);
+ });
+ mermaid.initialize({
+ theme : CONFIG.darkmode && window.matchMedia('(prefers-color-scheme: dark)').matches ? CONFIG.mermaid.theme.dark : CONFIG.mermaid.theme.light,
+ logLevel : 4,
+ flowchart: { curve: 'linear' },
+ gantt : { axisFormat: '%m/%d/%Y' },
+ sequence : { actorMargin: 50 }
+ });
+ mermaid.run();
}
});
diff --git a/source/js/third-party/tags/pdf.js b/source/js/third-party/tags/pdf.js
index 7e82891..47a6297 100644
--- a/source/js/third-party/tags/pdf.js
+++ b/source/js/third-party/tags/pdf.js
@@ -1,22 +1,21 @@
/* global NexT, CONFIG, PDFObject */
-document.addEventListener('page:loaded', () => {
+document.addEventListener('page:loaded', async () => {
if (document.querySelectorAll('.pdf-container').length) {
- NexT.utils.getScript(CONFIG.pdf.object_url, {
+ await NexT.utils.getScript(CONFIG.pdf.object_url, {
condition: window.PDFObject
- }).then(() => {
- document.querySelectorAll('.pdf-container').forEach(element => {
- PDFObject.embed(element.dataset.target, element, {
- pdfOpenParams: {
- navpanes : 0,
- toolbar : 0,
- statusbar: 0,
- pagemode : 'thumbs',
- view : 'FitH'
- },
- PDFJS_URL: CONFIG.pdf.url,
- height : element.dataset.height
- });
+ });
+ document.querySelectorAll('.pdf-container').forEach(element => {
+ PDFObject.embed(element.dataset.target, element, {
+ pdfOpenParams: {
+ navpanes : 0,
+ toolbar : 0,
+ statusbar: 0,
+ pagemode : 'thumbs',
+ view : 'FitH'
+ },
+ PDFJS_URL: CONFIG.pdf.url,
+ height : element.dataset.height
});
});
}
diff --git a/source/js/third-party/tags/wavedrom.js b/source/js/third-party/tags/wavedrom.js
index ddd9a1d..48998a9 100644
--- a/source/js/third-party/tags/wavedrom.js
+++ b/source/js/third-party/tags/wavedrom.js
@@ -1,13 +1,11 @@
/* global NexT, CONFIG, WaveDrom */
-document.addEventListener('page:loaded', () => {
- NexT.utils.getScript(CONFIG.wavedrom.js, {
+document.addEventListener('page:loaded', async () => {
+ await NexT.utils.getScript(CONFIG.wavedrom.js, {
condition: window.WaveDrom
- }).then(() => {
- NexT.utils.getScript(CONFIG.wavedrom_skin.js, {
- condition: window.WaveSkin
- }).then(() => {
- WaveDrom.ProcessAll();
- });
});
+ await NexT.utils.getScript(CONFIG.wavedrom_skin.js, {
+ condition: window.WaveSkin
+ });
+ WaveDrom.ProcessAll();
});
diff --git a/source/js/utils.js b/source/js/utils.js
index 3dcf058..9844075 100644
--- a/source/js/utils.js
+++ b/source/js/utils.js
@@ -39,18 +39,19 @@ NexT.utils = {
// One-click copy code support.
target.insertAdjacentHTML('beforeend', '
');
const button = target.querySelector('.copy-btn');
- button.addEventListener('click', () => {
+ button.addEventListener('click', async () => {
if (!code) {
const lines = element.querySelector('.code') || element.querySelector('code');
code = lines.innerText;
}
if (navigator.clipboard) {
// https://caniuse.com/mdn-api_clipboard_writetext
- navigator.clipboard.writeText(code).then(() => {
+ try {
+ await navigator.clipboard.writeText(code);
button.querySelector('i').className = 'fa fa-check-circle fa-fw';
- }, () => {
+ } catch {
button.querySelector('i').className = 'fa fa-times-circle fa-fw';
- });
+ }
} else {
button.querySelector('i').className = 'fa fa-times-circle fa-fw';
}