Taker of Notes
-Lorem ipsum
-diff --git a/electron.vite.config.mjs b/electron.vite.config.mjs index b27c2c6..4e80141 100644 --- a/electron.vite.config.mjs +++ b/electron.vite.config.mjs @@ -1,7 +1,6 @@ import { resolve } from 'path' import { defineConfig } from 'electron-vite' import vue from '@vitejs/plugin-vue' -import Components from 'unplugin-vue-components/vite' import { toSass } from './src/renderer/src/libs/sass-utils' import theme from './src/renderer/src/libs/theme' @@ -9,16 +8,7 @@ export default defineConfig({ main: {}, preload: {}, renderer: { - plugins: [ - vue(), - Components({ - dirs: ['src/renderer/src/components'], - extensions: ['vue'], - deep: true, - dts: 'src/renderer/src/components.d.ts', - directoryAsNamespace: true, - }), - ], + plugins: [vue()], resolve: { alias: { '@': resolve('src/renderer/src'), diff --git a/out/main/index.js b/out/main/index.js index 94dcf71..45c7dde 100644 --- a/out/main/index.js +++ b/out/main/index.js @@ -5,8 +5,8 @@ const utils = require("@electron-toolkit/utils"); const icon = path.join(__dirname, "../../resources/icon.png"); function createWindow() { const mainWindow = new electron.BrowserWindow({ - width: 900, - height: 670, + width: 354, + height: 549, show: false, autoHideMenuBar: true, ...process.platform === "linux" ? { icon } : {}, diff --git a/out/renderer/assets/electron-DtwWEc_u.svg b/out/renderer/assets/electron-DtwWEc_u.svg deleted file mode 100644 index 45ef09c..0000000 --- a/out/renderer/assets/electron-DtwWEc_u.svg +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/out/renderer/assets/geist-mono-BzrJhchg.woff2 b/out/renderer/assets/geist-mono-BzrJhchg.woff2 new file mode 100644 index 0000000..acf07fc Binary files /dev/null and b/out/renderer/assets/geist-mono-BzrJhchg.woff2 differ diff --git a/out/renderer/assets/geist-mono-OFKGen7b.woff b/out/renderer/assets/geist-mono-OFKGen7b.woff new file mode 100644 index 0000000..5d71b23 Binary files /dev/null and b/out/renderer/assets/geist-mono-OFKGen7b.woff differ diff --git a/out/renderer/assets/geist-mono-bold-Bz_UliG4.woff b/out/renderer/assets/geist-mono-bold-Bz_UliG4.woff new file mode 100644 index 0000000..ecaceab Binary files /dev/null and b/out/renderer/assets/geist-mono-bold-Bz_UliG4.woff differ diff --git a/out/renderer/assets/geist-mono-bold-CTLtpKvJ.woff2 b/out/renderer/assets/geist-mono-bold-CTLtpKvJ.woff2 new file mode 100644 index 0000000..c44b8fd Binary files /dev/null and b/out/renderer/assets/geist-mono-bold-CTLtpKvJ.woff2 differ diff --git a/out/renderer/assets/index-BBQ3KGTF.css b/out/renderer/assets/index-BBQ3KGTF.css new file mode 100644 index 0000000..46c5c0d --- /dev/null +++ b/out/renderer/assets/index-BBQ3KGTF.css @@ -0,0 +1,593 @@ +@charset "UTF-8"; +/* Breakpoints */ +@keyframes flip-r { + 50% { + transform: translateX(100%); + opacity: 0; + } + 51% { + transform: translateX(-100%); + opacity: 0; + } +} +@keyframes flip-l { + 50% { + transform: translateX(-100%); + opacity: 0; + } + 51% { + transform: translateX(100%); + opacity: 0; + } +} +@keyframes flip-d { + 50% { + transform: translateY(100%); + opacity: 0; + } + 51% { + transform: translateY(-100%); + opacity: 0; + } +} +@keyframes flip-u { + 50% { + transform: translateY(-100%); + opacity: 0; + } + 51% { + transform: translateY(100%); + opacity: 0; + } +} +:root { + --black: #000000; + --white: #d9d9d9; + --pink: #DAC3C3; + --green: #D8E3D3; + --cream: #F2F1F1; + --grey: #2B2B2B; +} + +:root .theme-light { + --theme-bg: #d9d9d9; + --theme-fg: #000000; +} +:root .theme-dark { + --theme-bg: #000000; + --theme-fg: #d9d9d9; +} + +:root { + --ease-in-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53); + --ease-in-cubic: cubic-bezier(0.55, 0.055, 0.675, 0.19); + --ease-in-quart: cubic-bezier(0.895, 0.03, 0.685, 0.22); + --ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); + --ease-in-expo: cubic-bezier(0.95, 0.05, 0.795, 0.035); + --ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.335); + --ease-out-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94); + --ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1); + --ease-out-quart: cubic-bezier(0.165, 0.84, 0.44, 1); + --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); + --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1); + --ease-out-circ: cubic-bezier(0.075, 0.82, 0.165, 1); + --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955); + --ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1); + --ease-in-out-quart: cubic-bezier(0.77, 0, 0.175, 1); + --ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); + --ease-in-out-expo: cubic-bezier(1, 0, 0, 1); + --ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.15, 0.86); + --ease-custom: cubic-bezier(0.315, 0.365, 0.23, 0.985); +} + +/*** + The new CSS reset - version 1.9 (last updated 19.6.2023) + GitHub page: https://github.com/elad2412/the-new-css-reset +***/ +/* + Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property + - The "symbol *" part is to solve Firefox SVG sprite bug + - The "html" element is excluded, otherwise a bug in Chrome breaks the CSS hyphens property (https://github.com/elad2412/the-new-css-reset/issues/36) + */ +*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) { + all: unset; + display: revert; +} + +/* Preferred box-sizing value */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* Reapply the pointer cursor for anchor tags */ +a, +button { + cursor: revert; +} + +/* For images to not be able to exceed their container */ +img { + max-inline-size: 100%; + max-block-size: 100%; +} + +/* removes spacing between cells in tables */ +table { + border-collapse: collapse; +} + +/* Safari - solving issue when using user-select:none on the
text input doesn't working */ +input, +textarea { + -webkit-user-select: auto; +} + +/* revert the 'white-space' property for textarea elements on Safari */ +textarea { + white-space: revert; +} + +/* minimum style to allow to style meter element */ +meter { + -webkit-appearance: revert; + appearance: revert; +} + +/* preformatted text - use only for this feature */ +:where(pre) { + all: revert; +} + +/* reset default text opacity of input placeholder */ +::placeholder { + color: unset; +} + +/* remove default dot (•) sign */ +::marker { + content: initial; +} + +/* fix the feature of 'hidden' attribute. + display:revert; revert to element instead of attribute */ +:where([hidden]) { + display: none; +} + +/* revert for bug in Chromium browsers + - fix for the content editable attribute will work properly. + - webkit-user-select: auto; added for Safari in case of using user-select:none on wrapper element*/ +:where([contenteditable]:not([contenteditable=false])) { + -moz-user-modify: read-write; + -webkit-user-modify: read-write; + overflow-wrap: break-word; + -webkit-line-break: after-white-space; + -webkit-user-select: auto; +} + +/* apply back the draggable feature - exist only in Chromium and Safari */ +:where([draggable=true]) { + -webkit-user-drag: element; +} + +/* Revert Modal native behavior */ +:where(dialog:modal) { + all: revert; +} + +.lily-cursor { + z-index: 20; +} + +.site-header { + z-index: 10; +} + +.full-width { + width: 100vw; + position: relative; + left: 50%; + right: 50%; + margin-left: -50vw; + margin-right: -50vw; +} + +.overflow-hidden { + overflow: hidden; +} + +.relative { + position: relative; +} + +@media (min-width: 800px) { + .mobile-only { + display: none !important; + } +} + +@media (max-width: 799px) { + .desktop-only { + display: none !important; + } +} + +html:not(.has-scroll-smooth) .hide-on-native-scroll { + display: none; +} + +html.has-scroll-smooth .hide-on-smooth-scroll { + display: none; +} + +/* + Font Weights: + 100 - Thin + 200 - Extra Light (Ultra Light) + 300 - Light + 400 - Normal + 500 - Medium + 600 - Semi Bold (Demi Bold) + 700 - Bold + 800 - Extra Bold (Ultra Bold) + 900 - Black (Heavy) +*/ +/* Leibniz Fraktur */ +@font-face { + font-family: "Leibniz Fraktur"; + font-style: normal; + font-weight: 400; + src: url("./leibniz-fraktur-BqdMSuEI.woff2") format("woff2"), url("./leibniz-fraktur-CvnkUeBX.woff") format("woff"); +} +/* Geist Mono */ +@font-face { + font-family: "Geist Mono"; + font-style: normal; + font-weight: 700; + src: url("./geist-mono-bold-CTLtpKvJ.woff2") format("woff2"), url("./geist-mono-bold-Bz_UliG4.woff") format("woff"); +} +@font-face { + font-family: "Geist Mono"; + font-style: normal; + font-weight: 400; + src: url("./geist-mono-BzrJhchg.woff2") format("woff2"), url("./geist-mono-OFKGen7b.woff") format("woff"); +} +:root { + --font-display: 'Leibniz Fraktur', serif; + --font-mono: 'Geist Mono', monospace; +} + +:root { + --layout-column-count: 5; + --layout-column-gap: 4.5454545455vw; + --layout-margin: 6.8181818182vw; + --layout-width: calc(100vw - (2 * var(--layout-margin))); + --layout-column-width: calc( + ( + var(--layout-width) - + ( + (var(--layout-column-count) - 1) * + var(--layout-column-gap) + ) + ) / + var(--layout-column-count) + ); +} +@media (min-width: 800px) { + :root { + --layout-column-count: 18; + --layout-column-gap: 1.1574074074vw; + --layout-margin: 3.4722222222vw; + } +} + +.layout-block, .layout-grid { + max-width: var(--layout-width); + margin-left: auto; + margin-right: auto; + width: 100%; +} + +.layout-block-inner, .layout-grid-inner { + padding-left: var(--layout-margin); + padding-right: var(--layout-margin); + width: 100%; +} + +.layout-grid { + display: grid; + grid-template-columns: repeat(var(--layout-column-count), minmax(0, 1fr)); + grid-gap: var(--layout-column-gap); +} + +.layout-grid-inner { + display: grid; + grid-template-columns: repeat(var(--layout-column-count), minmax(0, 1fr)); + grid-gap: var(--layout-column-gap); +} + +html:not(.dev), +html:not(.dev) * { + scrollbar-width: none !important; + -ms-overflow-style: none !important; +} +html:not(.dev)::-webkit-scrollbar, +html:not(.dev) *::-webkit-scrollbar { + width: 0 !important; + height: 0 !important; +} + +html.lenis { + height: auto; +} + +.lenis.lenis-smooth { + scroll-behavior: auto; +} + +.lenis.lenis-smooth [data-lenis-prevent] { + overscroll-behavior: contain; +} + +.lenis.lenis-stopped { + overflow: hidden; +} + +.lenis.lenis-scrolling iframe { + pointer-events: none; +} + +.fade-enter-active, +.fade-leave-active { + transition: opacity 400ms; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} + +.quick-fade-enter-active, +.quick-fade-leave-active { + transition: opacity 100ms; +} + +.quick-fade-enter-from, +.quick-fade-leave-to { + opacity: 0; +} + +.slow-fade-enter-active, +.slow-fade-leave-active { + transition: opacity 600ms; +} + +.slow-fade-enter-from, +.slow-fade-leave-to { + opacity: 0; +} + +.slide-up-enter-active, +.slide-up-leave-active { + transition: transform 400ms var(--ease-out-quad); +} + +.slide-up-enter-from, +.slide-up-leave-to { + transform: translateY(-100%); +} + +.slide-left-enter-active, +.slide-left-leave-active { + transition: transform 400ms var(--ease-out-quad); +} + +.slide-left-enter-from, +.slide-left-leave-to { + transform: translateX(-100%); +} + +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + background: var(--white); + color: var(--black); + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + margin: 0; + min-height: 100vh; +} + +.h1, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: var(--font-display); + font-weight: 400; + letter-spacing: 0.1em; + font-size: 6.1363636364vw; +} +.h1.vh, +h1.vh, +h2.vh, +h3.vh, +h4.vh, +h5.vh, +h6.vh { + font-size: 2.8242677824vh; +} +@media (min-width: 800px) { + .h1, + h1, + h2, + h3, + h4, + h5, + h6 { + font-size: 2.4305555556vw; + } + .h1.vh, + h1.vh, + h2.vh, + h3.vh, + h4.vh, + h5.vh, + h6.vh { + font-size: 3.7600716204vh; + } +} + +.p, +p, +a, +button, +input, +pre { + font-family: var(--font-mono); + font-weight: 400; + letter-spacing: 0.03em; + font-size: 4.0909090909vw; +} +.p.vh, +p.vh, +a.vh, +button.vh, +input.vh, +pre.vh { + font-size: 1.8828451883vh; +} +@media (min-width: 800px) { + .p, + p, + a, + button, + input, + pre { + font-size: 1.4467592593vw; + } + .p.vh, + p.vh, + a.vh, + button.vh, + input.vh, + pre.vh { + font-size: 2.2381378693vh; + } +} + +.entry img { + max-width: 100%; + height: auto; +} +.entry p { + min-height: 1px; +} +.entry a { + text-decoration: underline; +} +.entry > * { + margin-bottom: 1em; + margin-top: 1em; +} +.entry > *:first-child { + margin-top: 0; +} +.entry > *:last-child { + margin-bottom: 0; +} +.entry ul li, +.entry ol li { + margin-bottom: 1em; + width: 33.3912037037vw; +} +.entry ul { + list-style: disc; + padding-left: 1em; +} + +#app { + min-height: 100vh; +} + +@keyframes blink { + 5% { + opacity: 0; + } + 40% { + opacity: 0; + } + 60% { + opacity: 1; + } + 95% { + opacity: 1; + } +} +@keyframes bonk { + 0% { + transform: rotate(calc(var(--bonk-angle) * -1)); + } + 50% { + transform: rotate(var(--bonk-angle)); + } +}/* Breakpoints */ +@keyframes flip-r { +50% { + transform: translateX(100%); + opacity: 0; +} +51% { + transform: translateX(-100%); + opacity: 0; +} +} +@keyframes flip-l { +50% { + transform: translateX(-100%); + opacity: 0; +} +51% { + transform: translateX(100%); + opacity: 0; +} +} +@keyframes flip-d { +50% { + transform: translateY(100%); + opacity: 0; +} +51% { + transform: translateY(-100%); + opacity: 0; +} +} +@keyframes flip-u { +50% { + transform: translateY(-100%); + opacity: 0; +} +51% { + transform: translateY(100%); + opacity: 0; +} +} +.container { + min-height: calc(100 * var(--vh)); + max-width: 100vw; + overflow-x: clip; + background: var(--theme-bg); + color: var(--theme-fg); + transition: opacity 1000ms; +} +.container:not(.fonts-ready) { + opacity: 0; +} \ No newline at end of file diff --git a/out/renderer/assets/index-BVu-w-qc.css b/out/renderer/assets/index-BVu-w-qc.css deleted file mode 100644 index 96daa64..0000000 --- a/out/renderer/assets/index-BVu-w-qc.css +++ /dev/null @@ -1,229 +0,0 @@ -:root { - --ev-c-white: #ffffff; - --ev-c-white-soft: #f8f8f8; - --ev-c-white-mute: #f2f2f2; - - --ev-c-black: #1b1b1f; - --ev-c-black-soft: #222222; - --ev-c-black-mute: #282828; - - --ev-c-gray-1: #515c67; - --ev-c-gray-2: #414853; - --ev-c-gray-3: #32363f; - - --ev-c-text-1: rgba(255, 255, 245, 0.86); - --ev-c-text-2: rgba(235, 235, 245, 0.6); - --ev-c-text-3: rgba(235, 235, 245, 0.38); - - --ev-button-alt-border: transparent; - --ev-button-alt-text: var(--ev-c-text-1); - --ev-button-alt-bg: var(--ev-c-gray-3); - --ev-button-alt-hover-border: transparent; - --ev-button-alt-hover-text: var(--ev-c-text-1); - --ev-button-alt-hover-bg: var(--ev-c-gray-2); -} - -:root { - --color-background: var(--ev-c-black); - --color-background-soft: var(--ev-c-black-soft); - --color-background-mute: var(--ev-c-black-mute); - - --color-text: var(--ev-c-text-1); -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -ul { - list-style: none; -} - -body { - min-height: 100vh; - color: var(--color-text); - background: var(--color-background); - line-height: 1.6; - font-family: - Inter, - -apple-system, - BlinkMacSystemFont, - 'Segoe UI', - Roboto, - Oxygen, - Ubuntu, - Cantarell, - 'Fira Sans', - 'Droid Sans', - 'Helvetica Neue', - sans-serif; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -body { - display: flex; - align-items: center; - justify-content: center; - overflow: hidden; - background-image: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201422%20800'%20opacity='0.3'%3e%3cdefs%3e%3clinearGradient%20x1='50%25'%20y1='0%25'%20x2='50%25'%20y2='100%25'%20id='oooscillate-grad'%3e%3cstop%20stop-color='hsl(206,%2075%25,%2049%25)'%20stop-opacity='1'%20offset='0%25'%3e%3c/stop%3e%3cstop%20stop-color='hsl(331,%2090%25,%2056%25)'%20stop-opacity='1'%20offset='100%25'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3cg%20stroke-width='1'%20stroke='url(%23oooscillate-grad)'%20fill='none'%20stroke-linecap='round'%3e%3cpath%20d='M%200%20448%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20448'%20opacity='0.05'%3e%3c/path%3e%3cpath%20d='M%200%20420%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20420'%20opacity='0.11'%3e%3c/path%3e%3cpath%20d='M%200%20392%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20392'%20opacity='0.18'%3e%3c/path%3e%3cpath%20d='M%200%20364%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20364'%20opacity='0.24'%3e%3c/path%3e%3cpath%20d='M%200%20336%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20336'%20opacity='0.30'%3e%3c/path%3e%3cpath%20d='M%200%20308%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20308'%20opacity='0.37'%3e%3c/path%3e%3cpath%20d='M%200%20280%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20280'%20opacity='0.43'%3e%3c/path%3e%3cpath%20d='M%200%20252%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20252'%20opacity='0.49'%3e%3c/path%3e%3cpath%20d='M%200%20224%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20224'%20opacity='0.56'%3e%3c/path%3e%3cpath%20d='M%200%20196%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20196'%20opacity='0.62'%3e%3c/path%3e%3cpath%20d='M%200%20168%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20168'%20opacity='0.68'%3e%3c/path%3e%3cpath%20d='M%200%20140%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20140'%20opacity='0.75'%3e%3c/path%3e%3cpath%20d='M%200%20112%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%20112'%20opacity='0.81'%3e%3c/path%3e%3cpath%20d='M%200%2084%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%2084'%20opacity='0.87'%3e%3c/path%3e%3cpath%20d='M%200%2056%20Q%20355.5%20-100%20711%20400%20Q%201066.5%20900%201422%2056'%20opacity='0.94'%3e%3c/path%3e%3c/g%3e%3c/svg%3e"); - background-size: cover; - user-select: none; -} - -code { - font-weight: 600; - padding: 3px 5px; - border-radius: 2px; - background-color: var(--color-background-mute); - font-family: - ui-monospace, - SFMono-Regular, - SF Mono, - Menlo, - Consolas, - Liberation Mono, - monospace; - font-size: 85%; -} - -#app { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - margin-bottom: 80px; -} - -.logo { - margin-bottom: 20px; - -webkit-user-drag: none; - height: 128px; - width: 128px; - will-change: filter; - transition: filter 300ms; -} - -.logo:hover { - filter: drop-shadow(0 0 1.2em #6988e6aa); -} - -.creator { - font-size: 14px; - line-height: 16px; - color: var(--ev-c-text-2); - font-weight: 600; - margin-bottom: 10px; -} - -.text { - font-size: 28px; - color: var(--ev-c-text-1); - font-weight: 700; - line-height: 32px; - text-align: center; - margin: 0 10px; - padding: 16px 0; -} - -.tip { - font-size: 16px; - line-height: 24px; - color: var(--ev-c-text-2); - font-weight: 600; -} - -.vue { - background: -webkit-linear-gradient(315deg, #42d392 25%, #647eff); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - font-weight: 700; -} - -.actions { - display: flex; - padding-top: 32px; - margin: -6px; - flex-wrap: wrap; - justify-content: flex-start; -} - -.action { - flex-shrink: 0; - padding: 6px; -} - -.action a { - cursor: pointer; - text-decoration: none; - display: inline-block; - border: 1px solid transparent; - text-align: center; - font-weight: 600; - white-space: nowrap; - border-radius: 20px; - padding: 0 20px; - line-height: 38px; - font-size: 14px; - border-color: var(--ev-button-alt-border); - color: var(--ev-button-alt-text); - background-color: var(--ev-button-alt-bg); -} - -.action a:hover { - border-color: var(--ev-button-alt-hover-border); - color: var(--ev-button-alt-hover-text); - background-color: var(--ev-button-alt-hover-bg); -} - -.versions { - position: absolute; - bottom: 30px; - margin: 0 auto; - padding: 15px 0; - font-family: 'Menlo', 'Lucida Console', monospace; - display: inline-flex; - overflow: hidden; - align-items: center; - border-radius: 22px; - background-color: #202127; - backdrop-filter: blur(24px); -} - -.versions li { - display: block; - float: left; - border-right: 1px solid var(--ev-c-gray-1); - padding: 0 20px; - font-size: 14px; - line-height: 14px; - opacity: 0.8; - &:last-child { - border: none; - } -} - -@media (max-width: 720px) { - .text { - font-size: 20px; - } -} - -@media (max-width: 620px) { - .versions { - display: none; - } -} - -@media (max-width: 350px) { - .tip, - .actions { - display: none; - } -} diff --git a/out/renderer/assets/index-C32vEYfn.js b/out/renderer/assets/index-Ce8ZPAlb.js similarity index 66% rename from out/renderer/assets/index-C32vEYfn.js rename to out/renderer/assets/index-Ce8ZPAlb.js index 0de5d6f..7644e53 100644 --- a/out/renderer/assets/index-C32vEYfn.js +++ b/out/renderer/assets/index-Ce8ZPAlb.js @@ -28,9 +28,9 @@ const isDate = (val) => toTypeString(val) === "[object Date]"; const isFunction = (val) => typeof val === "function"; const isString = (val) => typeof val === "string"; const isSymbol = (val) => typeof val === "symbol"; -const isObject = (val) => val !== null && typeof val === "object"; +const isObject$1 = (val) => val !== null && typeof val === "object"; const isPromise = (val) => { - return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); + return (isObject$1(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); }; const objectToString = Object.prototype.toString; const toTypeString = (value) => objectToString.call(value); @@ -104,7 +104,7 @@ function normalizeStyle(value) { } } return res; - } else if (isString(value) || isObject(value)) { + } else if (isString(value) || isObject$1(value)) { return value; } } @@ -132,7 +132,7 @@ function normalizeClass(value) { res += normalized + " "; } } - } else if (isObject(value)) { + } else if (isObject$1(value)) { for (const name in value) { if (value[name]) { res += name + " "; @@ -171,8 +171,8 @@ function looseEqual(a, b) { if (aValidType || bValidType) { return aValidType && bValidType ? looseCompareArrays(a, b) : false; } - aValidType = isObject(a); - bValidType = isObject(b); + aValidType = isObject$1(a); + bValidType = isObject$1(b); if (aValidType || bValidType) { if (!aValidType || !bValidType) { return false; @@ -192,44 +192,6 @@ function looseEqual(a, b) { } return String(a) === String(b); } -const isRef$1 = (val) => { - return !!(val && val["__v_isRef"] === true); -}; -const toDisplayString = (val) => { - return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); -}; -const replacer = (_key, val) => { - if (isRef$1(val)) { - return replacer(_key, val.value); - } else if (isMap(val)) { - return { - [`Map(${val.size})`]: [...val.entries()].reduce( - (entries, [key, val2], i) => { - entries[stringifySymbol(key, i) + " =>"] = val2; - return entries; - }, - {} - ) - }; - } else if (isSet(val)) { - return { - [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) - }; - } else if (isSymbol(val)) { - return stringifySymbol(val); - } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { - return String(val); - } - return val; -}; -const stringifySymbol = (v, i = "") => { - var _a; - return ( - // Symbol.description in es2019+ so we need to cast here to pass - // the lib: es2016 check - isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v - ); -}; let activeEffectScope; class EffectScope { // TODO isolatedDeclarations "__v_skip" @@ -957,12 +919,12 @@ function apply(self2, method, fn, thisArg, wrappedRetFn, args) { let wrappedFn = fn; if (arr !== self2) { if (needsWrap) { - wrappedFn = function(item, index) { - return fn.call(this, toWrapped(self2, item), index, self2); + wrappedFn = function(item, index2) { + return fn.call(this, toWrapped(self2, item), index2, self2); }; } else if (fn.length > 2) { - wrappedFn = function(item, index) { - return fn.call(this, item, index, self2); + wrappedFn = function(item, index2) { + return fn.call(this, item, index2, self2); }; } } @@ -974,12 +936,12 @@ function reduce(self2, method, fn, args) { let wrappedFn = fn; if (arr !== self2) { if (!/* @__PURE__ */ isShallow(self2)) { - wrappedFn = function(acc, item, index) { - return fn.call(this, acc, toWrapped(self2, item), index, self2); + wrappedFn = function(acc, item, index2) { + return fn.call(this, acc, toWrapped(self2, item), index2, self2); }; } else if (fn.length > 3) { - wrappedFn = function(acc, item, index) { - return fn.call(this, acc, item, index, self2); + wrappedFn = function(acc, item, index2) { + return fn.call(this, acc, item, index2, self2); }; } } @@ -1064,9 +1026,9 @@ class BaseReactiveHandler { } if (/* @__PURE__ */ isRef(res)) { const value = targetIsArray && isIntegerKey(key) ? res : res.value; - return isReadonly2 && isObject(value) ? /* @__PURE__ */ readonly(value) : value; + return isReadonly2 && isObject$1(value) ? /* @__PURE__ */ readonly(value) : value; } - if (isObject(res)) { + if (isObject$1(res)) { return isReadonly2 ? /* @__PURE__ */ readonly(res) : /* @__PURE__ */ reactive(res); } return res; @@ -1414,7 +1376,7 @@ function shallowReadonly(target) { ); } function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { - if (!isObject(target)) { + if (!isObject$1(target)) { return target; } if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { @@ -1465,15 +1427,60 @@ function markRaw(value) { } return value; } -const toReactive = (value) => isObject(value) ? /* @__PURE__ */ reactive(value) : value; -const toReadonly = (value) => isObject(value) ? /* @__PURE__ */ readonly(value) : value; +const toReactive = (value) => isObject$1(value) ? /* @__PURE__ */ reactive(value) : value; +const toReadonly = (value) => isObject$1(value) ? /* @__PURE__ */ readonly(value) : value; // @__NO_SIDE_EFFECTS__ function isRef(r) { return r ? r["__v_isRef"] === true : false; } +// @__NO_SIDE_EFFECTS__ +function ref(value) { + return createRef(value, false); +} +// @__NO_SIDE_EFFECTS__ +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (/* @__PURE__ */ isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : /* @__PURE__ */ toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track(); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || /* @__PURE__ */ isShallow(newValue) || /* @__PURE__ */ isReadonly(newValue); + newValue = useDirectValue ? newValue : /* @__PURE__ */ toRaw(newValue); + if (hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger(); + } + } + } +} function unref(ref2) { return /* @__PURE__ */ isRef(ref2) ? ref2.value : ref2; } +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} const shallowUnwrapHandlers = { get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), set: (target, key, value, receiver) => { @@ -1696,7 +1703,7 @@ function watch$1(source, cb, options = EMPTY_OBJ) { return watchHandle; } function traverse(value, depth = Infinity, seen) { - if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + if (depth <= 0 || !isObject$1(value) || value["__v_skip"]) { return value; } seen = seen || /* @__PURE__ */ new Map(); @@ -2108,6 +2115,9 @@ function inject(key, defaultValue, treatDefaultAsFactory = false) { } else ; } } +function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); +} const ssrContextKey = /* @__PURE__ */ Symbol.for("v-scx"); const useSSRContext = () => { { @@ -2115,6 +2125,9 @@ const useSSRContext = () => { return ctx; } }; +function watchEffect(effect2, options) { + return doWatch(effect2, null, options); +} function watch(source, cb, options) { return doWatch(source, cb, options); } @@ -2425,6 +2438,51 @@ function onErrorCaptured(hook, target = currentInstance) { injectHook("ec", hook, target); } const NULL_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol.for("v-ndc"); +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + const hasProps = Object.keys(props).length > 0; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback)], + hasProps ? -2 : 64 + ); + } + let slot = slots[name]; + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + const rendered = createBlock( + Fragment, + { + key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || [], + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} const getPublicInstance = (i) => { if (!i) return null; if (isStatefulComponent(i)) return getComponentPublicInstance(i); @@ -2612,7 +2670,7 @@ function applyOptions(instance) { } if (dataOptions) { const data = dataOptions.call(publicThis, publicThis); - if (!isObject(data)) ; + if (!isObject$1(data)) ; else { instance.data = /* @__PURE__ */ reactive(data); } @@ -2701,7 +2759,7 @@ function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) for (const key in injectOptions) { const opt = injectOptions[key]; let injected; - if (isObject(opt)) { + if (isObject$1(opt)) { if ("default" in opt) { injected = inject( opt.from || key, @@ -2746,7 +2804,7 @@ function createWatcher(raw, ctx, publicThis, key) { { watch(getter, raw.bind(publicThis)); } - } else if (isObject(raw)) { + } else if (isObject$1(raw)) { if (isArray(raw)) { raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); } else { @@ -2782,7 +2840,7 @@ function resolveMergedOptions(instance) { } mergeOptions(resolved, base, optionMergeStrategies); } - if (isObject(base)) { + if (isObject$1(base)) { cache.set(base, resolved); } return resolved; @@ -2920,7 +2978,7 @@ function createAppAPI(render, hydrate) { if (!isFunction(rootComponent)) { rootComponent = extend({}, rootComponent); } - if (rootProps != null && !isObject(rootProps)) { + if (rootProps != null && !isObject$1(rootProps)) { rootProps = null; } const context = createAppContext(); @@ -2934,7 +2992,7 @@ function createAppAPI(render, hydrate) { _container: null, _context: context, _instance: null, - version, + version: version$2, get config() { return context.config; }, @@ -3099,7 +3157,7 @@ function normalizeEmitsOptions(comp, appContext, asMixin = false) { } } if (!raw && !hasExtends) { - if (isObject(comp)) { + if (isObject$1(comp)) { cache.set(comp, null); } return null; @@ -3109,7 +3167,7 @@ function normalizeEmitsOptions(comp, appContext, asMixin = false) { } else { extend(normalized, raw); } - if (isObject(comp)) { + if (isObject$1(comp)) { cache.set(comp, normalized); } return normalized; @@ -3302,7 +3360,7 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) { function hasPropValueChanged(nextProps, prevProps, key) { const nextProp = nextProps[key]; const prevProp = prevProps[key]; - if (key === "style" && isObject(nextProp) && isObject(prevProp)) { + if (key === "style" && isObject$1(nextProp) && isObject$1(prevProp)) { return !looseEqual(nextProp, prevProp); } return nextProp !== prevProp; @@ -3546,7 +3604,7 @@ function normalizePropsOptions(comp, appContext, asMixin = false) { } } if (!raw && !hasExtends) { - if (isObject(comp)) { + if (isObject$1(comp)) { cache.set(comp, EMPTY_ARR); } return EMPTY_ARR; @@ -3568,8 +3626,8 @@ function normalizePropsOptions(comp, appContext, asMixin = false) { let shouldCast = false; let shouldCastTrue = true; if (isArray(propType)) { - for (let index = 0; index < propType.length; ++index) { - const type = propType[index]; + for (let index2 = 0; index2 < propType.length; ++index2) { + const type = propType[index2]; const typeName = isFunction(type) && type.name; if (typeName === "Boolean") { shouldCast = true; @@ -3596,7 +3654,7 @@ function normalizePropsOptions(comp, appContext, asMixin = false) { } } const res = [normalized, needCastKeys]; - if (isObject(comp)) { + if (isObject$1(comp)) { cache.set(comp, res); } return res; @@ -5107,6 +5165,18 @@ function createElementBlock(type, props, children, patchFlag, dynamicProps, shap ) ); } +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + ) + ); +} function isVNode(value) { return value ? value.__v_isVNode === true : false; } @@ -5209,14 +5279,14 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami if (klass && !isString(klass)) { props.class = normalizeClass(klass); } - if (isObject(style)) { + if (isObject$1(style)) { if (/* @__PURE__ */ isProxy(style) && !isArray(style)) { style = extend({}, style); } props.style = normalizeStyle(style); } } - const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0; + const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$1(type) ? 4 : isFunction(type) ? 2 : 0; return createBaseVNode( type, props, @@ -5290,11 +5360,6 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false function createTextVNode(text = " ", flag = 0) { return createVNode(Text, null, text, flag); } -function createStaticVNode(content, numberOfNodes) { - const vnode = createVNode(Static, null, content); - vnode.staticCount = numberOfNodes; - return vnode; -} function normalizeVNode(child) { if (child == null || typeof child === "boolean") { return createVNode(Comment); @@ -5580,7 +5645,7 @@ function handleSetupResult(instance, setupResult, isSSR) { } else { instance.render = setupResult; } - } else if (isObject(setupResult)) { + } else if (isObject$1(setupResult)) { instance.setupState = proxyRefs(setupResult); } else ; finishComponentSetup(instance); @@ -5672,7 +5737,7 @@ const computed = (getterOrOptions, debugOptions) => { const c = /* @__PURE__ */ computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup); return c; }; -const version = "3.5.28"; +const version$2 = "3.5.28"; let policy = void 0; const tt = typeof window !== "undefined" && window.trustedTypes; if (tt) { @@ -6107,49 +6172,2636 @@ function normalizeContainer(container) { } return container; } -const _imports_0 = "" + new URL("electron-DtwWEc_u.svg", import.meta.url).href; -const _hoisted_1 = { class: "versions" }; -const _hoisted_2 = { class: "electron-version" }; -const _hoisted_3 = { class: "chrome-version" }; -const _hoisted_4 = { class: "node-version" }; -const _sfc_main$1 = { - __name: "Versions", - setup(__props) { - const versions = /* @__PURE__ */ reactive({ ...window.electron.process.versions }); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("ul", _hoisted_1, [ - createBaseVNode("li", _hoisted_2, "Electron v" + toDisplayString(versions.electron), 1), - createBaseVNode("li", _hoisted_3, "Chromium v" + toDisplayString(versions.chrome), 1), - createBaseVNode("li", _hoisted_4, "Node v" + toDisplayString(versions.node), 1) - ]); +var version$1 = "1.3.17"; +function clamp(min, input, max) { + return Math.max(min, Math.min(input, max)); +} +function lerp(x, y, t) { + return (1 - t) * x + t * y; +} +function damp(x, y, lambda, deltaTime) { + return lerp(x, y, 1 - Math.exp(-lambda * deltaTime)); +} +function modulo(n, d) { + return (n % d + d) % d; +} +var Animate = class { + isRunning = false; + value = 0; + from = 0; + to = 0; + currentTime = 0; + // These are instanciated in the fromTo method + lerp; + duration; + easing; + onUpdate; + /** + * Advance the animation by the given delta time + * + * @param deltaTime - The time in seconds to advance the animation + */ + advance(deltaTime) { + if (!this.isRunning) return; + let completed = false; + if (this.duration && this.easing) { + this.currentTime += deltaTime; + const linearProgress = clamp(0, this.currentTime / this.duration, 1); + completed = linearProgress >= 1; + const easedProgress = completed ? 1 : this.easing(linearProgress); + this.value = this.from + (this.to - this.from) * easedProgress; + } else if (this.lerp) { + this.value = damp(this.value, this.to, this.lerp * 60, deltaTime); + if (Math.round(this.value) === this.to) { + this.value = this.to; + completed = true; + } + } else { + this.value = this.to; + completed = true; + } + if (completed) { + this.stop(); + } + this.onUpdate?.(this.value, completed); + } + /** Stop the animation */ + stop() { + this.isRunning = false; + } + /** + * Set up the animation from a starting value to an ending value + * with optional parameters for lerping, duration, easing, and onUpdate callback + * + * @param from - The starting value + * @param to - The ending value + * @param options - Options for the animation + */ + fromTo(from, to, { lerp: lerp2, duration, easing, onStart, onUpdate }) { + this.from = this.value = from; + this.to = to; + this.lerp = lerp2; + this.duration = duration; + this.easing = easing; + this.currentTime = 0; + this.isRunning = true; + onStart?.(); + this.onUpdate = onUpdate; + } +}; +function debounce(callback, delay) { + let timer; + return function(...args) { + let context = this; + clearTimeout(timer); + timer = setTimeout(() => { + timer = void 0; + callback.apply(context, args); + }, delay); + }; +} +var Dimensions = class { + constructor(wrapper, content, { autoResize = true, debounce: debounceValue = 250 } = {}) { + this.wrapper = wrapper; + this.content = content; + if (autoResize) { + this.debouncedResize = debounce(this.resize, debounceValue); + if (this.wrapper instanceof Window) { + window.addEventListener("resize", this.debouncedResize, false); + } else { + this.wrapperResizeObserver = new ResizeObserver(this.debouncedResize); + this.wrapperResizeObserver.observe(this.wrapper); + } + this.contentResizeObserver = new ResizeObserver(this.debouncedResize); + this.contentResizeObserver.observe(this.content); + } + this.resize(); + } + width = 0; + height = 0; + scrollHeight = 0; + scrollWidth = 0; + // These are instanciated in the constructor as they need information from the options + debouncedResize; + wrapperResizeObserver; + contentResizeObserver; + destroy() { + this.wrapperResizeObserver?.disconnect(); + this.contentResizeObserver?.disconnect(); + if (this.wrapper === window && this.debouncedResize) { + window.removeEventListener("resize", this.debouncedResize, false); + } + } + resize = () => { + this.onWrapperResize(); + this.onContentResize(); + }; + onWrapperResize = () => { + if (this.wrapper instanceof Window) { + this.width = window.innerWidth; + this.height = window.innerHeight; + } else { + this.width = this.wrapper.clientWidth; + this.height = this.wrapper.clientHeight; + } + }; + onContentResize = () => { + if (this.wrapper instanceof Window) { + this.scrollHeight = this.content.scrollHeight; + this.scrollWidth = this.content.scrollWidth; + } else { + this.scrollHeight = this.wrapper.scrollHeight; + this.scrollWidth = this.wrapper.scrollWidth; + } + }; + get limit() { + return { + x: this.scrollWidth - this.width, + y: this.scrollHeight - this.height }; } }; +var Emitter = class { + events = {}; + /** + * Emit an event with the given data + * @param event Event name + * @param args Data to pass to the event handlers + */ + emit(event, ...args) { + let callbacks = this.events[event] || []; + for (let i = 0, length = callbacks.length; i < length; i++) { + callbacks[i]?.(...args); + } + } + /** + * Add a callback to the event + * @param event Event name + * @param cb Callback function + * @returns Unsubscribe function + */ + on(event, cb) { + this.events[event]?.push(cb) || (this.events[event] = [cb]); + return () => { + this.events[event] = this.events[event]?.filter((i) => cb !== i); + }; + } + /** + * Remove a callback from the event + * @param event Event name + * @param callback Callback function + */ + off(event, callback) { + this.events[event] = this.events[event]?.filter((i) => callback !== i); + } + /** + * Remove all event listeners and clean up + */ + destroy() { + this.events = {}; + } +}; +var LINE_HEIGHT = 100 / 6; +var listenerOptions = { passive: false }; +var VirtualScroll = class { + constructor(element, options = { wheelMultiplier: 1, touchMultiplier: 1 }) { + this.element = element; + this.options = options; + window.addEventListener("resize", this.onWindowResize, false); + this.onWindowResize(); + this.element.addEventListener("wheel", this.onWheel, listenerOptions); + this.element.addEventListener( + "touchstart", + this.onTouchStart, + listenerOptions + ); + this.element.addEventListener( + "touchmove", + this.onTouchMove, + listenerOptions + ); + this.element.addEventListener("touchend", this.onTouchEnd, listenerOptions); + } + touchStart = { + x: 0, + y: 0 + }; + lastDelta = { + x: 0, + y: 0 + }; + window = { + width: 0, + height: 0 + }; + emitter = new Emitter(); + /** + * Add an event listener for the given event and callback + * + * @param event Event name + * @param callback Callback function + */ + on(event, callback) { + return this.emitter.on(event, callback); + } + /** Remove all event listeners and clean up */ + destroy() { + this.emitter.destroy(); + window.removeEventListener("resize", this.onWindowResize, false); + this.element.removeEventListener("wheel", this.onWheel, listenerOptions); + this.element.removeEventListener( + "touchstart", + this.onTouchStart, + listenerOptions + ); + this.element.removeEventListener( + "touchmove", + this.onTouchMove, + listenerOptions + ); + this.element.removeEventListener( + "touchend", + this.onTouchEnd, + listenerOptions + ); + } + /** + * Event handler for 'touchstart' event + * + * @param event Touch event + */ + onTouchStart = (event) => { + const { clientX, clientY } = event.targetTouches ? event.targetTouches[0] : event; + this.touchStart.x = clientX; + this.touchStart.y = clientY; + this.lastDelta = { + x: 0, + y: 0 + }; + this.emitter.emit("scroll", { + deltaX: 0, + deltaY: 0, + event + }); + }; + /** Event handler for 'touchmove' event */ + onTouchMove = (event) => { + const { clientX, clientY } = event.targetTouches ? event.targetTouches[0] : event; + const deltaX = -(clientX - this.touchStart.x) * this.options.touchMultiplier; + const deltaY = -(clientY - this.touchStart.y) * this.options.touchMultiplier; + this.touchStart.x = clientX; + this.touchStart.y = clientY; + this.lastDelta = { + x: deltaX, + y: deltaY + }; + this.emitter.emit("scroll", { + deltaX, + deltaY, + event + }); + }; + onTouchEnd = (event) => { + this.emitter.emit("scroll", { + deltaX: this.lastDelta.x, + deltaY: this.lastDelta.y, + event + }); + }; + /** Event handler for 'wheel' event */ + onWheel = (event) => { + let { deltaX, deltaY, deltaMode } = event; + const multiplierX = deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.window.width : 1; + const multiplierY = deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.window.height : 1; + deltaX *= multiplierX; + deltaY *= multiplierY; + deltaX *= this.options.wheelMultiplier; + deltaY *= this.options.wheelMultiplier; + this.emitter.emit("scroll", { deltaX, deltaY, event }); + }; + onWindowResize = () => { + this.window = { + width: window.innerWidth, + height: window.innerHeight + }; + }; +}; +var defaultEasing = (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)); +var Lenis = class { + _isScrolling = false; + // true when scroll is animating + _isStopped = false; + // true if user should not be able to scroll - enable/disable programmatically + _isLocked = false; + // same as isStopped but enabled/disabled when scroll reaches target + _preventNextNativeScrollEvent = false; + _resetVelocityTimeout = null; + _rafId = null; + /** + * Whether or not the user is touching the screen + */ + isTouching; + /** + * The time in ms since the lenis instance was created + */ + time = 0; + /** + * User data that will be forwarded through the scroll event + * + * @example + * lenis.scrollTo(100, { + * userData: { + * foo: 'bar' + * } + * }) + */ + userData = {}; + /** + * The last velocity of the scroll + */ + lastVelocity = 0; + /** + * The current velocity of the scroll + */ + velocity = 0; + /** + * The direction of the scroll + */ + direction = 0; + /** + * The options passed to the lenis instance + */ + options; + /** + * The target scroll value + */ + targetScroll; + /** + * The animated scroll value + */ + animatedScroll; + // These are instanciated here as they don't need information from the options + animate = new Animate(); + emitter = new Emitter(); + // These are instanciated in the constructor as they need information from the options + dimensions; + // This is not private because it's used in the Snap class + virtualScroll; + constructor({ + wrapper = window, + content = document.documentElement, + eventsTarget = wrapper, + smoothWheel = true, + syncTouch = false, + syncTouchLerp = 0.075, + touchInertiaExponent = 1.7, + duration, + // in seconds + easing, + lerp: lerp2 = 0.1, + infinite = false, + orientation = "vertical", + // vertical, horizontal + gestureOrientation = orientation === "horizontal" ? "both" : "vertical", + // vertical, horizontal, both + touchMultiplier = 1, + wheelMultiplier = 1, + autoResize = true, + prevent, + virtualScroll, + overscroll = true, + autoRaf = false, + anchors = false, + autoToggle = false, + // https://caniuse.com/?search=transition-behavior + allowNestedScroll = false, + // @ts-ignore: this will be deprecated in the future + __experimental__naiveDimensions = false, + naiveDimensions = __experimental__naiveDimensions, + stopInertiaOnNavigate = false + } = {}) { + window.lenisVersion = version$1; + if (!wrapper || wrapper === document.documentElement) { + wrapper = window; + } + if (typeof duration === "number" && typeof easing !== "function") { + easing = defaultEasing; + } else if (typeof easing === "function" && typeof duration !== "number") { + duration = 1; + } + this.options = { + wrapper, + content, + eventsTarget, + smoothWheel, + syncTouch, + syncTouchLerp, + touchInertiaExponent, + duration, + easing, + lerp: lerp2, + infinite, + gestureOrientation, + orientation, + touchMultiplier, + wheelMultiplier, + autoResize, + prevent, + virtualScroll, + overscroll, + autoRaf, + anchors, + autoToggle, + allowNestedScroll, + naiveDimensions, + stopInertiaOnNavigate + }; + this.dimensions = new Dimensions(wrapper, content, { autoResize }); + this.updateClassName(); + this.targetScroll = this.animatedScroll = this.actualScroll; + this.options.wrapper.addEventListener("scroll", this.onNativeScroll, false); + this.options.wrapper.addEventListener("scrollend", this.onScrollEnd, { + capture: true + }); + if (this.options.anchors || this.options.stopInertiaOnNavigate) { + this.options.wrapper.addEventListener( + "click", + this.onClick, + false + ); + } + this.options.wrapper.addEventListener( + "pointerdown", + this.onPointerDown, + false + ); + this.virtualScroll = new VirtualScroll(eventsTarget, { + touchMultiplier, + wheelMultiplier + }); + this.virtualScroll.on("scroll", this.onVirtualScroll); + if (this.options.autoToggle) { + this.checkOverflow(); + this.rootElement.addEventListener("transitionend", this.onTransitionEnd, { + passive: true + }); + } + if (this.options.autoRaf) { + this._rafId = requestAnimationFrame(this.raf); + } + } + /** + * Destroy the lenis instance, remove all event listeners and clean up the class name + */ + destroy() { + this.emitter.destroy(); + this.options.wrapper.removeEventListener( + "scroll", + this.onNativeScroll, + false + ); + this.options.wrapper.removeEventListener("scrollend", this.onScrollEnd, { + capture: true + }); + this.options.wrapper.removeEventListener( + "pointerdown", + this.onPointerDown, + false + ); + if (this.options.anchors || this.options.stopInertiaOnNavigate) { + this.options.wrapper.removeEventListener( + "click", + this.onClick, + false + ); + } + this.virtualScroll.destroy(); + this.dimensions.destroy(); + this.cleanUpClassName(); + if (this._rafId) { + cancelAnimationFrame(this._rafId); + } + } + on(event, callback) { + return this.emitter.on(event, callback); + } + off(event, callback) { + return this.emitter.off(event, callback); + } + onScrollEnd = (e) => { + if (!(e instanceof CustomEvent)) { + if (this.isScrolling === "smooth" || this.isScrolling === false) { + e.stopPropagation(); + } + } + }; + dispatchScrollendEvent = () => { + this.options.wrapper.dispatchEvent( + new CustomEvent("scrollend", { + bubbles: this.options.wrapper === window, + // cancelable: false, + detail: { + lenisScrollEnd: true + } + }) + ); + }; + get overflow() { + const property = this.isHorizontal ? "overflow-x" : "overflow-y"; + return getComputedStyle(this.rootElement)[property]; + } + checkOverflow() { + if (["hidden", "clip"].includes(this.overflow)) { + this.internalStop(); + } else { + this.internalStart(); + } + } + onTransitionEnd = (event) => { + if (event.propertyName.includes("overflow")) { + this.checkOverflow(); + } + }; + setScroll(scroll) { + if (this.isHorizontal) { + this.options.wrapper.scrollTo({ left: scroll, behavior: "instant" }); + } else { + this.options.wrapper.scrollTo({ top: scroll, behavior: "instant" }); + } + } + onClick = (event) => { + const path = event.composedPath(); + const anchorElements = path.filter( + (node) => node instanceof HTMLAnchorElement && node.getAttribute("href") + ); + if (this.options.anchors) { + const anchor = anchorElements.find( + (node) => node.getAttribute("href")?.includes("#") + ); + if (anchor) { + const href = anchor.getAttribute("href"); + if (href) { + const options = typeof this.options.anchors === "object" && this.options.anchors ? this.options.anchors : void 0; + const target = `#${href.split("#")[1]}`; + this.scrollTo(target, options); + } + } + } + if (this.options.stopInertiaOnNavigate) { + const internalLink = anchorElements.find( + (node) => node.host === window.location.host + ); + if (internalLink) { + this.reset(); + } + } + }; + onPointerDown = (event) => { + if (event.button === 1) { + this.reset(); + } + }; + onVirtualScroll = (data) => { + if (typeof this.options.virtualScroll === "function" && this.options.virtualScroll(data) === false) + return; + const { deltaX, deltaY, event } = data; + this.emitter.emit("virtual-scroll", { deltaX, deltaY, event }); + if (event.ctrlKey) return; + if (event.lenisStopPropagation) return; + const isTouch = event.type.includes("touch"); + const isWheel = event.type.includes("wheel"); + this.isTouching = event.type === "touchstart" || event.type === "touchmove"; + const isClickOrTap = deltaX === 0 && deltaY === 0; + const isTapToStop = this.options.syncTouch && isTouch && event.type === "touchstart" && isClickOrTap && !this.isStopped && !this.isLocked; + if (isTapToStop) { + this.reset(); + return; + } + const isUnknownGesture = this.options.gestureOrientation === "vertical" && deltaY === 0 || this.options.gestureOrientation === "horizontal" && deltaX === 0; + if (isClickOrTap || isUnknownGesture) { + return; + } + let composedPath = event.composedPath(); + composedPath = composedPath.slice(0, composedPath.indexOf(this.rootElement)); + const prevent = this.options.prevent; + if (!!composedPath.find( + (node) => node instanceof HTMLElement && (typeof prevent === "function" && prevent?.(node) || node.hasAttribute?.("data-lenis-prevent") || isTouch && node.hasAttribute?.("data-lenis-prevent-touch") || isWheel && node.hasAttribute?.("data-lenis-prevent-wheel") || this.options.allowNestedScroll && this.checkNestedScroll(node, { deltaX, deltaY })) + )) + return; + if (this.isStopped || this.isLocked) { + if (event.cancelable) { + event.preventDefault(); + } + return; + } + const isSmooth = this.options.syncTouch && isTouch || this.options.smoothWheel && isWheel; + if (!isSmooth) { + this.isScrolling = "native"; + this.animate.stop(); + event.lenisStopPropagation = true; + return; + } + let delta = deltaY; + if (this.options.gestureOrientation === "both") { + delta = Math.abs(deltaY) > Math.abs(deltaX) ? deltaY : deltaX; + } else if (this.options.gestureOrientation === "horizontal") { + delta = deltaX; + } + if (!this.options.overscroll || this.options.infinite || this.options.wrapper !== window && this.limit > 0 && (this.animatedScroll > 0 && this.animatedScroll < this.limit || this.animatedScroll === 0 && deltaY > 0 || this.animatedScroll === this.limit && deltaY < 0)) { + event.lenisStopPropagation = true; + } + if (event.cancelable) { + event.preventDefault(); + } + const isSyncTouch = isTouch && this.options.syncTouch; + const isTouchEnd = isTouch && event.type === "touchend"; + const hasTouchInertia = isTouchEnd; + if (hasTouchInertia) { + delta = Math.sign(this.velocity) * Math.pow(Math.abs(this.velocity), this.options.touchInertiaExponent); + } + this.scrollTo(this.targetScroll + delta, { + programmatic: false, + ...isSyncTouch ? { + lerp: hasTouchInertia ? this.options.syncTouchLerp : 1 + } : { + lerp: this.options.lerp, + duration: this.options.duration, + easing: this.options.easing + } + }); + }; + /** + * Force lenis to recalculate the dimensions + */ + resize() { + this.dimensions.resize(); + this.animatedScroll = this.targetScroll = this.actualScroll; + this.emit(); + } + emit() { + this.emitter.emit("scroll", this); + } + onNativeScroll = () => { + if (this._resetVelocityTimeout !== null) { + clearTimeout(this._resetVelocityTimeout); + this._resetVelocityTimeout = null; + } + if (this._preventNextNativeScrollEvent) { + this._preventNextNativeScrollEvent = false; + return; + } + if (this.isScrolling === false || this.isScrolling === "native") { + const lastScroll = this.animatedScroll; + this.animatedScroll = this.targetScroll = this.actualScroll; + this.lastVelocity = this.velocity; + this.velocity = this.animatedScroll - lastScroll; + this.direction = Math.sign( + this.animatedScroll - lastScroll + ); + if (!this.isStopped) { + this.isScrolling = "native"; + } + this.emit(); + if (this.velocity !== 0) { + this._resetVelocityTimeout = setTimeout(() => { + this.lastVelocity = this.velocity; + this.velocity = 0; + this.isScrolling = false; + this.emit(); + }, 400); + } + } + }; + reset() { + this.isLocked = false; + this.isScrolling = false; + this.animatedScroll = this.targetScroll = this.actualScroll; + this.lastVelocity = this.velocity = 0; + this.animate.stop(); + } + /** + * Start lenis scroll after it has been stopped + */ + start() { + if (!this.isStopped) return; + if (this.options.autoToggle) { + this.rootElement.style.removeProperty("overflow"); + return; + } + this.internalStart(); + } + internalStart() { + if (!this.isStopped) return; + this.reset(); + this.isStopped = false; + this.emit(); + } + /** + * Stop lenis scroll + */ + stop() { + if (this.isStopped) return; + if (this.options.autoToggle) { + this.rootElement.style.setProperty("overflow", "clip"); + return; + } + this.internalStop(); + } + internalStop() { + if (this.isStopped) return; + this.reset(); + this.isStopped = true; + this.emit(); + } + /** + * RequestAnimationFrame for lenis + * + * @param time The time in ms from an external clock like `requestAnimationFrame` or Tempus + */ + raf = (time) => { + const deltaTime = time - (this.time || time); + this.time = time; + this.animate.advance(deltaTime * 1e-3); + if (this.options.autoRaf) { + this._rafId = requestAnimationFrame(this.raf); + } + }; + /** + * Scroll to a target value + * + * @param target The target value to scroll to + * @param options The options for the scroll + * + * @example + * lenis.scrollTo(100, { + * offset: 100, + * duration: 1, + * easing: (t) => 1 - Math.cos((t * Math.PI) / 2), + * lerp: 0.1, + * onStart: () => { + * console.log('onStart') + * }, + * onComplete: () => { + * console.log('onComplete') + * }, + * }) + */ + scrollTo(target, { + offset = 0, + immediate = false, + lock = false, + programmatic = true, + // called from outside of the class + lerp: lerp2 = programmatic ? this.options.lerp : void 0, + duration = programmatic ? this.options.duration : void 0, + easing = programmatic ? this.options.easing : void 0, + onStart, + onComplete, + force = false, + // scroll even if stopped + userData + } = {}) { + if ((this.isStopped || this.isLocked) && !force) return; + if (typeof target === "string" && ["top", "left", "start", "#"].includes(target)) { + target = 0; + } else if (typeof target === "string" && ["bottom", "right", "end"].includes(target)) { + target = this.limit; + } else { + let node; + if (typeof target === "string") { + node = document.querySelector(target); + if (!node) { + if (target === "#top") { + target = 0; + } else { + console.warn("Lenis: Target not found", target); + } + } + } else if (target instanceof HTMLElement && target?.nodeType) { + node = target; + } + if (node) { + if (this.options.wrapper !== window) { + const wrapperRect = this.rootElement.getBoundingClientRect(); + offset -= this.isHorizontal ? wrapperRect.left : wrapperRect.top; + } + const rect = node.getBoundingClientRect(); + target = (this.isHorizontal ? rect.left : rect.top) + this.animatedScroll; + } + } + if (typeof target !== "number") return; + target += offset; + target = Math.round(target); + if (this.options.infinite) { + if (programmatic) { + this.targetScroll = this.animatedScroll = this.scroll; + const distance = target - this.animatedScroll; + if (distance > this.limit / 2) { + target = target - this.limit; + } else if (distance < -this.limit / 2) { + target = target + this.limit; + } + } + } else { + target = clamp(0, target, this.limit); + } + if (target === this.targetScroll) { + onStart?.(this); + onComplete?.(this); + return; + } + this.userData = userData ?? {}; + if (immediate) { + this.animatedScroll = this.targetScroll = target; + this.setScroll(this.scroll); + this.reset(); + this.preventNextNativeScrollEvent(); + this.emit(); + onComplete?.(this); + this.userData = {}; + requestAnimationFrame(() => { + this.dispatchScrollendEvent(); + }); + return; + } + if (!programmatic) { + this.targetScroll = target; + } + if (typeof duration === "number" && typeof easing !== "function") { + easing = defaultEasing; + } else if (typeof easing === "function" && typeof duration !== "number") { + duration = 1; + } + this.animate.fromTo(this.animatedScroll, target, { + duration, + easing, + lerp: lerp2, + onStart: () => { + if (lock) this.isLocked = true; + this.isScrolling = "smooth"; + onStart?.(this); + }, + onUpdate: (value, completed) => { + this.isScrolling = "smooth"; + this.lastVelocity = this.velocity; + this.velocity = value - this.animatedScroll; + this.direction = Math.sign(this.velocity); + this.animatedScroll = value; + this.setScroll(this.scroll); + if (programmatic) { + this.targetScroll = value; + } + if (!completed) this.emit(); + if (completed) { + this.reset(); + this.emit(); + onComplete?.(this); + this.userData = {}; + requestAnimationFrame(() => { + this.dispatchScrollendEvent(); + }); + this.preventNextNativeScrollEvent(); + } + } + }); + } + preventNextNativeScrollEvent() { + this._preventNextNativeScrollEvent = true; + requestAnimationFrame(() => { + this._preventNextNativeScrollEvent = false; + }); + } + checkNestedScroll(node, { deltaX, deltaY }) { + const time = Date.now(); + const cache = node._lenis ??= {}; + let hasOverflowX, hasOverflowY, isScrollableX, isScrollableY, scrollWidth, scrollHeight, clientWidth, clientHeight; + const gestureOrientation = this.options.gestureOrientation; + if (time - (cache.time ?? 0) > 2e3) { + cache.time = Date.now(); + const computedStyle = window.getComputedStyle(node); + cache.computedStyle = computedStyle; + const overflowXString = computedStyle.overflowX; + const overflowYString = computedStyle.overflowY; + hasOverflowX = ["auto", "overlay", "scroll"].includes(overflowXString); + hasOverflowY = ["auto", "overlay", "scroll"].includes(overflowYString); + cache.hasOverflowX = hasOverflowX; + cache.hasOverflowY = hasOverflowY; + if (!hasOverflowX && !hasOverflowY) return false; + if (gestureOrientation === "vertical" && !hasOverflowY) return false; + if (gestureOrientation === "horizontal" && !hasOverflowX) return false; + scrollWidth = node.scrollWidth; + scrollHeight = node.scrollHeight; + clientWidth = node.clientWidth; + clientHeight = node.clientHeight; + isScrollableX = scrollWidth > clientWidth; + isScrollableY = scrollHeight > clientHeight; + cache.isScrollableX = isScrollableX; + cache.isScrollableY = isScrollableY; + cache.scrollWidth = scrollWidth; + cache.scrollHeight = scrollHeight; + cache.clientWidth = clientWidth; + cache.clientHeight = clientHeight; + } else { + isScrollableX = cache.isScrollableX; + isScrollableY = cache.isScrollableY; + hasOverflowX = cache.hasOverflowX; + hasOverflowY = cache.hasOverflowY; + scrollWidth = cache.scrollWidth; + scrollHeight = cache.scrollHeight; + clientWidth = cache.clientWidth; + clientHeight = cache.clientHeight; + } + if (!hasOverflowX && !hasOverflowY || !isScrollableX && !isScrollableY) { + return false; + } + if (gestureOrientation === "vertical" && (!hasOverflowY || !isScrollableY)) + return false; + if (gestureOrientation === "horizontal" && (!hasOverflowX || !isScrollableX)) + return false; + let orientation; + if (gestureOrientation === "horizontal") { + orientation = "x"; + } else if (gestureOrientation === "vertical") { + orientation = "y"; + } else { + const isScrollingX = deltaX !== 0; + const isScrollingY = deltaY !== 0; + if (isScrollingX && hasOverflowX && isScrollableX) { + orientation = "x"; + } + if (isScrollingY && hasOverflowY && isScrollableY) { + orientation = "y"; + } + } + if (!orientation) return false; + let scroll, maxScroll, delta, hasOverflow, isScrollable; + if (orientation === "x") { + scroll = node.scrollLeft; + maxScroll = scrollWidth - clientWidth; + delta = deltaX; + hasOverflow = hasOverflowX; + isScrollable = isScrollableX; + } else if (orientation === "y") { + scroll = node.scrollTop; + maxScroll = scrollHeight - clientHeight; + delta = deltaY; + hasOverflow = hasOverflowY; + isScrollable = isScrollableY; + } else { + return false; + } + const willScroll = delta > 0 ? scroll < maxScroll : scroll > 0; + return willScroll && hasOverflow && isScrollable; + } + /** + * The root element on which lenis is instanced + */ + get rootElement() { + return this.options.wrapper === window ? document.documentElement : this.options.wrapper; + } + /** + * The limit which is the maximum scroll value + */ + get limit() { + if (this.options.naiveDimensions) { + if (this.isHorizontal) { + return this.rootElement.scrollWidth - this.rootElement.clientWidth; + } else { + return this.rootElement.scrollHeight - this.rootElement.clientHeight; + } + } else { + return this.dimensions.limit[this.isHorizontal ? "x" : "y"]; + } + } + /** + * Whether or not the scroll is horizontal + */ + get isHorizontal() { + return this.options.orientation === "horizontal"; + } + /** + * The actual scroll value + */ + get actualScroll() { + const wrapper = this.options.wrapper; + return this.isHorizontal ? wrapper.scrollX ?? wrapper.scrollLeft : wrapper.scrollY ?? wrapper.scrollTop; + } + /** + * The current scroll value + */ + get scroll() { + return this.options.infinite ? modulo(this.animatedScroll, this.limit) : this.animatedScroll; + } + /** + * The progress of the scroll relative to the limit + */ + get progress() { + return this.limit === 0 ? 1 : this.scroll / this.limit; + } + /** + * Current scroll state + */ + get isScrolling() { + return this._isScrolling; + } + set isScrolling(value) { + if (this._isScrolling !== value) { + this._isScrolling = value; + this.updateClassName(); + } + } + /** + * Check if lenis is stopped + */ + get isStopped() { + return this._isStopped; + } + set isStopped(value) { + if (this._isStopped !== value) { + this._isStopped = value; + this.updateClassName(); + } + } + /** + * Check if lenis is locked + */ + get isLocked() { + return this._isLocked; + } + set isLocked(value) { + if (this._isLocked !== value) { + this._isLocked = value; + this.updateClassName(); + } + } + /** + * Check if lenis is smooth scrolling + */ + get isSmooth() { + return this.isScrolling === "smooth"; + } + /** + * The class name applied to the wrapper element + */ + get className() { + let className = "lenis"; + if (this.options.autoToggle) className += " lenis-autoToggle"; + if (this.isStopped) className += " lenis-stopped"; + if (this.isLocked) className += " lenis-locked"; + if (this.isScrolling) className += " lenis-scrolling"; + if (this.isScrolling === "smooth") className += " lenis-smooth"; + return className; + } + updateClassName() { + this.cleanUpClassName(); + this.rootElement.className = `${this.rootElement.className} ${this.className}`.trim(); + } + cleanUpClassName() { + this.rootElement.className = this.rootElement.className.replace(/lenis(-\w+)?/g, "").trim(); + } +}; +var Clock = class { + _elapsed = 0; + _currentTime = 0; + _startTime = void 0; + _lastTime = void 0; + _isPlaying = false; + _deltaTime = 0; + play() { + if (this._isPlaying) return; + this._currentTime = 0; + this._startTime = void 0; + this._isPlaying = true; + } + pause() { + if (!this._isPlaying) return; + this._deltaTime = 0; + this._isPlaying = false; + } + reset() { + this._elapsed = 0; + this._deltaTime = 0; + this._currentTime = 0; + this._lastTime = void 0; + this._isPlaying = false; + } + update(browserTime) { + if (!this._isPlaying) return; + if (!this._startTime) { + this._startTime = browserTime; + } + if (this._lastTime === void 0) { + this._lastTime = this._startTime; + this._currentTime = 0; + this._deltaTime = 0; + } else { + this._lastTime = this._currentTime; + this._currentTime = browserTime - this._startTime; + this._deltaTime = this._currentTime - this._lastTime; + this._elapsed += this._deltaTime; + } + } + get time() { + return this._elapsed; + } + get isPlaying() { + return this._isPlaying; + } + get deltaTime() { + return this._deltaTime; + } +}; +var index = 0; +function getUID() { + return index++; +} +var version = "1.0.0-dev.17"; +var isClient$1 = typeof window !== "undefined"; +var originalRAF = isClient$1 && window.requestAnimationFrame; +var originalCancelRAF = isClient$1 && window.cancelAnimationFrame; +if (isClient$1) { + window.tempusVersion = version; +} +function stopwatch(callback) { + const now = performance.now(); + callback(); + return performance.now() - now; +} +var Framerate = class { + callbacks = []; + fps; + time = 0; + lastTickDate = performance.now(); + framesCount = 0; + constructor(fps = Number.POSITIVE_INFINITY) { + this.fps = fps; + } + get isRelativeFps() { + return typeof this.fps === "string" && this.fps.endsWith("%"); + } + get maxFramesCount() { + if (!this.isRelativeFps) return 1; + return Math.max(1, Math.round(100 / Number(this.fps.replace("%", "")))); + } + get executionTime() { + if (this.isRelativeFps) return 0; + return 1e3 / this.fps; + } + dispatch(time, deltaTime, frameCount) { + for (let i = 0; i < this.callbacks.length; i++) { + const duration = stopwatch(() => { + if ((this.callbacks[i]?.idle ?? Number.POSITIVE_INFINITY) > Tempus.usage) { + this.callbacks[i]?.callback(time, deltaTime, frameCount); + } + }); + this.callbacks[i].samples?.push(duration); + this.callbacks[i].samples = this.callbacks[i].samples?.slice(-9); + } + } + raf(time, deltaTime, frameCount) { + this.time += deltaTime; + if (this.isRelativeFps) { + if (this.framesCount === 0) { + this.dispatch(time, deltaTime, frameCount); + } + this.framesCount++; + this.framesCount %= this.maxFramesCount; + } else { + if (this.fps === Number.POSITIVE_INFINITY) { + this.dispatch(time, deltaTime, frameCount); + } else if (this.time >= this.executionTime) { + this.time = this.time % this.executionTime; + const deltaTime2 = time - this.lastTickDate; + this.lastTickDate = time; + this.dispatch(time, deltaTime2, frameCount); + } + } + } + add({ + callback, + priority, + label, + idle + }) { + if (typeof callback !== "function") { + console.warn("Tempus.add: callback is not a function"); + return; + } + const uid2 = getUID(); + this.callbacks.push({ callback, priority, uid: uid2, label, samples: [], idle }); + this.callbacks.sort((a, b) => a.priority - b.priority); + return () => this.remove(uid2); + } + remove(uid2) { + this.callbacks = this.callbacks.filter(({ uid: u }) => uid2 !== u); + } +}; +var TempusImpl = class { + framerates = {}; + clock = new Clock(); + fps; + usage = 0; + rafId; + frameCount = 0; + constructor() { + if (!isClient$1) return; + this.play(); + } + restart() { + if (this.rafId) { + cancelAnimationFrame(this.rafId); + } + this.frameCount = 0; + for (const framerate of Object.values(this.framerates)) { + framerate.framesCount = 0; + framerate.time = 0; + framerate.lastTickDate = performance.now(); + } + this.clock.reset(); + this.play(); + } + play() { + if (!isClient$1 || this.clock.isPlaying) return; + this.clock.play(); + this.rafId = requestAnimationFrame(this.raf); + } + pause() { + if (!isClient$1 || !this.rafId || !this.clock.isPlaying) return; + cancelAnimationFrame(this.rafId); + this.rafId = void 0; + this.clock.pause(); + } + get isPlaying() { + return this.clock.isPlaying; + } + add(callback, { + priority = 0, + fps = Number.POSITIVE_INFINITY, + label = "", + idle = Number.POSITIVE_INFINITY + } = {}) { + if (!isClient$1) return; + if (typeof fps === "number" || typeof fps === "string" && fps.endsWith("%")) { + if (!this.framerates[fps]) this.framerates[fps] = new Framerate(fps); + return this.framerates[fps].add({ callback, priority, label, idle }); + } + console.warn('Tempus.add: fps is not a number or a string ending with "%"'); + } + raf = (browserElapsed) => { + if (!isClient$1) return; + this.clock.update(browserElapsed); + const elapsed = this.clock.time; + const deltaTime = this.clock.deltaTime; + this.fps = 1e3 / deltaTime; + const duration = stopwatch(() => { + for (const framerate of Object.values(this.framerates)) { + framerate.raf(elapsed, deltaTime, this.frameCount); + } + }); + if (deltaTime) { + this.usage = duration / deltaTime; + } + this.frameCount++; + this.rafId = requestAnimationFrame(this.raf); + }; + patch() { + if (!isClient$1) return; + window.requestAnimationFrame = (callback, { priority = 0, fps = Number.POSITIVE_INFINITY } = {}) => { + const stringifiedCallback = callback.toString(); + if ((stringifiedCallback.includes( + `requestAnimationFrame(${callback.name})` + ) || stringifiedCallback.includes( + `requestAnimationFrame(this.${callback.name})` + )) && callback !== this.raf) { + if (!callback.__tempusPatched) { + callback.__tempusPatched = true; + callback.__tempusUnsubscribe = this.add(callback, { + priority, + fps, + label: callback.name + }); + } + return callback.__tempusUnsubscribe; + } + return originalRAF(callback); + }; + window.cancelAnimationFrame = (callback) => { + if (typeof callback === "function") { + callback?.(); + return; + } + return originalCancelRAF(callback); + }; + } + unpatch() { + if (!isClient$1) return; + window.requestAnimationFrame = originalRAF; + window.cancelAnimationFrame = originalCancelRAF; + } +}; +var Tempus = new TempusImpl(); +const _sfc_main$1 = { + __name: "Lenis", + props: { + root: { + type: Boolean, + default: () => false + }, + instance: { type: String }, + options: { + type: Object, + default: () => ({ + duration: 1.2 + }) + } + }, + setup(__props) { + const lenis = /* @__PURE__ */ shallowRef(); + const wrapper = /* @__PURE__ */ ref(); + const content = /* @__PURE__ */ ref(); + const removeRaf = /* @__PURE__ */ ref(); + const instanceKey = `lenis${__props.instance ? `-${__props.instance}` : ""}`; + provide(instanceKey, lenis); + const initLenis = () => { + if (lenis.value) return; + lenis.value = new Lenis({ + ...__props.options, + ...!__props.root ? { + wrapper: wrapper.value, + content: content.value, + eventsTarget: wrapper.value + } : {} + }); + removeRaf.value = Tempus.add((time) => { + lenis.value.raf(time); + }); + }; + onMounted(() => { + if (!lenis.value) { + initLenis(); + } + }); + onBeforeUnmount(() => { + lenis.value?.destroy(); + removeRaf.value?.(); + }); + return (_ctx, _cache) => { + return !__props.root ? (openBlock(), createElementBlock("div", { + key: 0, + class: "lenis", + ref_key: "wrapper", + ref: wrapper + }, [ + createBaseVNode("div", { + ref_key: "content", + ref: content + }, [ + renderSlot(_ctx.$slots, "default") + ], 512) + ], 512)) : renderSlot(_ctx.$slots, "default", { key: 1 }); + }; + } +}; +var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +function getDefaultExportFromCjs(x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; +} +var dist = {}; +var fontfaceobserver_standalone = { exports: {} }; +var hasRequiredFontfaceobserver_standalone; +function requireFontfaceobserver_standalone() { + if (hasRequiredFontfaceobserver_standalone) return fontfaceobserver_standalone.exports; + hasRequiredFontfaceobserver_standalone = 1; + (function(module) { + (function() { + function p2(a, c) { + document.addEventListener ? a.addEventListener("scroll", c, false) : a.attachEvent("scroll", c); + } + function u(a) { + document.body ? a() : document.addEventListener ? document.addEventListener("DOMContentLoaded", function b() { + document.removeEventListener("DOMContentLoaded", b); + a(); + }) : document.attachEvent("onreadystatechange", function g() { + if ("interactive" == document.readyState || "complete" == document.readyState) document.detachEvent("onreadystatechange", g), a(); + }); + } + function w(a) { + this.g = document.createElement("div"); + this.g.setAttribute("aria-hidden", "true"); + this.g.appendChild(document.createTextNode(a)); + this.h = document.createElement("span"); + this.i = document.createElement("span"); + this.m = document.createElement("span"); + this.j = document.createElement("span"); + this.l = -1; + this.h.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;"; + this.i.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;"; + this.j.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;"; + this.m.style.cssText = "display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;"; + this.h.appendChild(this.m); + this.i.appendChild(this.j); + this.g.appendChild(this.h); + this.g.appendChild(this.i); + } + function x(a, c) { + a.g.style.cssText = "max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:" + c + ";"; + } + function B(a) { + var c = a.g.offsetWidth, b = c + 100; + a.j.style.width = b + "px"; + a.i.scrollLeft = b; + a.h.scrollLeft = a.h.scrollWidth + 100; + return a.l !== c ? (a.l = c, true) : false; + } + function C(a, c) { + function b() { + var e = g; + B(e) && null !== e.g.parentNode && c(e.l); + } + var g = a; + p2(a.h, b); + p2(a.i, b); + B(a); + } + function D(a, c, b) { + c = c || {}; + b = b || window; + this.family = a; + this.style = c.style || "normal"; + this.weight = c.weight || "normal"; + this.stretch = c.stretch || "normal"; + this.context = b; + } + var E = null, F = null, G = null, H = null; + function I(a) { + null === F && (M(a) && /Apple/.test(window.navigator.vendor) ? (a = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent), F = !!a && 603 > parseInt(a[1], 10)) : F = false); + return F; + } + function M(a) { + null === H && (H = !!a.document.fonts); + return H; + } + function N(a, c) { + var b = a.style, g = a.weight; + if (null === G) { + var e = document.createElement("div"); + try { + e.style.font = "condensed 100px sans-serif"; + } catch (q) { + } + G = "" !== e.style.font; + } + return [b, g, G ? a.stretch : "", "100px", c].join(" "); + } + D.prototype.load = function(a, c) { + var b = this, g = a || "BESbswy", e = 0, q = c || 3e3, J = (/* @__PURE__ */ new Date()).getTime(); + return new Promise(function(K, L) { + if (M(b.context) && !I(b.context)) { + var O = new Promise(function(r, t) { + function h() { + (/* @__PURE__ */ new Date()).getTime() - J >= q ? t(Error("" + q + "ms timeout exceeded")) : b.context.document.fonts.load(N(b, '"' + b.family + '"'), g).then(function(n) { + 1 <= n.length ? r() : setTimeout(h, 25); + }, t); + } + h(); + }), P = new Promise(function(r, t) { + e = setTimeout(function() { + t(Error("" + q + "ms timeout exceeded")); + }, q); + }); + Promise.race([P, O]).then(function() { + clearTimeout(e); + K(b); + }, L); + } else u(function() { + function r() { + var d; + if (d = -1 != k && -1 != l || -1 != k && -1 != m || -1 != l && -1 != m) (d = k != l && k != m && l != m) || (null === E && (d = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent), E = !!d && (536 > parseInt(d[1], 10) || 536 === parseInt(d[1], 10) && 11 >= parseInt(d[2], 10))), d = E && (k == y && l == y && m == y || k == z && l == z && m == z || k == A && l == A && m == A)), d = !d; + d && (null !== f.parentNode && f.parentNode.removeChild(f), clearTimeout(e), K(b)); + } + function t() { + if ((/* @__PURE__ */ new Date()).getTime() - J >= q) null !== f.parentNode && f.parentNode.removeChild(f), L(Error("" + q + "ms timeout exceeded")); + else { + var d = b.context.document.hidden; + if (true === d || void 0 === d) k = h.g.offsetWidth, l = n.g.offsetWidth, m = v.g.offsetWidth, r(); + e = setTimeout(t, 50); + } + } + var h = new w(g), n = new w(g), v = new w(g), k = -1, l = -1, m = -1, y = -1, z = -1, A = -1, f = document.createElement("div"); + f.dir = "ltr"; + x(h, N(b, "sans-serif")); + x(n, N(b, "serif")); + x(v, N(b, "monospace")); + f.appendChild(h.g); + f.appendChild(n.g); + f.appendChild(v.g); + b.context.document.body.appendChild(f); + y = h.g.offsetWidth; + z = n.g.offsetWidth; + A = v.g.offsetWidth; + t(); + C(h, function(d) { + k = d; + r(); + }); + x(h, N(b, '"' + b.family + '",sans-serif')); + C(n, function(d) { + l = d; + r(); + }); + x(n, N(b, '"' + b.family + '",serif')); + C(v, function(d) { + m = d; + r(); + }); + x(v, N(b, '"' + b.family + '",monospace')); + }); + }); + }; + module.exports = D; + })(); + })(fontfaceobserver_standalone); + return fontfaceobserver_standalone.exports; +} +var _freeGlobal; +var hasRequired_freeGlobal; +function require_freeGlobal() { + if (hasRequired_freeGlobal) return _freeGlobal; + hasRequired_freeGlobal = 1; + var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + _freeGlobal = freeGlobal; + return _freeGlobal; +} +var _root; +var hasRequired_root; +function require_root() { + if (hasRequired_root) return _root; + hasRequired_root = 1; + var freeGlobal = require_freeGlobal(); + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function("return this")(); + _root = root; + return _root; +} +var _Symbol; +var hasRequired_Symbol; +function require_Symbol() { + if (hasRequired_Symbol) return _Symbol; + hasRequired_Symbol = 1; + var root = require_root(); + var Symbol2 = root.Symbol; + _Symbol = Symbol2; + return _Symbol; +} +var _getRawTag; +var hasRequired_getRawTag; +function require_getRawTag() { + if (hasRequired_getRawTag) return _getRawTag; + hasRequired_getRawTag = 1; + var Symbol2 = require_Symbol(); + var objectProto = Object.prototype; + var hasOwnProperty2 = objectProto.hasOwnProperty; + var nativeObjectToString = objectProto.toString; + var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0; + function getRawTag(value) { + var isOwn = hasOwnProperty2.call(value, symToStringTag), tag = value[symToStringTag]; + try { + value[symToStringTag] = void 0; + var unmasked = true; + } catch (e) { + } + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + _getRawTag = getRawTag; + return _getRawTag; +} +var _objectToString; +var hasRequired_objectToString; +function require_objectToString() { + if (hasRequired_objectToString) return _objectToString; + hasRequired_objectToString = 1; + var objectProto = Object.prototype; + var nativeObjectToString = objectProto.toString; + function objectToString2(value) { + return nativeObjectToString.call(value); + } + _objectToString = objectToString2; + return _objectToString; +} +var _baseGetTag; +var hasRequired_baseGetTag; +function require_baseGetTag() { + if (hasRequired_baseGetTag) return _baseGetTag; + hasRequired_baseGetTag = 1; + var Symbol2 = require_Symbol(), getRawTag = require_getRawTag(), objectToString2 = require_objectToString(); + var nullTag = "[object Null]", undefinedTag = "[object Undefined]"; + var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0; + function baseGetTag(value) { + if (value == null) { + return value === void 0 ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString2(value); + } + _baseGetTag = baseGetTag; + return _baseGetTag; +} +var isObject_1; +var hasRequiredIsObject; +function requireIsObject() { + if (hasRequiredIsObject) return isObject_1; + hasRequiredIsObject = 1; + function isObject2(value) { + var type = typeof value; + return value != null && (type == "object" || type == "function"); + } + isObject_1 = isObject2; + return isObject_1; +} +var isFunction_1; +var hasRequiredIsFunction; +function requireIsFunction() { + if (hasRequiredIsFunction) return isFunction_1; + hasRequiredIsFunction = 1; + var baseGetTag = require_baseGetTag(), isObject2 = requireIsObject(); + var asyncTag = "[object AsyncFunction]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", proxyTag = "[object Proxy]"; + function isFunction2(value) { + if (!isObject2(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + isFunction_1 = isFunction2; + return isFunction_1; +} +var _coreJsData; +var hasRequired_coreJsData; +function require_coreJsData() { + if (hasRequired_coreJsData) return _coreJsData; + hasRequired_coreJsData = 1; + var root = require_root(); + var coreJsData = root["__core-js_shared__"]; + _coreJsData = coreJsData; + return _coreJsData; +} +var _isMasked; +var hasRequired_isMasked; +function require_isMasked() { + if (hasRequired_isMasked) return _isMasked; + hasRequired_isMasked = 1; + var coreJsData = require_coreJsData(); + var maskSrcKey = (function() { + var uid2 = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid2 ? "Symbol(src)_1." + uid2 : ""; + })(); + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + _isMasked = isMasked; + return _isMasked; +} +var _toSource; +var hasRequired_toSource; +function require_toSource() { + if (hasRequired_toSource) return _toSource; + hasRequired_toSource = 1; + var funcProto = Function.prototype; + var funcToString = funcProto.toString; + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) { + } + try { + return func + ""; + } catch (e) { + } + } + return ""; + } + _toSource = toSource; + return _toSource; +} +var _baseIsNative; +var hasRequired_baseIsNative; +function require_baseIsNative() { + if (hasRequired_baseIsNative) return _baseIsNative; + hasRequired_baseIsNative = 1; + var isFunction2 = requireIsFunction(), isMasked = require_isMasked(), isObject2 = requireIsObject(), toSource = require_toSource(); + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var funcProto = Function.prototype, objectProto = Object.prototype; + var funcToString = funcProto.toString; + var hasOwnProperty2 = objectProto.hasOwnProperty; + var reIsNative = RegExp( + "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + function baseIsNative(value) { + if (!isObject2(value) || isMasked(value)) { + return false; + } + var pattern = isFunction2(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + _baseIsNative = baseIsNative; + return _baseIsNative; +} +var _getValue; +var hasRequired_getValue; +function require_getValue() { + if (hasRequired_getValue) return _getValue; + hasRequired_getValue = 1; + function getValue(object, key) { + return object == null ? void 0 : object[key]; + } + _getValue = getValue; + return _getValue; +} +var _getNative; +var hasRequired_getNative; +function require_getNative() { + if (hasRequired_getNative) return _getNative; + hasRequired_getNative = 1; + var baseIsNative = require_baseIsNative(), getValue = require_getValue(); + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : void 0; + } + _getNative = getNative; + return _getNative; +} +var _nativeCreate; +var hasRequired_nativeCreate; +function require_nativeCreate() { + if (hasRequired_nativeCreate) return _nativeCreate; + hasRequired_nativeCreate = 1; + var getNative = require_getNative(); + var nativeCreate = getNative(Object, "create"); + _nativeCreate = nativeCreate; + return _nativeCreate; +} +var _hashClear; +var hasRequired_hashClear; +function require_hashClear() { + if (hasRequired_hashClear) return _hashClear; + hasRequired_hashClear = 1; + var nativeCreate = require_nativeCreate(); + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + _hashClear = hashClear; + return _hashClear; +} +var _hashDelete; +var hasRequired_hashDelete; +function require_hashDelete() { + if (hasRequired_hashDelete) return _hashDelete; + hasRequired_hashDelete = 1; + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + _hashDelete = hashDelete; + return _hashDelete; +} +var _hashGet; +var hasRequired_hashGet; +function require_hashGet() { + if (hasRequired_hashGet) return _hashGet; + hasRequired_hashGet = 1; + var nativeCreate = require_nativeCreate(); + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + var objectProto = Object.prototype; + var hasOwnProperty2 = objectProto.hasOwnProperty; + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? void 0 : result; + } + return hasOwnProperty2.call(data, key) ? data[key] : void 0; + } + _hashGet = hashGet; + return _hashGet; +} +var _hashHas; +var hasRequired_hashHas; +function require_hashHas() { + if (hasRequired_hashHas) return _hashHas; + hasRequired_hashHas = 1; + var nativeCreate = require_nativeCreate(); + var objectProto = Object.prototype; + var hasOwnProperty2 = objectProto.hasOwnProperty; + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== void 0 : hasOwnProperty2.call(data, key); + } + _hashHas = hashHas; + return _hashHas; +} +var _hashSet; +var hasRequired_hashSet; +function require_hashSet() { + if (hasRequired_hashSet) return _hashSet; + hasRequired_hashSet = 1; + var nativeCreate = require_nativeCreate(); + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value; + return this; + } + _hashSet = hashSet; + return _hashSet; +} +var _Hash; +var hasRequired_Hash; +function require_Hash() { + if (hasRequired_Hash) return _Hash; + hasRequired_Hash = 1; + var hashClear = require_hashClear(), hashDelete = require_hashDelete(), hashGet = require_hashGet(), hashHas = require_hashHas(), hashSet = require_hashSet(); + function Hash(entries) { + var index2 = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index2 < length) { + var entry = entries[index2]; + this.set(entry[0], entry[1]); + } + } + Hash.prototype.clear = hashClear; + Hash.prototype["delete"] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + _Hash = Hash; + return _Hash; +} +var _listCacheClear; +var hasRequired_listCacheClear; +function require_listCacheClear() { + if (hasRequired_listCacheClear) return _listCacheClear; + hasRequired_listCacheClear = 1; + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + _listCacheClear = listCacheClear; + return _listCacheClear; +} +var eq_1; +var hasRequiredEq; +function requireEq() { + if (hasRequiredEq) return eq_1; + hasRequiredEq = 1; + function eq(value, other) { + return value === other || value !== value && other !== other; + } + eq_1 = eq; + return eq_1; +} +var _assocIndexOf; +var hasRequired_assocIndexOf; +function require_assocIndexOf() { + if (hasRequired_assocIndexOf) return _assocIndexOf; + hasRequired_assocIndexOf = 1; + var eq = requireEq(); + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + _assocIndexOf = assocIndexOf; + return _assocIndexOf; +} +var _listCacheDelete; +var hasRequired_listCacheDelete; +function require_listCacheDelete() { + if (hasRequired_listCacheDelete) return _listCacheDelete; + hasRequired_listCacheDelete = 1; + var assocIndexOf = require_assocIndexOf(); + var arrayProto2 = Array.prototype; + var splice = arrayProto2.splice; + function listCacheDelete(key) { + var data = this.__data__, index2 = assocIndexOf(data, key); + if (index2 < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index2 == lastIndex) { + data.pop(); + } else { + splice.call(data, index2, 1); + } + --this.size; + return true; + } + _listCacheDelete = listCacheDelete; + return _listCacheDelete; +} +var _listCacheGet; +var hasRequired_listCacheGet; +function require_listCacheGet() { + if (hasRequired_listCacheGet) return _listCacheGet; + hasRequired_listCacheGet = 1; + var assocIndexOf = require_assocIndexOf(); + function listCacheGet(key) { + var data = this.__data__, index2 = assocIndexOf(data, key); + return index2 < 0 ? void 0 : data[index2][1]; + } + _listCacheGet = listCacheGet; + return _listCacheGet; +} +var _listCacheHas; +var hasRequired_listCacheHas; +function require_listCacheHas() { + if (hasRequired_listCacheHas) return _listCacheHas; + hasRequired_listCacheHas = 1; + var assocIndexOf = require_assocIndexOf(); + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + _listCacheHas = listCacheHas; + return _listCacheHas; +} +var _listCacheSet; +var hasRequired_listCacheSet; +function require_listCacheSet() { + if (hasRequired_listCacheSet) return _listCacheSet; + hasRequired_listCacheSet = 1; + var assocIndexOf = require_assocIndexOf(); + function listCacheSet(key, value) { + var data = this.__data__, index2 = assocIndexOf(data, key); + if (index2 < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index2][1] = value; + } + return this; + } + _listCacheSet = listCacheSet; + return _listCacheSet; +} +var _ListCache; +var hasRequired_ListCache; +function require_ListCache() { + if (hasRequired_ListCache) return _ListCache; + hasRequired_ListCache = 1; + var listCacheClear = require_listCacheClear(), listCacheDelete = require_listCacheDelete(), listCacheGet = require_listCacheGet(), listCacheHas = require_listCacheHas(), listCacheSet = require_listCacheSet(); + function ListCache(entries) { + var index2 = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index2 < length) { + var entry = entries[index2]; + this.set(entry[0], entry[1]); + } + } + ListCache.prototype.clear = listCacheClear; + ListCache.prototype["delete"] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + _ListCache = ListCache; + return _ListCache; +} +var _Map; +var hasRequired_Map; +function require_Map() { + if (hasRequired_Map) return _Map; + hasRequired_Map = 1; + var getNative = require_getNative(), root = require_root(); + var Map2 = getNative(root, "Map"); + _Map = Map2; + return _Map; +} +var _mapCacheClear; +var hasRequired_mapCacheClear; +function require_mapCacheClear() { + if (hasRequired_mapCacheClear) return _mapCacheClear; + hasRequired_mapCacheClear = 1; + var Hash = require_Hash(), ListCache = require_ListCache(), Map2 = require_Map(); + function mapCacheClear() { + this.size = 0; + this.__data__ = { + "hash": new Hash(), + "map": new (Map2 || ListCache)(), + "string": new Hash() + }; + } + _mapCacheClear = mapCacheClear; + return _mapCacheClear; +} +var _isKeyable; +var hasRequired_isKeyable; +function require_isKeyable() { + if (hasRequired_isKeyable) return _isKeyable; + hasRequired_isKeyable = 1; + function isKeyable(value) { + var type = typeof value; + return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; + } + _isKeyable = isKeyable; + return _isKeyable; +} +var _getMapData; +var hasRequired_getMapData; +function require_getMapData() { + if (hasRequired_getMapData) return _getMapData; + hasRequired_getMapData = 1; + var isKeyable = require_isKeyable(); + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; + } + _getMapData = getMapData; + return _getMapData; +} +var _mapCacheDelete; +var hasRequired_mapCacheDelete; +function require_mapCacheDelete() { + if (hasRequired_mapCacheDelete) return _mapCacheDelete; + hasRequired_mapCacheDelete = 1; + var getMapData = require_getMapData(); + function mapCacheDelete(key) { + var result = getMapData(this, key)["delete"](key); + this.size -= result ? 1 : 0; + return result; + } + _mapCacheDelete = mapCacheDelete; + return _mapCacheDelete; +} +var _mapCacheGet; +var hasRequired_mapCacheGet; +function require_mapCacheGet() { + if (hasRequired_mapCacheGet) return _mapCacheGet; + hasRequired_mapCacheGet = 1; + var getMapData = require_getMapData(); + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + _mapCacheGet = mapCacheGet; + return _mapCacheGet; +} +var _mapCacheHas; +var hasRequired_mapCacheHas; +function require_mapCacheHas() { + if (hasRequired_mapCacheHas) return _mapCacheHas; + hasRequired_mapCacheHas = 1; + var getMapData = require_getMapData(); + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + _mapCacheHas = mapCacheHas; + return _mapCacheHas; +} +var _mapCacheSet; +var hasRequired_mapCacheSet; +function require_mapCacheSet() { + if (hasRequired_mapCacheSet) return _mapCacheSet; + hasRequired_mapCacheSet = 1; + var getMapData = require_getMapData(); + function mapCacheSet(key, value) { + var data = getMapData(this, key), size = data.size; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + _mapCacheSet = mapCacheSet; + return _mapCacheSet; +} +var _MapCache; +var hasRequired_MapCache; +function require_MapCache() { + if (hasRequired_MapCache) return _MapCache; + hasRequired_MapCache = 1; + var mapCacheClear = require_mapCacheClear(), mapCacheDelete = require_mapCacheDelete(), mapCacheGet = require_mapCacheGet(), mapCacheHas = require_mapCacheHas(), mapCacheSet = require_mapCacheSet(); + function MapCache(entries) { + var index2 = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index2 < length) { + var entry = entries[index2]; + this.set(entry[0], entry[1]); + } + } + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype["delete"] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + _MapCache = MapCache; + return _MapCache; +} +var _setCacheAdd; +var hasRequired_setCacheAdd; +function require_setCacheAdd() { + if (hasRequired_setCacheAdd) return _setCacheAdd; + hasRequired_setCacheAdd = 1; + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + _setCacheAdd = setCacheAdd; + return _setCacheAdd; +} +var _setCacheHas; +var hasRequired_setCacheHas; +function require_setCacheHas() { + if (hasRequired_setCacheHas) return _setCacheHas; + hasRequired_setCacheHas = 1; + function setCacheHas(value) { + return this.__data__.has(value); + } + _setCacheHas = setCacheHas; + return _setCacheHas; +} +var _SetCache; +var hasRequired_SetCache; +function require_SetCache() { + if (hasRequired_SetCache) return _SetCache; + hasRequired_SetCache = 1; + var MapCache = require_MapCache(), setCacheAdd = require_setCacheAdd(), setCacheHas = require_setCacheHas(); + function SetCache(values) { + var index2 = -1, length = values == null ? 0 : values.length; + this.__data__ = new MapCache(); + while (++index2 < length) { + this.add(values[index2]); + } + } + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + _SetCache = SetCache; + return _SetCache; +} +var _baseFindIndex; +var hasRequired_baseFindIndex; +function require_baseFindIndex() { + if (hasRequired_baseFindIndex) return _baseFindIndex; + hasRequired_baseFindIndex = 1; + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, index2 = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index2-- : ++index2 < length) { + if (predicate(array[index2], index2, array)) { + return index2; + } + } + return -1; + } + _baseFindIndex = baseFindIndex; + return _baseFindIndex; +} +var _baseIsNaN; +var hasRequired_baseIsNaN; +function require_baseIsNaN() { + if (hasRequired_baseIsNaN) return _baseIsNaN; + hasRequired_baseIsNaN = 1; + function baseIsNaN(value) { + return value !== value; + } + _baseIsNaN = baseIsNaN; + return _baseIsNaN; +} +var _strictIndexOf; +var hasRequired_strictIndexOf; +function require_strictIndexOf() { + if (hasRequired_strictIndexOf) return _strictIndexOf; + hasRequired_strictIndexOf = 1; + function strictIndexOf(array, value, fromIndex) { + var index2 = fromIndex - 1, length = array.length; + while (++index2 < length) { + if (array[index2] === value) { + return index2; + } + } + return -1; + } + _strictIndexOf = strictIndexOf; + return _strictIndexOf; +} +var _baseIndexOf; +var hasRequired_baseIndexOf; +function require_baseIndexOf() { + if (hasRequired_baseIndexOf) return _baseIndexOf; + hasRequired_baseIndexOf = 1; + var baseFindIndex = require_baseFindIndex(), baseIsNaN = require_baseIsNaN(), strictIndexOf = require_strictIndexOf(); + function baseIndexOf(array, value, fromIndex) { + return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); + } + _baseIndexOf = baseIndexOf; + return _baseIndexOf; +} +var _arrayIncludes; +var hasRequired_arrayIncludes; +function require_arrayIncludes() { + if (hasRequired_arrayIncludes) return _arrayIncludes; + hasRequired_arrayIncludes = 1; + var baseIndexOf = require_baseIndexOf(); + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + _arrayIncludes = arrayIncludes; + return _arrayIncludes; +} +var _arrayIncludesWith; +var hasRequired_arrayIncludesWith; +function require_arrayIncludesWith() { + if (hasRequired_arrayIncludesWith) return _arrayIncludesWith; + hasRequired_arrayIncludesWith = 1; + function arrayIncludesWith(array, value, comparator) { + var index2 = -1, length = array == null ? 0 : array.length; + while (++index2 < length) { + if (comparator(value, array[index2])) { + return true; + } + } + return false; + } + _arrayIncludesWith = arrayIncludesWith; + return _arrayIncludesWith; +} +var _cacheHas; +var hasRequired_cacheHas; +function require_cacheHas() { + if (hasRequired_cacheHas) return _cacheHas; + hasRequired_cacheHas = 1; + function cacheHas(cache, key) { + return cache.has(key); + } + _cacheHas = cacheHas; + return _cacheHas; +} +var _Set; +var hasRequired_Set; +function require_Set() { + if (hasRequired_Set) return _Set; + hasRequired_Set = 1; + var getNative = require_getNative(), root = require_root(); + var Set2 = getNative(root, "Set"); + _Set = Set2; + return _Set; +} +var noop_1; +var hasRequiredNoop; +function requireNoop() { + if (hasRequiredNoop) return noop_1; + hasRequiredNoop = 1; + function noop() { + } + noop_1 = noop; + return noop_1; +} +var _setToArray; +var hasRequired_setToArray; +function require_setToArray() { + if (hasRequired_setToArray) return _setToArray; + hasRequired_setToArray = 1; + function setToArray(set) { + var index2 = -1, result = Array(set.size); + set.forEach(function(value) { + result[++index2] = value; + }); + return result; + } + _setToArray = setToArray; + return _setToArray; +} +var _createSet; +var hasRequired_createSet; +function require_createSet() { + if (hasRequired_createSet) return _createSet; + hasRequired_createSet = 1; + var Set2 = require_Set(), noop = requireNoop(), setToArray = require_setToArray(); + var INFINITY = 1 / 0; + var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values) { + return new Set2(values); + }; + _createSet = createSet; + return _createSet; +} +var _baseUniq; +var hasRequired_baseUniq; +function require_baseUniq() { + if (hasRequired_baseUniq) return _baseUniq; + hasRequired_baseUniq = 1; + var SetCache = require_SetCache(), arrayIncludes = require_arrayIncludes(), arrayIncludesWith = require_arrayIncludesWith(), cacheHas = require_cacheHas(), createSet = require_createSet(), setToArray = require_setToArray(); + var LARGE_ARRAY_SIZE = 200; + function baseUniq(array, iteratee, comparator) { + var index2 = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result; + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache(); + } else { + seen = iteratee ? [] : result; + } + outer: + while (++index2 < length) { + var value = array[index2], computed2 = iteratee ? iteratee(value) : value; + value = comparator || value !== 0 ? value : 0; + if (isCommon && computed2 === computed2) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed2) { + continue outer; + } + } + if (iteratee) { + seen.push(computed2); + } + result.push(value); + } else if (!includes(seen, computed2, comparator)) { + if (seen !== result) { + seen.push(computed2); + } + result.push(value); + } + } + return result; + } + _baseUniq = baseUniq; + return _baseUniq; +} +var uniq_1; +var hasRequiredUniq; +function requireUniq() { + if (hasRequiredUniq) return uniq_1; + hasRequiredUniq = 1; + var baseUniq = require_baseUniq(); + function uniq(array) { + return array && array.length ? baseUniq(array) : []; + } + uniq_1 = uniq; + return uniq_1; +} +var hasRequiredDist; +function requireDist() { + if (hasRequiredDist) return dist; + hasRequiredDist = 1; + (function(exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1["default"] = void 0; + var _fontfaceobserver = _interopRequireDefault(requireFontfaceobserver_standalone()); + var _uniq2 = _interopRequireDefault(requireUniq()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var resolveWeights = function resolveWeights2(font) { + var declared = font.weights || []; + var single = font.weight ? [font.weight] : []; + var all = (0, _uniq2["default"])(declared.concat(single)); + return all.length ? all : [400]; + }; + var resolveStyles = function resolveStyles2(font) { + var declared = font.styles || []; + var single = font.style ? [font.style] : []; + var all = (0, _uniq2["default"])(declared.concat(single)); + return all.length ? all : ["normal"]; + }; + var _default = function _default2(ops) { + var fonts = Array.isArray(ops) ? ops : [ops]; + var families = []; + fonts.forEach(function(font) { + var weights = resolveWeights(font); + var styles = resolveStyles(font); + weights.forEach(function(weight) { + styles.forEach(function(style) { + families.push({ name: font.name, weight, style }); + }); + }); + }); + return Promise.all(families.map(function(fam) { + var font = new _fontfaceobserver["default"](fam.name, { weight: fam.weight, style: fam.style }); + return font.load(); + })); + }; + exports$1["default"] = _default; + })(dist); + return dist; +} +var distExports = requireDist(); +const loadFonts = /* @__PURE__ */ getDefaultExportFromCjs(distExports); +const localProvidedStateMap = /* @__PURE__ */ new WeakMap(); +const injectLocal = /* @__NO_SIDE_EFFECTS__ */ (...args) => { + var _getCurrentInstance; + const key = args[0]; + const instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy; + const owner = instance !== null && instance !== void 0 ? instance : getCurrentScope(); + if (owner == null && !hasInjectionContext()) throw new Error("injectLocal must be called in setup"); + if (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key]; + return inject(...args); +}; +const isClient = typeof window !== "undefined" && typeof document !== "undefined"; +typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope; +const toString = Object.prototype.toString; +const isObject = (val) => toString.call(val) === "[object Object]"; +function pxValue(px) { + return px.endsWith("rem") ? Number.parseFloat(px) * 16 : Number.parseFloat(px); +} +function toArray(value) { + return Array.isArray(value) ? value : [value]; +} +function getLifeCycleTarget(target) { + return getCurrentInstance(); +} +function tryOnMounted(fn, sync = true, target) { + if (getLifeCycleTarget()) onMounted(fn, target); + else if (sync) fn(); + else nextTick(fn); +} +function watchImmediate(source, cb, options) { + return watch(source, cb, { + ...options, + immediate: true + }); +} +const defaultWindow = isClient ? window : void 0; +function unrefElement(elRef) { + var _$el; + const plain = toValue(elRef); + return (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain; +} +function useEventListener(...args) { + const register = (el, event, listener, options) => { + el.addEventListener(event, listener, options); + return () => el.removeEventListener(event, listener, options); + }; + const firstParamTargets = computed(() => { + const test = toArray(toValue(args[0])).filter((e) => e != null); + return test.every((e) => typeof e !== "string") ? test : void 0; + }); + return watchImmediate(() => { + var _firstParamTargets$va, _firstParamTargets$va2; + return [ + (_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null), + toArray(toValue(firstParamTargets.value ? args[1] : args[0])), + toArray(unref(firstParamTargets.value ? args[2] : args[1])), + toValue(firstParamTargets.value ? args[3] : args[2]) + ]; + }, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => { + if (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return; + const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options; + const cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone)))); + onCleanup(() => { + cleanups.forEach((fn) => fn()); + }); + }, { flush: "post" }); +} +// @__NO_SIDE_EFFECTS__ +function useMounted() { + const isMounted = /* @__PURE__ */ shallowRef(false); + const instance = getCurrentInstance(); + if (instance) onMounted(() => { + isMounted.value = true; + }, instance); + return isMounted; +} +// @__NO_SIDE_EFFECTS__ +function useSupported(callback) { + const isMounted = /* @__PURE__ */ useMounted(); + return computed(() => { + isMounted.value; + return Boolean(callback()); + }); +} +const ssrWidthSymbol = /* @__PURE__ */ Symbol("vueuse-ssr-width"); +// @__NO_SIDE_EFFECTS__ +function useSSRWidth() { + const ssrWidth = hasInjectionContext() ? /* @__PURE__ */ injectLocal(ssrWidthSymbol, null) : null; + return typeof ssrWidth === "number" ? ssrWidth : void 0; +} +function useMediaQuery(query, options = {}) { + const { window: window$1 = defaultWindow, ssrWidth = /* @__PURE__ */ useSSRWidth() } = options; + const isSupported = /* @__PURE__ */ useSupported(() => window$1 && "matchMedia" in window$1 && typeof window$1.matchMedia === "function"); + const ssrSupport = /* @__PURE__ */ shallowRef(typeof ssrWidth === "number"); + const mediaQuery = /* @__PURE__ */ shallowRef(); + const matches = /* @__PURE__ */ shallowRef(false); + const handler = (event) => { + matches.value = event.matches; + }; + watchEffect(() => { + if (ssrSupport.value) { + ssrSupport.value = !isSupported.value; + matches.value = toValue(query).split(",").some((queryString) => { + const not = queryString.includes("not all"); + const minWidth = queryString.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/); + const maxWidth = queryString.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/); + let res = Boolean(minWidth || maxWidth); + if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]); + if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]); + return not ? !res : res; + }); + return; + } + if (!isSupported.value) return; + mediaQuery.value = window$1.matchMedia(toValue(query)); + matches.value = mediaQuery.value.matches; + }); + useEventListener(mediaQuery, "change", handler, { passive: true }); + return computed(() => matches.value); +} +// @__NO_SIDE_EFFECTS__ +function useWindowSize(options = {}) { + const { window: window$1 = defaultWindow, initialWidth = Number.POSITIVE_INFINITY, initialHeight = Number.POSITIVE_INFINITY, listenOrientation = true, includeScrollbar = true, type = "inner" } = options; + const width = /* @__PURE__ */ shallowRef(initialWidth); + const height = /* @__PURE__ */ shallowRef(initialHeight); + const update = () => { + if (window$1) if (type === "outer") { + width.value = window$1.outerWidth; + height.value = window$1.outerHeight; + } else if (type === "visual" && window$1.visualViewport) { + const { width: visualViewportWidth, height: visualViewportHeight, scale } = window$1.visualViewport; + width.value = Math.round(visualViewportWidth * scale); + height.value = Math.round(visualViewportHeight * scale); + } else if (includeScrollbar) { + width.value = window$1.innerWidth; + height.value = window$1.innerHeight; + } else { + width.value = window$1.document.documentElement.clientWidth; + height.value = window$1.document.documentElement.clientHeight; + } + }; + update(); + tryOnMounted(update); + const listenerOptions2 = { passive: true }; + useEventListener("resize", update, listenerOptions2); + if (window$1 && type === "visual" && window$1.visualViewport) useEventListener(window$1.visualViewport, "resize", update, listenerOptions2); + if (listenOrientation) watch(useMediaQuery("(orientation: portrait)"), () => update()); + return { + width, + height + }; +} const _sfc_main = { __name: "App", setup(__props) { - const ipcHandle = () => window.electron.ipcRenderer.send("ping"); + const { height } = /* @__PURE__ */ useWindowSize(); + const classes = computed(() => [ + "container", + { "fonts-ready": !fontsLoading.value }, + "theme-dark" + ]); + const fontsLoading = /* @__PURE__ */ ref(true); + onMounted(async () => { + loadFonts([ + { + name: "Leibniz Fraktur", + weights: [400] + }, + { + name: "Geist Mono", + weights: [400, 700] + } + ]).then(() => { + fontsLoading.value = false; + }).catch(() => { + fontsLoading.value = false; + }); + }); + const styles = computed(() => ({ + "--vh": height.value ? height.value / 100 + "px" : "100vh" + })); return (_ctx, _cache) => { - return openBlock(), createElementBlock(Fragment, null, [ - _cache[1] || (_cache[1] = createStaticVNode('Please try pressing F12 to open the devTool
Lorem ipsum
-