UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 2.08 kB
import*as Formatter from"../../models/formatter/formatter.js";import*as DiffView from"../../ui/components/diff_view/diff_view.js";export class PanelUtils{static iconDataForResourceType(e){return e.isDocument()?{iconName:"file-document",color:"var(--icon-file-document)"}:e.isImage()?{iconName:"file-image",color:"var(--icon-file-image)"}:e.isFont()?{iconName:"file-font",color:"var(--icon-file-font)"}:e.isScript()?{iconName:"file-script",color:"var(--icon-file-script)"}:e.isStyleSheet()?{iconName:"file-stylesheet",color:"var(--icon-file-styles)"}:e.isWebbundle()?{iconName:"bundle",color:"var(--icon-default)"}:{iconName:"file-generic",color:"var(--icon-default)"}}static async formatCSSChangesFromDiff(e){const{originalLines:o,currentLines:t,rows:i}=DiffView.DiffView.buildDiffRows(e),n=await buildStyleRuleMaps(o.join("\n")),r=await buildStyleRuleMaps(t.join("\n"));let l,a,s="",c=!1;for(const{currentLineNumber:e,originalLineNumber:f,type:u}of i){if("deletion"!==u&&"addition"!==u)continue;const i="deletion"===u,m=i?f-1:e-1,d=(i?o:t)[m].trim(),{declarationIDToStyleRule:p,styleRuleIDToStyleRule:g}=i?n:r;let y,b="";if(p.has(m)){y=p.get(m);const e=y.selector;e!==l&&e!==a&&(b+=`${e} {\n`),b+=" ",c=!0}else c&&(b="}\n\n",c=!1),g.has(m)&&(y=g.get(m));s+=b+(i?`/* ${d} */`:d)+"\n",i?l=y?.selector:a=y?.selector}return s.length>0&&(s+="}"),s}static highlightElement(e){e.scrollIntoViewIfNeeded(),e.animate([{offset:0,backgroundColor:"rgba(255, 255, 0, 0.2)"},{offset:.1,backgroundColor:"rgba(255, 255, 0, 0.7)"},{offset:1,backgroundColor:"transparent"}],{duration:2e3,easing:"cubic-bezier(0, 0, 0.2, 1)"})}}async function buildStyleRuleMaps(e){const o=await new Promise((o=>{const t=[];Formatter.FormatterWorkerPool.formatterWorkerPool().parseCSS(e,((e,i)=>{t.push(...i),e&&o(t)}))})),t=new Map,i=new Map;for(const e of o)if("styleRange"in e){const o=e.selectorText.split("\n").pop()?.trim();if(!o)continue;const n={rule:e,selector:o};i.set(e.styleRange.startLine,n);for(const o of e.properties)t.set(o.range.startLine,n)}return{declarationIDToStyleRule:t,styleRuleIDToStyleRule:i}}