UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 1.88 kB
import*as TraceEngine from"../../models/trace/trace.js";import*as i18n from"../../core/i18n/i18n.js";import{buildGroupStyle,buildTrackHeader,getFormattedTime}from"./AppenderUtils.js";const UIStrings={interactions:"Interactions"},str_=i18n.i18n.registerUIStrings("panels/timeline/InteractionsTrackAppender.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class InteractionsTrackAppender{appenderName="Interactions";#t;#e;#r;#n;constructor(t,e,r,n){this.#e=t,this.#t=n,this.#r=e,this.#n=r}appendTrackAtLevel(t,e){return 0===this.#n.UserInteractions.interactionEvents.length?t:(this.#i(t,e),this.#a(t))}#i(t,e){const r=this.#n.UserInteractions.interactionEvents.length>0,n=buildGroupStyle({shareHeaderLine:!1,collapsible:r}),i=buildTrackHeader(t,i18nString(UIStrings.interactions),n,!0,e);this.#e.registerTrackForGroup(i,this)}#a(t){const{interactionEventsWithNoNesting:e,interactionsOverThreshold:r}=this.#n.UserInteractions,n=this.#e.appendEventsAtLevel(e,t,this);for(const t of e){if(!r.has(t))continue;const e=this.#e.indexForEvent(t);void 0!==e&&this.#o(e)}return n}#o(t){const e=this.#r.entryDecorations[t]||[];e.push({type:"CANDY",startAtTime:TraceEngine.Handlers.ModelHandlers.UserInteractions.LONG_INTERACTION_THRESHOLD}),this.#r.entryDecorations[t]=e}colorForEvent(t){let e=this.titleForEvent(t);return TraceEngine.Types.TraceEvents.isSyntheticInteractionEvent(t)&&(e+=t.interactionId),this.#t.colorForID(e)}titleForEvent(t){return TraceEngine.Types.TraceEvents.isSyntheticInteractionEvent(t)?titleForInteractionEvent(t):t.name}highlightedEntryInfo(t){return{title:this.titleForEvent(t),formattedTime:getFormattedTime(t.dur)}}}export function titleForInteractionEvent(t){const e=TraceEngine.Handlers.ModelHandlers.UserInteractions.categoryOfInteraction(t);return"OTHER"===e?"Other":"KEYBOARD"===e?"Keyboard":"POINTER"===e?"Pointer":t.type}