1import{_ as F}from"./CMDkOMlB.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{d as A,u as Y,c as y,w as l,o as v,h as p,i as s,j as f,ab as G,Y as r,t as d,ap as K,aw as q,a5 as w,af as Q,g as j,a7 as X,aa as Z,a0 as ee,ax as te,aR as ae,J as C,n as k}from"./7Rh2xM73.js";import{u as oe}from"./Du2YAAgM.js";import{I as S}from"./BDd7Htk8.js";import{I as se}from"./DiRThb2F.js";import{I as le}from"./CEhPMA_r.js";import{I as ne}from"./CZvmqO6i.js";const re={class:"EditorArea"},ce={class:"EditorBox"},ie={class:"EditorHeader"},ue={class:"Title"},de={class:"EditorBox"},pe={class:"EditorHeader"},me={class:"Title"},fe={class:"CodeOutputWrapper"},ve={key:0,class:"CodeOutput"},ge=["innerHTML"],he={key:1,class:"EmptyPlaceholder"},_e={class:"LanguageLabel"},ye={__name:"CodeBeautify",setup($e){const{t:g}=Y(),m=k("html"),c=k(""),i=k(""),{copy:x,reset:I,notify:h,loading:T,run:E}=oe({inputCode:c,outputCode:i}),b=C(()=>({lines:c.value?c.value.split(` 2`).length:0,chars:c.value.length,bytes:new Blob([c.value]).size})),_=C(()=>({lines:i.value?i.value.split(` 3`).length:0,chars:i.value.length,bytes:new Blob([i.value]).size})),L=()=>({html:`<!DOCTYPE html> 4<html> 5<head> 6 <title>示ä¾</title> 7</head> 8<body> 9 <div class="container"> 10 <h1>Hello World</h1> 11 </div> 12</body> 13</html>`,css:`.container { 14 width: 100%; 15 max-width: 1200px; 16 margin: 0 auto; 17 padding: 20px; 18} 19 20.title { 21 font-size: 24px; 22 color: #333; 23}`,javascript:`function greet(name) { 24 if (name) { 25 return 'Hello, ' + name + '!'; 26 } 27 return 'Hello, World!'; 28} 29 30const result = greet('Developer'); 31console.log(result);`,json:`{ 32 "name": "示ä¾é¡¹ç®", 33 "version": "1.0.0", 34 "dependencies": { 35 "vue": "^3.0.0", 36 "arco-design": "^2.0.0" 37 } 38}`})[m.value]||"",z=e=>e<1024?e+" B":e<1024*1024?(e/1024).toFixed(1)+" KB":(e/(1024*1024)).toFixed(1)+" MB",O=()=>E(async()=>{if(!c.value.trim()){h("warning",g("tools.codeBeautify.pleaseInputCode"));return}await new Promise(t=>setTimeout(t,100));let e="";switch(m.value){case"html":e=R(c.value);break;case"css":e=V(c.value);break;case"javascript":e=H(c.value);break;case"json":e=M(c.value);break;default:e=c.value}i.value=e,h("success",g("tools.codeBeautify.formatSuccess"))}),R=e=>{let t="",n=0;const u=e.split(` 39`);for(let o of u)o=o.trim(),o&&(o.match(/^<\/\w/)&&(n=Math.max(0,n-1)),t+=" ".repeat(n)+o+` 40`,o.match(/^<\w/)&&!o.match(/\/>$/)&&!o.match(/<\/\w*>$/)&&n++);return t.trim()},V=e=>{const n=e.replace(/\s+/g," ").replace(/\s*\{\s*/g,` { 41 `).replace(/;\s*/g,`; 42 `).replace(/\s*\}\s*/g,` 43} 44`).replace(/,\s*/g,", ").replace(/:\s*/g,": ").trim().split(` 45`);let u=[],o=0;for(let a of n)a=a.trim(),a&&(a==="}"&&(o=Math.max(0,o-1)),u.push(" ".repeat(o)+a),a.endsWith("{")&&o++);return u.join(` 46`)},H=e=>{const n=e.replace(/\b(if|else|for|while|function|return|class|const|let|var)\b/g," $1 ").replace(/([=+\-*/<>!&|:])(=)?/g," $1$2 ").replace(/\s+/g," ").replace(/\s*\{\s*/g,` { 47`).replace(/\s*\}\s*/g,` 48} 49`).replace(/;\s*/g,`; 50`).replace(/,\s*/g,", ").trim().split(` 51`);let u=[],o=0;for(let a of n)a=a.trim(),a&&(a==="}"&&(o=Math.max(0,o-1)),u.push(" ".repeat(o)+a),a.endsWith("{")&&o++);return u.join(` 52`)},M=e=>{const t=JSON.parse(e);return JSON.stringify(t,null,2)},N=()=>{if(!c.value.trim()){h("warning",g("tools.codeBeautify.pleaseInputCode"));return}let e=c.value.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"").replace(/\s+/g," ").trim();m.value==="html"&&(e=e.replace(/>\s+</g,"><")),i.value=e,h("success",g("tools.codeBeautify.compressSuccess"))},J=()=>{if(!i.value){h("warning",g("tools.codeBeautify.pleaseFormatFirst"));return}const t={html:"html",css:"css",javascript:"js",json:"json"}[m.value]||"txt",n={html:"text/html",css:"text/css",js:"application/javascript",json:"application/json"},u=new Blob([i.value],{type:n[t]||"text/plain"}),o=URL.createObjectURL(u),a=document.createElement("a");a.href=o,a.download=`formatted-code.${t}`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(o),h("success",`${g("common.download")}: formatted-code.${t}`)},P=()=>{I(),h("info",g("common.cleared"))},U=C(()=>
52{if(!i.value)return"";let e=i.value.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");return m.value==="html"?(e=e.replace(/(<\/?)([\w-]+)/g,'<span class="tag">$1$2</span>'),e=e.replace(/(\s)([\w-]+)(=)/g,'$1<span class="attr">$2</span>$3'),e=e.replace(/"[^"]*"/g,'<span class="string">$&</span>')):m.value==="css"?(e=e.replace(/^[\s]*([.#][\w-]+|[\w-]+)(\s*\{)/gm,'<span class="selector">$1</span>$2'),e=e.replace(/([\w-]+)(\s*:)/g,'<span class="attr">$1</span>$2'),e=e.replace(/:\s*([^;]+);/g,': <span class="value">$1</span>;')):(m.value==="javascript"||m.value==="json")&&(["function","const","let","var","if","else","for","while","return","class","import","export","from","async","await"].forEach(n=>{const u=new RegExp(`\\b(${n})\\b`,"g");e=e.replace(u,'<span class="keyword">$1</span>')}),e=e.replace(/(['"`])((?:(?!\1)[^\\]|\\.)*)(\1)/g,'<span class="string">$&</span>'),e=e.replace(/\b\d+\b/g,'<span class="number">$&</span>'),e=e.replace(/(\/\/.*$)/gm,'<span class="comment">$1</span>')),e});return(e,t)=>{const n=q,u=K,o=Q,a=Z,D=X,$=ee,W=F;return v(),y(W,{title:e.$t("tools.codeBeautify.title"),description:e.$t("tools.codeBeautify.subtitle"),tags:["code","format","beautify"]},{actions:l(()=>[p("span",_e,d(e.$t("tools.codeBeautify.languageLabel")),1),s(D,{modelValue:m.value,"onUpdate:modelValue":t[1]||(t[1]=B=>m.value=B),type:"button"},{default:l(()=>[s(a,{value:"html"},{default:l(()=>[...t[3]||(t[3]=[r("HTML",-1)])]),_:1}),s(a,{value:"css"},{default:l(()=>[...t[4]||(t[4]=[r("CSS",-1)])]),_:1}),s(a,{value:"javascript"},{default:l(()=>[...t[5]||(t[5]=[r("JavaScript",-1)])]),_:1}),s(a,{value:"json"},{default:l(()=>[...t[6]||(t[6]=[r("JSON",-1)])]),_:1})]),_:1},8,["modelValue"]),s($,{type:"primary",loading:f(T),onClick:O},{default:l(()=>[s(f(se)),r(" "+d(e.$t("tools.codeBeautify.format")),1)]),_:1},8,["loading"]),s($,{onClick:N},{default:l(()=>[s(f(le)),r(" "+d(e.$t("tools.codeBeautify.compress")),1)]),_:1}),s($,{disabled:!i.value,onClick:t[2]||(t[2]=()=>f(x)(i.value))},{default:l(()=>[s(f(te)),r(" "+d(e.$t("common.copy")),1)]),_:1},8,["disabled"]),s($,{disabled:!i.value,onClick:J},{default:l(()=>[s(f(ne)),r(" "+d(e.$t("common.download")),1)]),_:1},8,["disabled"]),s($,{status:"danger",onClick:P},{default:l(()=>[s(f(ae)),r(" "+d(e.$t("common.clear")),1)]),_:1})]),default:l(()=>[p("div",re,[p("div",ce,[p("div",ie,[p("span",ue,[s(f(G)),r(" "+d(e.$t("tools.codeBeautify.inputCode")),1)]),s(u,null,{default:l(()=>[b.value.lines>0?(v(),y(n,{key:0,size:"small",color:"arcoblue"},{default:l(()=>[r(d(e.$t("tools.codeBeautify.lines",{n:b.value.lines})),1)]),_:1})):w("",!0),b.value.chars>0?(v(),y(n,{key:1,size:"small",color:"green"},{default:l(()=>[r(d(e.$t("tools.codeBeautify.chars",{n:b.value.chars})),1)]),_:1})):w("",!0)]),_:1})]),s(o,{modelValue:c.value,"onUpdate:modelValue":t[0]||(t[0]=B=>c.value=B),placeholder:L(),"auto-size":{minRows:20,maxRows:30},class:"CodeEditor",spellcheck:"false"},null,8,["modelValue","placeholder"])]),p("div",de,[p("div",pe,[p("span",me,[s(f(S)),r(" "+d(e.$t("tools.codeBeautify.outputCode")),1)]),s(u,null,{default:l(()=>[_.value.lines>0?(v(),y(n,{key:0,size:"small",color:"arcoblue"},{default:l(()=>[r(d(e.$t("tools.codeBeautify.lines",{n:_.value.lines})),1)]),_:1})):w("",!0),_.value.chars>0?(v(),y(n,{key:1,size:"small",color:"green"},{default:l(()=>[r(d(e.$t("tools.codeBeautify.chars",{n:_.value.chars})),1)]),_:1})):w("",!0),_.value.chars>0?(v(),y(n,{key:2,size:"small",color:"orange"},{default:l(()=>[r(d(z(_.value.bytes)),1)]),_:1})):w("",!0)]),_:1})]),p("div",fe,[i.value?(v(),j("pre",ve,[p("code",{innerHTML:U.value},null,8,ge)])):(v(),j("div",he,[s(f(S),{class:"empty-icon"}),p("p",null,d(e.$t("tools.codeBeautify.emptyOutput")),1)]))])])])]),_:1},8,["title","description"])}}},Oe=A(ye,[["__scopeId","data-v-249b1d3a"]]);export{Oe as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.