@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.82 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as Settings from"../components/settings/settings.js";import*as ARIAUtils from"./ARIAUtils.js";import{InspectorView}from"./InspectorView.js";import{Tooltip}from"./Tooltip.js";import{CheckboxLabel}from"./UIUtils.js";const UIStrings={srequiresReload:"*Requires reload",oneOrMoreSettingsHaveChanged:"One or more settings have changed which requires a reload to take effect."},str_=i18n.i18n.registerUIStrings("ui/legacy/SettingsUI.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export const createSettingCheckbox=function(e,t,n,i){const o=CheckboxLabel.create(e);i&&Tooltip.install(o,i);const s=o.checkboxElement;if(s.name=e,bindCheckbox(s,t),n)return o;const r=document.createElement("p");return r.appendChild(o),r};const createSettingSelect=function(e,t,n,i,o){const s=document.createElement("div"),r=s.createChild("p");r.classList.add("settings-select");const c=r.createChild("label"),a=r.createChild("select","chrome-select");c.textContent=e,o&&(s.classList.add("chrome-select-label"),c.createChild("p").textContent=o),ARIAUtils.bindLabelToControl(c,a);for(const e of t)e.text&&"string"==typeof e.value&&a.add(new Option(e.text,e.value));let l=null;n&&(l=s.createChild("span","reload-warning hidden"),l.textContent=i18nString(UIStrings.srequiresReload),ARIAUtils.markAsAlert(l));const{deprecation:d}=i;if(d){const e=new Settings.SettingDeprecationWarning.SettingDeprecationWarning;e.data=d,c.appendChild(e)}return i.addChangeListener(g),g(),a.addEventListener("change",(function(){i.set(t[a.selectedIndex].value),l&&(l.classList.remove("hidden"),InspectorView.instance().displayReloadRequiredWarning(i18nString(UIStrings.oneOrMoreSettingsHaveChanged)))}),!1),s;function g(){const e=i.get();for(let n=0;n<t.length;n++)t[n].value===e&&(a.selectedIndex=n);a.disabled=i.disabled()}};export const bindCheckbox=function(e,t){const n=e;function i(){n.checked!==t.get()&&(n.checked=t.get())}t.addChangeListener(i),i(),n.addEventListener("change",(function(){t.get()!==n.checked&&t.set(n.checked)}),!1)};export const createCustomSetting=function(e,t){const n=document.createElement("p");n.classList.add("settings-select");const i=n.createChild("label");return i.textContent=e,ARIAUtils.bindLabelToControl(i,t),n.appendChild(t),n};export const createControlForSetting=function(e,t){const n=e.title();switch(e.type()){case Common.Settings.SettingType.BOOLEAN:{const t=new Settings.SettingCheckbox.SettingCheckbox;return t.data={setting:e},t}case Common.Settings.SettingType.ENUM:return Array.isArray(e.options())?createSettingSelect(n,e.options(),e.reloadRequired(),e,t):(console.error("Enum setting defined without options"),null);default:return console.error("Invalid setting type: "+e.type()),null}};