aboutsummaryrefslogtreecommitdiff
path: root/themes/hugo-theme-stack/assets/ts/main.ts
diff options
context:
space:
mode:
authorAlexander Neonxp Kiryukhin <i@neonxp.ru>2024-11-16 19:32:18 +0300
committerAlexander Neonxp Kiryukhin <i@neonxp.ru>2024-11-17 01:28:57 +0300
commit239d68f94c6250276850fbe95eaa6cdd5c38fb26 (patch)
treec576da169afc442f51eae6213ad0ff749ed86589 /themes/hugo-theme-stack/assets/ts/main.ts
parent8e79098193fd0a8b65305dd8054cf7c424c60bc5 (diff)
Своя тема, полностью всё переделал
Diffstat (limited to 'themes/hugo-theme-stack/assets/ts/main.ts')
-rw-r--r--themes/hugo-theme-stack/assets/ts/main.ts112
1 files changed, 0 insertions, 112 deletions
diff --git a/themes/hugo-theme-stack/assets/ts/main.ts b/themes/hugo-theme-stack/assets/ts/main.ts
deleted file mode 100644
index f3160ae..0000000
--- a/themes/hugo-theme-stack/assets/ts/main.ts
+++ /dev/null
@@ -1,112 +0,0 @@
-/*!
-* Hugo Theme Stack
-*
-* @author: Jimmy Cai
-* @website: https://jimmycai.com
-* @link: https://github.com/CaiJimmy/hugo-theme-stack
-*/
-import StackGallery from "ts/gallery";
-import { getColor } from 'ts/color';
-import menu from 'ts/menu';
-import createElement from 'ts/createElement';
-import StackColorScheme from 'ts/colorScheme';
-import { setupScrollspy } from 'ts/scrollspy';
-import { setupSmoothAnchors } from "ts/smoothAnchors";
-
-let Stack = {
- init: () => {
- /**
- * Bind menu event
- */
- menu();
-
- const articleContent = document.querySelector('.article-content') as HTMLElement;
- if (articleContent) {
- new StackGallery(articleContent);
- setupSmoothAnchors();
- setupScrollspy();
- }
-
- /**
- * Add linear gradient background to tile style article
- */
- const articleTile = document.querySelector('.article-list--tile');
- if (articleTile) {
- let observer = new IntersectionObserver(async (entries, observer) => {
- entries.forEach(entry => {
- if (!entry.isIntersecting) return;
- observer.unobserve(entry.target);
-
- const articles = entry.target.querySelectorAll('article.has-image');
- articles.forEach(async articles => {
- const image = articles.querySelector('img'),
- imageURL = image.src,
- key = image.getAttribute('data-key'),
- hash = image.getAttribute('data-hash'),
- articleDetails: HTMLDivElement = articles.querySelector('.article-details');
-
- const colors = await getColor(key, hash, imageURL);
-
- articleDetails.style.background = `
- linear-gradient(0deg,
- rgba(${colors.DarkMuted.rgb[0]}, ${colors.DarkMuted.rgb[1]}, ${colors.DarkMuted.rgb[2]}, 0.5) 0%,
- rgba(${colors.Vibrant.rgb[0]}, ${colors.Vibrant.rgb[1]}, ${colors.Vibrant.rgb[2]}, 0.75) 100%)`;
- })
- })
- });
-
- observer.observe(articleTile)
- }
-
-
- /**
- * Add copy button to code block
- */
- const highlights = document.querySelectorAll('.article-content div.highlight');
- const copyText = `Copy`,
- copiedText = `Copied!`;
-
- highlights.forEach(highlight => {
- const copyButton = document.createElement('button');
- copyButton.innerHTML = copyText;
- copyButton.classList.add('copyCodeButton');
- highlight.appendChild(copyButton);
-
- const codeBlock = highlight.querySelector('code[data-lang]');
- if (!codeBlock) return;
-
- copyButton.addEventListener('click', () => {
- navigator.clipboard.writeText(codeBlock.textContent)
- .then(() => {
- copyButton.textContent = copiedText;
-
- setTimeout(() => {
- copyButton.textContent = copyText;
- }, 1000);
- })
- .catch(err => {
- alert(err)
- console.log('Something went wrong', err);
- });
- });
- });
-
- new StackColorScheme(document.getElementById('dark-mode-toggle'));
- }
-}
-
-window.addEventListener('load', () => {
- setTimeout(function () {
- Stack.init();
- }, 0);
-})
-
-declare global {
- interface Window {
- createElement: any;
- Stack: any
- }
-}
-
-window.Stack = Stack;
-window.createElement = createElement; \ No newline at end of file