import { QuarkElement, state, customElement } from "quarkc" import style from "./index.less?inline" import langs from "./lang" import quarkLogo from "./images/quark-logo.png" import iDownLight from "./images/i-down-light.png" import iDown from "./images/i-down.png" import "quark-doc-header" declare global { interface HTMLElementTagNameMap { "quark-doc-home": QuarkDocHome; } } @customElement({ tag: "quark-doc-home", style }) export default class QuarkDocHome extends QuarkElement { #isZhLang #ecosystemLangs constructor() { super() this.#isZhLang = localStorage.getItem("language") === "zh-CN" this.#ecosystemLangs = this.#isZhLang ? langs["zh-CN"] : langs["en-US"] } @state() darkMode = false @state() tipsVisible = true @state() activeFwIndex = 0 @state() iconCopiedChange = false componentDidMount() { this.darkMode = localStorage.getItem('theme') === 'dark' this.tipsVisible = !localStorage.getItem('tipsVisible'); const scrollDown: any = this.shadowRoot.querySelector("#scroll-down") const advantageTop = this.shadowRoot.querySelector("#advantage") as HTMLElement | null const intersectionObserver = new IntersectionObserver( (entries) => { if (entries[0].isIntersecting) { // 进入视窗 scrollDown.style.opacity = 0; } else { scrollDown.style.opacity = 1; } } ) intersectionObserver.observe(advantageTop); } // 定义一个名为 scrollTo 的函数 scrollTo = () => { // 在当前组件的 shadowRoot 中查找 id 为 "advantage" 的元素,并将其存储在 scrollDown 变量中 const scrollDown: any = this.shadowRoot.querySelector("#advantage"); // 使用 scrollIntoView 方法平滑滚动到 scrollDown 元素,并将其位置设置为视口中央 scrollDown.scrollIntoView({ behavior: "smooth", block: "center" }); } copyPrompt = () => { const text = "npm install quarkd"; if (navigator.clipboard) { // clipboard api 复制 navigator.clipboard.writeText(text); } else { const textarea = document.createElement("textarea"); document.body.appendChild(textarea); // 隐藏此输入框 textarea.style.position = "fixed"; textarea.style.clip = "rect(0 0 0 0)"; textarea.style.top = "10px"; // 赋值 textarea.value = text; // 选中 textarea.select(); // 复制 document.execCommand("copy", true); // 移除输入框 document.body.removeChild(textarea); } this.iconCopiedChange = true; setTimeout(() => { this.iconCopiedChange = false; }, 2000); }; render() { return ( <>

{this.#ecosystemLangs.allegory}

{ this.#ecosystemLangs.homeTitle }

{ this.#ecosystemLangs.homeSubtitle }

{ this.#ecosystemLangs.advantage } { this.darkMode ? down-icon : down-icon }

{ this.#ecosystemLangs.box1Title }

{ this.#ecosystemLangs.box1Desc }

{ this.#ecosystemLangs.box2Title }

{ this.#ecosystemLangs.box2Desc }

{ this.#ecosystemLangs.box3Title }

{ this.#ecosystemLangs.box3Desc }

{ this.#ecosystemLangs.whatDesc1 }

{ this.#ecosystemLangs.whatDesc2 }

{ this.#ecosystemLangs.read4More } { this.#ecosystemLangs.moreInfo }

{ this.#ecosystemLangs.weBelieve } { this.darkMode ? down-icon: down-icon }

{ this.#ecosystemLangs.weBelieveDesc1 }

{ this.#ecosystemLangs.weBelieveDesc2 }

{ this.#ecosystemLangs.weBelieveDesc3 }

{ this.#ecosystemLangs.whatWeDo } { this.darkMode ? down-icon : down-icon }

{ this.#ecosystemLangs.whatWeDoDesc1 }

{ this.#ecosystemLangs.whatWeDoDesc2 }

{ this.#ecosystemLangs.getStarted }
); } }