UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 5.44 kB
import*as TextUtils from"../../models/text_utils/text_utils.js";import*as Platform from"../platform/platform.js";import{CSSContainerQuery}from"./CSSContainerQuery.js";import{CSSLayer}from"./CSSLayer.js";import{CSSMedia}from"./CSSMedia.js";import{CSSScope}from"./CSSScope.js";import{CSSStyleDeclaration,Type}from"./CSSStyleDeclaration.js";import{CSSSupports}from"./CSSSupports.js";export class CSSRule{cssModelInternal;styleSheetId;sourceURL;origin;style;constructor(e,t){if(this.cssModelInternal=e,this.styleSheetId=t.styleSheetId,this.styleSheetId){const e=this.getStyleSheetHeader(this.styleSheetId);this.sourceURL=e.sourceURL}this.origin=t.origin,this.style=new CSSStyleDeclaration(this.cssModelInternal,this,t.style,Type.Regular)}rebase(e){this.styleSheetId===e.styleSheetId&&this.style.rebase(e)}resourceURL(){if(!this.styleSheetId)return Platform.DevToolsPath.EmptyUrlString;return this.getStyleSheetHeader(this.styleSheetId).resourceURL()}isUserAgent(){return"user-agent"===this.origin}isInjected(){return"injected"===this.origin}isViaInspector(){return"inspector"===this.origin}isRegular(){return"regular"===this.origin}isKeyframeRule(){return!1}cssModel(){return this.cssModelInternal}getStyleSheetHeader(e){const t=this.cssModelInternal.styleSheetHeaderForId(e);return console.assert(null!==t),t}}class CSSValue{text;range;specificity;constructor(e){this.text=e.text,e.range&&(this.range=TextUtils.TextRange.TextRange.fromObject(e.range)),e.specificity&&(this.specificity=e.specificity)}rebase(e){this.range&&(this.range=this.range.rebaseAfterTextEdit(e.oldRange,e.newRange))}}export class CSSStyleRule extends CSSRule{selectors;nestingSelectors;media;containerQueries;supports;scopes;layers;ruleTypes;wasUsed;constructor(e,t,s){super(e,{origin:t.origin,style:t.style,styleSheetId:t.styleSheetId}),this.reinitializeSelectors(t.selectorList),this.nestingSelectors=t.nestingSelectors,this.media=t.media?CSSMedia.parseMediaArrayPayload(e,t.media):[],this.containerQueries=t.containerQueries?CSSContainerQuery.parseContainerQueriesPayload(e,t.containerQueries):[],this.scopes=t.scopes?CSSScope.parseScopesPayload(e,t.scopes):[],this.supports=t.supports?CSSSupports.parseSupportsPayload(e,t.supports):[],this.layers=t.layers?CSSLayer.parseLayerPayload(e,t.layers):[],this.ruleTypes=t.ruleTypes||[],this.wasUsed=s||!1}static createDummyRule(e,t){const s={selectorList:{text:"",selectors:[{text:t,value:void 0}]},style:{styleSheetId:"0",range:new TextUtils.TextRange.TextRange(0,0,0,0),shorthandEntries:[],cssProperties:[]},origin:"inspector"};return new CSSStyleRule(e,s)}reinitializeSelectors(e){this.selectors=[];for(let t=0;t<e.selectors.length;++t)this.selectors.push(new CSSValue(e.selectors[t]))}setSelectorText(e){const t=this.styleSheetId;if(!t)throw"No rule stylesheet id";const s=this.selectorRange();if(!s)throw"Rule selector is not editable";return this.cssModelInternal.setSelectorText(t,s,e)}selectorText(){return this.selectors.map((e=>e.text)).join(", ")}selectorRange(){const e=this.selectors[0].range,t=this.selectors[this.selectors.length-1].range;return e&&t?new TextUtils.TextRange.TextRange(e.startLine,e.startColumn,t.endLine,t.endColumn):null}lineNumberInSource(e){const t=this.selectors[e];if(!t||!t.range||!this.styleSheetId)return 0;return this.getStyleSheetHeader(this.styleSheetId).lineNumberInSource(t.range.startLine)}columnNumberInSource(e){const t=this.selectors[e];if(!t||!t.range||!this.styleSheetId)return;return this.getStyleSheetHeader(this.styleSheetId).columnNumberInSource(t.range.startLine,t.range.startColumn)}rebase(e){if(this.styleSheetId!==e.styleSheetId)return;const t=this.selectorRange();if(t&&t.equal(e.oldRange))this.reinitializeSelectors(e.payload);else for(let t=0;t<this.selectors.length;++t)this.selectors[t].rebase(e);this.media.forEach((t=>t.rebase(e))),this.containerQueries.forEach((t=>t.rebase(e))),this.scopes.forEach((t=>t.rebase(e))),this.supports.forEach((t=>t.rebase(e))),super.rebase(e)}}export class CSSPropertyRule extends CSSRule{#e;constructor(e,t){super(e,{origin:t.origin,style:t.style,styleSheetId:t.styleSheetId}),this.#e=new CSSValue(t.propertyName)}propertyName(){return this.#e}initialValue(){return this.style.hasActiveProperty("initial-value")?this.style.getPropertyValue("initial-value"):null}syntax(){return this.style.getPropertyValue("syntax")}inherits(){return"true"===this.style.getPropertyValue("inherits")}}export class CSSKeyframesRule{#t;#s;constructor(e,t){this.#t=new CSSValue(t.animationName),this.#s=t.keyframes.map((t=>new CSSKeyframeRule(e,t)))}name(){return this.#t}keyframes(){return this.#s}}export class CSSKeyframeRule extends CSSRule{#r;constructor(e,t){super(e,{origin:t.origin,style:t.style,styleSheetId:t.styleSheetId}),this.reinitializeKey(t.keyText)}key(){return this.#r}reinitializeKey(e){this.#r=new CSSValue(e)}rebase(e){this.styleSheetId===e.styleSheetId&&this.#r.range&&(e.oldRange.equal(this.#r.range)?this.reinitializeKey(e.payload):this.#r.rebase(e),super.rebase(e))}isKeyframeRule(){return!0}setKeyText(e){const t=this.styleSheetId;if(!t)throw"No rule stylesheet id";const s=this.#r.range;if(!s)throw"Keyframe key is not editable";return this.cssModelInternal.setKeyframeKey(t,s,e)}}export class CSSPositionFallbackRule{#e;#i;constructor(e,t){this.#e=new CSSValue(t.name),this.#i=t.tryRules.map((t=>new CSSRule(e,{origin:t.origin,style:t.style,styleSheetId:t.styleSheetId})))}name(){return this.#e}tryRules(){return this.#i}}