aardio 文档

aardio 范例: HTML 富文本复制工具

import win.clip;
import string.html;
import win.ui;
/*DSG{{*/
var winform = win.form(text="HTML 富文本复制工具";right=900;bottom=650;bgcolor=0xF5F2ED)
winform.add(
bk={cls="bk";left=7;top=124;right=268;bottom=585;bgcolor=0xFAF7F2;db=1;dl=1;dt=1;z=1};
bk2={cls="bk";left=7;top=4;right=881;bottom=118;bgcolor=0xCE8231;dl=1;dr=1;dt=1;forecolor=0xE19942;linearGradient=1;z=3};
bk3={cls="bk";left=7;top=585;right=881;bottom=647;bgcolor=0xFFFFFF;db=1;dl=1;dr=1;z=2};
btnCopy={cls="button";text="复制到剪贴板";left=621;top=589;right=837;bottom=636;bgcolor=0xFFFFFF;color=0xE19942;db=1;dr=1;font=LOGFONT(h=-14;weight=600);note="可直接粘贴到在线编辑器";z=10};
edit={cls="edit";text="F5";left=16;top=48;right=870;bottom=80;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(h=-14);z=11};
groupPreview={cls="custom";text="预览区域";left=280;top=125;right=880;bottom=575;bgcolor=0xFFFFFF;db=1;dl=1;dr=1;dt=1;edge=1;z=4};
lnkCodeBlock={cls="syslink";text='<a href="#">通用代码块复制工具</a>';left=16;top=614;right=158;bottom=638;bgcolor=0xFFFFFF;db=1;dl=1;font=LOGFONT(h=-13);notify=1;z=5};
radio3D={cls="radiobutton";text="3D 立体";left=16;top=406;right=136;bottom=430;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=20};
radioBadge={cls="radiobutton";text="信息徽章";left=145;top=372;right=265;bottom=396;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=32};
radioBrutalism={cls="radiobutton";text="波普";left=145;top=440;right=265;bottom=464;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=34};
radioCodeTitle={cls="radiobutton";text="代码块标题";left=16;top=543;right=136;bottom=567;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=24};
radioComment={cls="radiobutton";text="代码注释";left=16;top=509;right=136;bottom=533;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=23};
radioCyberpunk={cls="radiobutton";text="赛博朋克";left=145;top=406;right=265;bottom=430;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=33};
radioError={cls="radiobutton";text="错误提示";left=145;top=338;right=265;bottom=362;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=31};
radioGitHub={cls="radiobutton";text="GitHub 风格";left=16;top=166;right=136;bottom=190;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=13};
radioGlass={cls="radiobutton";text="玻璃态";left=145;top=166;right=265;bottom=190;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=26};
radioGradient={cls="radiobutton";text="现代渐变";left=16;top=303;right=136;bottom=327;bgcolor=0xFAF7F2;db=1;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=17};
radioHighlighter={cls="radiobutton";text="荧光笔";left=16;top=475;right=136;bottom=499;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=22};
radioHotkey={cls="radiobutton";text="热键样式";left=16;top=132;right=136;bottom=156;bgcolor=0xFAF7F2;checked=1;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=12};
radioLego={cls="radiobutton";text="乐高积木";left=145;top=509;right=265;bottom=533;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=36};
radioMacTag={cls="radiobutton";text="macOS 标签";left=145;top=303;right=265;bottom=327;bgcolor=0xFAF7F2;db=1;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=30};
radioMedium={cls="radiobutton";text="Medium 风格";left=16;top=269;right=136;bottom=293;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=16};
radioNeon={cls="radiobutton";text="霓虹发光";left=145;top=132;right=265;bottom=156;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);z=25};
radioNeumorphism={cls="radiobutton";text="新拟态";left=145;top=201;right=265;bottom=225;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=27};
radioPixel={cls="radiobutton";text="像素游戏";left=145;top=475;right=265;bottom=499;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=35};
radioRainbow={cls="radiobutton";text="彩虹渐变";left=145;top=235;right=265;bottom=259;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=28};
radioStackOverflow={cls="radiobutton";text="Stack Overflow";left=16;top=235;right=136;bottom=259;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=15};
radioSuccess={cls="radiobutton";text="成功提示";left=16;top=372;right=136;bottom=396;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=19};
radioTerminal={cls="radiobutton";text="终端样式";left=145;top=269;right=265;bottom=293;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=29};
radioTypewriter={cls="radiobutton";text="复古打字机";left=16;top=440;right=136;bottom=464;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=21};
radioVSCode={cls="radiobutton";text="VS Code 深色";left=16;top=201;right=136;bottom=225;bgcolor=0xFAF7F2;dl=1;dt=1;font=LOGFONT(h=-13);tabstop=1;z=14};
radioWarning={cls="radiobutton";text="警告提示";left=16;top=338;right=136;bottom=362;bgcolor=0xFAF7F2;db=1;dl=1;font=LOGFONT(h=-13);tabstop=1;z=18};
static={cls="static";text="输入需要添加样式的文本:";left=16;top=16;right=184;bottom=39;color=0xFFFFFF;dl=1;dt=1;font=LOGFONT(h=-13;weight=500);transparent=1;z=6};
static2={cls="static";text="字体大小:";left=16;top=89;right=90;bottom=112;color=0xFFFFFF;dl=1;dt=1;font=LOGFONT(h=-13;weight=500);transparent=1;z=7};
syslink={cls="syslink";text='<a href="http://gif123.aardio.com">Gif123 动画复制工具</a>';left=167;top=614;right=317;bottom=638;bgcolor=0xFFFFFF;db=1;dl=1;font=LOGFONT(h=-13);notify=1;z=9};
tbFontSize={cls="plus";left=97;top=93;right=680;bottom=108;bgcolor=0xFFE19942;border={radius=-1};color=0xFFFFFF;dl=1;dr=1;dt=1;foreRight=15;forecolor=0xFF5BCFEE;notify=1;paddingBottom=5;paddingTop=5;z=8}
)
/*}}*/

