Commit 21eea819 authored by Sergey's avatar Sergey

Upgrade

parent cfd8bbad
This source diff could not be displayed because it is too large. You can view the blob instead.
{ {
"hash": "206f6fb5", "hash": "04c3dbe2",
"browserHash": "0eea1a32", "browserHash": "81d7d0da",
"optimized": { "optimized": {
"vue": { "vue": {
"src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", "src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js", "file": "vue.js",
"fileHash": "f2e3401b", "fileHash": "893ce36a",
"needsInterop": false "needsInterop": false
}, },
"vitepress > @vue/devtools-api": { "vitepress > @vue/devtools-api": {
"src": "../../../node_modules/@vue/devtools-api/lib/esm/index.js", "src": "../../../node_modules/@vue/devtools-api/lib/esm/index.js",
"file": "vitepress___@vue_devtools-api.js", "file": "vitepress___@vue_devtools-api.js",
"fileHash": "5571b77a", "fileHash": "833af736",
"needsInterop": false "needsInterop": false
}, },
"@theme/index": { "vitepress-plugin-image-viewer": {
"src": "../../../node_modules/vitepress/dist/client/theme-default/index.js", "src": "../../../node_modules/vitepress-plugin-image-viewer/lib/viewer.js",
"file": "@theme_index.js", "file": "vitepress-plugin-image-viewer.js",
"fileHash": "aa315cd6", "fileHash": "1edd10ff",
"needsInterop": false "needsInterop": false
} }
}, },
"chunks": { "chunks": {
"chunk-G3CMYKT2": { "chunk-SDVEPHC6": {
"file": "chunk-G3CMYKT2.js" "file": "chunk-SDVEPHC6.js"
} }
} }
} }
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -153,7 +153,7 @@ import { ...@@ -153,7 +153,7 @@ import {
withMemo, withMemo,
withModifiers, withModifiers,
withScopeId withScopeId
} from "./chunk-G3CMYKT2.js"; } from "./chunk-SDVEPHC6.js";
export { export {
BaseTransition, BaseTransition,
BaseTransitionPropsValidators, BaseTransitionPropsValidators,
......
import { defineConfig } from 'vitepress'
import { telegram, gitlab } from './icons'
import { addPlugins } from './theme/plugins/markdown'
import kbd from 'markdown-it-kbd'
export const META_DESCRIPTION = 'Свободная википедия для OS Ximper Linux'
// https://vitepress.dev/reference/site-config
export default defineConfig({
lang: 'ru-RU',
srcDir: './docs',
title: 'Ximper Wiki',
description: META_DESCRIPTION,
head: [
['link', { rel: 'icon', type: 'public', href: '/ximper.ico'}],
['link', { rel: 'icon', type: 'public', href: '/ximperlinux.svg' }],
['meta', { name: 'theme-color', content: '#62a0ea' }],
['meta', { name: 'og:type', content: 'website' }],
['meta', { name: 'og:locale', content: 'ru_RU' }],
['meta', { name: 'og:site_name', content: 'Ximper Wiki' }]
],
sitemap:
{
hostname: 'https://ximper-wiki.ru'
},
themeConfig:
{
logo: { src: '/ximperlinux.svg', width: 36, height: 36, alt:"Ximper Wiki"},
// https://vitepress.dev/reference/default-theme-config
nav:
[
{ text: 'Главная', link: '/' },
{ text: 'Документация', link: '/wiki' },
{
text: 'Меню',
items:
[
{ text: 'О проекте', link: '/about' }
]
}
],
socialLinks:
[
{
icon:
{
svg: telegram
},
link: 'https://t.me/ximperlinux'
},
{
icon:
{
svg: gitlab
},
link: 'https://gitlab.eterfund.ru/Braumann/XimperLinuxWeb'
}
],
sidebar:
[
{
text: 'Меню:',
items:
[
{
text: 'Установка OS Ximper Linux', link: '/download-ximper'
},
],
},
],
editLink:
{
pattern: 'https://gitlab.eterfund.ru/Braumann/XimperLinuxWeb/tree/master/docs/:path',
text: 'Предложить изменения на этой странице'
},
lastUpdated:
{
text: 'Последнее обновление',
formatOptions:
{
dateStyle: 'medium',
timeStyle: 'medium'
}
},
docFooter:
{
prev: 'Предыдущая страница',
next: 'Следующая страница'
},
outlineTitle: 'Оглавление',
footer:
{
copyright: 'Copyright © 2023 Ximper Linux Community'
}
},
markdown: {
config(md) {
addPlugins(md);
md.use(kbd);
}
}
})
\ No newline at end of file
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>VitePress | VitePress</title>
<meta name="description" content="A VitePress site">
<link rel="preload stylesheet" href="/assets/style.32830522.css" as="style">
<script type="module" src="/assets/app.34c850d4.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.3c9dba42.js">
<link rel="modulepreload" href="/assets/chunks/theme.ee61d86a.js">
<link rel="modulepreload" href="/assets/README.md.3df63b8b.lean.js">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-9d8abc1e><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-9d8abc1e data-v-7ad780c2><div class="VPNavBar" data-v-7ad780c2 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->VitePress<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f1abbc6e><!----></div><!----><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-283b26e9><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-283b26e9 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav fixed reached-top" data-v-9d8abc1e data-v-9e669cc1><!----><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9e669cc1 data-v-24251f6f><button data-v-24251f6f>Return to top</button><!----></div></div><!----><div class="VPContent" id="VPContent" data-v-9d8abc1e data-v-3cf691b6><div class="VPDoc has-aside" data-v-3cf691b6 data-v-a3c25e27><!--[--><!--]--><div class="container" data-v-a3c25e27><div class="aside" data-v-a3c25e27><div class="aside-curtain" data-v-a3c25e27></div><div class="aside-container" data-v-a3c25e27><div class="aside-content" data-v-a3c25e27><div class="VPDocAside" data-v-a3c25e27 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-cb998dce data-v-3a6c4994><div class="content" data-v-3a6c4994><div class="outline-marker" data-v-3a6c4994></div><div class="outline-title" role="heading" aria-level="2" data-v-3a6c4994>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-3a6c4994><span class="visually-hidden" id="doc-outline-aria-label" data-v-3a6c4994> Table of Contents for current page </span><ul class="root" data-v-3a6c4994 data-v-463da30f><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-a3c25e27><div class="content-container" data-v-a3c25e27><!--[--><!--]--><!----><main class="main" data-v-a3c25e27><div style="position:relative;" class="vp-doc _README" data-v-a3c25e27><div></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-a2d931e4><!--[--><!--]--><!----><!----></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"docs_index.md\":\"e7f1b14e\",\"readme.md\":\"3df63b8b\",\"docs_markdown-examples.md\":\"0691ad0f\",\"docs_api-examples.md\":\"8657b37d\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
</body>
</html>
\ No newline at end of file
import{_ as e,o as t,c as a}from"./chunks/framework.3c9dba42.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md"}'),r={name:"README.md"};function o(s,c,n,p,_,d){return t(),a("div")}const E=e(r,[["render",o]]);export{m as __pageData,E as default};
import{_ as e,o as t,c as a}from"./chunks/framework.3c9dba42.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md"}'),r={name:"README.md"};function o(s,c,n,p,_,d){return t(),a("div")}const E=e(r,[["render",o]]);export{m as __pageData,E as default};
import{_ as a,o,c as s,k as e,a as t}from"./chunks/framework.0f749972.js";const b=JSON.parse('{"title":"О проекте","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md","lastUpdated":null}'),n={name:"about.md"},r=e("h1",{id:"о-проекте",tabindex:"-1"},[t("О проекте "),e("a",{class:"header-anchor",href:"#о-проекте","aria-label":'Permalink to "О проекте"'},"​")],-1),c=e("p",null,"Добро пожаловать в википедию по OS Ximper Linux!",-1),i=e("p",null,[t("Проект "),e("strong",null,"Ximper Linux"),t(" ....")],-1),l=[r,c,i];function d(_,p,u,h,m,f){return o(),s("div",null,l)}const k=a(n,[["render",d]]);export{b as __pageData,k as default};
import{_ as a,o,c as s,k as e,a as t}from"./chunks/framework.0f749972.js";const b=JSON.parse('{"title":"О проекте","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md","lastUpdated":null}'),n={name:"about.md"},r=e("h1",{id:"о-проекте",tabindex:"-1"},[t("О проекте "),e("a",{class:"header-anchor",href:"#о-проекте","aria-label":'Permalink to "О проекте"'},"​")],-1),c=e("p",null,"Добро пожаловать в википедию по OS Ximper Linux!",-1),i=e("p",null,[t("Проект "),e("strong",null,"Ximper Linux"),t(" ....")],-1),l=[r,c,i];function d(_,p,u,h,m,f){return o(),s("div",null,l)}const k=a(n,[["render",d]]);export{b as __pageData,k as default};
import{s,Z as i,$ as u,a0 as c,a1 as l,a2 as d,a3 as f,a4 as m,a5 as h,a6 as A,a7 as g,a8 as P,d as v,u as y,j as C,y as w,a9 as _,aa as b,ab as E,ac as R}from"./chunks/framework.3c9dba42.js";import{t as D}from"./chunks/theme.ee61d86a.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=p(D),j=v({name:"VitePressApp",setup(){const{site:e}=y();return C(()=>{w(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),_(),b(),E(),o.setup&&o.setup(),()=>R(o.Layout)}});async function O(){const e=T(),a=S();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",d),a.component("ClientOnly",f),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function S(){return h(j)}function T(){let e=s,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),s&&(e=!1),r},o.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{O as createApp};
import{u as o,o as r,c as i,k as a,t as e,l as n,Q as c,a as s}from"./chunks/framework.3c9dba42.js";const d=c(`<h1 id="runtime-api-examples" tabindex="-1">Runtime API Examples <a class="header-anchor" href="#runtime-api-examples" aria-label="Permalink to &quot;Runtime API Examples&quot;">​</a></h1><p>This page demonstrates usage of some of the runtime APIs provided by VitePress.</p><p>The main <code>useData()</code> API can be used to access site, theme, and page data for the current page. It works in both <code>.md</code> and <code>.vue</code> files:</p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">&lt;script setup&gt;</span></span>
<span class="line"><span style="color:#E1E4E8;">import { useData } from &#39;vitepress&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8;">const { theme, page, frontmatter } = useData()</span></span>
<span class="line"><span style="color:#E1E4E8;">&lt;/script&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#79B8FF;font-weight:bold;">## Results</span></span>
<span class="line"></span>
<span class="line"><span style="color:#79B8FF;font-weight:bold;">### Theme Data</span></span>
<span class="line"><span style="color:#E1E4E8;">&lt;pre&gt;{{ theme }}&lt;/pre&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#79B8FF;font-weight:bold;">### Page Data</span></span>
<span class="line"><span style="color:#E1E4E8;">&lt;pre&gt;{{ page }}&lt;/pre&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#79B8FF;font-weight:bold;">### Page Frontmatter</span></span>
<span class="line"><span style="color:#E1E4E8;">&lt;pre&gt;{{ frontmatter }}&lt;/pre&gt;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">&lt;script setup&gt;</span></span>
<span class="line"><span style="color:#24292E;">import { useData } from &#39;vitepress&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#24292E;">const { theme, page, frontmatter } = useData()</span></span>
<span class="line"><span style="color:#24292E;">&lt;/script&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#005CC5;font-weight:bold;">## Results</span></span>
<span class="line"></span>
<span class="line"><span style="color:#005CC5;font-weight:bold;">### Theme Data</span></span>
<span class="line"><span style="color:#24292E;">&lt;pre&gt;{{ theme }}&lt;/pre&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#005CC5;font-weight:bold;">### Page Data</span></span>
<span class="line"><span style="color:#24292E;">&lt;pre&gt;{{ page }}&lt;/pre&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#005CC5;font-weight:bold;">### Page Frontmatter</span></span>
<span class="line"><span style="color:#24292E;">&lt;pre&gt;{{ frontmatter }}&lt;/pre&gt;</span></span></code></pre></div><h2 id="results" tabindex="-1">Results <a class="header-anchor" href="#results" aria-label="Permalink to &quot;Results&quot;">​</a></h2><h3 id="theme-data" tabindex="-1">Theme Data <a class="header-anchor" href="#theme-data" aria-label="Permalink to &quot;Theme Data&quot;">​</a></h3>`,6),h=a("h3",{id:"page-data",tabindex:"-1"},[s("Page Data "),a("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"'},"​")],-1),m=a("h3",{id:"page-frontmatter",tabindex:"-1"},[s("Page Frontmatter "),a("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"'},"​")],-1),g=a("h2",{id:"more",tabindex:"-1"},[s("More "),a("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"'},"​")],-1),u=a("p",null,[s("Check out the documentation for the "),a("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_blank",rel:"noreferrer"},"full list of runtime APIs"),s(".")],-1),x=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"docs/api-examples.md","filePath":"docs/api-examples.md"}'),f={name:"docs/api-examples.md"},D=Object.assign(f,{setup(_){const{site:E,theme:t,page:l,frontmatter:p}=o();return(b,y)=>(r(),i("div",null,[d,a("pre",null,e(n(t)),1),h,a("pre",null,e(n(l)),1),m,a("pre",null,e(n(p)),1),g,u]))}});export{x as __pageData,D as default};
import{u as o,o as r,c as i,k as a,t as e,l as n,Q as c,a as s}from"./chunks/framework.3c9dba42.js";const d=c("",6),h=a("h3",{id:"page-data",tabindex:"-1"},[s("Page Data "),a("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"'},"​")],-1),m=a("h3",{id:"page-frontmatter",tabindex:"-1"},[s("Page Frontmatter "),a("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"'},"​")],-1),g=a("h2",{id:"more",tabindex:"-1"},[s("More "),a("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"'},"​")],-1),u=a("p",null,[s("Check out the documentation for the "),a("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_blank",rel:"noreferrer"},"full list of runtime APIs"),s(".")],-1),x=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"docs/api-examples.md","filePath":"docs/api-examples.md"}'),f={name:"docs/api-examples.md"},D=Object.assign(f,{setup(_){const{site:E,theme:t,page:l,frontmatter:p}=o();return(b,y)=>(r(),i("div",null,[d,a("pre",null,e(n(t)),1),h,a("pre",null,e(n(l)),1),m,a("pre",null,e(n(p)),1),g,u]))}});export{x as __pageData,D as default};
import{V as n,a as l,b as s}from"./chunks/theme.ee61d86a.js";import{o,c as m,H as t,w as a,l as e,a as r}from"./chunks/framework.3c9dba42.js";const b=JSON.parse('{"title":"Главная","titleTemplate":"ALT Regular Gnome Community","description":"","frontmatter":{"layout":"home","title":"Главная","titleTemplate":"ALT Regular Gnome Community","hero":{"name":"ALT Regular Gnome","text":"Community","tagline":"открытое сообщество пользователей операционной системы ALT Regular Gnome","image":{"src":"/laptop.png","alt":"Gnome"},"actions":[{"theme":"brand","text":"Cкачать ALT Regular Gnome","link":"http://nightly.altlinux.org/sisyphus/tested/regular-gnome-latest-x86_64.iso"},{"theme":"alt","text":"Документация","link":"/wiki"}]},"features":[{"title":"Раньше чем у других","details":"Eжедневно обновляемый репозиторий пакетов свободных программ Sysphus"},{"title":"Цифровая НЕ зависмость","details":"семейство дистрибутивов Linux, производится в России с 2000 года."},{"title":"Открытое сообщество","details":"Путеводитель в мир открытого програмного обеспечения."}]},"headers":[],"relativePath":"docs/index.md","filePath":"docs/index.md"}'),u={name:"docs/index.md"},_=Object.assign(u,{setup(c){const i=[{avatar:"https://avatars.githubusercontent.com/u/20732384?v=4",name:"Олег Щавелев",title:"Разработчик",links:[{icon:"github",link:"https://github.com/OlegShchavelev"}]},{avatar:"https://avatars.githubusercontent.com/u/57626821?v=4",name:"Семен Фомченков",title:"Участник",links:[{icon:"github",link:"https://github.com/Armatik"}]},{avatar:"https://avatars.githubusercontent.com/u/2198153?v=4",name:"Anton Palgunov",title:"Участник",links:[{icon:"github",link:"https://github.com/Toxblh"}]}];return(h,g)=>(o(),m("div",null,[t(e(s),null,{default:a(()=>[t(e(n),null,{title:a(()=>[r(" Участники ")]),_:1}),t(e(l),{members:i})]),_:1})]))}});export{b as __pageData,_ as default};
import{V as n,a as l,b as s}from"./chunks/theme.ee61d86a.js";import{o,c as m,H as t,w as a,l as e,a as r}from"./chunks/framework.3c9dba42.js";const b=JSON.parse('{"title":"Главная","titleTemplate":"ALT Regular Gnome Community","description":"","frontmatter":{"layout":"home","title":"Главная","titleTemplate":"ALT Regular Gnome Community","hero":{"name":"ALT Regular Gnome","text":"Community","tagline":"открытое сообщество пользователей операционной системы ALT Regular Gnome","image":{"src":"/laptop.png","alt":"Gnome"},"actions":[{"theme":"brand","text":"Cкачать ALT Regular Gnome","link":"http://nightly.altlinux.org/sisyphus/tested/regular-gnome-latest-x86_64.iso"},{"theme":"alt","text":"Документация","link":"/wiki"}]},"features":[{"title":"Раньше чем у других","details":"Eжедневно обновляемый репозиторий пакетов свободных программ Sysphus"},{"title":"Цифровая НЕ зависмость","details":"семейство дистрибутивов Linux, производится в России с 2000 года."},{"title":"Открытое сообщество","details":"Путеводитель в мир открытого програмного обеспечения."}]},"headers":[],"relativePath":"docs/index.md","filePath":"docs/index.md"}'),u={name:"docs/index.md"},_=Object.assign(u,{setup(c){const i=[{avatar:"https://avatars.githubusercontent.com/u/20732384?v=4",name:"Олег Щавелев",title:"Разработчик",links:[{icon:"github",link:"https://github.com/OlegShchavelev"}]},{avatar:"https://avatars.githubusercontent.com/u/57626821?v=4",name:"Семен Фомченков",title:"Участник",links:[{icon:"github",link:"https://github.com/Armatik"}]},{avatar:"https://avatars.githubusercontent.com/u/2198153?v=4",name:"Anton Palgunov",title:"Участник",links:[{icon:"github",link:"https://github.com/Toxblh"}]}];return(h,g)=>(o(),m("div",null,[t(e(s),null,{default:a(()=>[t(e(n),null,{title:a(()=>[r(" Участники ")]),_:1}),t(e(l),{members:i})]),_:1})]))}});export{b as __pageData,_ as default};
import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.3c9dba42.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"docs/markdown-examples.md","filePath":"docs/markdown-examples.md"}'),p={name:"docs/markdown-examples.md"},e=l(`<h1 id="markdown-extension-examples" tabindex="-1">Markdown Extension Examples <a class="header-anchor" href="#markdown-extension-examples" aria-label="Permalink to &quot;Markdown Extension Examples&quot;">​</a></h1><p>This page demonstrates some of the built-in markdown extensions provided by VitePress.</p><h2 id="syntax-highlighting" tabindex="-1">Syntax Highlighting <a class="header-anchor" href="#syntax-highlighting" aria-label="Permalink to &quot;Syntax Highlighting&quot;">​</a></h2><p>VitePress provides Syntax Highlighting powered by <a href="https://github.com/shikijs/shiki" target="_blank" rel="noreferrer">Shiki</a>, with additional features like line-highlighting:</p><p><strong>Input</strong></p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#e1e4e8;">\`\`\`js{4}</span></span>
<span class="line"><span style="color:#e1e4e8;">export default {</span></span>
<span class="line"><span style="color:#e1e4e8;"> data () {</span></span>
<span class="line"><span style="color:#e1e4e8;"> return {</span></span>
<span class="line"><span style="color:#e1e4e8;"> msg: &#39;Highlighted!&#39;</span></span>
<span class="line"><span style="color:#e1e4e8;"> }</span></span>
<span class="line"><span style="color:#e1e4e8;"> }</span></span>
<span class="line"><span style="color:#e1e4e8;">}</span></span>
<span class="line"><span style="color:#e1e4e8;">\`\`\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292e;">\`\`\`js{4}</span></span>
<span class="line"><span style="color:#24292e;">export default {</span></span>
<span class="line"><span style="color:#24292e;"> data () {</span></span>
<span class="line"><span style="color:#24292e;"> return {</span></span>
<span class="line"><span style="color:#24292e;"> msg: &#39;Highlighted!&#39;</span></span>
<span class="line"><span style="color:#24292e;"> }</span></span>
<span class="line"><span style="color:#24292e;"> }</span></span>
<span class="line"><span style="color:#24292e;">}</span></span>
<span class="line"><span style="color:#24292e;">\`\`\`</span></span></code></pre></div><p><strong>Output</strong></p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark has-highlighted-lines vp-code-dark"><code><span class="line"><span style="color:#F97583;">export</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">default</span><span style="color:#E1E4E8;"> {</span></span>
<span class="line"><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">data</span><span style="color:#E1E4E8;"> () {</span></span>
<span class="line"><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">return</span><span style="color:#E1E4E8;"> {</span></span>
<span class="line highlighted"><span style="color:#E1E4E8;"> msg: </span><span style="color:#9ECBFF;">&#39;Highlighted!&#39;</span></span>
<span class="line"><span style="color:#E1E4E8;"> }</span></span>
<span class="line"><span style="color:#E1E4E8;"> }</span></span>
<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light has-highlighted-lines vp-code-light"><code><span class="line"><span style="color:#D73A49;">export</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">default</span><span style="color:#24292E;"> {</span></span>
<span class="line"><span style="color:#24292E;"> </span><span style="color:#6F42C1;">data</span><span style="color:#24292E;"> () {</span></span>
<span class="line"><span style="color:#24292E;"> </span><span style="color:#D73A49;">return</span><span style="color:#24292E;"> {</span></span>
<span class="line highlighted"><span style="color:#24292E;"> msg: </span><span style="color:#032F62;">&#39;Highlighted!&#39;</span></span>
<span class="line"><span style="color:#24292E;"> }</span></span>
<span class="line"><span style="color:#24292E;"> }</span></span>
<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="custom-containers" tabindex="-1">Custom Containers <a class="header-anchor" href="#custom-containers" aria-label="Permalink to &quot;Custom Containers&quot;">​</a></h2><p><strong>Input</strong></p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">::: info</span></span>
<span class="line"><span style="color:#E1E4E8;">This is an info box.</span></span>
<span class="line"><span style="color:#E1E4E8;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8;">::: tip</span></span>
<span class="line"><span style="color:#E1E4E8;">This is a tip.</span></span>
<span class="line"><span style="color:#E1E4E8;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8;">::: warning</span></span>
<span class="line"><span style="color:#E1E4E8;">This is a warning.</span></span>
<span class="line"><span style="color:#E1E4E8;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8;">::: danger</span></span>
<span class="line"><span style="color:#E1E4E8;">This is a dangerous warning.</span></span>
<span class="line"><span style="color:#E1E4E8;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8;">::: details</span></span>
<span class="line"><span style="color:#E1E4E8;">This is a details block.</span></span>
<span class="line"><span style="color:#E1E4E8;">:::</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">::: info</span></span>
<span class="line"><span style="color:#24292E;">This is an info box.</span></span>
<span class="line"><span style="color:#24292E;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#24292E;">::: tip</span></span>
<span class="line"><span style="color:#24292E;">This is a tip.</span></span>
<span class="line"><span style="color:#24292E;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#24292E;">::: warning</span></span>
<span class="line"><span style="color:#24292E;">This is a warning.</span></span>
<span class="line"><span style="color:#24292E;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#24292E;">::: danger</span></span>
<span class="line"><span style="color:#24292E;">This is a dangerous warning.</span></span>
<span class="line"><span style="color:#24292E;">:::</span></span>
<span class="line"></span>
<span class="line"><span style="color:#24292E;">::: details</span></span>
<span class="line"><span style="color:#24292E;">This is a details block.</span></span>
<span class="line"><span style="color:#24292E;">:::</span></span></code></pre></div><p><strong>Output</strong></p><div class="info custom-block"><p class="custom-block-title">INFO</p><p>This is an info box.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This is a tip.</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>This is a warning.</p></div><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>This is a dangerous warning.</p></div><details class="details custom-block"><summary>Details</summary><p>This is a details block.</p></details><h2 id="more" tabindex="-1">More <a class="header-anchor" href="#more" aria-label="Permalink to &quot;More&quot;">​</a></h2><p>Check out the documentation for the <a href="https://vitepress.dev/guide/markdown" target="_blank" rel="noreferrer">full list of markdown extensions</a>.</p>`,19),o=[e];function t(i,c,r,d,h,E){return n(),a("div",null,o)}const u=s(p,[["render",t]]);export{g as __pageData,u as default};
import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.3c9dba42.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"docs/markdown-examples.md","filePath":"docs/markdown-examples.md"}'),p={name:"docs/markdown-examples.md"},e=l("",19),o=[e];function t(i,c,r,d,h,E){return n(),a("div",null,o)}const u=s(p,[["render",t]]);export{g as __pageData,u as default};
import{_ as e,o as i,c as o,Q as a}from"./chunks/framework.0f749972.js";const x=JSON.parse('{"title":"Установка OS Ximper Linux","description":"","frontmatter":{},"headers":[],"relativePath":"download-ximper.md","filePath":"download-ximper.md","lastUpdated":null}'),n={name:"download-ximper.md"},r=a('<h1 id="установка-os-ximper-linux" tabindex="-1">Установка OS Ximper Linux <a class="header-anchor" href="#установка-os-ximper-linux" aria-label="Permalink to &quot;Установка OS Ximper Linux&quot;">​</a></h1><p>Примечание: Если вы хотите установить Windows + Linux, то сначала вам потребуется установить Windows, а затем начать установку Linux, причина такого порядка в том, что Windows не видит загрузчик Linux, если поставить первой OS Linux, а второй системой Windows, то загрузчик будет загружать только Windows, а grub может запускать как Windows так и Linux.</p><h2 id="windows" tabindex="-1">Windows <a class="header-anchor" href="#windows" aria-label="Permalink to &quot;Windows&quot;">​</a></h2><ol><li>Скачать образ <a href="https://ximperlinux.ru/downloads.html" target="_blank" rel="noreferrer">OS Ximper Linux</a></li><li></li></ol>',4),t=[r];function d(s,l,_,p,u,c){return i(),o("div",null,t)}const h=e(n,[["render",d]]);export{x as __pageData,h as default};
import{_ as e,o as i,c as o,Q as a}from"./chunks/framework.0f749972.js";const x=JSON.parse('{"title":"Установка OS Ximper Linux","description":"","frontmatter":{},"headers":[],"relativePath":"download-ximper.md","filePath":"download-ximper.md","lastUpdated":null}'),n={name:"download-ximper.md"},r=a("",4),t=[r];function d(s,l,_,p,u,c){return i(),o("div",null,t)}const h=e(n,[["render",d]]);export{x as __pageData,h as default};
import{_ as e,o as t,c as i}from"./chunks/framework.0f749972.js";const c=JSON.parse('{"title":"Главная","titleTemplate":"Ximper Linux Wiki","description":"","frontmatter":{"layout":"home","title":"Главная","titleTemplate":"Ximper Linux Wiki","hero":{"name":"Ximper Linux Wiki","tagline":"Открой новый опыт вместе с нами!","image":{"src":"/ximperlinux.svg","alt":"Gnome"},"actions":[{"theme":"brand","text":"Официальный сайт","link":"https://ximperlinux.ru/"},{"theme":"alt","text":"Документация","link":"/wiki"}]},"features":[{"title":"Roll-Up","details":"Самые свежие пакеты каждый день!"},{"title":"Easily installed","details":"Устанавливай в пару щелчков мыши!"},{"title":"Plug & Play","details":"Уже с первого запуска ты можешь начать играть, работать, смотреть!"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1696500899000}'),a={name:"index.md"};function l(n,r,s,o,m,d){return t(),i("div")}const x=e(a,[["render",l]]);export{c as __pageData,x as default};
import{_ as e,o as t,c as i}from"./chunks/framework.0f749972.js";const c=JSON.parse('{"title":"Главная","titleTemplate":"Ximper Linux Wiki","description":"","frontmatter":{"layout":"home","title":"Главная","titleTemplate":"Ximper Linux Wiki","hero":{"name":"Ximper Linux Wiki","tagline":"Открой новый опыт вместе с нами!","image":{"src":"/ximperlinux.svg","alt":"Gnome"},"actions":[{"theme":"brand","text":"Официальный сайт","link":"https://ximperlinux.ru/"},{"theme":"alt","text":"Документация","link":"/wiki"}]},"features":[{"title":"Roll-Up","details":"Самые свежие пакеты каждый день!"},{"title":"Easily installed","details":"Устанавливай в пару щелчков мыши!"},{"title":"Plug & Play","details":"Уже с первого запуска ты можешь начать играть, работать, смотреть!"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1696500899000}'),a={name:"index.md"};function l(n,r,s,o,m,d){return t(),i("div")}const x=e(a,[["render",l]]);export{c as __pageData,x as default};
This source diff could not be displayed because it is too large. You can view the blob instead.
import{_ as t,o as a,c as i,k as e,a as o}from"./chunks/framework.0f749972.js";const k=JSON.parse('{"title":"Документация","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"wiki.md","filePath":"wiki.md","lastUpdated":null}'),s={name:"wiki.md"},n=e("h1",{id:"документация",tabindex:"-1"},[o("Документация "),e("a",{class:"header-anchor",href:"#документация","aria-label":'Permalink to "Документация"'},"​")],-1),r=e("p",null,"Представляем вашему вниманию Википедию созданное сообществом! Слева вы увидите список, со всеми темами, которые были затронуты в OS Ximper Linux.",-1),c=[n,r];function d(l,_,p,h,m,f){return a(),i("div",null,c)}const x=t(s,[["render",d]]);export{k as __pageData,x as default};
import{_ as t,o as a,c as i,k as e,a as o}from"./chunks/framework.0f749972.js";const k=JSON.parse('{"title":"Документация","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"wiki.md","filePath":"wiki.md","lastUpdated":null}'),s={name:"wiki.md"},n=e("h1",{id:"документация",tabindex:"-1"},[o("Документация "),e("a",{class:"header-anchor",href:"#документация","aria-label":'Permalink to "Документация"'},"​")],-1),r=e("p",null,"Представляем вашему вниманию Википедию созданное сообществом! Слева вы увидите список, со всеми темами, которые были затронуты в OS Ximper Linux.",-1),c=[n,r];function d(l,_,p,h,m,f){return a(),i("div",null,c)}const x=t(s,[["render",d]]);export{k as __pageData,x as default};
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 100 92" style="enable-background:new 0 0 100 92;" xml:space="preserve">
<style type="text/css">
.st0{fill:#E24329;}
.st1{fill:#FC6D26;}
.st2{fill:#FCA326;}
</style>
<desc>Created with Sketch.</desc>
<g>
<path class="st0" d="M95.9,36.5l-0.1-0.3L82.8,2.4c-0.3-0.7-0.7-1.2-1.3-1.6c-0.6-0.4-1.3-0.6-2-0.5c-0.7,0-1.4,0.3-2,0.7
c-0.6,0.4-1,1.1-1.1,1.7l-8.7,26.7H32.3L23.6,2.7C23.4,2.1,23,1.4,22.5,1c-0.6-0.4-1.2-0.7-2-0.7c-0.7,0-1.4,0.1-2,0.5
c-0.6,0.4-1.1,0.9-1.3,1.6L4.2,36.1l-0.1,0.3c-3.8,10-0.6,21.3,8,27.7c0,0,0,0,0,0l0.1,0.1l19.7,14.7l9.7,7.4l5.9,4.5
c1.4,1.1,3.4,1.1,4.8,0l5.9-4.5l9.7-7.4l19.8-14.8c0,0,0,0,0.1,0C96.5,57.8,99.7,46.5,95.9,36.5z"/>
<path class="st1" d="M95.9,36.5l-0.1-0.3c-6.4,1.3-12.3,4-17.4,7.8C78.3,44,63,55.6,50,65.4c9.7,7.3,18.1,13.7,18.1,13.7l19.8-14.8
c0,0,0,0,0.1,0C96.5,57.8,99.7,46.5,95.9,36.5z"/>
<path class="st2" d="M31.9,79.1l9.7,7.4l5.9,4.5c1.4,1.1,3.4,1.1,4.8,0l5.9-4.5l9.7-7.4c0,0-8.4-6.4-18.1-13.7
C40.3,72.7,31.9,79.1,31.9,79.1z"/>
<path class="st1" d="M21.6,43.9c-5.1-3.8-11-6.5-17.4-7.8l-0.1,0.3c-3.8,10-0.6,21.3,8,27.7c0,0,0,0,0,0l0.1,0.1l19.7,14.7
c0,0,8.4-6.4,18.1-13.7C37,55.6,21.7,44,21.6,43.9z"/>
</g>
</svg>
{"docs_index.md":"e7f1b14e","readme.md":"3df63b8b","docs_markdown-examples.md":"0691ad0f","docs_api-examples.md":"8657b37d"} {"wiki.md":"86710098","about.md":"149b37ba","index.md":"aa715528","download-ximper.md":"692dbee0"}
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://ximper-wiki.ru/about.html</loc></url><url><loc>https://ximper-wiki.ru/download-ximper.html</loc></url><url><loc>https://ximper-wiki.ru/</loc><lastmod>2023-10-05T10:14:59.000Z</lastmod></url><url><loc>https://ximper-wiki.ru/wiki.html</loc></url></urlset>
\ No newline at end of file
const telegram = `<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<title>Telegram</title>
<path d="M12 0C18.6277 0 24 5.37235 24 12C24 18.6277 18.6277 24 12 24C5.37235 24 0 18.6277 0 12C0 5.37235 5.37235 0 12 0ZM16.1395 16.8913C16.3602 16.2141 17.3943 9.46487 17.5221 8.13496C17.5607 7.73217 17.4334 7.46452 17.184 7.34504C16.8824 7.2 16.4358 7.27252 15.9177 7.4593C15.2071 7.71548 6.12261 11.5727 5.59774 11.796C5.1 12.0073 4.62939 12.2379 4.62939 12.5718C4.62939 12.8066 4.7687 12.9386 5.1527 13.0758C5.55235 13.2183 6.55878 13.5235 7.15304 13.6873C7.72539 13.8454 8.37704 13.7082 8.74226 13.4812C9.12939 13.2407 13.597 10.2511 13.9179 9.98922C14.2383 9.7273 14.4939 10.0628 14.232 10.3252C13.9701 10.5871 10.9033 13.5637 10.499 13.9758C10.008 14.4762 10.3565 14.9948 10.6857 15.2024C11.0619 15.4393 13.7671 17.2539 14.1746 17.545C14.5821 17.8362 14.9953 17.9682 15.3736 17.9682C15.7518 17.9682 15.9511 17.4699 16.1395 16.8913Z">
</svg>
`
const gitlab = `<svg xmlns="http://www.w3.org/2000/svg" height="0.625em" viewBox="0 0 512 512">
<title>GitLab</title>
<path d="M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z"/>
</svg>
`
export {
telegram,
gitlab
}
\ No newline at end of file
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;800&display=swap');
/**
* Colors
* -------------------------------------------------------------------------- */
:root {
--vp-c-blue: #3584e4;
--vp-c-blue-light: #62a0ea;
--vp-c-blue-lighter: #99c1f1;
--vp-c-blue-dark: #1c71d8;
--vp-c-blue-darker: #1a5fb4;
--vp-c-blue-dimm-1: rgba(53, 132, 228, 0.05);
--vp-c-blue-dimm-2: rgba(53, 132, 228, 0.2);
--vp-c-blue-dimm-3: rgba(53, 132, 228, 0.5);
--vp-c-green: #33d17a;
--vp-c-green-light: #57e389;
--vp-c-green-lighter: #8ff0a4;
--vp-c-green-dark: #2ec27e;
--vp-c-green-darker: #26a269;
--vp-c-green-dimm-1: rgba(51, 209, 122, 0.05);
--vp-c-green-dimm-2: rgba(51, 209, 122, 0.2);
--vp-c-green-dimm-3: rgba(51, 209, 122, 0.5);
--vp-c-yellow: #f6d32d;
--vp-c-yellow-light: #f8e45c;
--vp-c-yellow-lighter: #f9f06b;
--vp-c-yellow-dark: #f5c211;
--vp-c-yellow-darker: #e5a50a;
--vp-c-yellow-dimm-1: rgba(246, 211, 45, 0.05);
--vp-c-yellow-dimm-2: rgba(246, 211, 45, 0.2);
--vp-c-yellow-dimm-3: rgba(246, 211, 45, 0.5);
--vp-c-red: #e01b24;
--vp-c-red-light: #ed333b;
--vp-c-red-lighter: #f66151;
--vp-c-red-dark: #c01c28;
--vp-c-red-darker: #a51d2d;
--vp-c-red-dimm-1: rgba(224, 27, 36, 0.05);
--vp-c-red-dimm-2: rgba(224, 27, 36, 0.2);
--vp-c-red-dimm-3: rgba(224, 27, 36, 0.5);
}
:root {
--vp-c-brand: #1a5fb4;
--vp-c-brand-light: #1c71d8;
--vp-c-brand-lighter: #3584e4;
--vp-c-brand-lightest: #62a0ea;
--vp-c-brand-dark: #1a5fb4;
--vp-c-brand-darker: #1c71d8;
--vp-c-brand-dimm: rgba(100, 108, 255, 0.08);
}
:root {
/* Typography */
--vp-font-family-base: 'Manrope', sans-serif;
}
/**
* Component: Home
* -------------------------------------------------------------------------- */
:root {
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: -webkit-linear-gradient(
120deg,
#6f057a 30%,
#15059e
);
--vp-home-hero-image-background-image: linear-gradient(
-45deg,
#074796 50%,
#860c8a 50%
);
--vp-home-hero-image-filter: blur(45px);
}
@media (min-width: 960px) {
:root {
--vp-home-hero-image-filter: blur(72px);
--vp-nav-logo-height: 36px;
}
}
/**
* Custom block
* -------------------------------------------------------------------------- */
.custom-block {
border: 4px solid transparent;
}
:root {
--vp-custom-block-info-border: var(--vp-c-blue-dimm-2);
--vp-custom-block-info-bg: var(--vp-c-blue-dimm-1);
--vp-custom-block-info-text: var(--vp-c-neutral);
--vp-custom-block-tip-border: var(--vp-c-green-dimm-2);
--vp-custom-block-tip-bg: var(--vp-c-green-dimm-1);
--vp-custom-block-tip-text: var(--vp-c-neutral);
--vp-custom-block-warning-border: var(--vp-c-yellow-dimm-2);
--vp-custom-block-warning-bg: var(--vp-c-yellow-dimm-1);
--vp-custom-block-warning-text: var(--vp-c-neutral);
--vp-custom-block-danger-border: var(--vp-c-red-dimm-2);
--vp-custom-block-danger-bg: var(--vp-c-red-dimm-1);
--vp-custom-block-danger-text: var(--vp-c-neutral);
--vp-custom-block-details-border: var(--vp-c-divider);
--vp-custom-block-details-bg: var(--vp-c-bg-soft-up);
}
kbd {
border: 1px solid var(--vp-c-border);
box-shadow: var(--vp-c-gray-soft) 0px 1px 1px 0px, var(--vp-c-neutral-inverse) 0px 1px 0px 0px inset;
background-color: var(--vp-c-gray-soft);
border-radius: 3px;
display: inline-block;
margin: 0 .2em;
overflow-wrap: break-word;
padding: .1em .6em;
text-shadow: 0 1px 0 var(--vp-c-white);
}
:root {
--vp-nav-logo-height: 36px
}
\ No newline at end of file
// https://vitepress.dev/guide/custom-theme
import { h } from 'vue'
import { useRoute } from 'vitepress';
import Theme from 'vitepress/theme'
import imageViewer from 'vitepress-plugin-image-viewer';
import './style.css'
import './custom.css'
import 'viewerjs/dist/viewer.min.css';
export default {
extends: Theme,
Layout: () => {
return h(Theme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
})
},
enhanceApp({ app, router, siteData }) {
},
setup() {
// Get route
const route = useRoute();
// Using
imageViewer(route);
}
}
\ No newline at end of file
import type MarkdownIt from 'markdown-it'
import type { RenderRule } from 'markdown-it/lib/renderer'
import container from 'markdown-it-container'
export const addPlugins = (md: MarkdownIt) => {
md.use(...createContainer('info', 'Информация', md))
.use(...createContainer('tip', 'Подсказка', md))
.use(...createContainer('warning', 'Внимание', md))
.use(...createContainer('danger', 'Осторожно', md))
.use(...createContainer('details', 'Подробнее', md))
}
type ContainerArgs = [typeof container, string, { render: RenderRule }]
function createContainer(
klass: string,
defaultTitle: string,
md: MarkdownIt
): ContainerArgs {
return [
container,
klass,
{
render(tokens, idx) {
const token = tokens[idx]
const info = token.info.trim().slice(klass.length).trim()
if (token.nesting === 1) {
const title = md.renderInline(info || defaultTitle)
if (klass === 'details') {
return `<details class="${klass} custom-block"><summary>${title}</summary>\n`
}
return `<div class="${klass} custom-block"><p class="custom-block-title">${title}</p>\n`
} else {
return klass === 'details' ? `</details>\n` : `</div>\n`
}
}
}
]
}
\ No newline at end of file
/**
* Customize default theme styling by overriding CSS variables:
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
*/
/**
* Colors
* -------------------------------------------------------------------------- */
:root {
--vp-c-brand: #646cff;
--vp-c-brand-light: #747bff;
--vp-c-brand-lighter: #9499ff;
--vp-c-brand-lightest: #bcc0ff;
--vp-c-brand-dark: #535bf2;
--vp-c-brand-darker: #454ce1;
--vp-c-brand-dimm: rgba(100, 108, 255, 0.08);
}
/**
* Component: Button
* -------------------------------------------------------------------------- */
:root {
--vp-button-brand-border: var(--vp-c-brand-light);
--vp-button-brand-text: var(--vp-c-white);
--vp-button-brand-bg: var(--vp-c-brand);
--vp-button-brand-hover-border: var(--vp-c-brand-light);
--vp-button-brand-hover-text: var(--vp-c-white);
--vp-button-brand-hover-bg: var(--vp-c-brand-light);
--vp-button-brand-active-border: var(--vp-c-brand-light);
--vp-button-brand-active-text: var(--vp-c-white);
--vp-button-brand-active-bg: var(--vp-button-brand-bg);
}
/**
* Component: Home
* -------------------------------------------------------------------------- */
:root {
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: -webkit-linear-gradient(
120deg,
#bd34fe 45%,
#3364c0
);
--vp-home-hero-image-background-image: linear-gradient(
-45deg,
#0717ac 75%,
#690299 65%
);
--vp-home-hero-image-filter: blur(40px);
}
@media (min-width: 640px) {
:root {
--vp-home-hero-image-filter: blur(56px);
}
}
@media (min-width: 960px) {
:root {
--vp-home-hero-image-filter: blur(72px);
}
}
/**
* Component: Custom Block
* -------------------------------------------------------------------------- */
:root {
--vp-custom-block-tip-border: var(--vp-c-brand);
--vp-custom-block-tip-text: var(--vp-c-brand-darker);
--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);
}
.dark {
--vp-custom-block-tip-border: var(--vp-c-brand);
--vp-custom-block-tip-text: var(--vp-c-brand-lightest);
--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);
}
/**
* Component: Algolia
* -------------------------------------------------------------------------- */
.DocSearch {
--docsearch-primary-color: var(--vp-c-brand) !important;
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{ {
"hash": "fa37fa91", "hash": "4e3d0a8d",
"browserHash": "caaa412f", "browserHash": "af2fe5c0",
"optimized": { "optimized": {
"vue": { "vue": {
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", "src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js", "file": "vue.js",
"fileHash": "b9baa0e0", "fileHash": "c29a66a0",
"needsInterop": false "needsInterop": false
}, },
"vitepress > @vue/devtools-api": { "vitepress > @vue/devtools-api": {
"src": "../../../../node_modules/@vue/devtools-api/lib/esm/index.js", "src": "../../../../node_modules/@vue/devtools-api/lib/esm/index.js",
"file": "vitepress___@vue_devtools-api.js", "file": "vitepress___@vue_devtools-api.js",
"fileHash": "e5025eb1", "fileHash": "505ef0b6",
"needsInterop": false "needsInterop": false
}, },
"@theme/index": { "vitepress-plugin-image-viewer": {
"src": "../../../../node_modules/vitepress/dist/client/theme-default/index.js", "src": "../../../../node_modules/vitepress-plugin-image-viewer/lib/viewer.js",
"file": "@theme_index.js", "file": "vitepress-plugin-image-viewer.js",
"fileHash": "4d5d7e21", "fileHash": "dc68d6dd",
"needsInterop": false "needsInterop": false
} }
}, },
"chunks": { "chunks": {
"chunk-V634PGSD": { "chunk-YW53L7UT": {
"file": "chunk-V634PGSD.js" "file": "chunk-YW53L7UT.js"
} }
} }
} }
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -153,7 +153,7 @@ import { ...@@ -153,7 +153,7 @@ import {
withMemo, withMemo,
withModifiers, withModifiers,
withScopeId withScopeId
} from "./chunk-V634PGSD.js"; } from "./chunk-YW53L7UT.js";
export { export {
BaseTransition, BaseTransition,
BaseTransitionPropsValidators, BaseTransitionPropsValidators,
......
import { defineConfig } from 'vitepress'
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "Ximper Linux",
description: "Ximper Linux Communtity",
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: 'Home', link: '/' },
{ text: 'Examples', link: '/markdown-examples' }
],
sidebar: [
{
text: 'Examples',
items: [
{ text: 'Markdown Examples', link: '/markdown-examples' },
{ text: 'Runtime API Examples', link: '/api-examples' }
]
}
],
socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
]
}
})
import { defineConfig } from 'vitepress'
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "Ximper Linux",
description: "ximperlinux.ru",
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: 'Home', link: '/' },
{ text: 'Examples', link: '/markdown-examples' }
],
sidebar: [
{
text: 'Examples',
items: [
{ text: 'Markdown Examples', link: '/markdown-examples' },
{ text: 'Runtime API Examples', link: '/api-examples' }
]
}
],
socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
]
}
})
# О проекте
Добро пожаловать в википедию по OS Ximper Linux!
Проект **Ximper Linux** ....
\ No newline at end of file
# Установка OS Ximper Linux
Примечание: Если вы хотите установить Windows + Linux, то сначала вам потребуется установить Windows, а затем начать установку Linux, причина такого порядка в том, что Windows не видит загрузчик Linux, если поставить первой OS Linux, а второй системой Windows, то загрузчик будет загружать только Windows, а grub может запускать как Windows так и Linux.
## Windows
1. Скачать образ [OS Ximper Linux](https://ximperlinux.ru/downloads.html)
2.
\ No newline at end of file
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
# https://vitepress.dev/reference/default-theme-home-page # https://vitepress.dev/reference/default-theme-home-page
layout: home layout: home
title: Главная title: Главная
titleTemplate: Ximper Linux titleTemplate: Ximper Linux Wiki
hero: hero:
name: "Ximper Linux" name: "Ximper Linux Wiki"
tagline: Открой новый опыт вместе с нами! tagline: Открой новый опыт вместе с нами!
image: image:
src: /ximperlinux.svg src: /ximperlinux.svg
...@@ -13,11 +13,11 @@ hero: ...@@ -13,11 +13,11 @@ hero:
actions: actions:
- theme: brand - theme: brand
text: Скачать text: Официальный сайт
link: https://ximperlinux.ru/#sec-1c10 link: https://ximperlinux.ru/
- theme: alt - theme: alt
text: Документация text: Документация
link: /ximper-book link: /wiki
features: features:
- title: Roll-Up - title: Roll-Up
......
# Markdown Extension Examples
This page demonstrates some of the built-in markdown extensions provided by VitePress.
## Syntax Highlighting
VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
**Input**
````
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
````
**Output**
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
## Custom Containers
**Input**
```md
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
```
**Output**
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
## More
Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 100 92" style="enable-background:new 0 0 100 92;" xml:space="preserve">
<style type="text/css">
.st0{fill:#E24329;}
.st1{fill:#FC6D26;}
.st2{fill:#FCA326;}
</style>
<desc>Created with Sketch.</desc>
<g>
<path class="st0" d="M95.9,36.5l-0.1-0.3L82.8,2.4c-0.3-0.7-0.7-1.2-1.3-1.6c-0.6-0.4-1.3-0.6-2-0.5c-0.7,0-1.4,0.3-2,0.7
c-0.6,0.4-1,1.1-1.1,1.7l-8.7,26.7H32.3L23.6,2.7C23.4,2.1,23,1.4,22.5,1c-0.6-0.4-1.2-0.7-2-0.7c-0.7,0-1.4,0.1-2,0.5
c-0.6,0.4-1.1,0.9-1.3,1.6L4.2,36.1l-0.1,0.3c-3.8,10-0.6,21.3,8,27.7c0,0,0,0,0,0l0.1,0.1l19.7,14.7l9.7,7.4l5.9,4.5
c1.4,1.1,3.4,1.1,4.8,0l5.9-4.5l9.7-7.4l19.8-14.8c0,0,0,0,0.1,0C96.5,57.8,99.7,46.5,95.9,36.5z"/>
<path class="st1" d="M95.9,36.5l-0.1-0.3c-6.4,1.3-12.3,4-17.4,7.8C78.3,44,63,55.6,50,65.4c9.7,7.3,18.1,13.7,18.1,13.7l19.8-14.8
c0,0,0,0,0.1,0C96.5,57.8,99.7,46.5,95.9,36.5z"/>
<path class="st2" d="M31.9,79.1l9.7,7.4l5.9,4.5c1.4,1.1,3.4,1.1,4.8,0l5.9-4.5l9.7-7.4c0,0-8.4-6.4-18.1-13.7
C40.3,72.7,31.9,79.1,31.9,79.1z"/>
<path class="st1" d="M21.6,43.9c-5.1-3.8-11-6.5-17.4-7.8l-0.1,0.3c-3.8,10-0.6,21.3,8,27.7c0,0,0,0,0,0l0.1,0.1l19.7,14.7
c0,0,8.4-6.4,18.1-13.7C37,55.6,21.7,44,21.6,43.9z"/>
</g>
</svg>
---
outline: deep
---
# Документация
Представляем вашему вниманию Википедию созданное сообществом! Слева вы увидите список, со всеми темами, которые были затронуты в OS Ximper Linux.
---
outline: deep
---
# sfdsf
This page demonstrates usage of some of the runtime APIs provided by VitePress.
The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
```md
<script setup>
import { useData } from 'vitepress'
const { theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
```
<script setup>
import { useData } from 'vitepress'
const { site, theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
## More
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).
../markdown-it/bin/markdown-it.js
\ No newline at end of file
MIT License
Copyright (c) Microsoft Corporation.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
# Installation
> `npm install --save @types/markdown-it-container`
# Summary
This package contains type definitions for markdown-it-container (https://github.com/markdown-it/markdown-it-container).
# Details
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it-container.
## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it-container/index.d.ts)
````ts
import MarkdownIt = require("markdown-it");
import Renderer = require("markdown-it/lib/renderer");
import Token = require("markdown-it/lib/token");
declare namespace MarkdownItContainer {
interface ContainerOpts {
marker?: string | undefined;
validate?(params: string): boolean;
render?: Renderer.RenderRule | undefined;
}
}
declare function MarkdownItContainer(
md: MarkdownIt,
name: string,
opts: MarkdownItContainer.ContainerOpts,
): void;
export = MarkdownItContainer;
````
### Additional Details
* Last updated: Wed, 18 Oct 2023 05:47:08 GMT
* Dependencies: [@types/markdown-it](https://npmjs.com/package/@types/markdown-it)
# Credits
These definitions were written by [Vyacheslav Demot](https://github.com/hronex).
import MarkdownIt = require("markdown-it");
import Renderer = require("markdown-it/lib/renderer");
import Token = require("markdown-it/lib/token");
declare namespace MarkdownItContainer {
interface ContainerOpts {
marker?: string | undefined;
validate?(params: string): boolean;
render?: Renderer.RenderRule | undefined;
}
}
declare function MarkdownItContainer(
md: MarkdownIt,
name: string,
opts: MarkdownItContainer.ContainerOpts,
): void;
export = MarkdownItContainer;
{
"name": "@types/markdown-it-container",
"version": "2.0.8",
"description": "TypeScript definitions for markdown-it-container",
"homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it-container",
"license": "MIT",
"contributors": [
{
"name": "Vyacheslav Demot",
"githubUsername": "hronex",
"url": "https://github.com/hronex"
}
],
"main": "",
"types": "index.d.ts",
"repository": {
"type": "git",
"url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
"directory": "types/markdown-it-container"
},
"scripts": {},
"dependencies": {
"@types/markdown-it": "*"
},
"typesPublisherContentHash": "67f78c5ea689a3960b9f7da51324d30f518509f5384973fb6e7ee6fee09c86bb",
"typeScriptVersion": "4.5"
}
\ No newline at end of file
...@@ -8,9 +8,8 @@ This package contains type definitions for markdown-it (https://github.com/markd ...@@ -8,9 +8,8 @@ This package contains type definitions for markdown-it (https://github.com/markd
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it. Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it.
### Additional Details ### Additional Details
* Last updated: Wed, 27 Sep 2023 09:42:15 GMT * Last updated: Mon, 23 Oct 2023 17:15:17 GMT
* Dependencies: [@types/linkify-it](https://npmjs.com/package/@types/linkify-it), [@types/mdurl](https://npmjs.com/package/@types/mdurl) * Dependencies: [@types/linkify-it](https://npmjs.com/package/@types/linkify-it), [@types/mdurl](https://npmjs.com/package/@types/mdurl)
* Global values: `markdownit`
# Credits # Credits
These definitions were written by [York Yao](https://github.com/plantain-00), [Robert Coie](https://github.com/rapropos), [duduluu](https://github.com/duduluu), and [Piotr Błażejewicz](https://github.com/peterblazejewicz). These definitions were written by [York Yao](https://github.com/plantain-00), [Robert Coie](https://github.com/rapropos), [duduluu](https://github.com/duduluu), and [Piotr Błażejewicz](https://github.com/peterblazejewicz).
// Type definitions for markdown-it 13.0
// Project: https://github.com/markdown-it/markdown-it
// Definitions by: York Yao <https://github.com/plantain-00>
// Robert Coie <https://github.com/rapropos>
// duduluu <https://github.com/duduluu>
// Piotr Błażejewicz <https://github.com/peterblazejewicz>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
import MarkdownIt = require("./lib"); import MarkdownIt = require("./lib");
export as namespace markdownit; export as namespace markdownit;
......
...@@ -9,7 +9,7 @@ import Renderer = require("./renderer"); ...@@ -9,7 +9,7 @@ import Renderer = require("./renderer");
import Token = require("./token"); import Token = require("./token");
declare namespace MarkdownIt { declare namespace MarkdownIt {
type Token = typeof import("./token"); type Token = import("./token");
/** /**
* MarkdownIt provides named presets as a convenience to quickly * MarkdownIt provides named presets as a convenience to quickly
......
{ {
"name": "@types/markdown-it", "name": "@types/markdown-it",
"version": "13.0.2", "version": "13.0.5",
"description": "TypeScript definitions for markdown-it", "description": "TypeScript definitions for markdown-it",
"homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it", "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it",
"license": "MIT", "license": "MIT",
"contributors": [ "contributors": [
{ {
"name": "York Yao", "name": "York Yao",
"url": "https://github.com/plantain-00", "githubUsername": "plantain-00",
"githubUsername": "plantain-00" "url": "https://github.com/plantain-00"
}, },
{ {
"name": "Robert Coie", "name": "Robert Coie",
"url": "https://github.com/rapropos", "githubUsername": "rapropos",
"githubUsername": "rapropos" "url": "https://github.com/rapropos"
}, },
{ {
"name": "duduluu", "name": "duduluu",
"url": "https://github.com/duduluu", "githubUsername": "duduluu",
"githubUsername": "duduluu" "url": "https://github.com/duduluu"
}, },
{ {
"name": "Piotr Błażejewicz", "name": "Piotr Błażejewicz",
"url": "https://github.com/peterblazejewicz", "githubUsername": "peterblazejewicz",
"githubUsername": "peterblazejewicz" "url": "https://github.com/peterblazejewicz"
} }
], ],
"main": "", "main": "",
...@@ -38,6 +38,6 @@ ...@@ -38,6 +38,6 @@
"@types/linkify-it": "*", "@types/linkify-it": "*",
"@types/mdurl": "*" "@types/mdurl": "*"
}, },
"typesPublisherContentHash": "92ce8adb70cda1163d895ebc53ba1d0b2758ec33a9dd4b5190a0c3d7b228d775", "typesPublisherContentHash": "d189d39deac62f9a0b76e47e2e90971fdc7a663492bc28b7faa8fbb853441fca",
"typeScriptVersion": "4.5" "typeScriptVersion": "4.5"
} }
\ No newline at end of file
File mode changed from 100755 to 100644
...@@ -8,7 +8,7 @@ This package contains type definitions for Web Bluetooth (https://webbluetoothcg ...@@ -8,7 +8,7 @@ This package contains type definitions for Web Bluetooth (https://webbluetoothcg
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/web-bluetooth. Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/web-bluetooth.
### Additional Details ### Additional Details
* Last updated: Fri, 21 Apr 2023 17:02:43 GMT * Last updated: Mon, 25 Sep 2023 13:39:06 GMT
* Dependencies: none * Dependencies: none
* Global values: `BluetoothUUID` * Global values: `BluetoothUUID`
......
...@@ -103,7 +103,11 @@ interface BluetoothRemoteGATTCharacteristic extends EventTarget, CharacteristicE ...@@ -103,7 +103,11 @@ interface BluetoothRemoteGATTCharacteristic extends EventTarget, CharacteristicE
writeValueWithoutResponse(value: BufferSource): Promise<void>; writeValueWithoutResponse(value: BufferSource): Promise<void>;
startNotifications(): Promise<BluetoothRemoteGATTCharacteristic>; startNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
stopNotifications(): Promise<BluetoothRemoteGATTCharacteristic>; stopNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
addEventListener(type: "characteristicvaluechanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(
type: "characteristicvaluechanged",
listener: (this: this, ev: Event) => any,
useCapture?: boolean,
): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
} }
...@@ -145,19 +149,31 @@ interface WatchAdvertisementsOptions { ...@@ -145,19 +149,31 @@ interface WatchAdvertisementsOptions {
signal?: AbortSignal; signal?: AbortSignal;
} }
interface BluetoothDevice extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers { interface BluetoothDevice
extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers
{
readonly id: string; readonly id: string;
readonly name?: string | undefined; readonly name?: string | undefined;
readonly gatt?: BluetoothRemoteGATTServer | undefined; readonly gatt?: BluetoothRemoteGATTServer | undefined;
forget(): Promise<void>; forget(): Promise<void>;
watchAdvertisements(options?: WatchAdvertisementsOptions): Promise<void>; watchAdvertisements(options?: WatchAdvertisementsOptions): Promise<void>;
readonly watchingAdvertisements: boolean; readonly watchingAdvertisements: boolean;
addEventListener(type: "gattserverdisconnected", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(
addEventListener(type: "advertisementreceived", listener: (this: this, ev: BluetoothAdvertisingEvent) => any, useCapture?: boolean): void; type: "gattserverdisconnected",
listener: (this: this, ev: Event) => any,
useCapture?: boolean,
): void;
addEventListener(
type: "advertisementreceived",
listener: (this: this, ev: BluetoothAdvertisingEvent) => any,
useCapture?: boolean,
): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
} }
interface Bluetooth extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers { interface Bluetooth
extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers
{
getDevices(): Promise<BluetoothDevice[]>; getDevices(): Promise<BluetoothDevice[]>;
getAvailability(): Promise<boolean>; getAvailability(): Promise<boolean>;
onavailabilitychanged: (this: this, ev: Event) => any; onavailabilitychanged: (this: this, ev: Event) => any;
...@@ -165,7 +181,11 @@ interface Bluetooth extends EventTarget, BluetoothDeviceEventHandlers, Character ...@@ -165,7 +181,11 @@ interface Bluetooth extends EventTarget, BluetoothDeviceEventHandlers, Character
requestDevice(options?: RequestDeviceOptions): Promise<BluetoothDevice>; requestDevice(options?: RequestDeviceOptions): Promise<BluetoothDevice>;
requestLEScan(options?: BluetoothLEScanOptions): Promise<BluetoothLEScan>; requestLEScan(options?: BluetoothLEScanOptions): Promise<BluetoothLEScan>;
addEventListener(type: "availabilitychanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: "availabilitychanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
addEventListener(type: "advertisementreceived", listener: (this: this, ev: BluetoothAdvertisingEvent) => any, useCapture?: boolean): void; addEventListener(
type: "advertisementreceived",
listener: (this: this, ev: BluetoothAdvertisingEvent) => any,
useCapture?: boolean,
): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
} }
......
{ {
"name": "@types/web-bluetooth", "name": "@types/web-bluetooth",
"version": "0.0.17", "version": "0.0.18",
"description": "TypeScript definitions for Web Bluetooth", "description": "TypeScript definitions for Web Bluetooth",
"homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/web-bluetooth", "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/web-bluetooth",
"license": "MIT", "license": "MIT",
...@@ -35,6 +35,6 @@ ...@@ -35,6 +35,6 @@
}, },
"scripts": {}, "scripts": {},
"dependencies": {}, "dependencies": {},
"typesPublisherContentHash": "50ded6ad9a4a36988815fd095d86e3929f9a2a219383733d597aefb8a9d67558", "typesPublisherContentHash": "f8714903c001398af17f739a8a4f761b0f4984a1653e425b25a3381a50dfe5cf",
"typeScriptVersion": "4.3" "typeScriptVersion": "4.5"
} }
\ No newline at end of file
MIT License
Copyright (c) 2019-present, Yuxi (Evan) You and Vite contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# @vitejs/plugin-vue [![npm](https://img.shields.io/npm/v/@vitejs/plugin-vue.svg)](https://npmjs.com/package/@vitejs/plugin-vue)
> Note: as of `vue` 3.2.13+ and `@vitejs/plugin-vue` 1.9.0+, `@vue/compiler-sfc` is no longer required as a peer dependency.
```js
// vite.config.js
import vue from '@vitejs/plugin-vue'
export default {
plugins: [vue()],
}
```
For JSX / TSX support, [`@vitejs/plugin-vue-jsx`](https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue-jsx) is also needed.
## Options
```ts
export interface Options {
include?: string | RegExp | (string | RegExp)[]
exclude?: string | RegExp | (string | RegExp)[]
isProduction?: boolean
// options to pass on to vue/compiler-sfc
script?: Partial<
Pick<
SFCScriptCompileOptions,
| 'babelParserPlugins'
| 'globalTypeFiles'
| 'defineModel'
| 'propsDestructure'
| 'fs'
| 'reactivityTransform'
>
>
template?: Partial<
Pick<
SFCTemplateCompileOptions,
| 'compiler'
| 'compilerOptions'
| 'preprocessOptions'
| 'preprocessCustomRequire'
| 'transformAssetUrls'
>
>
style?: Partial<Pick<SFCStyleCompileOptions, 'trim'>>
/**
* Transform Vue SFCs into custom elements.
* - `true`: all `*.vue` imports are converted into custom elements
* - `string | RegExp`: matched files are converted into custom elements
*
* @default /\.ce\.vue$/
*/
customElement?: boolean | string | RegExp | (string | RegExp)[]
/**
* Enable Vue reactivity transform (experimental).
* https://vuejs.org/guide/extras/reactivity-transform.html
* - `true`: transform will be enabled for all vue,js(x),ts(x) files except
* those inside node_modules
* - `string | RegExp`: apply to vue + only matched files (will include
* node_modules, so specify directories if necessary)
* - `false`: disable in all cases
*
* @default false
*/
reactivityTransform?: boolean | string | RegExp | (string | RegExp)[]
/**
* Use custom compiler-sfc instance. Can be used to force a specific version.
*/
compiler?: typeof _compiler
}
```
## Asset URL handling
When `@vitejs/plugin-vue` compiles the `<template>` blocks in SFCs, it also converts any encountered asset URLs into ESM imports.
For example, the following template snippet:
```vue
<img src="../image.png" />
```
Is the same as:
```vue
<script setup>
import _imports_0 from '../image.png'
</script>
<img :src="_imports_0" />
```
By default the following tag/attribute combinations are transformed, and can be configured using the `template.transformAssetUrls` option.
```js
{
video: ['src', 'poster'],
source: ['src'],
img: ['src'],
image: ['xlink:href', 'href'],
use: ['xlink:href', 'href']
}
```
Note that only attribute values that are static strings are transformed. Otherwise, you'd need to import the asset manually, e.g. `import imgUrl from '../image.png'`.
## Example for passing options to `vue/compiler-sfc`:
```ts
import vue from '@vitejs/plugin-vue'
export default {
plugins: [
vue({
template: {
compilerOptions: {
// ...
},
transformAssetUrls: {
// ...
},
},
}),
],
}
```
## Example for transforming custom blocks
```ts
import vue from '@vitejs/plugin-vue'
import yaml from 'js-yaml'
const vueI18nPlugin = {
name: 'vue-i18n',
transform(code, id) {
// if .vue file don't have <i18n> block, just return
if (!/vue&type=i18n/.test(id)) {
return
}
// parse yaml
if (/\.ya?ml$/.test(id)) {
code = JSON.stringify(yaml.load(code.trim()))
}
// mount the value on the i18n property of the component instance
return `export default Comp => {
Comp.i18n = ${code}
}`
},
}
export default {
plugins: [vue(), vueI18nPlugin],
}
```
Create a file named `Demo.vue`, add `lang="yaml"` to the `<i18n>` blocks, then you can use the syntax of `YAML`:
```vue
<template>Hello</template>
<i18n lang="yaml">
message: 'world'
fullWord: 'hello world'
</i18n>
```
`message` is mounted on the i18n property of the component instance, you can use like this:
```vue
<script setup lang="ts">
import Demo from 'components/Demo.vue'
</script>
<template>
<Demo /> {{ Demo.i18n.message }}
<div>{{ Demo.i18n.fullWord }}</div>
</template>
```
## Using Vue SFCs as Custom Elements
> Requires `vue@^3.2.0` & `@vitejs/plugin-vue@^1.4.0`
Vue 3.2 introduces the `defineCustomElement` method, which works with SFCs. By default, `<style>` tags inside SFCs are extracted and merged into CSS files during build. However when shipping a library of custom elements, it may be desirable to inline the styles as JavaScript strings and inject them into the custom elements' shadow root instead.
Starting in 1.4.0, files ending with `*.ce.vue` will be compiled in "custom elements" mode: its `<style>` tags are compiled into inlined CSS strings and attached to the component as its `styles` property:
```js
import { defineCustomElement } from 'vue'
import Example from './Example.ce.vue'
console.log(Example.styles) // ['/* css content */']
// register
customElements.define('my-example', defineCustomElement(Example))
```
Note in custom elements mode there is no need to use `<style scoped>` since the CSS is already scoped inside the shadow DOM.
The `customElement` plugin option can be used to configure the behavior:
- `{ customElement: true }` will import all `*.vue` files in custom element mode.
- Use a string or regex pattern to change how files should be loaded as Custom Elements (this check is applied after `include` and `exclude` matches).
## License
MIT
import { ViteDevServer, Plugin } from 'vite';
import * as _compiler from 'vue/compiler-sfc';
import { SFCScriptCompileOptions, SFCTemplateCompileOptions, SFCStyleCompileOptions } from 'vue/compiler-sfc';
interface VueQuery {
vue?: boolean;
src?: string;
type?: 'script' | 'template' | 'style' | 'custom';
index?: number;
lang?: string;
raw?: boolean;
url?: boolean;
scoped?: boolean;
}
declare function parseVueRequest(id: string): {
filename: string;
query: VueQuery;
};
interface Options {
include?: string | RegExp | (string | RegExp)[];
exclude?: string | RegExp | (string | RegExp)[];
isProduction?: boolean;
script?: Partial<Pick<SFCScriptCompileOptions, 'babelParserPlugins' | 'globalTypeFiles' | 'defineModel' | 'propsDestructure' | 'fs' | 'reactivityTransform' | 'hoistStatic'>>;
template?: Partial<Pick<SFCTemplateCompileOptions, 'compiler' | 'compilerOptions' | 'preprocessOptions' | 'preprocessCustomRequire' | 'transformAssetUrls'>>;
style?: Partial<Pick<SFCStyleCompileOptions, 'trim'>>;
/**
* Transform Vue SFCs into custom elements.
* - `true`: all `*.vue` imports are converted into custom elements
* - `string | RegExp`: matched files are converted into custom elements
*
* @default /\.ce\.vue$/
*/
customElement?: boolean | string | RegExp | (string | RegExp)[];
/**
* Enable Vue reactivity transform (experimental).
* https://vuejs.org/guide/extras/reactivity-transform.html
* - `true`: transform will be enabled for all vue,js(x),ts(x) files except
* those inside node_modules
* - `string | RegExp`: apply to vue + only matched files (will include
* node_modules, so specify directories if necessary)
* - `false`: disable in all cases
*
* @default false
*/
reactivityTransform?: boolean | string | RegExp | (string | RegExp)[];
/**
* Use custom compiler-sfc instance. Can be used to force a specific version.
*/
compiler?: typeof _compiler;
}
interface ResolvedOptions extends Options {
compiler: typeof _compiler;
root: string;
sourceMap: boolean;
cssDevSourcemap: boolean;
devServer?: ViteDevServer;
devToolsEnabled?: boolean;
}
declare function vuePlugin(rawOptions?: Options): Plugin;
export { Options, ResolvedOptions, VueQuery, vuePlugin as default, parseVueRequest };
import { ViteDevServer, Plugin } from 'vite';
import * as _compiler from 'vue/compiler-sfc';
import { SFCScriptCompileOptions, SFCTemplateCompileOptions, SFCStyleCompileOptions } from 'vue/compiler-sfc';
interface VueQuery {
vue?: boolean;
src?: string;
type?: 'script' | 'template' | 'style' | 'custom';
index?: number;
lang?: string;
raw?: boolean;
url?: boolean;
scoped?: boolean;
}
declare function parseVueRequest(id: string): {
filename: string;
query: VueQuery;
};
interface Options {
include?: string | RegExp | (string | RegExp)[];
exclude?: string | RegExp | (string | RegExp)[];
isProduction?: boolean;
script?: Partial<Pick<SFCScriptCompileOptions, 'babelParserPlugins' | 'globalTypeFiles' | 'defineModel' | 'propsDestructure' | 'fs' | 'reactivityTransform' | 'hoistStatic'>>;
template?: Partial<Pick<SFCTemplateCompileOptions, 'compiler' | 'compilerOptions' | 'preprocessOptions' | 'preprocessCustomRequire' | 'transformAssetUrls'>>;
style?: Partial<Pick<SFCStyleCompileOptions, 'trim'>>;
/**
* Transform Vue SFCs into custom elements.
* - `true`: all `*.vue` imports are converted into custom elements
* - `string | RegExp`: matched files are converted into custom elements
*
* @default /\.ce\.vue$/
*/
customElement?: boolean | string | RegExp | (string | RegExp)[];
/**
* Enable Vue reactivity transform (experimental).
* https://vuejs.org/guide/extras/reactivity-transform.html
* - `true`: transform will be enabled for all vue,js(x),ts(x) files except
* those inside node_modules
* - `string | RegExp`: apply to vue + only matched files (will include
* node_modules, so specify directories if necessary)
* - `false`: disable in all cases
*
* @default false
*/
reactivityTransform?: boolean | string | RegExp | (string | RegExp)[];
/**
* Use custom compiler-sfc instance. Can be used to force a specific version.
*/
compiler?: typeof _compiler;
}
interface ResolvedOptions extends Options {
compiler: typeof _compiler;
root: string;
sourceMap: boolean;
cssDevSourcemap: boolean;
devServer?: ViteDevServer;
devToolsEnabled?: boolean;
}
declare function vuePlugin(rawOptions?: Options): Plugin;
export { Options, ResolvedOptions, VueQuery, vuePlugin as default, parseVueRequest };
import { ViteDevServer, Plugin } from 'vite';
import * as _compiler from 'vue/compiler-sfc';
import { SFCScriptCompileOptions, SFCTemplateCompileOptions, SFCStyleCompileOptions } from 'vue/compiler-sfc';
interface VueQuery {
vue?: boolean;
src?: string;
type?: 'script' | 'template' | 'style' | 'custom';
index?: number;
lang?: string;
raw?: boolean;
url?: boolean;
scoped?: boolean;
}
declare function parseVueRequest(id: string): {
filename: string;
query: VueQuery;
};
interface Options {
include?: string | RegExp | (string | RegExp)[];
exclude?: string | RegExp | (string | RegExp)[];
isProduction?: boolean;
script?: Partial<Pick<SFCScriptCompileOptions, 'babelParserPlugins' | 'globalTypeFiles' | 'defineModel' | 'propsDestructure' | 'fs' | 'reactivityTransform' | 'hoistStatic'>>;
template?: Partial<Pick<SFCTemplateCompileOptions, 'compiler' | 'compilerOptions' | 'preprocessOptions' | 'preprocessCustomRequire' | 'transformAssetUrls'>>;
style?: Partial<Pick<SFCStyleCompileOptions, 'trim'>>;
/**
* Transform Vue SFCs into custom elements.
* - `true`: all `*.vue` imports are converted into custom elements
* - `string | RegExp`: matched files are converted into custom elements
*
* @default /\.ce\.vue$/
*/
customElement?: boolean | string | RegExp | (string | RegExp)[];
/**
* Enable Vue reactivity transform (experimental).
* https://vuejs.org/guide/extras/reactivity-transform.html
* - `true`: transform will be enabled for all vue,js(x),ts(x) files except
* those inside node_modules
* - `string | RegExp`: apply to vue + only matched files (will include
* node_modules, so specify directories if necessary)
* - `false`: disable in all cases
*
* @default false
*/
reactivityTransform?: boolean | string | RegExp | (string | RegExp)[];
/**
* Use custom compiler-sfc instance. Can be used to force a specific version.
*/
compiler?: typeof _compiler;
}
interface ResolvedOptions extends Options {
compiler: typeof _compiler;
root: string;
sourceMap: boolean;
cssDevSourcemap: boolean;
devServer?: ViteDevServer;
devToolsEnabled?: boolean;
}
declare function vuePlugin(rawOptions?: Options): Plugin;
export { Options, ResolvedOptions, VueQuery, vuePlugin as default, parseVueRequest };
import fs from 'node:fs'; import fs from 'node:fs';
import { createFilter, isCSSRequest, normalizePath as normalizePath$1, transformWithEsbuild, formatPostcssSourceMap } from 'vite'; import { isCSSRequest, normalizePath as normalizePath$1, transformWithEsbuild, formatPostcssSourceMap, createFilter } from 'vite';
import { createRequire } from 'node:module'; import { createRequire } from 'node:module';
import path from 'node:path'; import path from 'node:path';
import { createHash } from 'node:crypto'; import { createHash } from 'node:crypto';
import require$$0 from 'tty'; import require$$0 from 'tty';
import require$$1 from 'util'; import require$$1 from 'util';
const version = "4.3.4";
function resolveCompiler(root) { function resolveCompiler(root) {
const compiler = tryResolveCompiler(root) || tryResolveCompiler(); const compiler = tryResolveCompiler(root) || tryResolveCompiler();
if (!compiler) { if (!compiler) {
...@@ -67,42 +65,34 @@ function slash(path) { ...@@ -67,42 +65,34 @@ function slash(path) {
} }
const cache = /* @__PURE__ */ new Map(); const cache = /* @__PURE__ */ new Map();
const hmrCache = /* @__PURE__ */ new Map();
const prevCache = /* @__PURE__ */ new Map(); const prevCache = /* @__PURE__ */ new Map();
function createDescriptor(filename, source, { root, isProduction, sourceMap, compiler }, hmr = false) { function createDescriptor(filename, source, { root, isProduction, sourceMap, compiler }) {
const { descriptor, errors } = compiler.parse(source, { const { descriptor, errors } = compiler.parse(source, {
filename, filename,
sourceMap sourceMap
}); });
const normalizedPath = slash(path.normalize(path.relative(root, filename))); const normalizedPath = slash(path.normalize(path.relative(root, filename)));
descriptor.id = getHash(normalizedPath + (isProduction ? source : "")); descriptor.id = getHash(normalizedPath + (isProduction ? source : ""));
(hmr ? hmrCache : cache).set(filename, descriptor); cache.set(filename, descriptor);
return { descriptor, errors }; return { descriptor, errors };
} }
function getPrevDescriptor(filename) { function getPrevDescriptor(filename) {
return prevCache.get(filename); return prevCache.get(filename);
} }
function invalidateDescriptor(filename, hmr = false) { function setPrevDescriptor(filename, entry) {
const _cache = hmr ? hmrCache : cache; prevCache.set(filename, entry);
const prev = _cache.get(filename);
_cache.delete(filename);
if (prev) {
prevCache.set(filename, prev);
}
} }
function getDescriptor(filename, options, createIfNotFound = true, hmr = false) { function getDescriptor(filename, options, createIfNotFound = true) {
const _cache = hmr ? hmrCache : cache; if (cache.has(filename)) {
if (_cache.has(filename)) { return cache.get(filename);
return _cache.get(filename);
} }
if (createIfNotFound) { if (createIfNotFound) {
const { descriptor, errors } = createDescriptor( const { descriptor, errors } = createDescriptor(
filename, filename,
fs.readFileSync(filename, "utf-8"), fs.readFileSync(filename, "utf-8"),
options, options
hmr
); );
if (errors.length && !hmr) { if (errors.length) {
throw errors[0]; throw errors[0];
} }
return descriptor; return descriptor;
...@@ -1661,7 +1651,7 @@ function requireBrowser () { ...@@ -1661,7 +1651,7 @@ function requireBrowser () {
} }
// Internet Explorer and Edge do not support colors. // Internet Explorer and Edge do not support colors.
if (typeof navigator !== 'undefined' && undefined && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
return false; return false;
} }
...@@ -1672,9 +1662,9 @@ function requireBrowser () { ...@@ -1672,9 +1662,9 @@ function requireBrowser () {
(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
// Is firefox >= v31? // Is firefox >= v31?
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
(typeof navigator !== 'undefined' && undefined && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
// Double check webkit in userAgent just in case we are in a worker // Double check webkit in userAgent just in case we are in a worker
(typeof navigator !== 'undefined' && undefined && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
} }
/** /**
...@@ -2103,12 +2093,13 @@ const _debug = /*@__PURE__*/getDefaultExportFromCjs(srcExports); ...@@ -2103,12 +2093,13 @@ const _debug = /*@__PURE__*/getDefaultExportFromCjs(srcExports);
const debug = _debug("vite:hmr"); const debug = _debug("vite:hmr");
const directRequestRE = /(?:\?|&)direct\b/; const directRequestRE = /(?:\?|&)direct\b/;
async function handleHotUpdate({ file, modules, read }, options) { async function handleHotUpdate({ file, modules, read }, options) {
const prevDescriptor = getDescriptor(file, options, false, true); const prevDescriptor = getDescriptor(file, options, false);
if (!prevDescriptor) { if (!prevDescriptor) {
return; return;
} }
setPrevDescriptor(file, prevDescriptor);
const content = await read(); const content = await read();
const { descriptor } = createDescriptor(file, content, options, true); const { descriptor } = createDescriptor(file, content, options);
let needRerender = false; let needRerender = false;
const affectedModules = /* @__PURE__ */ new Set(); const affectedModules = /* @__PURE__ */ new Set();
const mainModule = getMainModule(modules); const mainModule = getMainModule(modules);
...@@ -2195,7 +2186,6 @@ async function handleHotUpdate({ file, modules, read }, options) { ...@@ -2195,7 +2186,6 @@ async function handleHotUpdate({ file, modules, read }, options) {
updateType.push(`style`); updateType.push(`style`);
} }
if (updateType.length) { if (updateType.length) {
invalidateDescriptor(file);
debug(`[vue:update(${updateType.join("&")})] ${file}`); debug(`[vue:update(${updateType.join("&")})] ${file}`);
} }
return [...affectedModules].filter(Boolean); return [...affectedModules].filter(Boolean);
...@@ -2269,8 +2259,6 @@ async function transformMain(code, filename, options, pluginContext, ssr, asCust ...@@ -2269,8 +2259,6 @@ async function transformMain(code, filename, options, pluginContext, ssr, asCust
const { devServer, isProduction, devToolsEnabled } = options; const { devServer, isProduction, devToolsEnabled } = options;
const prevDescriptor = getPrevDescriptor(filename); const prevDescriptor = getPrevDescriptor(filename);
const { descriptor, errors } = createDescriptor(filename, code, options); const { descriptor, errors } = createDescriptor(filename, code, options);
if (fs.existsSync(filename))
getDescriptor(filename, options, true, true);
if (errors.length) { if (errors.length) {
errors.forEach( errors.forEach(
(error) => pluginContext.error(createRollupError(filename, error)) (error) => pluginContext.error(createRollupError(filename, error))
...@@ -2692,15 +2680,6 @@ function vuePlugin(rawOptions = {}) { ...@@ -2692,15 +2680,6 @@ function vuePlugin(rawOptions = {}) {
}; };
return { return {
name: "vite:vue", name: "vite:vue",
api: {
get options() {
return options;
},
set options(value) {
options = value;
},
version
},
handleHotUpdate(ctx) { handleHotUpdate(ctx) {
if (options.compiler.invalidateTypeCache) { if (options.compiler.invalidateTypeCache) {
options.compiler.invalidateTypeCache(ctx.file); options.compiler.invalidateTypeCache(ctx.file);
......
{
"name": "@vitejs/plugin-vue",
"version": "4.3.1",
"license": "MIT",
"author": "Evan You",
"files": [
"dist"
],
"main": "./dist/index.cjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"import": "./dist/index.mjs",
"require": "./dist/index.cjs"
}
},
"scripts": {
"dev": "unbuild --stub",
"build": "unbuild && pnpm run patch-cjs",
"patch-cjs": "tsx ../../scripts/patchCJS.ts",
"prepublishOnly": "npm run build"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"repository": {
"type": "git",
"url": "git+https://github.com/vitejs/vite-plugin-vue.git",
"directory": "packages/plugin-vue"
},
"bugs": {
"url": "https://github.com/vitejs/vite-plugin-vue/issues"
},
"homepage": "https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#readme",
"peerDependencies": {
"vite": "^4.0.0",
"vue": "^3.2.25"
},
"devDependencies": {
"@jridgewell/gen-mapping": "^0.3.3",
"@jridgewell/trace-mapping": "^0.3.19",
"debug": "^4.3.4",
"rollup": "^3.17.2",
"slash": "^5.1.0",
"source-map": "^0.6.1",
"vite": "^4.4.9",
"vue": "^3.3.4"
}
}
...@@ -830,7 +830,7 @@ function parseChildren(context, mode, ancestors) { ...@@ -830,7 +830,7 @@ function parseChildren(context, mode, ancestors) {
continue; continue;
} else if (/[a-z]/i.test(s[2])) { } else if (/[a-z]/i.test(s[2])) {
emitError(context, 23); emitError(context, 23);
parseTag(context, TagType.End, parent); parseTag(context, 1 /* End */, parent);
continue; continue;
} else { } else {
emitError( emitError(
...@@ -991,7 +991,7 @@ function parseElement(context, ancestors) { ...@@ -991,7 +991,7 @@ function parseElement(context, ancestors) {
const wasInPre = context.inPre; const wasInPre = context.inPre;
const wasInVPre = context.inVPre; const wasInVPre = context.inVPre;
const parent = last(ancestors); const parent = last(ancestors);
const element = parseTag(context, TagType.Start, parent); const element = parseTag(context, 0 /* Start */, parent);
const isPreBoundary = context.inPre && !wasInPre; const isPreBoundary = context.inPre && !wasInPre;
const isVPreBoundary = context.inVPre && !wasInVPre; const isVPreBoundary = context.inVPre && !wasInVPre;
if (element.isSelfClosing || context.options.isVoidTag(element.tag)) { if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
...@@ -1026,7 +1026,7 @@ function parseElement(context, ancestors) { ...@@ -1026,7 +1026,7 @@ function parseElement(context, ancestors) {
} }
element.children = children; element.children = children;
if (startsWithEndTagOpen(context.source, element.tag)) { if (startsWithEndTagOpen(context.source, element.tag)) {
parseTag(context, TagType.End, parent); parseTag(context, 1 /* End */, parent);
} else { } else {
emitError(context, 24, 0, element.loc.start); emitError(context, 24, 0, element.loc.start);
if (context.source.length === 0 && element.tag.toLowerCase() === "script") { if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
...@@ -1045,11 +1045,6 @@ function parseElement(context, ancestors) { ...@@ -1045,11 +1045,6 @@ function parseElement(context, ancestors) {
} }
return element; return element;
} }
var TagType = /* @__PURE__ */ ((TagType2) => {
TagType2[TagType2["Start"] = 0] = "Start";
TagType2[TagType2["End"] = 1] = "End";
return TagType2;
})(TagType || {});
const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap( const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap(
`if,else,else-if,for,slot` `if,else,else-if,for,slot`
); );
...@@ -1592,9 +1587,13 @@ function walk(node, context, doNotHoistNode = false) { ...@@ -1592,9 +1587,13 @@ function walk(node, context, doNotHoistNode = false) {
context.transformHoist(children, context, node); context.transformHoist(children, context, node);
} }
if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) {
node.codegenNode.children = context.hoist( const hoisted = context.hoist(
createArrayExpression(node.codegenNode.children) createArrayExpression(node.codegenNode.children)
); );
if (context.hmr) {
hoisted.content = `[...${hoisted.content}]`;
}
node.codegenNode.children = hoisted;
} }
} }
function getConstantType(node, context) { function getConstantType(node, context) {
...@@ -1767,6 +1766,7 @@ function createTransformContext(root, { ...@@ -1767,6 +1766,7 @@ function createTransformContext(root, {
filename = "", filename = "",
prefixIdentifiers = false, prefixIdentifiers = false,
hoistStatic: hoistStatic2 = false, hoistStatic: hoistStatic2 = false,
hmr = false,
cacheHandlers = false, cacheHandlers = false,
nodeTransforms = [], nodeTransforms = [],
directiveTransforms = {}, directiveTransforms = {},
...@@ -1792,6 +1792,7 @@ function createTransformContext(root, { ...@@ -1792,6 +1792,7 @@ function createTransformContext(root, {
selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])),
prefixIdentifiers, prefixIdentifiers,
hoistStatic: hoistStatic2, hoistStatic: hoistStatic2,
hmr,
cacheHandlers, cacheHandlers,
nodeTransforms, nodeTransforms,
directiveTransforms, directiveTransforms,
...@@ -1817,7 +1818,7 @@ function createTransformContext(root, { ...@@ -1817,7 +1818,7 @@ function createTransformContext(root, {
directives: /* @__PURE__ */ new Set(), directives: /* @__PURE__ */ new Set(),
hoists: [], hoists: [],
imports: [], imports: [],
constantCache: /* @__PURE__ */ new Map(), constantCache: /* @__PURE__ */ new WeakMap(),
temps: 0, temps: 0,
cached: 0, cached: 0,
identifiers: /* @__PURE__ */ Object.create(null), identifiers: /* @__PURE__ */ Object.create(null),
...@@ -3172,7 +3173,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa ...@@ -3172,7 +3173,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa
const bailConstant = constantBailRE.test(rawExp); const bailConstant = constantBailRE.test(rawExp);
if (isSimpleIdentifier(rawExp)) { if (isSimpleIdentifier(rawExp)) {
const isScopeVarReference = context.identifiers[rawExp]; const isScopeVarReference = context.identifiers[rawExp];
const isAllowedGlobal = shared.isGloballyWhitelisted(rawExp); const isAllowedGlobal = shared.isGloballyAllowed(rawExp);
const isLiteral = isLiteralWhitelisted(rawExp); const isLiteral = isLiteralWhitelisted(rawExp);
if (!asParams && !isScopeVarReference && !isAllowedGlobal && !isLiteral) { if (!asParams && !isScopeVarReference && !isAllowedGlobal && !isLiteral) {
if (isConst(bindingMetadata[node.content])) { if (isConst(bindingMetadata[node.content])) {
...@@ -3274,7 +3275,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa ...@@ -3274,7 +3275,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa
return ret; return ret;
} }
function canPrefix(id) { function canPrefix(id) {
if (shared.isGloballyWhitelisted(id.name)) { if (shared.isGloballyAllowed(id.name)) {
return false; return false;
} }
if (id.name === "require") { if (id.name === "require") {
...@@ -3836,7 +3837,7 @@ const trackVForSlotScopes = (node, context) => { ...@@ -3836,7 +3837,7 @@ const trackVForSlotScopes = (node, context) => {
} }
} }
}; };
const buildClientSlotFn = (props, children, loc) => createFunctionExpression( const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression(
props, props,
children, children,
false, false,
...@@ -3861,7 +3862,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3861,7 +3862,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
slotsProperties.push( slotsProperties.push(
createObjectProperty( createObjectProperty(
arg || createSimpleExpression("default", true), arg || createSimpleExpression("default", true),
buildSlotFn(exp, children, loc) buildSlotFn(exp, void 0, children, loc)
) )
); );
} }
...@@ -3898,10 +3899,15 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3898,10 +3899,15 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
} else { } else {
hasDynamicSlots = true; hasDynamicSlots = true;
} }
const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc); const vFor = findDir(slotElement, "for");
const slotFunction = buildSlotFn(
slotProps,
vFor == null ? void 0 : vFor.exp,
slotChildren,
slotLoc
);
let vIf; let vIf;
let vElse; let vElse;
let vFor;
if (vIf = findDir(slotElement, "if")) { if (vIf = findDir(slotElement, "if")) {
hasDynamicSlots = true; hasDynamicSlots = true;
dynamicSlots.push( dynamicSlots.push(
...@@ -3946,7 +3952,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3946,7 +3952,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
createCompilerError(30, vElse.loc) createCompilerError(30, vElse.loc)
); );
} }
} else if (vFor = findDir(slotElement, "for")) { } else if (vFor) {
hasDynamicSlots = true; hasDynamicSlots = true;
const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context); const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);
if (parseResult) { if (parseResult) {
...@@ -3987,7 +3993,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3987,7 +3993,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
} }
if (!onComponentSlot) { if (!onComponentSlot) {
const buildDefaultSlotProperty = (props, children2) => { const buildDefaultSlotProperty = (props, children2) => {
const fn = buildSlotFn(props, children2, loc); const fn = buildSlotFn(props, void 0, children2, loc);
if (context.compatConfig) { if (context.compatConfig) {
fn.isNonScopedSlot = true; fn.isNonScopedSlot = true;
} }
......
...@@ -826,7 +826,7 @@ function parseChildren(context, mode, ancestors) { ...@@ -826,7 +826,7 @@ function parseChildren(context, mode, ancestors) {
continue; continue;
} else if (/[a-z]/i.test(s[2])) { } else if (/[a-z]/i.test(s[2])) {
emitError(context, 23); emitError(context, 23);
parseTag(context, TagType.End, parent); parseTag(context, 1 /* End */, parent);
continue; continue;
} else { } else {
emitError( emitError(
...@@ -982,7 +982,7 @@ function parseElement(context, ancestors) { ...@@ -982,7 +982,7 @@ function parseElement(context, ancestors) {
const wasInPre = context.inPre; const wasInPre = context.inPre;
const wasInVPre = context.inVPre; const wasInVPre = context.inVPre;
const parent = last(ancestors); const parent = last(ancestors);
const element = parseTag(context, TagType.Start, parent); const element = parseTag(context, 0 /* Start */, parent);
const isPreBoundary = context.inPre && !wasInPre; const isPreBoundary = context.inPre && !wasInPre;
const isVPreBoundary = context.inVPre && !wasInVPre; const isVPreBoundary = context.inVPre && !wasInVPre;
if (element.isSelfClosing || context.options.isVoidTag(element.tag)) { if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
...@@ -1017,7 +1017,7 @@ function parseElement(context, ancestors) { ...@@ -1017,7 +1017,7 @@ function parseElement(context, ancestors) {
} }
element.children = children; element.children = children;
if (startsWithEndTagOpen(context.source, element.tag)) { if (startsWithEndTagOpen(context.source, element.tag)) {
parseTag(context, TagType.End, parent); parseTag(context, 1 /* End */, parent);
} else { } else {
emitError(context, 24, 0, element.loc.start); emitError(context, 24, 0, element.loc.start);
if (context.source.length === 0 && element.tag.toLowerCase() === "script") { if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
...@@ -1036,11 +1036,6 @@ function parseElement(context, ancestors) { ...@@ -1036,11 +1036,6 @@ function parseElement(context, ancestors) {
} }
return element; return element;
} }
var TagType = /* @__PURE__ */ ((TagType2) => {
TagType2[TagType2["Start"] = 0] = "Start";
TagType2[TagType2["End"] = 1] = "End";
return TagType2;
})(TagType || {});
const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap( const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap(
`if,else,else-if,for,slot` `if,else,else-if,for,slot`
); );
...@@ -1551,9 +1546,13 @@ function walk(node, context, doNotHoistNode = false) { ...@@ -1551,9 +1546,13 @@ function walk(node, context, doNotHoistNode = false) {
context.transformHoist(children, context, node); context.transformHoist(children, context, node);
} }
if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) {
node.codegenNode.children = context.hoist( const hoisted = context.hoist(
createArrayExpression(node.codegenNode.children) createArrayExpression(node.codegenNode.children)
); );
if (context.hmr) {
hoisted.content = `[...${hoisted.content}]`;
}
node.codegenNode.children = hoisted;
} }
} }
function getConstantType(node, context) { function getConstantType(node, context) {
...@@ -1726,6 +1725,7 @@ function createTransformContext(root, { ...@@ -1726,6 +1725,7 @@ function createTransformContext(root, {
filename = "", filename = "",
prefixIdentifiers = false, prefixIdentifiers = false,
hoistStatic: hoistStatic2 = false, hoistStatic: hoistStatic2 = false,
hmr = false,
cacheHandlers = false, cacheHandlers = false,
nodeTransforms = [], nodeTransforms = [],
directiveTransforms = {}, directiveTransforms = {},
...@@ -1751,6 +1751,7 @@ function createTransformContext(root, { ...@@ -1751,6 +1751,7 @@ function createTransformContext(root, {
selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])),
prefixIdentifiers, prefixIdentifiers,
hoistStatic: hoistStatic2, hoistStatic: hoistStatic2,
hmr,
cacheHandlers, cacheHandlers,
nodeTransforms, nodeTransforms,
directiveTransforms, directiveTransforms,
...@@ -1776,7 +1777,7 @@ function createTransformContext(root, { ...@@ -1776,7 +1777,7 @@ function createTransformContext(root, {
directives: /* @__PURE__ */ new Set(), directives: /* @__PURE__ */ new Set(),
hoists: [], hoists: [],
imports: [], imports: [],
constantCache: /* @__PURE__ */ new Map(), constantCache: /* @__PURE__ */ new WeakMap(),
temps: 0, temps: 0,
cached: 0, cached: 0,
identifiers: /* @__PURE__ */ Object.create(null), identifiers: /* @__PURE__ */ Object.create(null),
...@@ -3101,7 +3102,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa ...@@ -3101,7 +3102,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa
const bailConstant = constantBailRE.test(rawExp); const bailConstant = constantBailRE.test(rawExp);
if (isSimpleIdentifier(rawExp)) { if (isSimpleIdentifier(rawExp)) {
const isScopeVarReference = context.identifiers[rawExp]; const isScopeVarReference = context.identifiers[rawExp];
const isAllowedGlobal = shared.isGloballyWhitelisted(rawExp); const isAllowedGlobal = shared.isGloballyAllowed(rawExp);
const isLiteral = isLiteralWhitelisted(rawExp); const isLiteral = isLiteralWhitelisted(rawExp);
if (!asParams && !isScopeVarReference && !isAllowedGlobal && !isLiteral) { if (!asParams && !isScopeVarReference && !isAllowedGlobal && !isLiteral) {
if (isConst(bindingMetadata[node.content])) { if (isConst(bindingMetadata[node.content])) {
...@@ -3203,7 +3204,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa ...@@ -3203,7 +3204,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa
return ret; return ret;
} }
function canPrefix(id) { function canPrefix(id) {
if (shared.isGloballyWhitelisted(id.name)) { if (shared.isGloballyAllowed(id.name)) {
return false; return false;
} }
if (id.name === "require") { if (id.name === "require") {
...@@ -3755,7 +3756,7 @@ const trackVForSlotScopes = (node, context) => { ...@@ -3755,7 +3756,7 @@ const trackVForSlotScopes = (node, context) => {
} }
} }
}; };
const buildClientSlotFn = (props, children, loc) => createFunctionExpression( const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression(
props, props,
children, children,
false, false,
...@@ -3780,7 +3781,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3780,7 +3781,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
slotsProperties.push( slotsProperties.push(
createObjectProperty( createObjectProperty(
arg || createSimpleExpression("default", true), arg || createSimpleExpression("default", true),
buildSlotFn(exp, children, loc) buildSlotFn(exp, void 0, children, loc)
) )
); );
} }
...@@ -3817,10 +3818,15 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3817,10 +3818,15 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
} else { } else {
hasDynamicSlots = true; hasDynamicSlots = true;
} }
const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc); const vFor = findDir(slotElement, "for");
const slotFunction = buildSlotFn(
slotProps,
vFor == null ? void 0 : vFor.exp,
slotChildren,
slotLoc
);
let vIf; let vIf;
let vElse; let vElse;
let vFor;
if (vIf = findDir(slotElement, "if")) { if (vIf = findDir(slotElement, "if")) {
hasDynamicSlots = true; hasDynamicSlots = true;
dynamicSlots.push( dynamicSlots.push(
...@@ -3865,7 +3871,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3865,7 +3871,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
createCompilerError(30, vElse.loc) createCompilerError(30, vElse.loc)
); );
} }
} else if (vFor = findDir(slotElement, "for")) { } else if (vFor) {
hasDynamicSlots = true; hasDynamicSlots = true;
const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context); const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);
if (parseResult) { if (parseResult) {
...@@ -3906,7 +3912,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3906,7 +3912,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
} }
if (!onComponentSlot) { if (!onComponentSlot) {
const buildDefaultSlotProperty = (props, children2) => { const buildDefaultSlotProperty = (props, children2) => {
const fn = buildSlotFn(props, children2, loc); const fn = buildSlotFn(props, void 0, children2, loc);
if (context.compatConfig) { if (context.compatConfig) {
fn.isNonScopedSlot = true; fn.isNonScopedSlot = true;
} }
......
...@@ -90,10 +90,10 @@ export interface TransformContext extends Required<Omit<TransformOptions, 'filen ...@@ -90,10 +90,10 @@ export interface TransformContext extends Required<Omit<TransformOptions, 'filen
removeIdentifiers(exp: ExpressionNode | string): void; removeIdentifiers(exp: ExpressionNode | string): void;
hoist(exp: string | JSChildNode | ArrayExpression): SimpleExpressionNode; hoist(exp: string | JSChildNode | ArrayExpression): SimpleExpressionNode;
cache<T extends JSChildNode>(exp: T, isVNode?: boolean): CacheExpression | T; cache<T extends JSChildNode>(exp: T, isVNode?: boolean): CacheExpression | T;
constantCache: Map<TemplateChildNode, ConstantTypes>; constantCache: WeakMap<TemplateChildNode, ConstantTypes>;
filters?: Set<string>; filters?: Set<string>;
} }
export declare function createTransformContext(root: RootNode, { filename, prefixIdentifiers, hoistStatic, cacheHandlers, nodeTransforms, directiveTransforms, transformHoist, isBuiltInComponent, isCustomElement, expressionPlugins, scopeId, slotted, ssr, inSSR, ssrCssVars, bindingMetadata, inline, isTS, onError, onWarn, compatConfig }: TransformOptions): TransformContext; export declare function createTransformContext(root: RootNode, { filename, prefixIdentifiers, hoistStatic, hmr, cacheHandlers, nodeTransforms, directiveTransforms, transformHoist, isBuiltInComponent, isCustomElement, expressionPlugins, scopeId, slotted, ssr, inSSR, ssrCssVars, bindingMetadata, inline, isTS, onError, onWarn, compatConfig }: TransformOptions): TransformContext;
export declare function transform(root: RootNode, options: TransformOptions): void; export declare function transform(root: RootNode, options: TransformOptions): void;
export declare function traverseNode(node: RootNode | TemplateChildNode, context: TransformContext): void; export declare function traverseNode(node: RootNode | TemplateChildNode, context: TransformContext): void;
export declare function createStructuralDirectiveTransform(name: string | RegExp, fn: StructuralDirectiveTransform): NodeTransform; export declare function createStructuralDirectiveTransform(name: string | RegExp, fn: StructuralDirectiveTransform): NodeTransform;
...@@ -840,6 +840,12 @@ export interface TransformOptions extends SharedTransformCodegenOptions, ErrorHa ...@@ -840,6 +840,12 @@ export interface TransformOptions extends SharedTransformCodegenOptions, ErrorHa
* needed to render inline CSS variables on component root * needed to render inline CSS variables on component root
*/ */
ssrCssVars?: string; ssrCssVars?: string;
/**
* Whether to compile the template assuming it needs to handle HMR.
* Some edge cases may need to generate different code for HMR to work
* correctly, e.g. #6938, #7138
*/
hmr?: boolean;
} }
export interface CodegenOptions extends SharedTransformCodegenOptions { export interface CodegenOptions extends SharedTransformCodegenOptions {
/** /**
...@@ -976,7 +982,7 @@ export declare function stringifyExpression(exp: ExpressionNode | string): strin ...@@ -976,7 +982,7 @@ export declare function stringifyExpression(exp: ExpressionNode | string): strin
export declare const trackSlotScopes: NodeTransform; export declare const trackSlotScopes: NodeTransform;
export declare const trackVForSlotScopes: NodeTransform; export declare const trackVForSlotScopes: NodeTransform;
export type SlotFnBuilder = (slotProps: ExpressionNode | undefined, slotChildren: TemplateChildNode[], loc: SourceLocation) => FunctionExpression; export type SlotFnBuilder = (slotProps: ExpressionNode | undefined, vForExp: ExpressionNode | undefined, slotChildren: TemplateChildNode[], loc: SourceLocation) => FunctionExpression;
export declare function buildSlots(node: ElementNode, context: TransformContext, buildSlotFn?: SlotFnBuilder): { export declare function buildSlots(node: ElementNode, context: TransformContext, buildSlotFn?: SlotFnBuilder): {
slots: SlotsExpression; slots: SlotsExpression;
hasDynamicSlots: boolean; hasDynamicSlots: boolean;
......
...@@ -813,7 +813,7 @@ function parseChildren(context, mode, ancestors) { ...@@ -813,7 +813,7 @@ function parseChildren(context, mode, ancestors) {
continue; continue;
} else if (/[a-z]/i.test(s[2])) { } else if (/[a-z]/i.test(s[2])) {
emitError(context, 23); emitError(context, 23);
parseTag(context, TagType.End, parent); parseTag(context, 1 /* End */, parent);
continue; continue;
} else { } else {
emitError( emitError(
...@@ -974,7 +974,7 @@ function parseElement(context, ancestors) { ...@@ -974,7 +974,7 @@ function parseElement(context, ancestors) {
const wasInPre = context.inPre; const wasInPre = context.inPre;
const wasInVPre = context.inVPre; const wasInVPre = context.inVPre;
const parent = last(ancestors); const parent = last(ancestors);
const element = parseTag(context, TagType.Start, parent); const element = parseTag(context, 0 /* Start */, parent);
const isPreBoundary = context.inPre && !wasInPre; const isPreBoundary = context.inPre && !wasInPre;
const isVPreBoundary = context.inVPre && !wasInVPre; const isVPreBoundary = context.inVPre && !wasInVPre;
if (element.isSelfClosing || context.options.isVoidTag(element.tag)) { if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
...@@ -1009,7 +1009,7 @@ function parseElement(context, ancestors) { ...@@ -1009,7 +1009,7 @@ function parseElement(context, ancestors) {
} }
element.children = children; element.children = children;
if (startsWithEndTagOpen(context.source, element.tag)) { if (startsWithEndTagOpen(context.source, element.tag)) {
parseTag(context, TagType.End, parent); parseTag(context, 1 /* End */, parent);
} else { } else {
emitError(context, 24, 0, element.loc.start); emitError(context, 24, 0, element.loc.start);
if (context.source.length === 0 && element.tag.toLowerCase() === "script") { if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
...@@ -1028,11 +1028,6 @@ function parseElement(context, ancestors) { ...@@ -1028,11 +1028,6 @@ function parseElement(context, ancestors) {
} }
return element; return element;
} }
var TagType = /* @__PURE__ */ ((TagType2) => {
TagType2[TagType2["Start"] = 0] = "Start";
TagType2[TagType2["End"] = 1] = "End";
return TagType2;
})(TagType || {});
const isSpecialTemplateDirective = /* @__PURE__ */ makeMap( const isSpecialTemplateDirective = /* @__PURE__ */ makeMap(
`if,else,else-if,for,slot` `if,else,else-if,for,slot`
); );
...@@ -1575,9 +1570,13 @@ function walk(node, context, doNotHoistNode = false) { ...@@ -1575,9 +1570,13 @@ function walk(node, context, doNotHoistNode = false) {
context.transformHoist(children, context, node); context.transformHoist(children, context, node);
} }
if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) { if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) {
node.codegenNode.children = context.hoist( const hoisted = context.hoist(
createArrayExpression(node.codegenNode.children) createArrayExpression(node.codegenNode.children)
); );
if (context.hmr) {
hoisted.content = `[...${hoisted.content}]`;
}
node.codegenNode.children = hoisted;
} }
} }
function getConstantType(node, context) { function getConstantType(node, context) {
...@@ -1751,6 +1750,7 @@ function createTransformContext(root, { ...@@ -1751,6 +1750,7 @@ function createTransformContext(root, {
filename = "", filename = "",
prefixIdentifiers = false, prefixIdentifiers = false,
hoistStatic: hoistStatic2 = false, hoistStatic: hoistStatic2 = false,
hmr = false,
cacheHandlers = false, cacheHandlers = false,
nodeTransforms = [], nodeTransforms = [],
directiveTransforms = {}, directiveTransforms = {},
...@@ -1776,6 +1776,7 @@ function createTransformContext(root, { ...@@ -1776,6 +1776,7 @@ function createTransformContext(root, {
selfName: nameMatch && capitalize(camelize(nameMatch[1])), selfName: nameMatch && capitalize(camelize(nameMatch[1])),
prefixIdentifiers, prefixIdentifiers,
hoistStatic: hoistStatic2, hoistStatic: hoistStatic2,
hmr,
cacheHandlers, cacheHandlers,
nodeTransforms, nodeTransforms,
directiveTransforms, directiveTransforms,
...@@ -1801,7 +1802,7 @@ function createTransformContext(root, { ...@@ -1801,7 +1802,7 @@ function createTransformContext(root, {
directives: /* @__PURE__ */ new Set(), directives: /* @__PURE__ */ new Set(),
hoists: [], hoists: [],
imports: [], imports: [],
constantCache: /* @__PURE__ */ new Map(), constantCache: /* @__PURE__ */ new WeakMap(),
temps: 0, temps: 0,
cached: 0, cached: 0,
identifiers: /* @__PURE__ */ Object.create(null), identifiers: /* @__PURE__ */ Object.create(null),
...@@ -3291,7 +3292,7 @@ const trackVForSlotScopes = (node, context) => { ...@@ -3291,7 +3292,7 @@ const trackVForSlotScopes = (node, context) => {
} }
} }
}; };
const buildClientSlotFn = (props, children, loc) => createFunctionExpression( const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression(
props, props,
children, children,
false, false,
...@@ -3313,7 +3314,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3313,7 +3314,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
slotsProperties.push( slotsProperties.push(
createObjectProperty( createObjectProperty(
arg || createSimpleExpression("default", true), arg || createSimpleExpression("default", true),
buildSlotFn(exp, children, loc) buildSlotFn(exp, void 0, children, loc)
) )
); );
} }
...@@ -3350,10 +3351,15 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3350,10 +3351,15 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
} else { } else {
hasDynamicSlots = true; hasDynamicSlots = true;
} }
const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc); const vFor = findDir(slotElement, "for");
const slotFunction = buildSlotFn(
slotProps,
vFor == null ? void 0 : vFor.exp,
slotChildren,
slotLoc
);
let vIf; let vIf;
let vElse; let vElse;
let vFor;
if (vIf = findDir(slotElement, "if")) { if (vIf = findDir(slotElement, "if")) {
hasDynamicSlots = true; hasDynamicSlots = true;
dynamicSlots.push( dynamicSlots.push(
...@@ -3398,7 +3404,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3398,7 +3404,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
createCompilerError(30, vElse.loc) createCompilerError(30, vElse.loc)
); );
} }
} else if (vFor = findDir(slotElement, "for")) { } else if (vFor) {
hasDynamicSlots = true; hasDynamicSlots = true;
const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context); const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);
if (parseResult) { if (parseResult) {
...@@ -3439,7 +3445,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { ...@@ -3439,7 +3445,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
} }
if (!onComponentSlot) { if (!onComponentSlot) {
const buildDefaultSlotProperty = (props, children2) => { const buildDefaultSlotProperty = (props, children2) => {
const fn = buildSlotFn(props, children2, loc); const fn = buildSlotFn(props, void 0, children2, loc);
if (context.compatConfig) { if (context.compatConfig) {
fn.isNonScopedSlot = true; fn.isNonScopedSlot = true;
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment