From b89d41e47a06c3f4b60898bdf4b09549e6569e34 Mon Sep 17 00:00:00 2001 From: nicwands Date: Mon, 16 Feb 2026 14:40:57 -0500 Subject: [PATCH] editor WIP --- electron.vite.config.mjs | 12 +- out/main/index.js | 4 +- out/renderer/assets/electron-DtwWEc_u.svg | 10 - out/renderer/assets/geist-mono-BzrJhchg.woff2 | Bin 0 -> 29352 bytes out/renderer/assets/geist-mono-OFKGen7b.woff | Bin 0 -> 39348 bytes .../assets/geist-mono-bold-Bz_UliG4.woff | Bin 0 -> 40668 bytes .../assets/geist-mono-bold-CTLtpKvJ.woff2 | Bin 0 -> 30592 bytes out/renderer/assets/index-BBQ3KGTF.css | 593 ++++ out/renderer/assets/index-BVu-w-qc.css | 229 -- .../{index-C32vEYfn.js => index-Ce8ZPAlb.js} | 2882 ++++++++++++++++- .../assets/leibniz-fraktur-BqdMSuEI.woff2 | Bin 0 -> 21272 bytes .../assets/leibniz-fraktur-CvnkUeBX.woff | Bin 0 -> 24404 bytes out/renderer/index.html | 4 +- package-lock.json | 827 ++++- package.json | 6 + src/main/index.js | 94 +- src/renderer/src/App.vue | 6 +- src/renderer/src/components/editor/Index.vue | 201 ++ src/renderer/src/components/svg/icon/Hr.vue | 10 + src/renderer/src/libs/theme.js | 15 +- src/renderer/src/styles/_font-style.scss | 32 +- src/renderer/src/styles/_functions.scss | 18 +- src/renderer/src/styles/main.scss | 63 +- 23 files changed, 4495 insertions(+), 511 deletions(-) delete mode 100644 out/renderer/assets/electron-DtwWEc_u.svg create mode 100644 out/renderer/assets/geist-mono-BzrJhchg.woff2 create mode 100644 out/renderer/assets/geist-mono-OFKGen7b.woff create mode 100644 out/renderer/assets/geist-mono-bold-Bz_UliG4.woff create mode 100644 out/renderer/assets/geist-mono-bold-CTLtpKvJ.woff2 create mode 100644 out/renderer/assets/index-BBQ3KGTF.css delete mode 100644 out/renderer/assets/index-BVu-w-qc.css rename out/renderer/assets/{index-C32vEYfn.js => index-Ce8ZPAlb.js} (66%) create mode 100644 out/renderer/assets/leibniz-fraktur-BqdMSuEI.woff2 create mode 100644 out/renderer/assets/leibniz-fraktur-CvnkUeBX.woff create mode 100644 src/renderer/src/components/editor/Index.vue create mode 100644 src/renderer/src/components/svg/icon/Hr.vue 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 0000000000000000000000000000000000000000..acf07fc933cbe68d391208c3f8a3d7d5fe7f4dfd GIT binary patch literal 29352 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%0Di%n&}4QCYMHk^tU?kX?ah0+8xG(%fH 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 literal 0 HcmV?d00001 diff --git a/out/renderer/assets/geist-mono-OFKGen7b.woff b/out/renderer/assets/geist-mono-OFKGen7b.woff new file mode 100644 index 0000000000000000000000000000000000000000..5d71b23118a4a61f6208cf8e03bfa33988223142 GIT binary patch literal 39348 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ǔ)dH9C&b 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ecaceab9fa7be043422ce57e7481e29c9be4d4f7 GIT binary patch literal 40668 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 E0PGqU)Bpeg literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c44b8fd3a20832bb83ff4be85d917abb8f2feac2 GIT binary patch literal 30592 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 literal 0 HcmV?d00001 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('
Powered by electron-vite
Build an Electron app with Vue

Please try pressing F12 to open the devTool

', 4)), - createBaseVNode("div", { class: "actions" }, [ - _cache[0] || (_cache[0] = createBaseVNode("div", { class: "action" }, [ - createBaseVNode("a", { - href: "https://electron-vite.org/", - target: "_blank", - rel: "noreferrer" - }, "Documentation") - ], -1)), - createBaseVNode("div", { class: "action" }, [ - createBaseVNode("a", { - target: "_blank", - rel: "noreferrer", - onClick: ipcHandle - }, "Send IPC") - ]) + return openBlock(), createBlock(_sfc_main$1, { + root: "", + options: { duration: 1 } + }, { + default: withCtx(() => [ + createBaseVNode("div", { + class: normalizeClass(classes.value), + style: normalizeStyle(styles.value) + }, [..._cache[0] || (_cache[0] = [ + createBaseVNode("main", { class: "layout-block" }, [ + createBaseVNode("h1", null, "Taker of Notes"), + createBaseVNode("p", null, "Lorem ipsum") + ], -1) + ])], 6) ]), - createVNode(_sfc_main$1) - ], 64); + _: 1 + }); }; } }; diff --git a/out/renderer/assets/leibniz-fraktur-BqdMSuEI.woff2 b/out/renderer/assets/leibniz-fraktur-BqdMSuEI.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6cfc0efa452a30e96c93fd69df99f861edf4a0ad GIT binary patch literal 21272 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 TUoN=lk|M=QbQ`ZpiwT$tokC9d literal 0 HcmV?d00001 diff --git a/out/renderer/assets/leibniz-fraktur-CvnkUeBX.woff b/out/renderer/assets/leibniz-fraktur-CvnkUeBX.woff new file mode 100644 index 0000000000000000000000000000000000000000..858cdd25044c83d8a16b2932a188b895ff296812 GIT binary patch literal 24404 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 literal 0 HcmV?d00001 diff --git a/out/renderer/index.html b/out/renderer/index.html index 02de093..ad3ee7b 100644 --- a/out/renderer/index.html +++ b/out/renderer/index.html @@ -8,8 +8,8 @@ http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:" /> - - + + diff --git a/package-lock.json b/package-lock.json index 33a3955..15bd55f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,12 @@ "@electron-toolkit/preload": "^3.0.2", "@electron-toolkit/utils": "^4.0.0", "@fuzzco/font-loader": "^1.0.2", + "@tiptap/extension-document": "^3.19.0", + "@tiptap/extension-image": "^3.19.0", + "@tiptap/extension-table": "^3.19.0", + "@tiptap/markdown": "^3.19.0", + "@tiptap/starter-kit": "^3.19.0", + "@tiptap/vue-3": "^3.19.0", "@vueuse/core": "^14.2.1", "electron-updater": "^6.3.9", "gsap": "^3.14.2", @@ -1225,6 +1231,31 @@ "node": ">=18" } }, + "node_modules/@floating-ui/core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz", + "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz", + "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.4", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, "node_modules/@fuzzco/font-loader": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@fuzzco/font-loader/-/font-loader-1.0.2.tgz", @@ -1748,6 +1779,12 @@ "node": ">=14" } }, + "node_modules/@remirror/core-constants": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", + "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", + "license": "MIT" + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", @@ -2129,6 +2166,477 @@ "node": ">=10" } }, + "node_modules/@tiptap/core": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.19.0.tgz", + "integrity": "sha512-bpqELwPW+DG8gWiD8iiFtSl4vIBooG5uVJod92Qxn3rA9nFatyXRr4kNbMJmOZ66ezUvmCjXVe/5/G4i5cyzKA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.19.0.tgz", + "integrity": "sha512-y3UfqY9KD5XwWz3ndiiJ089Ij2QKeiXy/g1/tlAN/F1AaWsnkHEHMLxCP1BIqmMpwsX7rZjMLN7G5Lp7c9682A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.19.0.tgz", + "integrity": "sha512-UZgb1d0XK4J/JRIZ7jW+s4S6KjuEDT2z1PPM6ugcgofgJkWQvRZelCPbmtSFd3kwsD+zr9UPVgTh9YIuGQ8t+Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.19.0.tgz", + "integrity": "sha512-klNVIYGCdznhFkrRokzGd6cwzoi8J7E5KbuOfZBwFwhMKZhlz/gJfKmYg9TJopeUhrr2Z9yHgWTk8dh/YIJCdQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.19.0.tgz", + "integrity": "sha512-F9uNnqd0xkJbMmRxVI5RuVxwB9JaCH/xtRqOUNQZnRBt7IdAElCY+Dvb4hMCtiNv+enGM/RFGJuFHR9TxmI7rw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.19.0.tgz", + "integrity": "sha512-2kqqQIXBXj2Or+4qeY3WoE7msK+XaHKL6EKOcKlOP2BW8eYqNTPzNSL+PfBDQ3snA7ljZQkTs/j4GYDj90vR1A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.19.0.tgz", + "integrity": "sha512-b/2qR+tMn8MQb+eaFYgVk4qXnLNkkRYmwELQ8LEtEDQPxa5Vl7J3eu8+4OyoIFhZrNDZvvoEp80kHMCP8sI6rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.19.0.tgz", + "integrity": "sha512-AOf0kHKSFO0ymjVgYSYDncRXTITdTcrj1tqxVazrmO60KNl1Rc2dAggDvIVTEBy5NvceF0scc7q3sE/5ZtVV7A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.19.0.tgz", + "integrity": "sha512-sf3dEZXiLvsGqVK2maUIzXY6qtYYCvBumag7+VPTMGQ0D4hiZ1X/4ukt4+6VXDg5R2WP1CoIt/QvUetUjWNhbQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extensions": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.19.0.tgz", + "integrity": "sha512-JaoEkVRkt+Slq3tySlIsxnMnCjS0L5n1CA1hctjLy0iah8edetj3XD5mVv5iKqDzE+LIjF4nwLRRVKJPc8hFBg==", + "license": "MIT", + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@floating-ui/dom": "^1.0.0", + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.19.0.tgz", + "integrity": "sha512-w7DACS4oSZaDWjz7gropZHPc9oXqC9yERZTcjWxyORuuIh1JFf0TRYspleK+OK28plK/IftojD/yUDn1MTRhvA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extensions": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.19.0.tgz", + "integrity": "sha512-lAmQraYhPS5hafvCl74xDB5+bLuNwBKIEsVoim35I0sDJj5nTrfhaZgMJ91VamMvT+6FF5f1dvBlxBxAWa8jew==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.19.0.tgz", + "integrity": "sha512-uLpLlfyp086WYNOc0ekm1gIZNlEDfmzOhKzB0Hbyi6jDagTS+p9mxUNYeYOn9jPUxpFov43+Wm/4E24oY6B+TQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.19.0.tgz", + "integrity": "sha512-iqUHmgMGhMgYGwG6L/4JdelVQ5Mstb4qHcgTGd/4dkcUOepILvhdxajPle7OEdf9sRgjQO6uoAU5BVZVC26+ng==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-image": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-3.19.0.tgz", + "integrity": "sha512-/rGl8nBziBPVJJ/9639eQWFDKcI3RQsDM3s+cqYQMFQfMqc7sQB9h4o4sHCBpmKxk3Y0FV/0NjnjLbBVm8OKdQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.19.0.tgz", + "integrity": "sha512-6GffxOnS/tWyCbDkirWNZITiXRta9wrCmrfa4rh+v32wfaOL1RRQNyqo9qN6Wjyl1R42Js+yXTzTTzZsOaLMYA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-link": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.19.0.tgz", + "integrity": "sha512-HEGDJnnCPfr7KWu7Dsq+eRRe/mBCsv6DuI+7fhOCLDJjjKzNgrX2abbo/zG3D/4lCVFaVb+qawgJubgqXR/Smw==", + "license": "MIT", + "dependencies": { + "linkifyjs": "^4.3.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-list": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.19.0.tgz", + "integrity": "sha512-N6nKbFB2VwMsPlCw67RlAtYSK48TAsAUgjnD+vd3ieSlIufdQnLXDFUP6hFKx9mwoUVUgZGz02RA6bkxOdYyTw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.19.0.tgz", + "integrity": "sha512-VsSKuJz4/Tb6ZmFkXqWpDYkRzmaLTyE6dNSEpNmUpmZ32sMqo58mt11/huADNwfBFB0Ve7siH/VnFNIJYY3xvg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-list-keymap": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.19.0.tgz", + "integrity": "sha512-bxgmAgA3RzBGA0GyTwS2CC1c+QjkJJq9hC+S6PSOWELGRiTbwDN3MANksFXLjntkTa0N5fOnL27vBHtMStURqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.19.0.tgz", + "integrity": "sha512-cxGsINquwHYE1kmhAcLNLHAofmoDEG6jbesR5ybl7tU5JwtKVO7S/xZatll2DU1dsDAXWPWEeeMl4e/9svYjCg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/extension-list": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.19.0.tgz", + "integrity": "sha512-xWa6gj82l5+AzdYyrSk9P4ynySaDzg/SlR1FarXE5yPXibYzpS95IWaVR0m2Qaz7Rrk+IiYOTGxGRxcHLOelNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.19.0.tgz", + "integrity": "sha512-xYpabHsv7PccLUBQaP8AYiFCnYbx6P93RHPd0lgNwhdOjYFd931Zy38RyoxPHAgbYVmhf1iyx7lpuLtBnhS5dA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-table": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-3.19.0.tgz", + "integrity": "sha512-Lg8DlkkDUMYE/CcGOxoCWF98B2i7VWh+AGgqlF+XWrHjhlKHfENLRXm1a0vWuyyP3NknRYILoaaZ1s7QzmXKRA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.19.0.tgz", + "integrity": "sha512-K95+SnbZy0h6hNFtfy23n8t/nOcTFEf69In9TSFVVmwn/Nwlke+IfiESAkqbt1/7sKJeegRXYO7WzFEmFl9Q/g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extension-underline": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.19.0.tgz", + "integrity": "sha512-800MGEWfG49j10wQzAFiW/ele1HT04MamcL8iyuPNu7ZbjbGN2yknvdrJlRy7hZlzIrVkZMr/1tz62KN33VHIw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0" + } + }, + "node_modules/@tiptap/extensions": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.19.0.tgz", + "integrity": "sha512-ZmGUhLbMWaGqnJh2Bry+6V4M6gMpUDYo4D1xNux5Gng/E/eYtc+PMxMZ/6F7tNTAuujLBOQKj6D+4SsSm457jw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/markdown": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/markdown/-/markdown-3.19.0.tgz", + "integrity": "sha512-Pnfacq2FHky1rqwmGwEmUJxuZu8VZ8XjaJIqsQC34S3CQWiOU+PukC9In2odzcooiVncLWT9s97jKuYpbmF1tQ==", + "license": "MIT", + "dependencies": { + "marked": "^17.0.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.19.0.tgz", + "integrity": "sha512-789zcnM4a8OWzvbD2DL31d0wbSm9BVeO/R7PLQwLIGysDI3qzrcclyZ8yhqOEVuvPitRRwYLq+mY14jz7kY4cw==", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.3.0", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.24.1", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.5.0", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.38.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.19.0.tgz", + "integrity": "sha512-dTCkHEz+Y8ADxX7h+xvl6caAj+3nII/wMB1rTQchSuNKqJTOrzyUsCWm094+IoZmLT738wANE0fRIgziNHs/ug==", + "license": "MIT", + "dependencies": { + "@tiptap/core": "^3.19.0", + "@tiptap/extension-blockquote": "^3.19.0", + "@tiptap/extension-bold": "^3.19.0", + "@tiptap/extension-bullet-list": "^3.19.0", + "@tiptap/extension-code": "^3.19.0", + "@tiptap/extension-code-block": "^3.19.0", + "@tiptap/extension-document": "^3.19.0", + "@tiptap/extension-dropcursor": "^3.19.0", + "@tiptap/extension-gapcursor": "^3.19.0", + "@tiptap/extension-hard-break": "^3.19.0", + "@tiptap/extension-heading": "^3.19.0", + "@tiptap/extension-horizontal-rule": "^3.19.0", + "@tiptap/extension-italic": "^3.19.0", + "@tiptap/extension-link": "^3.19.0", + "@tiptap/extension-list": "^3.19.0", + "@tiptap/extension-list-item": "^3.19.0", + "@tiptap/extension-list-keymap": "^3.19.0", + "@tiptap/extension-ordered-list": "^3.19.0", + "@tiptap/extension-paragraph": "^3.19.0", + "@tiptap/extension-strike": "^3.19.0", + "@tiptap/extension-text": "^3.19.0", + "@tiptap/extension-underline": "^3.19.0", + "@tiptap/extensions": "^3.19.0", + "@tiptap/pm": "^3.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/vue-3": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-3.19.0.tgz", + "integrity": "sha512-H/w8k++Dv5ejacbPX6VEYqWpvcrAvU+iPggIU8XGZNOkCY9jKiHRXNXXEev/ScNhHm4E1itGJZFsgqJmtiCHLw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "optionalDependencies": { + "@tiptap/extension-bubble-menu": "^3.19.0", + "@tiptap/extension-floating-menu": "^3.19.0" + }, + "peerDependencies": { + "@floating-ui/dom": "^1.0.0", + "@tiptap/core": "^3.19.0", + "@tiptap/pm": "^3.19.0", + "vue": "^3.0.0" + } + }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", @@ -2183,6 +2691,28 @@ "@types/node": "*" } }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", @@ -3488,6 +4018,12 @@ "buffer": "^5.1.0" } }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, "node_modules/cross-dirname": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", @@ -4317,7 +4853,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "license": "MIT", - "optional": true, "engines": { "node": ">=10" }, @@ -5273,6 +5808,21 @@ } } }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/linkifyjs": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", + "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", + "license": "MIT" + }, "node_modules/local-pkg": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", @@ -5379,6 +5929,47 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/markdown-it": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/marked": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.2.tgz", + "integrity": "sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -5402,6 +5993,12 @@ "node": ">= 0.4" } }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -5916,6 +6513,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "license": "MIT" + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -6198,6 +6801,201 @@ "signal-exit": "^3.0.2" } }, + "node_modules/prosemirror-changeset": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.4.0.tgz", + "integrity": "sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==", + "license": "MIT", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", + "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", + "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.0.tgz", + "integrity": "sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.5.0.tgz", + "integrity": "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", + "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", + "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.4.tgz", + "integrity": "sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw==", + "license": "MIT", + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz", + "integrity": "sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==", + "license": "MIT", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.25.4", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", + "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", + "license": "MIT", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", + "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", + "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.5.tgz", + "integrity": "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.2.3", + "prosemirror-model": "^1.25.4", + "prosemirror-state": "^1.4.4", + "prosemirror-transform": "^1.10.5", + "prosemirror-view": "^1.41.4" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", + "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.11.0.tgz", + "integrity": "sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.41.6", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.6.tgz", + "integrity": "sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", @@ -6218,6 +7016,15 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/quansync": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", @@ -6437,6 +7244,12 @@ "fsevents": "~2.3.2" } }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" + }, "node_modules/rxjs": { "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", @@ -7405,6 +8218,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, "node_modules/ufo": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", @@ -8176,6 +8995,12 @@ } } }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", diff --git a/package.json b/package.json index 14eba80..abebbca 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,12 @@ "@electron-toolkit/preload": "^3.0.2", "@electron-toolkit/utils": "^4.0.0", "@fuzzco/font-loader": "^1.0.2", + "@tiptap/extension-document": "^3.19.0", + "@tiptap/extension-image": "^3.19.0", + "@tiptap/extension-table": "^3.19.0", + "@tiptap/markdown": "^3.19.0", + "@tiptap/starter-kit": "^3.19.0", + "@tiptap/vue-3": "^3.19.0", "@vueuse/core": "^14.2.1", "electron-updater": "^6.3.9", "gsap": "^3.14.2", diff --git a/src/main/index.js b/src/main/index.js index 61e8bf2..affa862 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -4,70 +4,70 @@ import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/icon.png?asset' function createWindow() { - // Create the browser window. - const mainWindow = new BrowserWindow({ - width: 900, - height: 670, - show: false, - autoHideMenuBar: true, - ...(process.platform === 'linux' ? { icon } : {}), - webPreferences: { - preload: join(__dirname, '../preload/index.js'), - sandbox: false + // Create the browser window. + const mainWindow = new BrowserWindow({ + width: 354, + height: 549, + show: false, + autoHideMenuBar: true, + ...(process.platform === 'linux' ? { icon } : {}), + webPreferences: { + preload: join(__dirname, '../preload/index.js'), + sandbox: false, + }, + }) + + mainWindow.on('ready-to-show', () => { + mainWindow.show() + }) + + mainWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url) + return { action: 'deny' } + }) + + // HMR for renderer base on electron-vite cli. + // Load the remote URL for development or the local html file for production. + if (is.dev && process.env['ELECTRON_RENDERER_URL']) { + mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL']) + } else { + mainWindow.loadFile(join(__dirname, '../renderer/index.html')) } - }) - - mainWindow.on('ready-to-show', () => { - mainWindow.show() - }) - - mainWindow.webContents.setWindowOpenHandler((details) => { - shell.openExternal(details.url) - return { action: 'deny' } - }) - - // HMR for renderer base on electron-vite cli. - // Load the remote URL for development or the local html file for production. - if (is.dev && process.env['ELECTRON_RENDERER_URL']) { - mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL']) - } else { - mainWindow.loadFile(join(__dirname, '../renderer/index.html')) - } } // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.whenReady().then(() => { - // Set app user model id for windows - electronApp.setAppUserModelId('com.electron') + // Set app user model id for windows + electronApp.setAppUserModelId('com.electron') - // Default open or close DevTools by F12 in development - // and ignore CommandOrControl + R in production. - // see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils - app.on('browser-window-created', (_, window) => { - optimizer.watchWindowShortcuts(window) - }) + // Default open or close DevTools by F12 in development + // and ignore CommandOrControl + R in production. + // see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils + app.on('browser-window-created', (_, window) => { + optimizer.watchWindowShortcuts(window) + }) - // IPC test - ipcMain.on('ping', () => console.log('pong')) + // IPC test + ipcMain.on('ping', () => console.log('pong')) - createWindow() + createWindow() - app.on('activate', function () { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (BrowserWindow.getAllWindows().length === 0) createWindow() - }) + app.on('activate', function () { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (BrowserWindow.getAllWindows().length === 0) createWindow() + }) }) // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { - app.quit() - } + if (process.platform !== 'darwin') { + app.quit() + } }) // In this file you can include the rest of your app's specific main process diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index 527abcd..b1e91e7 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -1,10 +1,7 @@ @@ -14,6 +11,7 @@ import Lenis from './components/Lenis.vue' import { ref, computed, onMounted } from 'vue' import loadFonts from '@fuzzco/font-loader' import { useWindowSize } from '@vueuse/core' +import Editor from './components/editor/Index.vue' const { height } = useWindowSize() diff --git a/src/renderer/src/components/editor/Index.vue b/src/renderer/src/components/editor/Index.vue new file mode 100644 index 0000000..edf643c --- /dev/null +++ b/src/renderer/src/components/editor/Index.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/renderer/src/components/svg/icon/Hr.vue b/src/renderer/src/components/svg/icon/Hr.vue new file mode 100644 index 0000000..0ddb7ae --- /dev/null +++ b/src/renderer/src/components/svg/icon/Hr.vue @@ -0,0 +1,10 @@ + diff --git a/src/renderer/src/libs/theme.js b/src/renderer/src/libs/theme.js index 1772a00..b859379 100644 --- a/src/renderer/src/libs/theme.js +++ b/src/renderer/src/libs/theme.js @@ -1,20 +1,23 @@ const colors = { - black: '#000000', - white: '#d9d9d9', - pink: '#DAC3C3', - green: '#D8E3D3', - cream: '#F2F1F1', - grey: '#2B2B2B', + black: '#181818', + white: '#D5D5D5', + 'grey-100': '#747474', + green: '#87FF5B', + blue: '#5B92FF', } const themes = { light: { bg: colors.white, fg: colors.black, + accent: colors.green, + link: colors.blue, }, dark: { bg: colors.black, fg: colors.white, + accent: colors.green, + link: colors.blue, }, } diff --git a/src/renderer/src/styles/_font-style.scss b/src/renderer/src/styles/_font-style.scss index c89f023..5bfb65b 100644 --- a/src/renderer/src/styles/_font-style.scss +++ b/src/renderer/src/styles/_font-style.scss @@ -1,31 +1,23 @@ @use 'functions' as *; -@mixin size-font($ds, $ms) { - font-size: mobile-vw($ms); - - &.vh { - font-size: mobile-vh($ms); - } - - @include desktop { - font-size: desktop-vw($ds); - - &.vh { - font-size: desktop-vh($ds); - } - } -} - @mixin h1 { font-family: var(--font-display); font-weight: 400; - letter-spacing: 0.1em; - @include size-font(42px, 27px); + letter-spacing: -0.02em; + line-height: 1; + font-size: size-vw(30px); +} + +@mixin h1-mono { + font-family: var(--font-mono); + font-weight: 400; + line-height: 1; + font-size: size-vw(22px); } @mixin p { font-family: var(--font-mono); font-weight: 400; - letter-spacing: 0.03em; - @include size-font(25px, 18px); + line-height: 1; + font-size: size-vw(12px); } diff --git a/src/renderer/src/styles/_functions.scss b/src/renderer/src/styles/_functions.scss index bf16763..b0165ec 100644 --- a/src/renderer/src/styles/_functions.scss +++ b/src/renderer/src/styles/_functions.scss @@ -47,6 +47,12 @@ $mobile-height: get('viewports.mobile.height'); @return calc($perc * 100vh); } +@function size-vw($pixels, $base-vw: 354) { + $px: math.div($pixels, $base-vw); + $perc: math.div($px, 1px); + @return calc($perc * 100vw); +} + @function columns($columns) { @return calc( (#{$columns} * var(--layout-column-width)) + @@ -186,7 +192,13 @@ $mobile-height: get('viewports.mobile.height'); } } -@mixin bonk-animation($delay: 0s, $duration: 1s, $angle: 25deg) { - --bonk-angle: #{$angle}; - animation: bonk $duration $delay infinite step-end; +@mixin drop-cap() { + font-family: var(--font-mono); + font-size: size-vw(12px); + font-weight: 400 !important; + + &:first-child::first-letter { + font-family: var(--font-display); + font-size: size-vw(42px); + } } diff --git a/src/renderer/src/styles/main.scss b/src/renderer/src/styles/main.scss index 06e1ca3..0f8a1e1 100644 --- a/src/renderer/src/styles/main.scss +++ b/src/renderer/src/styles/main.scss @@ -14,8 +14,8 @@ :root { font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - background: var(--white); - color: var(--black); + background: var(--theme-bg); + color: var(--theme-fg); font-synthesis: none; text-rendering: optimizeLegibility; @@ -47,65 +47,6 @@ pre { @include p; } -.entry { - img { - max-width: 100%; - height: auto; - } - p { - min-height: 1px; - } - a { - text-decoration: underline; - } - & > * { - margin-bottom: 1em; - margin-top: 1em; - } - & > *:first-child { - margin-top: 0; - } - & > *:last-child { - margin-bottom: 0; - } - - ul, - ol { - li { - margin-bottom: 1em; - width: desktop-vw(577px); - } - } - 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)); - } -}