Skip to content

Commit 4975f57

Browse files
committed
chore: playground migrate to github
1 parent 154c3e1 commit 4975f57

File tree

5 files changed

+13
-140
lines changed

5 files changed

+13
-140
lines changed

.gitee/ISSUE_TEMPLATE/bug.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ body:
4141
- type: input
4242
attributes:
4343
label: 演示地址
44-
description: 为了我们能尽快定位到问题,我们强烈推荐使用Sandbox-Vue(https://layui-vue.gitee.io/sandbox-vue)提供一个演示地址用于复现您的问题。或者您也可以提供Stackblitz, CodePen地址。
44+
description: 为了我们能尽快定位到问题,我们强烈推荐使用Playground(https://layui-vue.github.io/layui-vue-playground)提供一个演示地址用于复现您的问题。或者您也可以提供Stackblitz, CodePen地址。
4545
placeholder: URL
4646
validations:
4747
required: true

docs/document-component/src/components/LayCode.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<i
2626
class="layui-icon layui-icon-component btn"
2727
@click="onPlayground"
28-
title="sandbox-vue 打开"
28+
title="Playground 打开"
2929
/>
3030
<i
3131
class="layui-icon layui-icon-chart btn"
@@ -58,7 +58,7 @@ const onPlayground = async function () {
5858
const foundCode = foundCodes[0];
5959
const SourceCode = foundCode.textContent || "";
6060
61-
const { link } = await openPlayground(SourceCode, true);
61+
const { link } = await openPlayground(SourceCode);
6262
window.open(link);
6363
};
6464

docs/document-component/src/document/zh-CN/components/layer.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ const changeFeatureVisible2 = () => {
621621
::: title 高级通讯
622622
:::
623623

624-
::: demo 查看 [Children1.vue](https://layui-vue.gitee.io/sandbox-vue/#eNqdUkGO00AQ/ErLFyeSY5OrSaJFK87LA3yZtTub2R3PjGba0UaWD5w4cUTiCDwA+AGfQZH4BT127HXEjZu7XNVTXd1t9Mba9NhglEcbwtoqQbgrNMDmviEyGm5KJcunbREZi/rW1NZo1LQuot3508/zx++bbCAOIqltQ0Ani6wgfKYiguOqNhUqBipBInVYC/fEeMaSTTY9CoXm2pdOWgIl9EPo4JnnkRrLXMlvO4IWHIqS5BETOCRceKOOODmDDvbO1BDzUPFMpMQJ3fTzhstGZj24umLeHqSqHOo7jRdumo3YOiTFVOi9lkZ7gjATbCdPizb8HmbMIf796+v5/Y84KXS3fNFcR8nqxRK2O+ilvaU0MIZWACRJIfc6f/nw59vn0Cug3IlYncNhMbOc8KS9o2554fmDqFi9F8pjDwUjXUh+iJqDjZJoGH5VC5s+eqP5GtriAvIK8rbrmHQVw78Hszeu7r/+4w5Ykl30s5N4uYfxBsYEsZbEuVW4lxrfcuEXcSmUwiqe5WydsX6ivQvVEGowkMPd/SOWNK5mFkh4l04KwZe8iIqR4G3YjxVVJfVDDutX9vn1GGVg76LuL+G7LGU=), 通过 h() 函数的第二个参数向 Children1.vue 传递响应式变量。
624+
::: demo 查看 [Children1.vue](https://layui-vue.github.io/layui-vue-playground/#eNqdUkGO00AQ/ErLFyeSY5OrSaJFK87LA3yZtTub2R3PjGba0UaWD5w4cUTiCDwA+AGfQZH4BT127HXEjZu7XNVTXd1t9Mba9NhglEcbwtoqQbgrNMDmviEyGm5KJcunbREZi/rW1NZo1LQuot3508/zx++bbCAOIqltQ0Ani6wgfKYiguOqNhUqBipBInVYC/fEeMaSTTY9CoXm2pdOWgIl9EPo4JnnkRrLXMlvO4IWHIqS5BETOCRceKOOODmDDvbO1BDzUPFMpMQJ3fTzhstGZj24umLeHqSqHOo7jRdumo3YOiTFVOi9lkZ7gjATbCdPizb8HmbMIf796+v5/Y84KXS3fNFcR8nqxRK2O+ilvaU0MIZWACRJIfc6f/nw59vn0Cug3IlYncNhMbOc8KS9o2554fmDqFi9F8pjDwUjXUh+iJqDjZJoGH5VC5s+eqP5GtriAvIK8rbrmHQVw78Hszeu7r/+4w5Ykl30s5N4uYfxBsYEsZbEuVW4lxrfcuEXcSmUwiqe5WydsX6ivQvVEGowkMPd/SOWNK5mFkh4l04KwZe8iIqR4G3YjxVVJfVDDutX9vn1GGVg76LuL+G7LGU=), 通过 h() 函数的第二个参数向 Children1.vue 传递响应式变量。
625625

626626
<template>
627627
<lay-input type="text" v-model="data.remark" >
@@ -650,7 +650,7 @@ const openComponent1 = () => {
650650

651651
:::
652652

653-
::: demo 查看 [Children2.vue](https://layui-vue.gitee.io/sandbox-vue/#eNqNksFum0AQhl9lxAWsYmPnSG2UKOoTtLfSA4Yh3hZ2VzC4sRDnSO2h1x6jPkQP7esklfoWnQXWAaWHcGJmv5n9d+ZvnSutV8cGndDZEpa6SAijWAJs9w2RknCZFiL9tIsdpVFeq1IriZIuYid6+PX14ffPbTCAQ5GQuiGgk0auILyl2IHjslQZFpyQTbnnRMDsNpjcxmGdVkITFIm8MZU1YzVSo/lU8J0VQQsVJimJI/pw8DnIoYO8UiW4rN+dcEVywup8eMlhI4I+uZyR1wdRZBXKd5/VyK4Cm7swQ2E0lqmSNYGulIbdWYLXdgt7ZF7VH+XeZr1ec96ezEfGjLeAXQStGVWvZ2UIr48BSFCBIbh/7u/+/vju+kOWOxFXh3DwJnr9oYn5jLKRBVDyKsu8CuvFEwC9wtUxKRpkDZPgFWws1E1avG32L26xfN6iW/Q/ZkCdWfSwWl6k4zvD5JdlolcfayXZdW08JnnlYdt1DM128NyYuarK/u/JpKPhhoitczZtkmXs1Mcv9zObvqCwbtip0ePdt7m/g/HymX2tea1h7fqxFMTTyjAXEt9wUHvvXVbk+i63dz9MnMLZuT2gr/Z6fBikRbn0/6jpadHJ1I0+OhUIdcpuyzhj3jCUam4v5E0Im7W+fW33ZejI6f4B7opkgw==), 通过 h() 函数的第二个参数声明 onXxx() 形式的函数完成 Children2.vue 的事件监听。
653+
::: demo 查看 [Children2.vue](https://layui-vue.github.io/layui-vue-playground/#eNqNksFum0AQhl9lxAWsYmPnSG2UKOoTtLfSA4Yh3hZ2VzC4sRDnSO2h1x6jPkQP7esklfoWnQXWAaWHcGJmv5n9d+ZvnSutV8cGndDZEpa6SAijWAJs9w2RknCZFiL9tIsdpVFeq1IriZIuYid6+PX14ffPbTCAQ5GQuiGgk0auILyl2IHjslQZFpyQTbnnRMDsNpjcxmGdVkITFIm8MZU1YzVSo/lU8J0VQQsVJimJI/pw8DnIoYO8UiW4rN+dcEVywup8eMlhI4I+uZyR1wdRZBXKd5/VyK4Cm7swQ2E0lqmSNYGulIbdWYLXdgt7ZF7VH+XeZr1ec96ezEfGjLeAXQStGVWvZ2UIr48BSFCBIbh/7u/+/vju+kOWOxFXh3DwJnr9oYn5jLKRBVDyKsu8CuvFEwC9wtUxKRpkDZPgFWws1E1avG32L26xfN6iW/Q/ZkCdWfSwWl6k4zvD5JdlolcfayXZdW08JnnlYdt1DM128NyYuarK/u/JpKPhhoitczZtkmXs1Mcv9zObvqCwbtip0ePdt7m/g/HymX2tea1h7fqxFMTTyjAXEt9wUHvvXVbk+i63dz9MnMLZuT2gr/Z6fBikRbn0/6jpadHJ1I0+OhUIdcpuyzhj3jCUam4v5E0Im7W+fW33ZejI6f4B7opkgw==), 通过 h() 函数的第二个参数声明 onXxx() 形式的函数完成 Children2.vue 的事件监听。
654654

655655
<template>
656656
<lay-input type="text" v-model="numb" >
Lines changed: 6 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -1,146 +1,19 @@
1-
import type { BuiltInParserName } from "prettier";
2-
import { zlibSync, unzlibSync, strToU8, strFromU8 } from "fflate";
3-
4-
const scriptRe = /<script[^>]*>([\s\S]*)<\/script>/;
5-
const exportDefaultRe = /export\s*default\s*\{([\s\S]*)\}\;?\s*<\/script>/;
6-
const setupRe = /setup\s*\(\)\s*\{([\s\S]*)return\s*\{([\s\S]*)\}\;?\s*\}\;?/;
7-
const layerRe =
8-
/import\s?\{\s?layer\s?\}\s?from\s?[\"|\']\@layui\/layer-vue[\"|\']/;
9-
10-
// danger: 以下字符串拼接代码不可改动缩进或换行,否则会影响 URI hash 解码后代码的排版
111
const MAIN_FILE_NAME = "App.vue";
122

13-
/**
14-
* 将代码编码为 URI hash, 生成 playground 链接
15-
* @param source 源码
16-
* @param convertSetupSugar 转换 setup,仅字符串替换,没有做任何语法分析
17-
* @returns 处理后的代码,URI hsah, playground 链接
18-
}
19-
*/
20-
export const openPlayground = async (
21-
source: string,
22-
convertSetupSugar: boolean
23-
) => {
24-
const decodeCode = source;
25-
const scriptResult = decodeCode.match(scriptRe);
26-
27-
// 替换 script 标签
28-
let code: string | undefined = decodeCode;
29-
if (convertSetupSugar) {
30-
if (scriptResult) {
31-
code = decodeCode.replace(
32-
scriptRe,
33-
`<script lang="ts" setup>$1
34-
</script>`
35-
);
36-
} else {
37-
code = `${decodeCode}
38-
<script lang="ts" setup>
39-
40-
</script>`;
41-
}
42-
43-
// 去除 export default,保留其中的内容
44-
const exportDefaultResult = code.match(exportDefaultRe);
45-
if (exportDefaultResult) {
46-
code = code.replace(
47-
exportDefaultRe,
48-
trimBr(exportDefaultResult[1] + `</script>`).trim()
49-
);
50-
// console.log("export",code);
51-
}
52-
// 去除 setup 函数,保留其中的内容
53-
const setupResult = code.match(setupRe);
54-
if (setupResult) {
55-
code = code.replace(setupRe, trimBr(setupResult[1]));
56-
// console.log("setup",code);
57-
}
58-
}
59-
// 替换 layer 引入语句
60-
// playground 中使用最新版 layer 请从 @layui/layer-vue 引入
61-
if (code.match(layerRe)) {
62-
code = code.replace(layerRe, `import { layer } from "@layui/layui-vue"`);
63-
// console.log("layer",code);
64-
}
3+
function utoa(data: string): string {
4+
return btoa(unescape(encodeURIComponent(data)));
5+
}
656

66-
code = await formatCode(MAIN_FILE_NAME, code);
7+
export const openPlayground = (source: string) => {
8+
const code = decodeURIComponent(source);
679
const originCode = {
6810
[MAIN_FILE_NAME]: code,
6911
};
7012

7113
const encoded = utoa(JSON.stringify(originCode));
72-
const link = `https://layui-vue.gitee.io/sandbox-vue/#${encoded}`;
14+
const link = `https://layui-vue.github.io/layui-vue-playground/#${encoded}`;
7315
return {
74-
code,
7516
encoded,
7617
link,
7718
};
7819
};
79-
80-
/**
81-
*
82-
* @returns 格式化代码
83-
*/
84-
async function formatCode(filename: string, data: string) {
85-
const [format, parserHtml, parserTypeScript, parserBabel, parserPostcss] =
86-
await Promise.all([
87-
import("prettier/standalone").then((r) => r.format),
88-
import("prettier/parser-html").then((m) => m.default),
89-
import("prettier/parser-typescript").then((m) => m.default),
90-
import("prettier/parser-babel").then((m) => m.default),
91-
import("prettier/parser-postcss").then((m) => m.default),
92-
]);
93-
let code = data;
94-
let parser: BuiltInParserName;
95-
if (filename.endsWith(".vue")) {
96-
parser = "vue";
97-
} else if (filename.endsWith(".js")) {
98-
parser = "babel";
99-
} else if (filename.endsWith(".ts")) {
100-
parser = "typescript";
101-
} else if (filename.endsWith(".json")) {
102-
parser = "json";
103-
} else {
104-
return;
105-
}
106-
code = format(code, {
107-
parser,
108-
plugins: [parserHtml, parserTypeScript, parserBabel, parserPostcss],
109-
semi: false, // 语句末尾打印分号
110-
singleQuote: true, // 使用单引号
111-
vueIndentScriptAndStyle: false, // 是否缩进 Vue 文件中的 script 和 style 标签
112-
});
113-
114-
return code;
115-
}
116-
117-
/**
118-
* 去除字符串两端的空白行
119-
* @param str
120-
* @returns
121-
*/
122-
function trimBr(str: string): string {
123-
return str.replace(/(^[\r\n]*)|([\r\n]*$)/, "");
124-
}
125-
126-
export function utoa(data: string): string {
127-
const buffer = strToU8(data);
128-
const zipped = zlibSync(buffer, { level: 9 });
129-
const binary = strFromU8(zipped, true);
130-
return btoa(binary);
131-
}
132-
133-
export function atou(base64: string): string {
134-
const binary = atob(base64);
135-
136-
// zlib header (x78), level 9 (xDA)
137-
if (binary.startsWith("\x78\xDA")) {
138-
const buffer = strToU8(binary, true);
139-
const unzipped = unzlibSync(buffer);
140-
return strFromU8(unzipped);
141-
}
142-
143-
// old unicode hacks for backward compatibility
144-
// https://base64.guru/developers/javascript/examples/unicode-strings
145-
return decodeURIComponent(escape(binary));
146-
}

docs/document-layer/src/document/zh-CN/demo.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ const full = function() {
827827
<legend>通讯</legend>
828828
</fieldset>
829829

830-
::: demo 👉 查看 [Children1.vue](https://layui-vue.gitee.io/sandbox-vue/#eNqdUkGO00AQ/ErLFyeSY5OrSaJFK87LA3yZtTub2R3PjGba0UaWD5w4cUTiCDwA+AGfQZH4BT127HXEjZu7XNVTXd1t9Mba9NhglEcbwtoqQbgrNMDmviEyGm5KJcunbREZi/rW1NZo1LQuot3508/zx++bbCAOIqltQ0Ani6wgfKYiguOqNhUqBipBInVYC/fEeMaSTTY9CoXm2pdOWgIl9EPo4JnnkRrLXMlvO4IWHIqS5BETOCRceKOOODmDDvbO1BDzUPFMpMQJ3fTzhstGZj24umLeHqSqHOo7jRdumo3YOiTFVOi9lkZ7gjATbCdPizb8HmbMIf796+v5/Y84KXS3fNFcR8nqxRK2O+ilvaU0MIZWACRJIfc6f/nw59vn0Cug3IlYncNhMbOc8KS9o2554fmDqFi9F8pjDwUjXUh+iJqDjZJoGH5VC5s+eqP5GtriAvIK8rbrmHQVw78Hszeu7r/+4w5Ykl30s5N4uYfxBsYEsZbEuVW4lxrfcuEXcSmUwiqe5WydsX6ivQvVEGowkMPd/SOWNK5mFkh4l04KwZe8iIqR4G3YjxVVJfVDDutX9vn1GGVg76LuL+G7LGU=), 通过 h() 函数的第二个参数向 Children1.vue 传递响应式变量。
830+
::: demo 👉 查看 [Children1.vue](https://layui-vue.github.io/layui-vue-playground/#eNqdUkGO00AQ/ErLFyeSY5OrSaJFK87LA3yZtTub2R3PjGba0UaWD5w4cUTiCDwA+AGfQZH4BT127HXEjZu7XNVTXd1t9Mba9NhglEcbwtoqQbgrNMDmviEyGm5KJcunbREZi/rW1NZo1LQuot3508/zx++bbCAOIqltQ0Ani6wgfKYiguOqNhUqBipBInVYC/fEeMaSTTY9CoXm2pdOWgIl9EPo4JnnkRrLXMlvO4IWHIqS5BETOCRceKOOODmDDvbO1BDzUPFMpMQJ3fTzhstGZj24umLeHqSqHOo7jRdumo3YOiTFVOi9lkZ7gjATbCdPizb8HmbMIf796+v5/Y84KXS3fNFcR8nqxRK2O+ilvaU0MIZWACRJIfc6f/nw59vn0Cug3IlYncNhMbOc8KS9o2554fmDqFi9F8pjDwUjXUh+iJqDjZJoGH5VC5s+eqP5GtriAvIK8rbrmHQVw78Hszeu7r/+4w5Ykl30s5N4uYfxBsYEsZbEuVW4lxrfcuEXcSmUwiqe5WydsX6ivQvVEGowkMPd/SOWNK5mFkh4l04KwZe8iIqR4G3YjxVVJfVDDutX9vn1GGVg76LuL+G7LGU=), 通过 h() 函数的第二个参数向 Children1.vue 传递响应式变量。
831831

832832
<template>
833833
<button @click="openComponent1">数据</button>
@@ -853,7 +853,7 @@ const openComponent1 = () => {
853853

854854
:::
855855

856-
::: demo 👉 查看 [Children2.vue](https://layui-vue.gitee.io/sandbox-vue/#eNqNksFum0AQhl9lxAWsYmPnSG2UKOoTtLfSA4Yh3hZ2VzC4sRDnSO2h1x6jPkQP7esklfoWnQXWAaWHcGJmv5n9d+ZvnSutV8cGndDZEpa6SAijWAJs9w2RknCZFiL9tIsdpVFeq1IriZIuYid6+PX14ffPbTCAQ5GQuiGgk0auILyl2IHjslQZFpyQTbnnRMDsNpjcxmGdVkITFIm8MZU1YzVSo/lU8J0VQQsVJimJI/pw8DnIoYO8UiW4rN+dcEVywup8eMlhI4I+uZyR1wdRZBXKd5/VyK4Cm7swQ2E0lqmSNYGulIbdWYLXdgt7ZF7VH+XeZr1ec96ezEfGjLeAXQStGVWvZ2UIr48BSFCBIbh/7u/+/vju+kOWOxFXh3DwJnr9oYn5jLKRBVDyKsu8CuvFEwC9wtUxKRpkDZPgFWws1E1avG32L26xfN6iW/Q/ZkCdWfSwWl6k4zvD5JdlolcfayXZdW08JnnlYdt1DM128NyYuarK/u/JpKPhhoitczZtkmXs1Mcv9zObvqCwbtip0ePdt7m/g/HymX2tea1h7fqxFMTTyjAXEt9wUHvvXVbk+i63dz9MnMLZuT2gr/Z6fBikRbn0/6jpadHJ1I0+OhUIdcpuyzhj3jCUam4v5E0Im7W+fW33ZejI6f4B7opkgw==), 通过 h() 函数的第二个参数声明 onXxx() 形式的函数完成 Children2.vue 的事件监听。
856+
::: demo 👉 查看 [Children2.vue](https://layui-vue.github.io/layui-vue-playground/#eNqNksFum0AQhl9lxAWsYmPnSG2UKOoTtLfSA4Yh3hZ2VzC4sRDnSO2h1x6jPkQP7esklfoWnQXWAaWHcGJmv5n9d+ZvnSutV8cGndDZEpa6SAijWAJs9w2RknCZFiL9tIsdpVFeq1IriZIuYid6+PX14ffPbTCAQ5GQuiGgk0auILyl2IHjslQZFpyQTbnnRMDsNpjcxmGdVkITFIm8MZU1YzVSo/lU8J0VQQsVJimJI/pw8DnIoYO8UiW4rN+dcEVywup8eMlhI4I+uZyR1wdRZBXKd5/VyK4Cm7swQ2E0lqmSNYGulIbdWYLXdgt7ZF7VH+XeZr1ec96ezEfGjLeAXQStGVWvZ2UIr48BSFCBIbh/7u/+/vju+kOWOxFXh3DwJnr9oYn5jLKRBVDyKsu8CuvFEwC9wtUxKRpkDZPgFWws1E1avG32L26xfN6iW/Q/ZkCdWfSwWl6k4zvD5JdlolcfayXZdW08JnnlYdt1DM128NyYuarK/u/JpKPhhoitczZtkmXs1Mcv9zObvqCwbtip0ePdt7m/g/HymX2tea1h7fqxFMTTyjAXEt9wUHvvXVbk+i63dz9MnMLZuT2gr/Z6fBikRbn0/6jpadHJ1I0+OhUIdcpuyzhj3jCUam4v5E0Im7W+fW33ZejI6f4B7opkgw==), 通过 h() 函数的第二个参数声明 onXxx() 形式的函数完成 Children2.vue 的事件监听。
857857

858858
<template>
859859
<button @click="openComponent2">事件</button>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy