@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.03 kB
JavaScript
import*as i18n from"../../../../core/i18n/i18n.js";import{FilteredListWidget,getRegisteredProviders}from"./FilteredListWidget.js";const UIStrings={typeToSeeAvailableCommands:"Type ? to see available commands"},str_=i18n.i18n.registerUIStrings("ui/legacy/components/quick_open/QuickOpen.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export const history=[];export class QuickOpenImpl{prefix;prefixes;providers;filteredListWidget;constructor(){this.prefix=null,this.prefixes=[],this.providers=new Map,this.filteredListWidget=null,getRegisteredProviders().forEach(this.addProvider.bind(this)),this.prefixes.sort(((e,t)=>t.length-e.length))}static show(e){const t=new this,i=new FilteredListWidget(null,history,t.queryChanged.bind(t));t.filteredListWidget=i,i.setHintElement(i18nString(UIStrings.typeToSeeAvailableCommands)),i.showAsDialog(),i.setQuery(e)}addProvider(e){const t=e.prefix;null!==t&&(this.prefixes.push(t),this.providers.set(t,{provider:e.provider,titlePrefix:e.titlePrefix,titleSuggestion:e.titleSuggestion}))}async queryChanged(e){const t=this.prefixes.find((t=>e.startsWith(t)));if("string"!=typeof t)return;if(!this.filteredListWidget)return;this.filteredListWidget.setPrefix(t);const i=this.providers.get(t)?.titlePrefix;this.filteredListWidget.setCommandPrefix(i?i():"");const s=e===t&&this.providers.get(t)?.titleSuggestion;if(this.filteredListWidget.setCommandSuggestion(s?s():""),this.prefix===t)return;this.prefix=t,this.filteredListWidget.setProvider(null);const r=this.providers.get(t)?.provider;if(!r)return;const n=await r();this.prefix===t&&this.filteredListWidget&&(this.filteredListWidget.setProvider(n),this.providerLoadedForTest(n))}providerLoadedForTest(e){}}let showActionDelegateInstance;export class ShowActionDelegate{static instance(e={forceNew:null}){const{forceNew:t}=e;return showActionDelegateInstance&&!t||(showActionDelegateInstance=new ShowActionDelegate),showActionDelegateInstance}handleAction(e,t){return"quickOpen.show"===t&&(QuickOpenImpl.show(""),!0)}}