import web.form;
var wb = web.form(winform.groupPreview);
wb.noScriptErr = true;

// 样式模板
var styles = {

    // 热键样式
    hotkey = `<kbd style="background-color: #2572cb !important ;color: #FFF !important;border-radius: 4px !important ; box-shadow: 0px 3px 0px 1px silver !important ; padding: 4px 8px; margin: 0 4px; font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', 'Courier New', monospace; font-size: %s;  font-weight: bold;text-align: center;text-transform: uppercase; white-space: nowrap;">%s</kbd>`;

    // GitHub 风格
    github = `<code style="background-color: #f6f8fa; padding: 2px 6px; border-radius: 3px; font-family: 'Consolas', 'Monaco', 'Courier New', monospace; font-size: %s; color: #24292f; border: 1px solid #d0d7de;">%s</code>`;

    // VSC 风格
    vscode = `<code style="background-color: #1e1e1e; padding: 3px 8px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace; font-size: %s; color: #d4d4d4;">%s</code>`;

    // SO 风格
    stackoverflow = `<code style="background-color: #e4e6e8; padding: 2px 5px; border-radius: 3px; font-family: 'Courier New', Courier, monospace; font-size: %s; color: #2d2d2d;">%s</code>`;

    // Medium 风格
    medium = `<code style="background-color: rgba(0,0,0,0.05); padding: 3px 6px; border-radius: 2px; font-family: Menlo, Monaco, monospace; font-size: %s; color: #292929;">%s</code>`;

    // 现代渐变
    gradient = `<code style="background: linear-gradient(135deg, #667eea 0%%, #764ba2 100%%); padding: 3px 8px; border-radius: 5px; font-family: 'Fira Code', monospace; font-size: %s; color: #ffffff; font-weight: 500;">%s</code>`;

    // 霓虹发光效果
    neon = `<code style="background-color: #0a0e27; padding: 5px 12px; border-radius: 6px; font-family: 'Courier New', monospace; font-size: %s; color: #fff; text-shadow: 0 0 10px #00fff2, 0 0 20px #00fff2, 0 0 30px #00fff2; border: 2px solid #00fff2; box-shadow: inset 0 0 10px rgba(0, 255, 242, 0.3), 0 0 20px rgba(0, 255, 242, 0.5);">%s</code>`;

    // 玻璃态效果
    glass = `<code style="background: rgba(255, 255, 255, 0.25); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); padding: 4px 10px; border-radius: 8px; font-family: 'SF Pro Display', -apple-system, monospace; font-size: %s; color: #1a1a1a; border: 1px solid rgba(255, 255, 255, 0.5); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);">%s</code>`;

    // 新拟态效果
    neumorphism = `<code style="background: #e0e5ec; padding: 6px 14px; border-radius: 10px; font-family: 'Segoe UI', monospace; font-size: %s; color: #4a5568; box-shadow: 9px 9px 16px #a3a9b3, -9px -9px 16px #ffffff; font-weight: 500;">%s</code>`;

    // 彩虹渐变
    rainbow = `<code style="background: linear-gradient(90deg, #ff6b6b, #ffd93d, #6bcf7f, #4ecdc4, #4e89e3, #9b59b6); padding: 4px 10px; border-radius: 6px; font-family: 'Comic Sans MS', cursive; font-size: %s; color: #ffffff; font-weight: bold; text-shadow: 1px 1px 2px rgba(0,0,0,0.3);">%s</code>`;

    // 终端样式
    terminal = `<code style="background: #000000; padding: 5px 10px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace; font-size: %s; color: #00ff00; border-left: 3px solid #00ff00; box-shadow: 0 2px 4px rgba(0,0,0,0.3);">$ %s</code>`;

    // macOS 标签样式
    macTag = `<span style="background: linear-gradient(180deg, #5e5ce6 0%%, #4a4ae6 100%%); padding: 3px 10px; border-radius: 12px; font-family: -apple-system, BlinkMacSystemFont, sans-serif; font-size: %s; color: #ffffff; font-weight: 500; box-shadow: 0 2px 4px rgba(94, 92, 230, 0.3);">%s</span>`;

    // 警告提示样式
    warning = `<mark style="background: linear-gradient(135deg, #ffd700 0%%, #ffb347 100%%); padding: 2px 8px; border-radius: 4px; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: %s; color: #663300; font-weight: 600; box-shadow: 0 2px 4px rgba(255, 183, 71, 0.3);">⚠️ %s</mark>`;

    // 成功提示样式
    success = `<span style="background: linear-gradient(135deg, #84fab0 0%%, #8fd3f4 100%%); padding: 3px 10px; border-radius: 5px; font-family: 'Segoe UI', Tahoma, sans-serif; font-size: %s; color: #155724; font-weight: 500; border: 1px solid rgba(132, 250, 176, 0.5);">✓ %s</span>`;

    // 3D 立体效果
    three3d = `<code style="background: #f4f4f4; padding: 5px 12px; border-radius: 4px; font-family: 'Impact', sans-serif; font-size: %s; color: #333; text-shadow: 1px 1px 0px #fff, 2px 2px 0px #b0b0b0, 3px 3px 0px #c0c0c0; font-weight: bold; transform: perspective(500px) rotateY(-5deg);">%s</code>`;

    // 复古打字机效果
    typewriter = `<code style="background: #fffef0; padding: 4px 8px; border: 2px solid #3a3a3a; border-radius: 2px; font-family: 'Courier Prime', 'Courier', monospace; font-size: %s; color: #2a2a2a; box-shadow: 2px 2px 0px #3a3a3a; font-weight: 400; letter-spacing: 0.05em;">%s</code>`;

    // 荧光笔标记效果
    highlighter = `<mark style="background: linear-gradient(to bottom, transparent 50%%, #ffff00 50%%); padding: 0 4px; font-family: 'Arial', sans-serif; font-size: %s; color: #000; font-weight: 500;">%s</mark>`;

    // 代码注释样式
    comment = `<code style="background: #f0f0f0; padding: 2px 6px; border-left: 4px solid #999; font-family: 'Monaco', 'Consolas', monospace; font-size: %s; color: #666; font-style: italic;">// %s</code>`;

    // 错误提示样式
    error = `<code style="background: #fee; padding: 3px 8px; border-radius: 3px; border: 1px solid #fcc; font-family: 'Consolas', monospace; font-size: %s; color: #c00;">❌ %s</code>`;

    // 信息徽章样式
    badge = `<span style="background: linear-gradient(135deg, #667eea 0%%, #764ba2 100%%); padding: 2px 8px; border-radius: 10px; font-family: -apple-system, sans-serif; font-size: %s; color: #fff; font-weight: 600; display: inline-block; box-shadow: 0 2px 4px rgba(0,0,0,0.2);">%s</span>`;

    // 代码块标题样式
    codeTitle = `<code style="background: #2d2d2d; padding: 4px 10px; border-top-left-radius: 6px; border-top-right-radius: 6px; font-family: 'Monaco', monospace; font-size: %s; color: #61dafb; border-bottom: 2px solid #61dafb;">📁 %s</code>`;

    // 赛博朋克风格 (Cyberpunk)
    cyberpunk = `<code style="background-color: #0d0221; border: 1px solid #00f3ff; color: #00f3ff; padding: 4px 10px; font-family: 'Consolas', monospace; font-size: %s; text-shadow: 2px 2px 0px #ff00ff; box-shadow: 3px 3px 0px #ff00ff; font-weight: bold; letter-spacing: 1px;">%s</code>`;

    // 新丑主义/波普风格 (Brutalism)
    brutalism = `<span style="background-color: #ff90e8; border: 3px solid #000; color: #000; padding: 4px 8px; font-family: 'Arial Black', sans-serif; font-size: %s; font-weight: 900; box-shadow: 4px 4px 0px #000; transform: rotate(-1deg); display: inline-block;">%s</span>`;

    // 像素游戏风格 (8-Bit Pixel)
    pixel = `<code style="background-color: #2c2c2c; border: 4px solid #fff; outline: 4px solid #000; color: #39ff14; padding: 4px 8px; font-family: 'Courier New', monospace; font-size: %s; font-weight: bold; image-rendering: pixelated; margin: 4px;">%s</code>`;

    // 乐高积木 (Lego Style)
    lego = `<span style="background: #e3000b; color: #fff; padding: 4px 10px; font-family: Arial, sans-serif; font-size: %s; font-weight: 900; border-top: 2px solid #ff4d4d; border-left: 2px solid #ff4d4d; border-right: 2px solid #990000; border-bottom: 2px solid #990000; text-shadow: 1px 1px 0 rgba(0,0,0,0.2);">%s</span>`;
}

// 当前选中的样式
var currentStyle = "hotkey";
var currentHtml = "";

// 更新预览
updatePreview = function(){
    var text = winform.edit.text;
    if(!text || text == "") text = "示例文本";

    var fontSize = winform.tbFontSize.progressPos;
    fontSize = (1.5 /100 * fontSize + 0.5) + "em";

    var template = styles[currentStyle];
    currentHtml = string.format(template, fontSize, text);

    var html =  `
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
            padding: 20px;
            line-height: 1.6;
            color: #333;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            min-height: 90vh;
            margin: 0;
            background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ee 100%);
            overflow: hidden; 
            height: 80%;
        }
        html {
            padding: 10px;
            background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ee 100%);
        }
        pre {
            margin-top: 20px;
            background: #fff;
            padding: 15px;
            border-radius: 8px;
            overflow-x: auto;
            box-shadow: 0 2px 8px rgba(0,0,0,0.08);
            border: 1px solid #e4e8ee;
        }
        blockquote {
            background: #f8f9fb;
            border-left: 4px solid #4299e1;
            padding: 12px 16px;
            margin: 20px 0;
            border-radius: 0 8px 8px 0;
            color: #4a5568;
        }
        blockquote ol {
            margin: 0;
            padding-left: 20px;
        }
        blockquote li {
            margin: 4px 0;
        }
        `+ $"~\doc\style.css"  +`
    </style> 
    <script>`+$"~\doc\index.js"+`

Prism.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=.$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup;
</script>
</head>
<body>
<div style="background: #fff; padding: 30px 50px; border-radius: 12px; box-shadow: 0 4px 20px rgba(0,0,0,0.08);">
`+currentHtml+`
</div>
<div style="width: 100%; overflow: hidden; margin-top:20px;">
<pre style="white-space: pre-wrap; word-wrap: break-word; overflow-wrap: break-word; max-width: 100%%;">
<code style="white-space: inherit; word-break: break-all; display: block;" class="html language-html">
`+string.html.escape(currentHtml)+`
</code></pre>

<blockquote id="info">
<ol>
<li>请先在左侧点选样式
<li>按方向键可以快速切换,按回车键可快速复制
<li>在微信公众号编辑器内先输入 2 个空格,然后粘贴在空格中间。
</ol>
</blockquote>
</div>
</body></html>` 

    wb.html = html;
}

// 单选框事件 - 第一列
winform.radioHotkey.oncommand = function(id,event){
    currentStyle = "hotkey";
    updatePreview();
}

winform.radioGitHub.oncommand = function(id,event){
    currentStyle = "github";
    updatePreview();
}

winform.radioVSCode.oncommand = function(id,event){
    currentStyle = "vscode";
    updatePreview();
}

winform.radioStackOverflow.oncommand = function(id,event){
    currentStyle = "stackoverflow";
    updatePreview();
}

winform.radioMedium.oncommand = function(id,event){
    currentStyle = "medium";
    updatePreview();
}

winform.radioGradient.oncommand = function(id,event){
    currentStyle = "gradient";
    updatePreview();
}

// 单选框事件 - 第二列
winform.radioNeon.oncommand = function(id,event){
    currentStyle = "neon";
    updatePreview();
}

winform.radioGlass.oncommand = function(id,event){
    currentStyle = "glass";
    updatePreview();
}

winform.radioNeumorphism.oncommand = function(id,event){
    currentStyle = "neumorphism";
    updatePreview();
}

winform.radioRainbow.oncommand = function(id,event){
    currentStyle = "rainbow";
    updatePreview();
}

winform.radioTerminal.oncommand = function(id,event){
    currentStyle = "terminal";
    updatePreview();
}

winform.radioMacTag.oncommand = function(id,event){
    currentStyle = "macTag";
    updatePreview();
}

// 单选框事件 - 第三列和第四列
winform.radioWarning.oncommand = function(id,event){
    currentStyle = "warning";
    updatePreview();
}

winform.radioSuccess.oncommand = function(id,event){
    currentStyle = "success";
    updatePreview();
}

winform.radio3D.oncommand = function(id,event){
    currentStyle = "three3d";
    updatePreview();
}

winform.radioTypewriter.oncommand = function(id,event){
    currentStyle = "typewriter";
    updatePreview();
}

winform.radioHighlighter.oncommand = function(id,event){
    currentStyle = "highlighter";
    updatePreview();
}

winform.radioComment.oncommand = function(id,event){
    currentStyle = "comment";
    updatePreview();
}

winform.radioError.oncommand = function(id,event){
    currentStyle = "error";
    updatePreview();
}

winform.radioBadge.oncommand = function(id,event){
    currentStyle = "badge";
    updatePreview();
}

winform.radioCodeTitle.oncommand = function(id,event){
    currentStyle = "codeTitle";
    updatePreview();
}


winform.radioCyberpunk.oncommand = function(id,event){
    currentStyle = "cyberpunk";
    updatePreview();    
}

winform.radioBrutalism.oncommand = function(id,event){
    currentStyle = "brutalism";
    updatePreview();    
}


winform.radioPixel.oncommand = function(id,event){
    currentStyle = "pixel";
    updatePreview();    
}

winform.radioLego.oncommand = function(id,event){
    currentStyle = "lego";
    updatePreview();    
}


// 编辑框文本改变事件
winform.edit.oncommand = function(id,event){
    updatePreview();
}

// 复制按钮
winform.btnCopy.oncommand = function(id,event){
    winform.btnCopy.disabledText = ["✶","✸","✹","✺","✹","✷"]

    import win.clip.html;
    var cbHtml = win.clip.html();
    cbHtml.write(currentHtml); 

    // 彩色 emoji 动画效果
    var frames = {
        "📋 快好了...",
        "📋✨ 快好了....",
        "📋✨✨✨✨ 快好了...",
        "📋✨✨✨✨✨✨✨✨ 快好了..."
    };

    for(i=1;#frames){
        wb.getEle("info").innerText = frames[i];
        thread.delay(i < 4 ? 100 : 150); // 前面快一点,后面慢一点
    }


    wb.getEle("info").innerText = "✅ 已复制到剪贴板!请在支持 HTML 的富文本编辑器中直接粘贴。"

    winform.btnCopy.disabledText = null;
}

winform.onOk = winform.btnCopy.oncommand;

// 链接点击事件
winform.lnkCodeBlock.onHyperlinkClick = function(nmSysLink,url,id,index){
    import ide;
    ide.createProcess("~/example/WebUI/web.view/OtherApps/prism.aardio");
}

// 滑尺设置
winform.tbFontSize.setTrackbarRange(1,100);
winform.tbFontSize.progressPos = 27;
winform.tbFontSize.onPosChanged = function( pos,triggeredByUser ){
    if(triggeredByUser){
        updatePreview();
    }
}
winform.tbFontSize.skin({
    background={
        default=0xFFD9904A  // 蓝色轨道背景
    };
    foreground={
        default=0xFFEECF5B; // 浅蓝色进度
        hover=0xFFFFE066    // 悬停更亮
    };
    color={
        default=0xFFFFFFFF; // 白色滑块
        hover=0xFFF0F0F0
    }
})

updatePreview();

import win.debounce;
updatePreview = win.debounce(updatePreview,500);

winform.show();
win.loopMessage();
Markdown 格式