@kitten-science/kitten-scientists 2.0.0-beta.11-dev.20251225181308 → 2.0.0-beta.12-dev.20251225210304
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/output/kitten-scientists-0.0.0-ci.user.js +1 -1
- package/output/kitten-scientists.inject.js +2 -2
- package/output/kitten-scientists.min.inject.js +1 -1
- package/package.json +1 -1
- package/output/kitten-scientists-0.0.0-ci.min.user.js +0 -20
- package/output/kitten-scientists-0.0.0-ci.min.user.js.map +0 -1
|
@@ -17504,10 +17504,10 @@
|
|
|
17504
17504
|
}
|
|
17505
17505
|
|
|
17506
17506
|
const ksVersion = (prefix = "") => {
|
|
17507
|
-
if (isNil("2.0.0-beta.
|
|
17507
|
+
if (isNil("2.0.0-beta.12-live")) {
|
|
17508
17508
|
throw Error("Build error: RELEASE_VERSION is not defined.");
|
|
17509
17509
|
}
|
|
17510
|
-
return `${prefix}${"2.0.0-beta.
|
|
17510
|
+
return `${prefix}${"2.0.0-beta.12-live"}`;
|
|
17511
17511
|
};
|
|
17512
17512
|
class KittenScientists {
|
|
17513
17513
|
game;
|
|
@@ -18,5 +18,5 @@ If you submit an invalid value, it will be treated as if you hit Cancel.`,"ui.tr
|
|
|
18
18
|
<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor" class="${Te.down}"><path d="${M.ExpandCircleDown}"/></svg>
|
|
19
19
|
<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor" class="${Te.up}"><path d="${M.ExpandCircleUp}"/></svg>
|
|
20
20
|
`,title:e.host.engine.i18n("ui.itemsShow")}).addClass(w.iconButton).addClass(Te.expandoButton),this.element.on("click",()=>{this.readOnly||this.click().catch(H(console))}),this.readOnly=t?.readOnly??!1,this.inactive=t?.inactive??!1,this.ineffective=!1}toString(){return`[${Ke.name}#${this.componentId}]`}setCollapsed(){this.element.removeClass(Te.expanded),this.element.prop("title",this.host.engine.i18n("ui.itemsShow"))}setExpanded(){this.element.addClass(Te.expanded),this.element.prop("title",this.host.engine.i18n("ui.itemsHide"))}async click(){this.readOnly||(await this.options?.onClick?.call(this),this.requestRefresh())}}class me extends D{container;expando;head;_mainChildVisible;get isExpanded(){return this._mainChildVisible}constructor(e,t,i){super(e,i),this.head=t,this.container=new T(this),this.container.element.addClass(B.panelContent);const s=new Ke(e,{onClick:()=>this.toggle()});t.head.addChild(s),t.element.append(this.container.element),i?.initiallyExpanded?(this.container.element.removeClass(B.hidden),s.setExpanded()):this.container.element.addClass(B.hidden),this._mainChildVisible=i?.initiallyExpanded??!1,this.element=t.element,this.expando=s,this.addChildren([this.head,this.container])}toString(){return`[${me.name}#${this.componentId}]`}addChildHead(e){return this.head.addChild(e),this}addChildrenHead(e){for(const t of e??[])this.head.addChild(t);return this}addChildContent(e){return this.container.addChild(e),this}addChildrenContent(e){for(const t of e??[])this.container.addChild(t);return this}toggle(e=void 0,t=!1){const i=e!==void 0?e:!this._mainChildVisible;if(i!==this._mainChildVisible&&(this._mainChildVisible=i,this._mainChildVisible?(this.container.requestRefresh(!0),this.container.element.removeClass(B.hidden),this.expando.setExpanded(),this.head.element.addClass(B.expanded),this.element[0].dispatchEvent(new CustomEvent("panelShown"))):(this.container.element.addClass(B.hidden),this.expando.setCollapsed(),this.head.element.removeClass(B.expanded),this.element[0].dispatchEvent(new CustomEvent("panelHidden")))),t){const s=a=>{for(const n of a)Be(n,me)?n.toggle(e,t):s(n.children)};s(this.children)}}}class I extends me{setting;settingItem;get isExpanded(){return this._mainChildVisible}get elementLabel(){return this.head.element}get readOnly(){return!0}set readOnly(e){}async check(){this.setting.enabled=!0,this.requestRefresh()}async uncheck(){this.setting.enabled=!1,this.requestRefresh()}constructor(e,t,i,s){super(e,i,s),this.element=i.element,this.settingItem=i,this.setting=t}toString(){return`[${I.name}#${this.componentId}]: '${this.settingItem.elementLabel.text()}'`}}class kn extends I{constructor(e,t,i,s){const a=e.host.engine.i18n("ui.upgrade.buildings");super(e,t,new k(e,t,a,{onCheck:c=>{e.host.engine.imessage("status.auto.enable",[a])},onUnCheck:c=>{e.host.engine.imessage("status.auto.disable",[a])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.buildings).some(c=>c.enabled)}});const n=[];for(const c of Object.values(this.setting.buildings)){const o=this.host.engine.i18n(`$buildings.${c.upgrade}.label`),h=new k(this,c,o,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o])}});n.push({button:h,label:o})}n.sort((c,o)=>c.label.localeCompare(o.label));const r=new _(this);for(const c of n)r.addChild(c.button);this.addChildContent(r)}}class F extends D{_iconElement;readOnly;inactive;ineffective;constructor(e,t,i=null,s){super(e,{...s,onRefresh:()=>{this.readOnly?this.element.addClass(w.readonly):this.element.removeClass(w.readonly),this.inactive?this.element.addClass(w.inactive):this.element.removeClass(w.inactive),this.ineffective?this.element.addClass(w.ineffective):this.element.removeClass(w.ineffective),s?.onRefresh?.()}}),this.element=$("<div/>",{title:s?.title}).addClass(w.button).text(t),s?.border!==!1&&this.element.addClass(w.bordered),s?.alignment==="right"&&this.element.addClass(w.alignRight),i!==null&&(this._iconElement=$(`<svg class="${w.buttonIcon}" style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor"><path d="${i}"/></svg>`),s?.alignment==="right"?this.element.append(this._iconElement):this.element.prepend(this._iconElement));for(const a of s?.classes??[])this.element.addClass(a);this.element.on("click",()=>{this.readOnly||this.click().catch(H(console))}),this.readOnly=s?.readOnly??!1,this.inactive=s?.inactive??!1,this.ineffective=!1}toString(){return`[${F.name}#${this.componentId}]`}updateLabel(e){this.element.text(e),this._iconElement!==void 0&&(this.options.alignment==="right"?this.element.append(this._iconElement):this.element.prepend(this._iconElement))}updateTitle(e){this.element.prop("title",e)}async click(){this.readOnly||(await this.options?.onClick?.call(this),this.requestRefresh())}}class K extends D{constructor(e){super(e,{}),this.element=$("<div/>").addClass(ge.delimiter)}toString(){return`[${K.name}#${this.componentId}]`}}const Ni={dialog:"_dialog_b4vj0_1",close:"_close_b4vj0_7"},qi={explainer:"_explainer_1idu3_1"},_n={header:"_header_19ql8_1"};class A extends D{get elementLabel(){return this.element}constructor(e,t,i){super(e,{...i}),this.element=$("<li/>",{text:t}).addClass(_n.header)}toString(){return`[${A.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class xt extends D{constructor(e,t){super(e,{...t}),this.element=$('<input type="text"/>').addClass("ks-input");for(const i of t?.classes??[])this.element.addClass(i);t?.onChange&&this.element.on("change",()=>t.onChange?.(this.element[0].value)),t?.value&&(this.element[0].value=t.value),t?.selected&&(this.element[0].selectionStart=0,this.element[0].selectionEnd=-1),this.element.on("keyup",i=>{switch(i.key){case"Enter":t?.onEnter?.(this.element[0].value);break;case"Escape":t?.onEscape?.(this.element[0].value);break}})}toString(){return`[${xt.name}#${this.componentId}]`}}class Ve extends D{constructor(e,t,i){super(e,{...i}),this.element=$("<p/>").text(t);for(const s of i?.classes??[])this.element.addClass(s)}toString(){return`[${Ve.name}#${this.componentId}]`}}const zi={toolbar:"_toolbar_1654f_1"};class x extends D{container;head;returnValue;constructor(e,t){super(e,{...t}),this.element=$("<dialog/>").addClass("dialog").addClass("help").addClass(Ni.dialog),t?.hasClose!==!1&&this.addChild(new F(e,"close",null,{classes:[Ni.close],onClick:()=>{this.close(),t?.onCancel?.()}})),this.returnValue=t?.promptValue??"",this.head=new T(e),this.container=new T(e),this.addChildren(Ie([this.head,t?.prompt?new xt(e,{onChange:i=>{this.returnValue=i},onEnter:i=>{this.returnValue=i,this.close(),t.onConfirm?.(this.returnValue)},onEscape:i=>{this.close(),t.onCancel?.()},selected:!0,value:t.promptValue}):void 0,this.container,new K(e),new T(e,{classes:[zi.toolbar]}).addChildren(Ie([new F(e,"OK",null,{classes:[w.large],onClick:()=>{this.close(),t?.onConfirm?.(this.returnValue)}}),t?.hasCancel?new F(e,"Cancel",null,{classes:[w.large],onClick:()=>{this.close(),t.onCancel?.()}}):void 0]))]))}toString(){return`[${x.name}#${this.componentId}]`}addChildHead(e){return this.head.addChild(e),this}addChildrenHead(e){for(const t of e??[])this.head.addChild(t);return this}addChildContent(e){return this.container.addChild(e),this}addChildrenContent(e){for(const t of e??[])this.container.addChild(t);return this}show(){$("#gamePageContainer").append(this.element),this.element[0].show()}showModal(){$("#gamePageContainer").append(this.element),this.element[0].showModal()}close(){this.element[0].close(),this.element.remove()}static async prompt(e,t,i,s,a){return new Promise(n=>{new x(e,{hasCancel:!0,hasClose:!1,onCancel:()=>{n(void 0)},onConfirm:r=>{n(r)},prompt:!0,promptValue:s}).addChildrenHead(Ie([i?new A(e,i):void 0,new Ve(e,t)])).addChildrenContent(a?[new T(e,{classes:[qi.explainer]}).addChildren([new Ve(e,a)])]:[]).showModal()})}}const Cn={maxButton:"_maxButton_133h2_1"};class Ee extends F{setting;constructor(e,t,i){super(e,"",null,{...i,classes:[Cn.maxButton,...i?.classes??[]]}),this.setting=t}toString(){return`[${Ee.name}#${this.componentId}]`}}class ke extends F{behavior;setting;constructor(e,t,i,s){super(e,"",M.Trigger,{...s,onRefresh:()=>{const a=this.behavior==="integer"?this.host.renderAbsolute(this.setting.trigger,"invariant"):this.host.renderPercentage(this.setting.trigger,"invariant",!0);this.updateTitle(this.host.engine.i18n("ui.trigger",[a])),(this.options?.renderLabel??!0)&&this.updateLabel(a),this.inactive?this.element.addClass(w.inactive):this.element.removeClass(w.inactive),s?.onRefresh?.call(this)}}),this.behavior=t instanceof z?"percentage":"integer",this.setting=t}toString(){return`[${ke.name}#${this.componentId}]`}}class je extends k{maxButton;triggerButton;constructor(e,t,i,s,a){super(e,t,s,a),this.maxButton=new Ee(e,t,{alignment:"right",border:!1,classes:[w.headAction],onClick:async()=>{await a.onSetMax.call(this)},onRefresh:a?.onRefreshMax?()=>a.onRefreshMax?.call(this):void 0}),this.triggerButton=new ke(e,t,i,{border:!1,classes:[w.lastHeadAction],onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a?.onRefreshTrigger?()=>a.onRefreshTrigger?.call(this):void 0,renderLabel:a?.renderLabelTrigger??!0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.maxButton,this.triggerButton])}toString(){return`[${je.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}const te={getBuildOption:(l,e,t,i,s,a,n)=>{const r=async()=>{const o=await x.prompt(l,l.host.engine.i18n("ui.max.prompt.absolute"),l.host.engine.i18n("ui.max.build.prompt",[s,l.host.renderAbsolute(e.max,t.selected)]),l.host.renderAbsolute(e.max),l.host.engine.i18n("ui.max.build.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){e.max=-1;return}o==="0"&&(e.enabled=!1),e.max=l.host.parseAbsolute(o)??e.max}},c=new je(l,e,t,s,{delimiter:n?.delimiter,onCheck:async o=>{l.host.engine.imessage("status.sub.enable",[s]),e.max===0&&!o&&await r(),await n?.onCheck?.(o)},onRefreshMax:()=>{c.maxButton.updateLabel(l.host.renderAbsolute(e.max)),c.maxButton.element[0].title=e.max<0?l.host.engine.i18n("ui.max.build.titleInfinite",[s]):e.max===0?l.host.engine.i18n("ui.max.build.titleZero",[s]):l.host.engine.i18n("ui.max.build.title",[l.host.renderAbsolute(e.max),s])},onRefreshRequest:()=>{c.maxButton.inactive=!e.enabled||e.max===-1,c.maxButton.ineffective=i.enabled&&e.enabled&&e.max===0,c.triggerButton.inactive=!e.enabled||e.trigger===-1,c.triggerButton.ineffective=i.enabled&&e.enabled&&i.trigger===-1&&e.trigger===-1},onRefreshTrigger:()=>{c.triggerButton.element[0].title=l.host.engine.i18n("ui.trigger",[e.trigger<0?i.trigger<0?l.host.engine.i18n("ui.trigger.build.blocked",[a]):`${l.host.renderPercentage(i.trigger,t.selected,!0)} (${l.host.engine.i18n("ui.trigger.build.inherited")})`:l.host.renderPercentage(e.trigger,t.selected,!0)])},onSetMax:r,onSetTrigger:async()=>{const o=await x.prompt(l,l.host.engine.i18n("ui.trigger.prompt.percentage"),l.host.engine.i18n("ui.trigger.build.prompt",[s,e.trigger!==-1?l.host.renderPercentage(e.trigger,t.selected,!0):l.host.engine.i18n("ui.trigger.build.inherited")]),e.trigger!==-1?l.host.renderPercentage(e.trigger):"",l.host.engine.i18n("ui.trigger.build.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){e.trigger=-1;return}e.trigger=l.host.parsePercentage(o),await n?.onSetTrigger?.call(void 0)}},onUnCheck:o=>{l.host.engine.imessage("status.sub.disable",[s]),n?.onUnCheck?.(o)},renderLabelTrigger:n?.renderLabelTrigger,upgradeIndicator:n?.upgradeIndicator});return c}};class U extends k{triggerButton;constructor(e,t,i,s,a){super(e,t,s,a),this.triggerButton=new ke(e,t,i,{alignment:"right",border:!1,onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a?.onRefreshTrigger?()=>a.onRefreshTrigger?.call(this):void 0,renderLabel:a?.renderLabelTrigger??!0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.triggerButton])}toString(){return`[${U.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Tt extends I{constructor(e,t,i){console.debug(...f(`Constructing ${Tt.name}`));const s=e.host.engine.i18n("ui.build");super(e,t,new U(e,t,i,s,{onCheck:a=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger:()=>{this.settingItem.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const a=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(a)}},onUnCheck:a=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger<0,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.buildings).some(a=>a.enabled&&0<a.max&&a.trigger<0),this.expando.ineffective=t.enabled&&Object.values(t.buildings).some(a=>a.enabled&&(a.max===0||a.trigger<0&&t.trigger<0))}}),this.addChildrenContent([new _(this,{onReset:()=>{this.setting.load({buildings:new _t().buildings})}}).addChildren(Ie(this.host.game.bld.buildingGroups.flatMap(a=>[new A(this,a.title),...a.buildings.flatMap(n=>this._getBuildOptions(this,t,i,s,n)),a!==this.host.game.bld.buildingGroups[this.host.game.bld.buildingGroups.length-1]?new K(this):void 0]))),new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new A(this,this.host.engine.i18n("ui.additional")),new k(this,t.gatherCatnip,this.host.engine.i18n("option.catnip"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.catnip")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.catnip")])}}),new k(this,t.turnOnSteamworks,this.host.engine.i18n("option.steamworks"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.steamworks")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.steamworks")])}}),new k(this,t.turnOnMagnetos,this.host.engine.i18n("option.magnetos"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.magnetos")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.magnetos")])}}),new k(this,t.turnOnReactors,this.host.engine.i18n("option.reactors"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.reactors")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.reactors")])}}),new kn(this,t.upgradeBuildings,i,t)])])}_getBuildOptions(e,t,i,s,a){if(a==="unicornPasture"||g(t.buildings[a]))return[];const n=e.host.game.bld.getBuildingExt(a).meta;if(!g(n.stages)){const r=Object.values(t.buildings).find(c=>c.baseBuilding===a)?.building;return[te.getBuildOption(e,t.buildings[a],i,t,n.stages[0].label,s,{renderLabelTrigger:!1}),te.getBuildOption(e,t.buildings[r],i,t,n.stages[1].label,s,{renderLabelTrigger:!1,upgradeIndicator:!0})]}return g(n.label)?[]:[te.getBuildOption(e,t.buildings[a],i,t,n.label,s,{renderLabelTrigger:!1})]}}class Sn extends k{expando;constructor(e,t){const i=W(e.host.engine.i18n("ui.engine"));super(e,t,i,{onCheck:()=>{e.host.engine.start(!0)},onUnCheck:()=>{e.host.engine.stop(!0)}}),this.expando=new Ke(this),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.expando])}}class Et extends se{button;constructor(e,t,i){super(e,{...i}),this.button=t,this.element.addClass(Ge.head),this.element.append(t.element)}}const xn={fieldset:"_fieldset_tfwil_1"};class Mt extends D{constructor(e,t,i){super(e,{...i}),this.element=$("<fieldset/>").addClass(xn.fieldset),i?.delimiter&&this.element.addClass(ge.delimiter);const s=$("<legend/>").text(t).addClass(E.label);this.element.append(s)}toString(){return`[${Mt.name}#${this.componentId}]`}}class Rt extends D{setting;option;elementLabel;input;readOnly;constructor(e,t,i,s,a){super(e,{...a,onRefresh:()=>{this.input.prop("disabled",this.readOnly)}}),this.element=$("<div/>"),this.element.addClass(B.setting),a?.delimiter===!0&&this.element.addClass(ge.delimiter),this.elementLabel=$("<label/>",{text:`${a?.upgradeIndicator?"⮤ ":""}${i.label}`}).addClass(E.label);const n=$("<input/>",{name:s,type:"radio"}).addClass("ks-radio");this.readOnly=a?.readOnly??!1,n.on("change",()=>{this.setting.selected=i.value,g(a?.onCheck)||a.onCheck()}),this.elementLabel.prepend(n),this.element.append(this.elementLabel),this.input=n,this.setting=t,this.option=i}toString(){return`[${Rt.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Me extends D{fieldset;setting;_items;constructor(e,t,i,s){super(e,{...s,onRefresh:()=>{for(const a of this._items)if(a.option.value===this.setting.selected){a.input.prop("checked",!0);break}s?.onRefresh?.()}}),this.element=$("<li/>"),this.fieldset=new Mt(e,t),this.addChild(this.fieldset),this._items=new Array;for(const a of i.options)this._items.push(new Rt(e,i,a,t,{onCheck:s?.onCheck,readOnly:s?.readOnly}));this.fieldset.addChildren(this._items),this.setting=i}toString(){return`[${Me.name}#${this.componentId}]`}}const Tn={textButton:"_textButton_1mv97_1"};class fe extends D{readOnly;constructor(e,t,i){super(e,{...i,onRefresh:()=>{this.readOnly?this.element.addClass(w.readonly):this.element.removeClass(w.readonly),i?.onRefresh?.call(this)}}),this.element=$("<div/>").addClass(Tn.textButton),t!==void 0&&this.element.text(t);const s=i?.title;g(s)||this.element.prop("title",s),this.readOnly=!1,this.element.on("click",()=>{this.readOnly||this.click().catch(H(console))})}toString(){return`[${fe.name}#${this.componentId}]`}async click(){this.readOnly||(await this.options?.onClick?.call(this),this.requestRefresh())}}class At extends I{constructor(e,t,i){console.debug(...f(`Constructing ${At.name}`)),super(e,t,new ne(e,e.host.engine.i18n("ui.internals"),{classes:[B.checked,B.setting],icon:M.Settings}).addChildrenHead([new T(e,{classes:[E.fillSpace]})])),this.addChildrenContent([new _(e,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new Et(e,new fe(e,e.host.engine.i18n("ui.internals.interval",[t.interval]),{onClick:async()=>{const s=await x.prompt(e,e.host.engine.i18n("ui.internals.interval.prompt"),e.host.engine.i18n("ui.internals.interval.promptTitle",[e.host.renderAbsolute(t.interval,i.selected)]),e.host.renderAbsolute(t.interval),e.host.engine.i18n("ui.internals.interval.promptExplainer"));s===void 0||s===""||s.startsWith("-")||(s==="0"&&(t.enabled=!1),t.interval=e.host.parseAbsolute(s)??t.interval)},onRefresh(){this.element.text(e.host.engine.i18n("ui.internals.interval",[t.interval]))}})),new K(e),new k(e,t.ksColumn,e.host.engine.i18n("ui.ksColumn"),{onCheck:()=>{e.host.rebuildUi()},onUnCheck:()=>{e.host.rebuildUi()}}),new k(e,t.highlighStock,e.host.engine.i18n("ui.highlightStock")),new K(e),new Me(e,e.host.engine.i18n("ui.language"),t.locale,{onCheck:()=>{e.host.rebuildUi()}}),new K(e),new ne(e,`Kitten Scientists ${Pe("v")}`)])])}}class Pt extends D{constructor(e,t,i){super(e,{...i}),this.element=$("<li/>",{text:e.host.engine.i18n(t)}).addClass(qi.explainer)}toString(){return`[${Pt.name}#${this.componentId}]`}}class Bt extends I{constructor(e,t){console.debug(...f(`Constructing ${Bt.name}`));const i=e.host.engine.i18n("ui.filter");super(e,t,new k(e,t,i,{onCheck:s=>{e.host.engine.imessage("status.auto.enable",[i])},onUnCheck:s=>{e.host.engine.imessage("status.auto.disable",[i])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})])),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new A(this,"Kitten Scientists"),new _(this).addChildren(Si.map(s=>({label:this.host.engine.i18n(`filter.${s}`),name:s})).sort((s,a)=>s.label.localeCompare(a.label)).map(s=>new k(this,this.setting.filters[s.name],s.label,{onCheck:()=>{this.host.engine.imessage("filter.enable",[s.label])},onUnCheck:()=>{this.host.engine.imessage("filter.disable",[s.label])}})))])),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new A(this,"Kittens Game"),new _(this).addChildren(xi.map(s=>({label:this.host.engine.i18n(`$console.filter.${s}`),name:s})).sort((s,a)=>s.label.localeCompare(a.label)).map(s=>new k(this,this.setting.filtersGame[s.name],s.label,{onCheck:()=>{this.host.engine.imessage("filter.enable",[s.label])},onUnCheck:()=>{this.host.engine.imessage("filter.disable",[s.label])}})))])),this.addChildContent(new Pt(this,"filter.explainer"))}}const Je={active:"_active_6c09s_16"};class It extends I{_unicornBuildings;_bestUnicornBuilding;constructor(e,t,i){console.debug(...f(`Constructing ${It.name}`));const s=e.host.engine.i18n("ui.faith");super(e,t,new U(e,t,i,s,{onCheck:n=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const n=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(n)}},onUnCheck:n=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefresh:()=>{for(const[n,r]of this._unicornBuildings.entries())r.elementLabel.attr("data-ks-active-from","❊"),r.elementLabel.attr("data-ks-active-to","✮"),this.setting.bestUnicornBuilding.enabled&&this.setting.bestUnicornBuildingCurrent===n?r.elementLabel.addClass(Je.active):r.elementLabel.removeClass(Je.active)},onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.buildings).some(n=>n.enabled&&0<n.max&&n.trigger<0),this.expando.ineffective=t.enabled&&Object.values(t.buildings).some(n=>n.enabled&&(n.max===0||n.trigger<0&&t.trigger<0));for(const[n,r]of this._unicornBuildings.entries())r.readOnly=this._bestUnicornBuilding.setting.enabled,r.maxButton.readOnly=this._bestUnicornBuilding.setting.enabled,r.triggerButton.readOnly=this._bestUnicornBuilding.setting.enabled}});const a=[...Ne];this._unicornBuildings=new Map([["unicornPasture",te.getBuildOption(this,this.setting.buildings.unicornPasture,i,this.setting,this.host.engine.i18n("$buildings.unicornPasture.label"),s,{renderLabelTrigger:!1})],...this.host.game.religion.zigguratUpgrades.filter(n=>a.includes(n.name)&&!g(this.setting.buildings[n.name])).map(n=>[n.name,te.getBuildOption(this,this.setting.buildings[n.name],i,this.setting,n.label,s,{renderLabelTrigger:!1})])]),this._bestUnicornBuilding=new k(this,this.setting.bestUnicornBuilding,this.host.engine.i18n("option.faith.best.unicorn"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.faith.best.unicorn")]);for(const n of this._unicornBuildings.values())n.setting.enabled=!0,n.setting.max=-1,n.setting.trigger=-1},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.faith.best.unicorn")])},upgradeIndicator:!0}),this.addChildrenContent([new _(this,{onReset:()=>{const n=new Ct;this.setting.load({bestUnicornBuilding:n.bestUnicornBuilding,buildings:n.buildings})}}).addChildren([new A(this,this.host.engine.i18n("$religion.panel.ziggurat.label")),...this._unicornBuildings.values(),this._bestUnicornBuilding,new K(this),...this.host.game.religion.zigguratUpgrades.filter(n=>!a.includes(n.name)&&!g(this.setting.buildings[n.name])).map(n=>te.getBuildOption(this,this.setting.buildings[n.name],i,this.setting,n.label,s,{renderLabelTrigger:!1})),new K(this),new A(this,this.host.engine.i18n("$religion.panel.orderOfTheSun.label")),...this.host.game.religion.religionUpgrades.filter(n=>!g(this.setting.buildings[n.name])).map(n=>te.getBuildOption(this,this.setting.buildings[n.name],i,this.setting,n.label,s,{delimiter:n.name===this.host.game.religion.religionUpgrades.at(-1)?.name,renderLabelTrigger:!1})),new A(this,this.host.engine.i18n("$religion.panel.cryptotheology.label")),...this.host.game.religion.transcendenceUpgrades.filter(n=>!g(this.setting.buildings[n.name])).map(n=>te.getBuildOption(this,this.setting.buildings[n.name],i,this.setting,n.label,s,{renderLabelTrigger:!1}))]),new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new A(this,this.host.engine.i18n("ui.additional")),...fs.map(n=>{const r=this.host.engine.i18n(`option.faith.${n}`);if(n==="transcend")return new k(this,this.setting[n],r,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[r])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[r])}});const c=new U(this,this.setting[n],i,r,{classes:[w.lastHeadAction],onCheck:()=>{this.host.engine.imessage("status.sub.enable",[r])},onRefresh:()=>{c.triggerButton.inactive=!this.setting[n].enabled||this.setting[n].trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(this,this.host.engine.i18n(c.triggerButton.behavior==="integer"?"ui.trigger.setinteger":"ui.trigger.setpercentage",[r]),this.host.engine.i18n("ui.trigger.build.prompt",[r,c.triggerButton.behavior==="integer"?this.host.renderAbsolute(this.setting[n].trigger,i.selected):this.host.renderPercentage(this.setting[n].trigger,i.selected,!0)]),c.triggerButton.behavior==="integer"?this.host.renderAbsolute(this.setting[n].trigger):this.host.renderPercentage(this.setting[n].trigger),this.host.engine.i18n(c.triggerButton.behavior==="integer"?"ui.trigger.setinteger.promptExplainer":"ui.trigger.setpercentage.promptExplainer"));o===void 0||o===""||o.startsWith("-")||(this.setting[n].trigger=(c.triggerButton.behavior==="integer"?this.host.parseAbsolute(o):this.host.parsePercentage(o))??this.setting[n].trigger)},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[r])}});return c.triggerButton.element.addClass(w.lastHeadAction),c})])])}}class $t extends F{setting;resourceName;constructor(e,t,i,s,a){super(e,"",M.DataUsage,{...a,onClick:async()=>{const n=await x.prompt(e,e.host.engine.i18n("resources.consume.prompt"),e.host.engine.i18n("resources.consume.promptTitle",[s,e.host.renderPercentage(t.consume,i.selected,!0)]),e.host.renderPercentage(t.consume),e.host.engine.i18n("resources.consume.promptExplainer"));n!==void 0&&(n===""||n.startsWith("-")||(t.consume=e.host.parsePercentage(n)))},onRefresh:()=>{const n=this.host.renderPercentage(this.setting.consume,this.host.engine.settings.locale.selected,!0),r=this.setting.consume===0?this.host.engine.i18n("resources.consume.titleZero",[this.resourceName]):this.host.engine.i18n("resources.consume.title",[n,this.resourceName]);this.updateTitle(r),a?.onRefresh?.()}}),this.element.addClass(w.consumeButton),this.resourceName=s,this.setting=t}toString(){return`[${$t.name}#${this.componentId}]`}}class Lt extends F{setting;resourceName;constructor(e,t,i,s,a){super(e,"",null,{...a,onClick:async()=>{const n=await x.prompt(e,e.host.engine.i18n("resources.stock.prompt"),e.host.engine.i18n("resources.stock.promptTitle",[s,e.host.renderAbsolute(t.stock,i.selected)]),e.host.renderAbsolute(t.stock),e.host.engine.i18n("resources.stock.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){t.stock=-1;return}n==="0"&&(t.enabled=!1),t.stock=e.host.parseAbsolute(n)??t.stock}},onRefresh:()=>{const n=this.host.renderAbsolute(this.setting.stock),r=this.setting.stock<0?this.host.engine.i18n("resources.stock.titleInfinite",[this.resourceName]):this.setting.stock===0?this.host.engine.i18n("resources.stock.titleZero",[this.resourceName]):this.host.engine.i18n("resources.stock.title",[this.host.renderAbsolute(this.setting.stock),this.resourceName]);this.updateTitle(r),this.updateLabel(n)}}),this.element.addClass(w.stockButton),this.resourceName=s,this.setting=t}toString(){return`[${Lt.name}#${this.componentId}]`}}class Ot extends I{constructor(e,t,i){console.debug(...f(`Constructing ${Ot.name}`));const s=e.host.engine.i18n("ui.resources");super(e,t,new ne(e,s,{classes:[B.checked,B.setting],icon:M.Resources}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]));const a=["blackcoin","burnedParagon","elderBox","gflops","hashrates","kittens","paragon","temporalFlux","wrappingPaper","zebras"];this.addChildContent(new _(this).addChildren(this.host.game.resPool.resources.filter(n=>!a.includes(n.name)&&!g(this.setting.resources[n.name])).sort((n,r)=>n.title.localeCompare(r.title,i.selected)).map(n=>[this.setting.resources[n.name],W(n.title)]).map(([n,r])=>this._makeResourceSetting(this,n,i,r))))}_makeResourceSetting(e,t,i,s){const a=new k(e,t,s,{onCheck:()=>{e.host.engine.imessage("status.resource.enable",[s])},onUnCheck:()=>{e.host.engine.imessage("status.resource.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),n=new Lt(e,t,i,s,{alignment:"right",border:!1,classes:[w.headAction],onRefreshRequest:()=>{n.inactive=!t.enabled||t.stock===0}});a.head.addChild(n);const r=new $t(e,t,i,s,{border:!1,classes:[w.lastHeadAction],onRefreshRequest:()=>{r.inactive=!t.enabled||t.consume!==100,r.ineffective=t.enabled&&t.consume===0}});return a.head.addChild(r),a}}class En extends I{constructor(e,t,i,s){const a=e.host.engine.i18n("ui.upgrade.policies");super(e,t,new k(e,t,a,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[a])},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[a])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.policies).some(o=>o.enabled)}});const n=this.host.game.science.policies.filter(o=>!g(this.setting.policies[o.name])),r=[];let c=n[0].label;for(const o of n.sort((h,u)=>h.label.localeCompare(u.label,i.selected))){const h=this.setting.policies[o.name],u=new k(this,h,o.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o.label])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o.label])}});this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&c[0]!==o.label[0]&&u.element.addClass(E.splitter),r.push(u),c=o.label}this.addChildContent(new _(this).addChildren(r))}}class Mn extends I{constructor(e,t,i,s){const a=e.host.engine.i18n("ui.upgrade.techs");super(e,t,new U(e,t,i,a,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[a])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[a,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(o)}},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[a])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=s.enabled&&t.enabled&&t.trigger===-1&&!Object.values(t.techs).some(o=>o.enabled&&0<=o.trigger),this.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.techs).some(o=>o.enabled)}});const n=this.host.game.science.techs.filter(o=>!g(this.setting.techs[o.name])),r=[];let c=n[0].label;for(const o of n.sort((h,u)=>h.label.localeCompare(u.label,i.selected))){const h=this.setting.techs[o.name],u=new U(this,h,i,o.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o.label])},onRefresh:()=>{u.triggerButton.inactive=!h.enabled||h.trigger===-1,u.triggerButton.ineffective=s.enabled&&t.enabled&&h.enabled&&t.trigger===-1&&h.trigger===-1},onRefreshTrigger:()=>{u.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[h.trigger<0?t.trigger<0?this.host.engine.i18n("ui.trigger.section.blocked",[a]):`${this.host.renderPercentage(t.trigger,i.selected,!0)} (${this.host.engine.i18n("ui.trigger.section.inherited")})`:this.host.renderPercentage(h.trigger,i.selected,!0)])},onSetTrigger:async()=>{const d=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[a,h.trigger!==-1?this.host.renderPercentage(h.trigger,i.selected,!0):this.host.engine.i18n("ui.trigger.section.inherited")]),h.trigger!==-1?this.host.renderPercentage(h.trigger):"",this.host.engine.i18n("ui.trigger.section.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){h.trigger=-1;return}h.trigger=this.host.parsePercentage(d)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o.label])},renderLabelTrigger:!1});u.triggerButton.element.addClass(w.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&c[0]!==o.label[0]&&u.element.addClass(E.splitter),r.push(u),c=o.label}this.addChildContent(new _(this).addChildren(r))}}class Ut extends I{_policiesUi;_techsUi;_observeStars;constructor(e,t,i){console.debug(...f(`Constructing ${Ut.name}`));const s=e.host.engine.i18n("ui.upgrade");super(e,t,new k(e,t,s,{onCheck:n=>{e.host.engine.imessage("status.auto.enable",[s])},onUnCheck:n=>{e.host.engine.imessage("status.auto.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefresh:()=>{this.setting.observe.enabled?$("#observeButton").hide():$("#observeButton").show()},onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&(this.setting.policies.enabled&&this._policiesUi.expando.ineffective||this.setting.techs.enabled&&(this._techsUi.expando.ineffective||this._techsUi.settingItem.triggerButton.ineffective))}}),this._policiesUi=new En(this,t.policies,i,t),this._techsUi=new Mn(this,t.techs,i,t),this._observeStars=new k(this,this.setting.observe,this.host.engine.i18n("option.observe"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.observe")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.observe")])}});const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1});a.addChildren([this._techsUi,this._policiesUi,this._observeStars]),this.addChildContent(a)}}class Rn extends I{_missions;constructor(e,t,i,s){const a=e.host.engine.i18n("ui.upgrade.missions");super(e,t,new k(e,t,a,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[a])},onRefresh:()=>{this.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.missions).some(r=>r.enabled)},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[a])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})])),this._missions=this.host.game.space.programs.filter(r=>!g(this.setting.missions[r.name])).map(r=>new k(this,this.setting.missions[r.name],r.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[r.label])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[r.label])}}));const n=new _(this).addChildren(this._missions);this.addChildContent(n)}}class Dt extends I{_missionsUi;constructor(e,t,i){console.debug(...f(`Constructing ${Dt.name}`));const s=e.host.engine.i18n("ui.space");super(e,t,new U(e,t,i,s,{onCheck:n=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const n=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(n)}},onUnCheck:n=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.buildings).some(n=>n.enabled&&0<n.max&&n.trigger<0),this.expando.ineffective=t.enabled&&(Object.values(t.buildings).some(n=>n.enabled&&(n.max===0||n.trigger<0&&t.trigger<0))||!Object.values(t.buildings).some(n=>n.enabled)&&!t.unlockMissions.enabled||this._missionsUi.expando.ineffective)}}),this.addChildContent(new _(this,{onReset:()=>{this.setting.load({buildings:new He().buildings})}}).addChildren(this.host.game.space.planets.filter(n=>0<n.buildings.length).flatMap((n,r,c)=>[new A(this,this.host.engine.labelForPlanet(n.name)),...n.buildings.filter(o=>!g(this.setting.buildings[o.name])).map((o,h,u)=>te.getBuildOption(this,this.setting.buildings[o.name],i,this.setting,o.label,s,{delimiter:r<c.length-1&&h===u.length-1,renderLabelTrigger:!1}))])));const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1});a.addChild(new A(this,this.host.engine.i18n("ui.additional"))),this._missionsUi=new Rn(this,this.setting.unlockMissions,i,this.setting),a.addChild(this._missionsUi),this.addChildContent(a)}}class Nt extends he{constructor(e,t=400){super("ERR_OS_INVALID_ARGUMENT",e,t),this.name="InvalidArgumentError",typeof Error.captureStackTrace<"u"&&Error.captureStackTrace(this,Nt)}}const Xe=43200,Hi=1440,Fi=Symbol.for("constructDateFrom");function qt(l,e){return typeof l=="function"?l(e):l&&typeof l=="object"&&Fi in l?l[Fi](e):l instanceof Date?new l.constructor(e):new Date(e)}function An(l){return qt(l,Date.now())}const Pn={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Bn=(l,e,t)=>{let i;const s=Pn[l];return typeof s=="string"?i=s:e===1?i=s.one:i=s.other.replace("{{count}}",e.toString()),t?.addSuffix?t.comparison&&t.comparison>0?"in "+i:i+" ago":i};function J(l){return(e={})=>{const t=e.width?String(e.width):l.defaultWidth;return l.formats[t]||l.formats[l.defaultWidth]}}const In={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},$n={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Ln={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},On={date:J({formats:In,defaultWidth:"full"}),time:J({formats:$n,defaultWidth:"full"}),dateTime:J({formats:Ln,defaultWidth:"full"})},Un={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Dn=(l,e,t,i)=>Un[l];function N(l){return(e,t)=>{const i=t?.context?String(t.context):"standalone";let s;if(i==="formatting"&&l.formattingValues){const n=l.defaultFormattingWidth||l.defaultWidth,r=t?.width?String(t.width):n;s=l.formattingValues[r]||l.formattingValues[n]}else{const n=l.defaultWidth,r=t?.width?String(t.width):l.defaultWidth;s=l.values[r]||l.values[n]}const a=l.argumentCallback?l.argumentCallback(e):e;return s[a]}}const Nn={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},qn={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},zn={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Hn={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Fn={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Wn={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Gn={ordinalNumber:(l,e)=>{const t=Number(l),i=t%100;if(i>20||i<10)switch(i%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},era:N({values:Nn,defaultWidth:"wide"}),quarter:N({values:qn,defaultWidth:"wide",argumentCallback:l=>l-1}),month:N({values:zn,defaultWidth:"wide"}),day:N({values:Hn,defaultWidth:"wide"}),dayPeriod:N({values:Fn,defaultWidth:"wide",formattingValues:Wn,defaultFormattingWidth:"wide"})};function q(l){return(e,t={})=>{const i=t.width,s=i&&l.matchPatterns[i]||l.matchPatterns[l.defaultMatchWidth],a=e.match(s);if(!a)return null;const n=a[0],r=i&&l.parsePatterns[i]||l.parsePatterns[l.defaultParseWidth],c=Array.isArray(r)?Kn(r,u=>u.test(n)):Zn(r,u=>u.test(n));let o;o=l.valueCallback?l.valueCallback(c):c,o=t.valueCallback?t.valueCallback(o):o;const h=e.slice(n.length);return{value:o,rest:h}}}function Zn(l,e){for(const t in l)if(Object.prototype.hasOwnProperty.call(l,t)&&e(l[t]))return t}function Kn(l,e){for(let t=0;t<l.length;t++)if(e(l[t]))return t}function Ye(l){return(e,t={})=>{const i=e.match(l.matchPattern);if(!i)return null;const s=i[0],a=e.match(l.parsePattern);if(!a)return null;let n=l.valueCallback?l.valueCallback(a[0]):a[0];n=t.valueCallback?t.valueCallback(n):n;const r=e.slice(s.length);return{value:n,rest:r}}}const Vn=/^(\d+)(th|st|nd|rd)?/i,jn=/\d+/i,Jn={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Xn={any:[/^b/i,/^(a|c)/i]},Yn={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Qn={any:[/1/i,/2/i,/3/i,/4/i]},ea={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},ta={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},ia={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},sa={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},na={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},aa={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},ra={ordinalNumber:Ye({matchPattern:Vn,parsePattern:jn,valueCallback:l=>parseInt(l,10)}),era:q({matchPatterns:Jn,defaultMatchWidth:"wide",parsePatterns:Xn,defaultParseWidth:"any"}),quarter:q({matchPatterns:Yn,defaultMatchWidth:"wide",parsePatterns:Qn,defaultParseWidth:"any",valueCallback:l=>l+1}),month:q({matchPatterns:ea,defaultMatchWidth:"wide",parsePatterns:ta,defaultParseWidth:"any"}),day:q({matchPatterns:ia,defaultMatchWidth:"wide",parsePatterns:sa,defaultParseWidth:"any"}),dayPeriod:q({matchPatterns:na,defaultMatchWidth:"any",parsePatterns:aa,defaultParseWidth:"any"})},Wi={code:"en-US",formatDistance:Bn,formatLong:On,formatRelative:Dn,localize:Gn,match:ra,options:{weekStartsOn:0,firstWeekContainsDate:1}};let oa={};function Gi(){return oa}function le(l,e){return qt(e||l,l)}function Zi(l){const e=le(l),t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),+l-+t}function Qe(l,...e){const t=qt.bind(null,l||e.find(i=>typeof i=="object"));return e.map(t)}function et(l,e){const t=+le(l)-+le(e);return t<0?-1:t>0?1:t}function la(l,e,t){const[i,s]=Qe(t?.in,l,e),a=i.getFullYear()-s.getFullYear(),n=i.getMonth()-s.getMonth();return a*12+n}function ca(l,e){const t=le(l,e?.in);return t.setHours(23,59,59,999),t}function ha(l,e){const t=le(l,e?.in),i=t.getMonth();return t.setFullYear(t.getFullYear(),i+1,0),t.setHours(23,59,59,999),t}function ua(l,e){const t=le(l,e?.in);return+ca(t,e)==+ha(t,e)}function da(l,e,t){const[i,s,a]=Qe(t?.in,l,l,e),n=et(s,a),r=Math.abs(la(s,a));if(r<1)return 0;s.getMonth()===1&&s.getDate()>27&&s.setDate(30),s.setMonth(s.getMonth()-n*r);let c=et(s,a)===-n;ua(i)&&r===1&&et(i,a)===1&&(c=!1);const o=n*(r-+c);return o===0?0:o}function ga(l){return e=>{const i=(l?Math[l]:Math.trunc)(e);return i===0?0:i}}function ma(l,e){return+le(l)-+le(e)}function fa(l,e,t){const i=ma(l,e)/1e3;return ga(t?.roundingMethod)(i)}function pa(l,e,t){const i=Gi(),s=t?.locale??i.locale??Wi,a=2520,n=et(l,e);if(isNaN(n))throw new RangeError("Invalid time value");const r=Object.assign({},t,{addSuffix:t?.addSuffix,comparison:n}),[c,o]=Qe(t?.in,...n>0?[e,l]:[l,e]),h=fa(o,c),u=(Zi(o)-Zi(c))/1e3,d=Math.round((h-u)/60);let m;if(d<2)return t?.includeSeconds?h<5?s.formatDistance("lessThanXSeconds",5,r):h<10?s.formatDistance("lessThanXSeconds",10,r):h<20?s.formatDistance("lessThanXSeconds",20,r):h<40?s.formatDistance("halfAMinute",0,r):h<60?s.formatDistance("lessThanXMinutes",1,r):s.formatDistance("xMinutes",1,r):d===0?s.formatDistance("lessThanXMinutes",1,r):s.formatDistance("xMinutes",d,r);if(d<45)return s.formatDistance("xMinutes",d,r);if(d<90)return s.formatDistance("aboutXHours",1,r);if(d<Hi){const v=Math.round(d/60);return s.formatDistance("aboutXHours",v,r)}else{if(d<a)return s.formatDistance("xDays",1,r);if(d<Xe){const v=Math.round(d/Hi);return s.formatDistance("xDays",v,r)}else if(d<Xe*2)return m=Math.round(d/Xe),s.formatDistance("aboutXMonths",m,r)}if(m=da(o,c),m<12){const v=Math.round(d/Xe);return s.formatDistance("xMonths",v,r)}else{const v=m%12,b=Math.trunc(m/12);return v<3?s.formatDistance("aboutXYears",b,r):v<9?s.formatDistance("overXYears",b,r):s.formatDistance("almostXYears",b+1,r)}}function Ki(l,e){return pa(l,An(l),e)}function Vi(l,e){const t=Gi(),i=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,s=le(l,e?.in),a=s.getDay(),n=(a<i?7:0)+a-i;return s.setDate(s.getDate()-n),s.setHours(0,0,0,0),s}function ba(l,e,t){const[i,s]=Qe(t?.in,l,e);return+Vi(i,t)==+Vi(s,t)}const ji={lessThanXSeconds:{standalone:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"1 Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"1 Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"eine halbe Minute",withPreposition:"einer halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"1 Minute",other:"{{count}} Minuten"},withPreposition:{one:"1 Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"1 Stunde",other:"{{count}} Stunden"},withPreposition:{one:"1 Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"1 Tag",other:"{{count}} Tage"},withPreposition:{one:"1 Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"1 Woche",other:"{{count}} Wochen"},withPreposition:{one:"1 Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa 1 Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa 1 Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"1 Monat",other:"{{count}} Monate"},withPreposition:{one:"1 Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"1 Jahr",other:"{{count}} Jahre"},withPreposition:{one:"1 Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast 1 Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast 1 Jahr",other:"fast {{count}} Jahren"}}},va=(l,e,t)=>{let i;const s=t?.addSuffix?ji[l].withPreposition:ji[l].standalone;return typeof s=="string"?i=s:e===1?i=s.one:i=s.other.replace("{{count}}",String(e)),t?.addSuffix?t.comparison&&t.comparison>0?"in "+i:"vor "+i:i},ya={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},wa={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},ka={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},_a={date:J({formats:ya,defaultWidth:"full"}),time:J({formats:wa,defaultWidth:"full"}),dateTime:J({formats:ka,defaultWidth:"full"})},Ca={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"},Sa=(l,e,t,i)=>Ca[l],xa={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},Ta={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},zt={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},Ea={narrow:zt.narrow,abbreviated:["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],wide:zt.wide},Ma={narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},Ra={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},Aa={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},Pa={ordinalNumber:l=>Number(l)+".",era:N({values:xa,defaultWidth:"wide"}),quarter:N({values:Ta,defaultWidth:"wide",argumentCallback:l=>l-1}),month:N({values:zt,formattingValues:Ea,defaultWidth:"wide"}),day:N({values:Ma,defaultWidth:"wide"}),dayPeriod:N({values:Ra,defaultWidth:"wide",formattingValues:Aa,defaultFormattingWidth:"wide"})},Ba=/^(\d+)(\.)?/i,Ia=/\d+/i,$a={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},La={any:[/^v/i,/^n/i]},Oa={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},Ua={any:[/1/i,/2/i,/3/i,/4/i]},Da={narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},Na={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},qa={narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},za={any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},Ha={narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},Fa={any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},Wa={ordinalNumber:Ye({matchPattern:Ba,parsePattern:Ia,valueCallback:l=>parseInt(l)}),era:q({matchPatterns:$a,defaultMatchWidth:"wide",parsePatterns:La,defaultParseWidth:"any"}),quarter:q({matchPatterns:Oa,defaultMatchWidth:"wide",parsePatterns:Ua,defaultParseWidth:"any",valueCallback:l=>l+1}),month:q({matchPatterns:Da,defaultMatchWidth:"wide",parsePatterns:Na,defaultParseWidth:"any"}),day:q({matchPatterns:qa,defaultMatchWidth:"wide",parsePatterns:za,defaultParseWidth:"any"}),dayPeriod:q({matchPatterns:Ha,defaultMatchWidth:"wide",parsePatterns:Fa,defaultParseWidth:"any"})},Ga={code:"de",formatDistance:va,formatLong:_a,formatRelative:Sa,localize:Pa,match:Wa,options:{weekStartsOn:1,firstWeekContainsDate:4}},Za={lessThanXSeconds:{one:"פחות משנייה",two:"פחות משתי שניות",other:"פחות מ־{{count}} שניות"},xSeconds:{one:"שנייה",two:"שתי שניות",other:"{{count}} שניות"},halfAMinute:"חצי דקה",lessThanXMinutes:{one:"פחות מדקה",two:"פחות משתי דקות",other:"פחות מ־{{count}} דקות"},xMinutes:{one:"דקה",two:"שתי דקות",other:"{{count}} דקות"},aboutXHours:{one:"כשעה",two:"כשעתיים",other:"כ־{{count}} שעות"},xHours:{one:"שעה",two:"שעתיים",other:"{{count}} שעות"},xDays:{one:"יום",two:"יומיים",other:"{{count}} ימים"},aboutXWeeks:{one:"כשבוע",two:"כשבועיים",other:"כ־{{count}} שבועות"},xWeeks:{one:"שבוע",two:"שבועיים",other:"{{count}} שבועות"},aboutXMonths:{one:"כחודש",two:"כחודשיים",other:"כ־{{count}} חודשים"},xMonths:{one:"חודש",two:"חודשיים",other:"{{count}} חודשים"},aboutXYears:{one:"כשנה",two:"כשנתיים",other:"כ־{{count}} שנים"},xYears:{one:"שנה",two:"שנתיים",other:"{{count}} שנים"},overXYears:{one:"יותר משנה",two:"יותר משנתיים",other:"יותר מ־{{count}} שנים"},almostXYears:{one:"כמעט שנה",two:"כמעט שנתיים",other:"כמעט {{count}} שנים"}},Ka=(l,e,t)=>{if(l==="xDays"&&t?.addSuffix&&e<=2)return t.comparison&&t.comparison>0?e===1?"מחר":"מחרתיים":e===1?"אתמול":"שלשום";let i;const s=Za[l];return typeof s=="string"?i=s:e===1?i=s.one:e===2?i=s.two:i=s.other.replace("{{count}}",String(e)),t?.addSuffix?t.comparison&&t.comparison>0?"בעוד "+i:"לפני "+i:i},Va={full:"EEEE, d בMMMM y",long:"d בMMMM y",medium:"d בMMM y",short:"d.M.y"},ja={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},Ja={full:"{{date}} 'בשעה' {{time}}",long:"{{date}} 'בשעה' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Xa={date:J({formats:Va,defaultWidth:"full"}),time:J({formats:ja,defaultWidth:"full"}),dateTime:J({formats:Ja,defaultWidth:"full"})},Ya={lastWeek:"eeee 'שעבר בשעה' p",yesterday:"'אתמול בשעה' p",today:"'היום בשעה' p",tomorrow:"'מחר בשעה' p",nextWeek:"eeee 'בשעה' p",other:"P"},Qa=(l,e,t,i)=>Ya[l],er={narrow:["לפנה״ס","לספירה"],abbreviated:["לפנה״ס","לספירה"],wide:["לפני הספירה","לספירה"]},tr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["רבעון 1","רבעון 2","רבעון 3","רבעון 4"]},ir={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],wide:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"]},sr={narrow:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],short:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],abbreviated:["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],wide:["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"]},nr={narrow:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"},abbreviated:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"},wide:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"}},ar={narrow:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"בצהריים",evening:"בערב",night:"בלילה"},abbreviated:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"אחר הצהריים",evening:"בערב",night:"בלילה"},wide:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"אחר הצהריים",evening:"בערב",night:"בלילה"}},rr={ordinalNumber:(l,e)=>{const t=Number(l);if(t<=0||t>10)return String(t);const i=String(e?.unit),s=["year","hour","minute","second"].indexOf(i)>=0,a=["ראשון","שני","שלישי","רביעי","חמישי","שישי","שביעי","שמיני","תשיעי","עשירי"],n=["ראשונה","שנייה","שלישית","רביעית","חמישית","שישית","שביעית","שמינית","תשיעית","עשירית"],r=t-1;return s?n[r]:a[r]},era:N({values:er,defaultWidth:"wide"}),quarter:N({values:tr,defaultWidth:"wide",argumentCallback:l=>l-1}),month:N({values:ir,defaultWidth:"wide"}),day:N({values:sr,defaultWidth:"wide"}),dayPeriod:N({values:nr,defaultWidth:"wide",formattingValues:ar,defaultFormattingWidth:"wide"})},or=/^(\d+|(ראשון|שני|שלישי|רביעי|חמישי|שישי|שביעי|שמיני|תשיעי|עשירי|ראשונה|שנייה|שלישית|רביעית|חמישית|שישית|שביעית|שמינית|תשיעית|עשירית))/i,lr=/^(\d+|רא|שנ|של|רב|ח|שי|שב|שמ|ת|ע)/i,cr={narrow:/^ל(ספירה|פנה״ס)/i,abbreviated:/^ל(ספירה|פנה״ס)/i,wide:/^ל(פני ה)?ספירה/i},hr={any:[/^לפ/i,/^לס/i]},ur={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^רבעון [1234]/i},dr={any:[/1/i,/2/i,/3/i,/4/i]},gr={narrow:/^\d+/i,abbreviated:/^(ינו|פבר|מרץ|אפר|מאי|יוני|יולי|אוג|ספט|אוק|נוב|דצמ)׳?/i,wide:/^(ינואר|פברואר|מרץ|אפריל|מאי|יוני|יולי|אוגוסט|ספטמבר|אוקטובר|נובמבר|דצמבר)/i},mr={narrow:[/^1$/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^7/i,/^8/i,/^9/i,/^10/i,/^11/i,/^12/i],any:[/^ינ/i,/^פ/i,/^מר/i,/^אפ/i,/^מא/i,/^יונ/i,/^יול/i,/^אוג/i,/^ס/i,/^אוק/i,/^נ/i,/^ד/i]},fr={narrow:/^[אבגדהוש]׳/i,short:/^[אבגדהוש]׳/i,abbreviated:/^(שבת|יום (א|ב|ג|ד|ה|ו)׳)/i,wide:/^יום (ראשון|שני|שלישי|רביעי|חמישי|שישי|שבת)/i},pr={abbreviated:[/א׳$/i,/ב׳$/i,/ג׳$/i,/ד׳$/i,/ה׳$/i,/ו׳$/i,/^ש/i],wide:[/ן$/i,/ני$/i,/לישי$/i,/עי$/i,/מישי$/i,/שישי$/i,/ת$/i],any:[/^א/i,/^ב/i,/^ג/i,/^ד/i,/^ה/i,/^ו/i,/^ש/i]},br={any:/^(אחר ה|ב)?(חצות|צהריים|בוקר|ערב|לילה|אחה״צ|לפנה״צ)/i},vr={any:{am:/^לפ/i,pm:/^אחה/i,midnight:/^ח/i,noon:/^צ/i,morning:/בוקר/i,afternoon:/בצ|אחר/i,evening:/ערב/i,night:/לילה/i}},yr=["רא","שנ","של","רב","ח","שי","שב","שמ","ת","ע"],wr={ordinalNumber:Ye({matchPattern:or,parsePattern:lr,valueCallback:l=>{const e=parseInt(l,10);return isNaN(e)?yr.indexOf(l)+1:e}}),era:q({matchPatterns:cr,defaultMatchWidth:"wide",parsePatterns:hr,defaultParseWidth:"any"}),quarter:q({matchPatterns:ur,defaultMatchWidth:"wide",parsePatterns:dr,defaultParseWidth:"any",valueCallback:l=>l+1}),month:q({matchPatterns:gr,defaultMatchWidth:"wide",parsePatterns:mr,defaultParseWidth:"any"}),day:q({matchPatterns:fr,defaultMatchWidth:"wide",parsePatterns:pr,defaultParseWidth:"any"}),dayPeriod:q({matchPatterns:br,defaultMatchWidth:"any",parsePatterns:vr,defaultParseWidth:"any"})},kr={code:"he",formatDistance:Ka,formatLong:Xa,formatRelative:Qa,localize:rr,match:wr,options:{weekStartsOn:0,firstWeekContainsDate:1}},_r={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},Cr=(l,e,t)=>{let i;const s=_r[l];return typeof s=="string"?i=s:e===1?i=s.one:i=s.other.replace("{{count}}",String(e)),t?.addSuffix?t.comparison&&t.comparison>0?i+"内":i+"前":i},Sr={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},xr={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},Tr={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},Er={date:J({formats:Sr,defaultWidth:"full"}),time:J({formats:xr,defaultWidth:"full"}),dateTime:J({formats:Tr,defaultWidth:"full"})};function Ji(l,e,t){const i="eeee p";return ba(l,e,t)?i:l.getTime()>e.getTime()?"'下个'"+i:"'上个'"+i}const Mr={lastWeek:Ji,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:Ji,other:"PP p"},Rr=(l,e,t,i)=>{const s=Mr[l];return typeof s=="function"?s(e,t,i):s},Ar={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},Pr={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},Br={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},Ir={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},$r={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},Lr={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},Or={ordinalNumber:(l,e)=>{const t=Number(l);switch(e?.unit){case"date":return t.toString()+"日";case"hour":return t.toString()+"时";case"minute":return t.toString()+"分";case"second":return t.toString()+"秒";default:return"第 "+t.toString()}},era:N({values:Ar,defaultWidth:"wide"}),quarter:N({values:Pr,defaultWidth:"wide",argumentCallback:l=>l-1}),month:N({values:Br,defaultWidth:"wide"}),day:N({values:Ir,defaultWidth:"wide"}),dayPeriod:N({values:$r,defaultWidth:"wide",formattingValues:Lr,defaultFormattingWidth:"wide"})},Ur=/^(第\s*)?\d+(日|时|分|秒)?/i,Dr=/\d+/i,Nr={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},qr={any:[/^(前)/i,/^(公元)/i]},zr={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},Hr={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},Fr={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},Wr={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},Gr={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},Zr={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},Kr={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},Vr={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},jr={ordinalNumber:Ye({matchPattern:Ur,parsePattern:Dr,valueCallback:l=>parseInt(l,10)}),era:q({matchPatterns:Nr,defaultMatchWidth:"wide",parsePatterns:qr,defaultParseWidth:"any"}),quarter:q({matchPatterns:zr,defaultMatchWidth:"wide",parsePatterns:Hr,defaultParseWidth:"any",valueCallback:l=>l+1}),month:q({matchPatterns:Fr,defaultMatchWidth:"wide",parsePatterns:Wr,defaultParseWidth:"any"}),day:q({matchPatterns:Gr,defaultMatchWidth:"wide",parsePatterns:Zr,defaultParseWidth:"any"}),dayPeriod:q({matchPatterns:Kr,defaultMatchWidth:"any",parsePatterns:Vr,defaultParseWidth:"any"})},Jr={code:"zh-CN",formatDistance:Cr,formatLong:Er,formatRelative:Rr,localize:Or,match:jr,options:{weekStartsOn:1,firstWeekContainsDate:4}};class Xr{_game;constructor(e){this._game=e}load(e){return new Promise((t,i)=>{if(e===null){t();return}this._game.saveImportDropboxText(e,s=>{if(s){i(s);return}t()})})}loadRaw(e){const t=this._game.compressLZData(JSON.stringify(e));return this.load(t)}}class Re extends se{constructor(e,t){super(e,t),this.element.addClass(zi.toolbar)}toString(){return`[${Re.name}#${this.componentId}]`}addChild(e){return super.addChild(e)}}class Ht extends I{games=new Array;states=new Array;gameList;stateList;locale;constructor(e,t,i){console.debug(...f(`Constructing ${Ht.name}`));const s=e.host.engine.i18n("state.title");super(e,t,new ne(e,s,{classes:[B.checked,B.setting],icon:M.State}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefresh:()=>{this._refreshGameList(),this._refreshStateList()}}),this.gameList=new _(this,{hasDisableAll:!1,hasEnableAll:!1}),this.stateList=new _(this,{hasDisableAll:!1,hasEnableAll:!1}),this.locale=i.selected==="zh-CN"?Jr:i.selected==="he-IL"?kr:i.selected==="de-DE"?Ga:Wi,this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new k(this,this.setting.noConfirm,this.host.engine.i18n("state.noConfirm")),new se(this).addChild(new K(this)),new A(this,this.host.engine.i18n("state.local")),new Re(this).addChildren([new F(this,this.host.engine.i18n("state.import"),M.Import,{onClick:()=>{this.import()},title:this.host.engine.i18n("state.importTitle")})]),new se(this).addChild(new K(this)),new A(this,this.host.engine.i18n("state.localStates")),new Re(this).addChildren([new F(this,this.host.engine.i18n("state.store"),M.SaveAs,{onClick:()=>{this.storeState()},title:this.host.engine.i18n("state.storeState")}),new F(this,this.host.engine.i18n("copy"),M.Copy,{onClick:()=>{this.copyState().catch(H(console)),this.host.engine.imessage("state.copied.stateCurrent")},title:this.host.engine.i18n("state.copy.stateCurrent")}),new F(this,this.host.engine.i18n("state.new"),M.Draft,{onClick:()=>{this.storeStateFactoryDefaults(),this.host.engine.imessage("state.stored.state")},title:this.host.engine.i18n("state.storeFactory")}),new F(this,this.host.engine.i18n("state.exportAll"),M.Sync,{onClick:()=>{this.exportStateAll()},title:this.host.engine.i18n("state.exportAllTitle")})]),new se(this).addChild(this.stateList),new se(this).addChild(new K(this)),new A(this,this.host.engine.i18n("state.localGames")),new Re(this).addChildren([new F(this,this.host.engine.i18n("state.store"),M.SaveAs,{onClick:()=>{this.storeGame(),this.host.engine.imessage("state.stored.game")},title:this.host.engine.i18n("state.storeGame")}),new F(this,this.host.engine.i18n("copy"),M.Copy,{onClick:()=>{this.copyGame().catch(H(console)),this.host.engine.imessage("state.copied.gameCurrent")},title:this.host.engine.i18n("state.copy.gameCurrent")})]),new se(this).addChild(this.gameList),new k(this,this.setting.compress,this.host.engine.i18n("state.compress"))])),this._loadGames(),this._loadStates()}_loadGames(){let e=0,t=localStorage.getItem(`ks.game.${e}`);this.games.splice(0);try{for(;!g(t);){const i=JSON.parse(t);this.games.push(new Ue(i)),t=localStorage.getItem(`ks.game.${++e}`)}}catch(i){console.error(...f(i))}}_storeGames(){let e=0,t=localStorage.getItem(`ks.game.${e}`);for(;!g(t);)localStorage.removeItem(`ks.game.${e}`),t=localStorage.getItem(`ks.game.${++e}`);e=0;for(const i of this.games)localStorage.setItem(`ks.game.${e++}`,JSON.stringify(i))}_loadStates(){let e=0,t=localStorage.getItem(`ks.state.${e}`);this.states.splice(0);try{for(;!g(t);){const i=JSON.parse(t);ae.unknownAsEngineStateOrThrow(i.state),this.states.push(new Ue(i)),t=localStorage.getItem(`ks.state.${++e}`)}}catch(i){console.error(...f(i))}}_storeStates(){let e=0,t=localStorage.getItem(`ks.state.${e}`);for(;!g(t);)localStorage.removeItem(`ks.state.${e}`),t=localStorage.getItem(`ks.state.${++e}`);e=0;for(const i of this.states)localStorage.setItem(`ks.state.${e++}`,JSON.stringify(i))}_refreshGameList(){this.gameList.removeChildren(this.gameList.children),this.gameList.addChildren(this.games.sort((e,t)=>new Date(e.unwrap().timestamp).getTime()-new Date(t.unwrap().timestamp).getTime()).map(e=>[e.unwrap(),e]).map(([e,t])=>new Et(this,new fe(this,`${e.label} (${Ki(new Date(e.timestamp),{addSuffix:!0,locale:this.locale})})`,{onClick:()=>{this.loadGame(e.game).catch(H(console)),this.host.engine.imessage("state.loaded.game",[e.label])},title:new Date(e.timestamp).toLocaleString()})).addChildren([new T(this,{classes:[E.fillSpace]}),new V(this,M.Save,this.host.engine.i18n("state.update.game"),{onClick:()=>{this.updateGame(t,this.host.game.save()),this.host.engine.imessage("state.updated.game",[e.label])}}),new V(this,M.Edit,this.host.engine.i18n("state.edit.game"),{onClick:()=>{this.storeGame(e.game),this.deleteGame(t,!0),this.host.engine.imessage("state.updated.game",[e.label])}}),new V(this,M.Copy,this.host.engine.i18n("state.copy.game"),{onClick:()=>{this.copyGame(e.game).catch(H(console)),this.host.engine.imessage("state.copied.game",[e.label])}}),new V(this,M.Delete,this.host.engine.i18n("state.delete.game"),{onClick:()=>{this.deleteGame(t),this.host.engine.imessage("state.deleted.game",[e.label])}})])))}_refreshStateList(){this.stateList.removeChildren(this.stateList.children),this.stateList.addChildren(this.states.sort((e,t)=>new Date(e.unwrap().timestamp).getTime()-new Date(t.unwrap().timestamp).getTime()).map(e=>[e.unwrap(),e]).map(([e,t])=>new Et(this,new fe(this,`${e.label} (${Ki(new Date(e.timestamp),{addSuffix:!0,locale:this.locale})})`,{onClick:()=>{this.loadState(e.state),this.host.engine.imessage("state.loaded.state",[e.label])},title:new Date(e.timestamp).toLocaleString()})).addChildren([new T(this,{classes:[E.fillSpace]}),new V(this,M.Save,this.host.engine.i18n("state.update.state"),{onClick:()=>{this.updateState(t,this.host.engine.stateSerialize()),this.host.engine.imessage("state.updated.state",[e.label])}}),new V(this,M.Edit,this.host.engine.i18n("state.edit.state"),{onClick:()=>{this.storeState(e.state),this.deleteState(t,!0),this.host.engine.imessage("state.updated.state",[e.label])}}),new V(this,M.Copy,this.host.engine.i18n("state.copy.state"),{onClick:()=>{this.copyState(e.state).catch(H(console)),this.host.engine.imessage("state.copied.state",[e.label])}}),new V(this,M.Delete,this.host.engine.i18n("state.delete.state"),{onClick:()=>{this.deleteState(t),this.host.engine.imessage("state.deleted.state",[e.label])}})])))}async copyState(e){await this.host.copySettings(e,!1)}async copyGame(e){const t=e??this.host.game.save(),i=JSON.stringify(t),s=this.setting.compress.enabled?this.host.game.compressLZData(i):i;await C.window.navigator.clipboard.writeText(s)}import(){const e=C.window.prompt(this.host.engine.i18n("state.loadPrompt"));if(g(e))return;const t=new Date().toDateString();let i=1;const s=()=>this.host.engine.i18n("state.importedState",[`${t} #${i++}`]),a=n=>{try{const o=ae.decodeSettings(n);this.storeState(o,s()),this.host.engine.imessage("state.imported.state");return}catch{}try{const o=JSON.parse(n),h=ae.decodeSettings(o.state);this.storeState(h,o.label),this.host.engine.imessage("state.imported.state");return}catch{}let r;try{r=JSON.parse(n)}catch{const h=this.host.game.decompressLZData(n);try{r=JSON.parse(h)}catch{if(n.match(/\r?\n/))return n.split(/\r?\n/).forEach(d=>{a(d)});throw new Nt("The provided input can not be parsed as anything we understand.")}}let c;if(!g(r)&&"ks"in r&&!g(r.ks)){const o=r.ks.state[0];c=this.storeState(o,s())??void 0,this.host.engine.imessage("state.imported.state"),r.ks=void 0}this.storeGame(r,c),this.host.engine.imessage("state.imported.game")};a(e)}storeGame(e,t){let i=t;return g(i)&&(i=C.window.prompt(this.host.engine.i18n("state.storeGame.prompt"))??void 0),g(i)?null:(i=(i===""?void 0:i)??this.host.engine.i18n("state.unlabeledGame"),i=i.substring(0,127),this.games.push(new Ue({game:e??this.host.game.save(),label:i,timestamp:new Date().toISOString()})),this._storeGames(),this.requestRefresh(),i)}storeState(e,t){let i=t;return g(i)&&(i=C.window.prompt(this.host.engine.i18n("state.storeState.prompt"))??void 0),g(i)?null:(i=(i===""?void 0:i)??this.host.engine.i18n("state.unlabeledState"),i=i.substring(0,127),this.states.push(new Ue({label:i,state:e??this.host.engine.stateSerialize(),timestamp:new Date().toISOString()})),this._storeStates(),this.requestRefresh(),i)}storeStateFactoryDefaults(){this.storeState(ee.DEFAULT_STATE)}storeAutoSave(e){const t=this.states.find(i=>i.unwrap().label==="Auto-Save");if(!g(t)){console.info(...f("Updating existing Auto-Save...")),t.replace({...t.unwrap(),state:e,timestamp:new Date().toISOString()}),this._storeStates(),this.requestRefresh();return}console.info(...f("Storing new Auto-Save...")),this.storeState(e,"Auto-Save")}exportStateAll(){const e=this.states.map(a=>a.unwrap()).map(a=>JSON.stringify({label:a.label,state:ae.encodeSettings(a.state,!1),timestamp:a.timestamp})).join(`
|
|
21
|
-
`),t=document.createElement("a"),i=new Blob([e],{type:"application/x-ndjson"}),s=URL.createObjectURL(i);t.setAttribute("href",s),t.setAttribute("download",`ks-local-states-${Date.now()}.ndjson`),t.click()}async loadGame(e){this._destructiveActionPrevented()||await new Xr(this.host.game).loadRaw(e)}loadState(e){this._destructiveActionPrevented()||(this.host.engine.stateLoad(e,!0),this.host.refreshEntireUserInterface())}loadAutoSave(){if(this.host.engine.isLoaded){console.info(...f("Not attempting to load Auto-Save, because a state is already loaded."));return}const e=this.states.find(t=>t.unwrap().label==="Auto-Save");if(g(e)){console.info(...f("No Auto-Save settings found."));return}console.info(...f("Loading Auto-Save...")),this.host.engine.stateLoad(e.unwrap().state,!1)}updateGame(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({game:t,label:i,timestamp:new Date().toISOString()}),this._storeGames(),this.requestRefresh()}updateState(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({label:i,state:t,timestamp:new Date().toISOString()}),this._storeStates(),this.requestRefresh()}deleteGame(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.games.indexOf(e);i<0||(this.games.splice(i,1),this._storeGames(),this.requestRefresh())}deleteState(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.states.indexOf(e);i<0||(this.states.splice(i,1),this._storeStates(),this.requestRefresh())}_destructiveActionPrevented(){return!this.setting.noConfirm.enabled&&!C.window.confirm(this.host.engine.i18n("state.confirmDestruction"))}}class _e extends me{setting;constructor(e,t,i,s){super(e,new ne(e,t,{classes:[B.checked,B.setting],icon:s?.icon}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),s),this.setting=i}}class Yr extends _e{_buildings;constructor(e,t,i){const s=e.host.engine.i18n("ui.build");super(e,s,t,{icon:M.Bonfire,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(n=>n.enabled&&n.trigger===-1)}}),this._buildings=[];for(const n of this.host.game.bld.buildingGroups){this._buildings.push(new A(this,n.title));for(const r of n.buildings){if(r==="unicornPasture"||g(this.setting.buildings[r]))continue;const c=this.host.game.bld.getBuildingExt(r).meta;if(g(c.stages))g(c.label)||this._buildings.push(this._getResetOption(this,this.setting.buildings[r],i,t,c.label));else{const o=Object.values(this.setting.buildings).find(h=>h.baseBuilding===r)?.building;this._buildings.push(this._getResetOption(this,this.setting.buildings[r],i,t,c.stages[0].label),this._getResetOption(this,this.setting.buildings[o],i,t,c.stages[1].label,!1,!0))}}n!==this.host.game.bld.buildingGroups[this.host.game.bld.buildingGroups.length-1]&&this._buildings.at(-1)?.element.addClass(ge.delimiter)}const a=new _(this);a.addChildren(this._buildings),this.addChildContent(a)}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class Qr extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.faith");super(e,s,t,{icon:M.Religion,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(n=>n.enabled&&n.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]);const a=[...Ne];this.addChildContent(new _(this).addChildren([new A(this,this.host.engine.i18n("$religion.panel.ziggurat.label")),this._getResetOption(this,this.setting.buildings.unicornPasture,i,t,this.host.engine.i18n("$buildings.unicornPasture.label")),...this.host.game.religion.zigguratUpgrades.filter(n=>a.includes(n.name)&&!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label)),new K(this),...this.host.game.religion.zigguratUpgrades.filter(n=>!a.includes(n.name)&&!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label)),new K(this),new A(this,this.host.engine.i18n("$religion.panel.orderOfTheSun.label")),...this.host.game.religion.religionUpgrades.filter(n=>!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label,n.name===this.host.game.religion.religionUpgrades.at(-1)?.name)),new A(this,this.host.engine.i18n("$religion.panel.cryptotheology.label")),...this.host.game.religion.transcendenceUpgrades.filter(n=>!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label))]))}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class eo extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.resources");super(e,s,t,{icon:M.Resources,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.resources).some(c=>c.enabled&&c.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]);const a=this.host.game.resPool.resources,n=[];let r=a[0].title;for(const c of[...a].sort((o,h)=>o.title.localeCompare(h.title,i.selected))){const o=this.setting.resources[c.name],h=new U(this,o,i,W(c.title),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[c.title])},onRefreshRequest:()=>{h.triggerButton.inactive=!o.enabled||o.trigger===0,h.triggerButton.ineffective=o.enabled&&o.trigger===-1},onSetTrigger:async()=>{const u=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.float"),this.host.engine.i18n("ui.trigger.build.prompt",[c.title,o.trigger!==-1?this.host.renderAbsolute(o.trigger,i.selected):this.host.engine.i18n("ui.trigger.inactive")]),o.trigger!==-1?this.host.renderAbsolute(o.trigger):"",this.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(u!==void 0){if(u===""||u.startsWith("-")){o.trigger=-1,o.enabled=!1;return}u==="0"&&(o.enabled=!1),o.trigger=e.host.parseAbsolute(u)??o.trigger}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[c.title])}});h.triggerButton.element.addClass(w.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&r[0]!==c.title[0]&&h.element.addClass(E.splitter),n.push(h),r=c.title}this.addChildContent(new _(this).addChildren(n))}}class to extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.space");super(e,s,t,{icon:M.Space,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(a=>a.enabled&&a.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]),this.addChildContent(new _(this).addChildren(this.host.game.space.planets.filter(a=>0<a.buildings.length).flatMap((a,n,r)=>[new A(this,this.host.engine.labelForPlanet(a.name)),...a.buildings.filter(c=>!g(this.setting.buildings[c.name])).map((c,o,h)=>this._getResetOption(this,this.setting.buildings[c.name],i,t,c.label,n<r.length-1&&o===h.length-1))])))}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class io extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.time");super(e,s,t,{icon:M.Time,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(a=>a.enabled&&a.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]),this.addChildContent(new _(this).addChildren([new A(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(a=>!g(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],i,t,a.label,a.name===this.host.game.time.chronoforgeUpgrades.at(-1)?.name)),new A(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(a=>a.name in this.setting.buildings).map(a=>this._getResetOption(this,this.setting.buildings[a.name],i,t,a.label))]))}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class so extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.upgrades");super(e,s,t,{icon:M.Workshop}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]);const a=this.host.game.workshop.upgrades.filter(o=>!g(this.setting.upgrades[o.name])),n=[];let r=a[0].label,c;for(const o of a.sort((h,u)=>h.label.localeCompare(u.label,i.selected))){const h=this.setting.upgrades[o.name],u=this._getResetOption(this,h,o.label);this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&r[0]!==o.label[0]&&(g(c)||c.element.addClass(ge.delimiter),u.element.addClass(E.splitter)),c=u,n.push(u),r=o.label}this.addChildContent(new _(this).addChildren(n))}_getResetOption(e,t,i,s=!1,a=!1){return new k(e,t,i,{delimiter:s,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[i])},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[i])},upgradeIndicator:a})}}class no extends I{_bonfireUi;_religionUi;_resourcesUi;_spaceUi;_timeUi;_upgradesUi;constructor(e,t,i){const s=e.host.engine.i18n("option.time.reset");super(e,t,new k(e,t,s,{onCheck:n=>{e.host.engine.imessage("status.auto.enable",[s])},onUnCheck:n=>{e.host.engine.imessage("status.auto.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&([this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi].some(n=>n.expando.ineffective)||!Object.values(this.setting.bonfire.buildings).some(n=>n.enabled)&&!Object.values(this.setting.religion.buildings).some(n=>n.enabled)&&!Object.values(this.setting.resources.resources).some(n=>n.enabled)&&!Object.values(this.setting.space.buildings).some(n=>n.enabled)&&!Object.values(this.setting.time.buildings).some(n=>n.enabled)&&!Object.values(this.setting.upgrades.upgrades).some(n=>n.enabled))}});const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1});this._bonfireUi=new Yr(this,this.setting.bonfire,i),this._religionUi=new Qr(this,this.setting.religion,i),this._resourcesUi=new eo(this,this.setting.resources,i),this._spaceUi=new to(this,this.setting.space,i),this._timeUi=new io(this,this.setting.time,i),this._upgradesUi=new so(this,this.setting.upgrades,i),a.addChildren([this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi]),this.addChildContent(a)}}class Xi extends _{setting;constructor(e,t,i){super(e,i),this.setting=t;const s=(n,r)=>{const c=e.host.engine.labelForCycle(n);return new k(e,r,c,{onCheck:o=>{i?.onCheckCycle?.(c,r,o)},onUnCheck:o=>{i?.onUnCheckCycle?.(c,r,o)}})},a=[s("charon",this.setting.charon),s("umbra",this.setting.umbra),s("yarn",this.setting.yarn),s("helios",this.setting.helios),s("cath",this.setting.cath),s("redmoon",this.setting.redmoon),s("dune",this.setting.dune),s("piscine",this.setting.piscine),s("terminus",this.setting.terminus),s("kairo",this.setting.kairo)];this.addChildren(a),this.element[0].addEventListener("enableAll",()=>{for(const n of a)n.check(!0)}),this.element[0].addEventListener("disableAll",()=>{for(const n of a)n.uncheck(!0)})}}class tt extends _{setting;spring;summer;autumn;winter;constructor(e,t,i){super(e,i),this.setting=t;const s=(a,n)=>new k(this,n,a,{onCheck:r=>{i?.onCheckSeason?.(a,n,r)},onUnCheck:r=>{i?.onUnCheckSeason?.(a,n,r)}});this.spring=s(this.host.engine.i18n("$calendar.season.spring"),this.setting.spring),this.summer=s(this.host.engine.i18n("$calendar.season.summer"),this.setting.summer),this.autumn=s(this.host.engine.i18n("$calendar.season.autumn"),this.setting.autumn),this.winter=s(this.host.engine.i18n("$calendar.season.winter"),this.setting.winter),this.addChildren([this.spring,this.summer,this.autumn,this.winter])}toString(){return`[${tt.name}#${this.componentId}]`}}class ao extends I{constructor(e,t,i,s,a){const n=e.host.engine.i18n("option.time.activeHeatTransfer");super(e,t,new U(e,t,i,n,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[n])},onSetTrigger:async()=>{const r=await x.prompt(e,e.host.engine.i18n("ui.trigger.activeHeatTransfer.prompt"),e.host.engine.i18n("ui.trigger.activeHeatTransfer.promptTitle",[e.host.renderPercentage(t.trigger,i.selected,!0)]),e.host.renderPercentage(t.trigger),e.host.engine.i18n("ui.trigger.activeHeatTransfer.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(t.trigger=e.host.parsePercentage(r))},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[n]),t.activeHeatTransferStatus.enabled=!1}}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled,this.settingItem.triggerButton.ineffective=a.enabled&&s.enabled&&t.enabled&&t.trigger===-1,this.expando.ineffective=a.enabled&&s.enabled&&t.enabled&&!Object.values(t.cycles).some(r=>r.enabled),t.activeHeatTransferStatus.enabled?(this.head.elementLabel.attr("data-ks-active-from","◎"),this.head.elementLabel.attr("data-ks-active-to","◎"),this.head.elementLabel.addClass(Je.active)):this.head.elementLabel.removeClass(Je.active)}}),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new Xi(this,this.setting.cycles,{onCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.enable",[r])},onUnCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.disable",[r])}})]))}}class ro extends I{_cycles;_seasons;_activeHeatTransferUI;constructor(e,t,i,s){const a=e.host.engine.i18n("option.time.skip");super(e,t,new je(e,t,i,a,{onCheck:n=>{e.host.engine.imessage("status.auto.enable",[a])},onRefreshMax(){this.maxButton.updateLabel(e.host.renderAbsolute(t.max)),this.maxButton.element[0].title=t.max<0?e.host.engine.i18n("ui.max.timeSkip.titleInfinite",[a]):t.max===0?e.host.engine.i18n("ui.max.timeSkip.titleZero",[a]):e.host.engine.i18n("ui.max.timeSkip.title",[e.host.renderAbsolute(t.max),a])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):`${e.host.renderFloat(t.trigger,i.selected)} TC`])},onSetMax:async()=>{const n=await x.prompt(e,e.host.engine.i18n("ui.max.timeSkip.prompt"),e.host.engine.i18n("ui.max.timeSkip.promptTitle",[e.host.renderAbsolute(t.max,i.selected)]),e.host.renderAbsolute(t.max),e.host.engine.i18n("ui.max.timeSkip.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){t.max=-1;return}n==="0"&&(t.enabled=!1),t.max=e.host.parseAbsolute(n)??t.max}},onSetTrigger:async()=>{const n=await x.prompt(e,e.host.engine.i18n("ui.trigger.timeSkip.prompt"),e.host.engine.i18n("ui.trigger.timeSkip.promptTitle",[e.host.renderAbsolute(t.trigger,i.selected)]),e.host.renderAbsolute(t.trigger),e.host.engine.i18n("ui.trigger.timeSkip.promptExplainer"));n===void 0||n===""||n.startsWith("-")||(t.trigger=e.host.parseAbsolute(n)??t.trigger)},onUnCheck:n=>{e.host.engine.imessage("status.auto.disable",[a])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.maxButton.inactive=!t.enabled||t.max===-1,this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.maxButton.ineffective=s.enabled&&t.enabled&&t.max===0,this._cycles.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.cycles).some(n=>n.enabled),this._seasons.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.seasons).some(n=>n.enabled)}}),this.settingItem.triggerButton.element.removeClass(w.lastHeadAction),this._cycles=new me(this,new ne(this,W(this.host.engine.i18n("ui.cycles")),{classes:[B.checked,B.setting],icon:M.Cycles}).addChildrenHead([new T(this,{classes:[E.fillSpace]})])).addChildrenContent([new Xi(this,this.setting.cycles,{onCheckCycle:n=>{this.host.engine.imessage("time.skip.cycle.enable",[n])},onUnCheckCycle:n=>{this.host.engine.imessage("time.skip.cycle.disable",[n])}})]),this._seasons=new me(this,new ne(this,W(this.host.engine.i18n("trade.seasons")),{classes:[B.checked,B.setting],icon:M.Seasons}).addChildrenHead([new T(this,{classes:[E.fillSpace]})])).addChildrenContent([new tt(this,this.setting.seasons,{onCheckSeason:n=>{this.host.engine.imessage("time.skip.season.enable",[n])},onUnCheckSeason:n=>{this.host.engine.imessage("time.skip.season.disable",[n])}})]),this._activeHeatTransferUI=new ao(this,this.setting.activeHeatTransfer,i,t,s),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([this._cycles,this._seasons,new k(this,this.setting.ignoreOverheat,this.host.engine.i18n("option.time.skip.ignoreOverheat")),this._activeHeatTransferUI]))}}class Ft extends I{_items;_accelerateTime;_timeSkipUi;_resetUi;constructor(e,t,i){console.debug(...f(`Constructing ${Ft.name}`));const s=e.host.engine.i18n("ui.timeCtrl");super(e,t,new k(e,t,s,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[s])},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&[this._timeSkipUi,this._resetUi].some(r=>r.expando.ineffective)}});const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1}),n=this.host.engine.i18n("option.accelerate");this._accelerateTime=new U(this,this.setting.accelerateTime,i,n,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[n])},onRefresh:()=>{this._accelerateTime.triggerButton.inactive=!this.setting.accelerateTime.enabled,this._accelerateTime.triggerButton.ineffective=this.setting.enabled&&this.setting.accelerateTime.enabled&&this.setting.accelerateTime.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.accelerateTime.prompt"),this.host.engine.i18n("ui.trigger.accelerateTime.promptTitle",[this.host.renderPercentage(this.setting.accelerateTime.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.accelerateTime.trigger),this.host.engine.i18n("ui.trigger.accelerateTime.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.accelerateTime.trigger=this.host.parsePercentage(r))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[n])}}),this._accelerateTime.triggerButton.element.addClass(w.lastHeadAction),this._timeSkipUi=new ro(this,this.setting.timeSkip,i,t),this._resetUi=new no(this,this.setting.reset,i),this._items=[this._accelerateTime,this._timeSkipUi,this._resetUi],a.addChildren(this._items),this.addChildContent(a)}}class Wt extends I{constructor(e,t,i){console.debug(...f(`Constructing ${Wt.name}`));const s=e.host.engine.i18n("ui.time");super(e,t,new U(e,t,i,s,{onCheck:a=>{e.host.engine.imessage("status.auto.enable",[s])},onRefresh:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const a=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(a)}},onUnCheck:a=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger<0,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.buildings).some(a=>a.enabled&&0<a.max&&a.trigger<0),this.expando.ineffective=t.enabled&&Object.values(t.buildings).some(a=>a.enabled&&(a.max===0||a.trigger<0&&t.trigger<0))}}),this.addChildrenContent([new _(this).addChildren([new A(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(a=>!g(this.setting.buildings[a.name])).map(a=>te.getBuildOption(this,this.setting.buildings[a.name],i,this.setting,a.label,s,{delimiter:a.name===this.host.game.time.chronoforgeUpgrades.at(-1)?.name,renderLabelTrigger:!1})),new A(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(a=>a.name in this.setting.buildings).map(a=>te.getBuildOption(this,this.setting.buildings[a.name],i,this.setting,a.label,s,{renderLabelTrigger:!1}))]),new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new A(this,this.host.engine.i18n("ui.additional")),new k(this,this.setting.fixCryochambers,this.host.engine.i18n("option.fix.cry"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.fix.cry")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.fix.cry")])}})])])}}const oo={buyButton:"_buyButton_10eul_1"};class Gt extends fe{setting;constructor(e,t,i,s){super(e,void 0,{onClick:async()=>{const a=await x.prompt(e,e.host.engine.i18n("blackcoin.buy.prompt"),e.host.engine.i18n("blackcoin.buy.promptTitle",[e.host.renderAbsolute(t.buy,i.selected)]),e.host.renderAbsolute(t.buy),e.host.engine.i18n("blackcoin.buy.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.buy=-1;return}t.buy=e.host.parseAbsolute(a)??t.buy}},onRefresh:()=>{this.element.prop("title",this.host.engine.i18n("blackcoin.buy.title",[this.host.renderAbsolute(this.setting.buy)])),this.element.text(this.host.engine.i18n("blackcoin.buy",[this.host.renderAbsolute(this.setting.buy)])),s?.onRefresh?.call(this)}}),this.element.addClass(oo.buyButton),this.setting=t}toString(){return`[${Gt.name}#${this.componentId}]`}}const lo={sellButton:"_sellButton_1tmvd_1"};class Zt extends fe{setting;constructor(e,t,i,s){super(e,void 0,{onClick:async()=>{const a=await x.prompt(e,e.host.engine.i18n("blackcoin.sell.prompt"),e.host.engine.i18n("blackcoin.sell.promptTitle",[e.host.renderAbsolute(t.sell,i.selected)]),e.host.renderAbsolute(t.sell),e.host.engine.i18n("blackcoin.sell.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.sell=-1;return}t.sell=e.host.parseAbsolute(a)??t.sell}},onRefresh:()=>{this.element.prop("title",this.host.engine.i18n("blackcoin.sell.title",[this.host.renderAbsolute(this.setting.sell)])),this.element.text(this.host.engine.i18n("blackcoin.sell",[this.host.renderAbsolute(this.setting.sell)])),s?.onRefresh?.()}}),this.element.addClass(lo.sellButton),this.setting=t}toString(){return`[${Zt.name}#${this.componentId}]`}}class it extends F{setting;constructor(e,t,i){super(e,"",M.Eco,{border:!1,classes:[],onClick:()=>{this.setting.limited=!this.setting.limited,this.setting.limited?i?.onLimitedCheck?.call(this):i?.onLimitedUnCheck?.call(this)},onRefresh:()=>{this.updateTitle(this.host.engine.i18n(this.setting.limited?"ui.limited.on":"ui.limited.off")),this.setting.limited&&!this.inactive?this.element.removeClass(w.inactive):this.element.addClass(w.inactive),i?.onRefresh?.call(this)}}),this.setting=t;for(const s of i?.classes??[])this.element.addClass(s)}toString(){return`[${it.name}#${this.componentId}]`}}class Kt extends k{limitedButton;constructor(e,t,i,s){super(e,t,i,s),this.limitedButton=new it(e,t,{border:!1,onLimitedCheck:s?.onLimitedCheck?()=>s.onLimitedCheck?.call(this):void 0,onLimitedUnCheck:s?.onLimitedUnCheck?()=>s.onLimitedUnCheck?.call(this):void 0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.limitedButton])}toString(){return`[${Kt.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Vt extends Kt{triggerButton;constructor(e,t,i,s,a){super(e,t,s,a),this.triggerButton=new ke(e,t,i,{border:!1,onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a?.onRefreshTrigger?()=>a.onRefreshTrigger?.call(this):void 0,renderLabel:a?.renderLabelTrigger??!0}),this.addChildHead(this.triggerButton)}toString(){return`[${Vt.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class st extends k{maxButton;constructor(e,t,i,s){super(e,t,i,s),this.maxButton=new Ee(e,t,{border:!1,onClick:async()=>{await s.onSetMax.call(this)},onRefresh:s?.onRefreshMax?()=>s.onRefreshMax?.call(this):void 0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.maxButton])}toString(){return`[${st.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class co extends I{constructor(e,t,i,s){const a=e.host.engine.i18n("option.embassies");super(e,t,new U(e,t,i,a,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[a])},onSetTrigger:async()=>{const r=await x.prompt(e,e.host.engine.i18n("ui.trigger.embassies.prompt"),e.host.engine.i18n("ui.trigger.embassies.promptTitle",[e.host.renderPercentage(t.trigger,i.selected,!0)]),e.host.renderPercentage(t.trigger),e.host.engine.i18n("ui.trigger.embassies.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(t.trigger=e.host.parsePercentage(r))},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[a])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger===-1,this.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.races).some(r=>r.enabled)}});const n=new _(this).addChildren(this.host.game.diplomacy.races.filter(r=>r.name!=="leviathans"&&!g(this.setting.races[r.name])).map(r=>this._makeEmbassySetting(this,this.setting.races[r.name],i.selected,t,r.title)));this.addChildContent(n)}_makeEmbassySetting(e,t,i,s,a){const n=async()=>{const c=await x.prompt(e,e.host.engine.i18n("ui.max.prompt.absolute"),e.host.engine.i18n("ui.max.build.prompt",[a,e.host.renderAbsolute(t.max,i)]),e.host.renderAbsolute(t.max),e.host.engine.i18n("ui.max.build.promptExplainer"));if(c!==void 0){if(c===""||c.startsWith("-")){t.max=-1;return}c==="0"&&(t.enabled=!1),t.max=e.host.parseAbsolute(c)??t.max}},r=new st(e,t,a,{onCheck:c=>{if(e.host.engine.imessage("status.sub.enable",[a]),t.max===0&&!c)return n()},onRefresh:()=>{r.maxButton.inactive=!t.enabled||t.max===-1,r.maxButton.ineffective=s.enabled&&t.enabled&&t.max===0},onRefreshMax:()=>{r.maxButton.updateLabel(e.host.renderAbsolute(t.max)),r.maxButton.element[0].title=t.max<0?e.host.engine.i18n("ui.max.embassy.titleInfinite",[a]):t.max===0?e.host.engine.i18n("ui.max.embassy.titleZero",[a]):e.host.engine.i18n("ui.max.embassy.title",[e.host.renderAbsolute(t.max),a])},onSetMax:n,onUnCheck:()=>{e.host.engine.imessage("status.sub.disable",[a])}});return r.maxButton.element.addClass(w.lastHeadAction),r}}class jt extends I{_racePanels;constructor(e,t,i){console.debug(...f(`Constructing ${jt.name}`));const s=e.host.engine.i18n("ui.trade");super(e,t,new U(e,t,i,s,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const r=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(r!==void 0){if(r===""||r.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(r)}},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.races).some(r=>r.enabled&&r.trigger<0),this.expando.ineffective=t.enabled&&Object.values(this._racePanels).some(r=>r.expando.ineffective||r.settingItem.triggerButton.ineffective)}}),this._racePanels=this.host.game.diplomacy.races.filter(r=>!g(this.setting.races[r.name])).map(r=>this._getTradeOption(this,this.setting.races[r.name],i,t,r.title,s,r.name===this.host.game.diplomacy.races.at(-2)?.name));const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren(this._racePanels);a.addChild(new k(this,this.setting.feedLeviathans,this.host.engine.i18n("option.autofeed"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.autofeed")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.autofeed")])}})),a.addChild(new I(this,this.setting.tradeBlackcoin,new U(this,this.setting.tradeBlackcoin,i,this.host.engine.i18n("option.crypto"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.crypto")])},onRefreshRequest(){this.triggerButton.inactive=!this.setting.enabled||this.setting.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.crypto.promptTitle"),this.host.engine.i18n("ui.trigger.crypto.prompt",[this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger,i.selected)]),this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger),this.host.engine.i18n("ui.trigger.crypto.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.tradeBlackcoin.trigger=this.host.parseAbsolute(r)??this.setting.tradeBlackcoin.trigger)},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.crypto")])}})).addChildrenContent([new Gt(this,this.setting.tradeBlackcoin,i),new Zt(this,this.setting.tradeBlackcoin,i)])),this.addChildContent(a);const n=new _(this,{hasDisableAll:!1,hasEnableAll:!1});n.addChild(new A(this,this.host.engine.i18n("ui.additional"))),n.addChild(new co(this,this.setting.buildEmbassies,i,t)),n.addChild(new k(this,this.setting.unlockRaces,this.host.engine.i18n("ui.upgrade.races"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("ui.upgrade.races")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("ui.upgrade.races")])}})),this.addChildContent(n)}_getTradeOption(e,t,i,s,a,n,r=!1,c=!1){const o=new Vt(e,t,i,a,{delimiter:r,onCheck:()=>{e.host.engine.imessage("status.sub.enable",[a])},onLimitedCheck:()=>{e.host.engine.imessage("trade.limited",[a])},onLimitedUnCheck:()=>{e.host.engine.imessage("trade.unlimited",[a])},onRefreshTrigger:()=>{o.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?s.trigger<0?e.host.engine.i18n("ui.trigger.section.blocked",[n]):`${e.host.renderPercentage(s.trigger,i.selected,!0)} (${e.host.engine.i18n("ui.trigger.section.inherited")})`:e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const u=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[a,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.trigger.section.inherited")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(u!==void 0){if(u===""||u.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(u)}},onUnCheck:()=>{e.host.engine.imessage("status.sub.disable",[a])},renderLabelTrigger:!1,upgradeIndicator:c}),h=new I(e,t,o,{onRefreshRequest:()=>{o.limitedButton.inactive=!t.enabled||!t.limited,o.triggerButton.inactive=!t.enabled||t.trigger===-1,o.triggerButton.ineffective=s.enabled&&t.enabled&&s.trigger===-1&&t.trigger===-1,h.expando.ineffective=s.enabled&&t.enabled&&!t.seasons.autumn.enabled&&!t.seasons.spring.enabled&&!t.seasons.summer.enabled&&!t.seasons.winter.enabled}}).addChildContent(new tt(e,t.seasons,{onCheckSeason:u=>{e.host.engine.imessage("trade.season.enable",[W(a),u])},onUnCheckSeason:u=>{e.host.engine.imessage("trade.season.disable",[W(a),u])}}));return h}}const Jt={spacer:"_spacer_90nk2_45",ui:"_ui_90nk2_50",showActivity:"_showActivity_90nk2_67"};class Xt extends I{_hunt;_festivals;_promoteKittens;_promoteLeader;_electLeader;constructor(e,t,i){console.debug(...f(`Constructing ${Xt.name}`));const s=e.host.engine.i18n("ui.distribute");super(e,t,new k(e,t,s,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[s])},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&Object.values(t.jobs).some(r=>r.enabled&&r.max===0)}});const a=new _(this).addChildren(this.host.game.village.jobs.filter(r=>!g(this.setting.jobs[r.name])).map(r=>this._getDistributeOption(this.setting.jobs[r.name],i.selected,t,r.title)));this.addChildContent(a);const n=new _(this,{hasDisableAll:!1,hasEnableAll:!1});n.addChild(new A(this,this.host.engine.i18n("ui.additional"))),this._hunt=new U(this,this.setting.hunt,i,this.host.engine.i18n("option.hunt"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.hunt")])},onRefreshRequest:()=>{this._hunt.triggerButton.inactive=!this.setting.hunt.enabled,this._hunt.triggerButton.ineffective=this.setting.enabled&&this.setting.hunt.enabled&&this.setting.hunt.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.hunt.prompt",[this.host.renderPercentage(this.setting.hunt.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.hunt.trigger),this.host.engine.i18n("ui.trigger.hunt.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.hunt.trigger=this.host.parsePercentage(r))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.hunt")])}}),this._hunt.triggerButton.element.addClass(w.lastHeadAction),n.addChild(this._hunt),this._festivals=new k(this,this.setting.holdFestivals,this.host.engine.i18n("option.festival"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.festival")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.festival")])}}),n.addChild(this._festivals),this._promoteKittens=new U(this,this.setting.promoteKittens,i,this.host.engine.i18n("option.promotekittens"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promotekittens")])},onRefresh:()=>{this._promoteKittens.triggerButton.inactive=!this.setting.promoteKittens.enabled,this._promoteKittens.triggerButton.ineffective=this.setting.enabled&&this.setting.promoteKittens.enabled&&this.setting.promoteKittens.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.promoteKittens.promptTitle"),this.host.engine.i18n("ui.trigger.promoteKittens.prompt",[this.host.renderPercentage(this.setting.promoteKittens.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.promoteKittens.trigger),this.host.engine.i18n("ui.trigger.promoteKittens.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.promoteKittens.trigger=this.host.parsePercentage(r))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promotekittens")])}}),this._promoteKittens.triggerButton.element.addClass(w.lastHeadAction),n.addChild(this._promoteKittens),this._promoteLeader=new k(this,this.setting.promoteLeader,this.host.engine.i18n("option.promote"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promote")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promote")])}}),n.addChild(this._promoteLeader);for(const r of this.setting.electLeader.job.options)r.value==="any"?r.label=this.host.engine.i18n("option.elect.job.any"):r.label=this.host.engine.i18n(`$village.job.${r.value}`);for(const r of this.setting.electLeader.trait.options)r.label=this.host.engine.i18n(`$village.trait.${r.value}`);this._electLeader=new k(this,this.setting.electLeader,this.host.engine.i18n("option.elect"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.elect")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.elect")])}}).addChildren([new Me(this,this.host.engine.i18n("option.elect.job"),this.setting.electLeader.job),new Me(this,this.host.engine.i18n("option.elect.trait"),this.setting.electLeader.trait)]),n.addChild(this._electLeader),this.addChildContent(n)}_getDistributeOption(e,t,i,s,a=!1){const n=async()=>{const c=await x.prompt(this,this.host.engine.i18n("ui.max.distribute.prompt",[s]),this.host.engine.i18n("ui.max.distribute.promptTitle",[s,this.host.renderAbsolute(e.max,t)]),this.host.renderAbsolute(e.max),this.host.engine.i18n("ui.max.distribute.promptExplainer"));if(c!==void 0){if(c===""||c.startsWith("-")){e.max=-1;return}c==="0"&&(e.enabled=!1),e.max=this.host.parseAbsolute(c)??e.max}},r=new st(this,e,s,{delimiter:a,onCheck:c=>{if(this.host.engine.imessage("status.sub.enable",[s]),e.max===0&&!c)return n()},onRefresh:()=>{r.maxButton.inactive=!e.enabled||e.max===-1,r.maxButton.ineffective=i.enabled&&e.enabled&&e.max===0},onRefreshMax:()=>{r.maxButton.updateLabel(this.host.renderAbsolute(e.max)),r.maxButton.element[0].title=e.max<0?this.host.engine.i18n("ui.max.distribute.titleInfinite",[s]):e.max===0?this.host.engine.i18n("ui.max.distribute.titleZero",[s]):this.host.engine.i18n("ui.max.distribute.title",[this.host.renderAbsolute(e.max),s])},onSetMax:n,onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[s])}});return r.maxButton.element.addClass(w.lastHeadAction),r}}class Yt extends k{limitedButton;maxButton;triggerButton;constructor(e,t,i,s,a){super(e,t,s,a),this.limitedButton=new it(e,t,{...a,classes:[Ge.headAction]}),this.maxButton=new Ee(e,t,{alignment:"right",border:!1,classes:[w.headAction],onClick:()=>a.onSetMax.call(this),onRefresh:a?.onRefreshMax?()=>a.onRefreshMax?.call(this):void 0}),this.triggerButton=new ke(e,t,i,{border:!1,classes:[w.lastHeadAction],onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a?.onRefreshTrigger?()=>a.onRefreshTrigger?.call(this):void 0,renderLabel:a?.renderLabelTrigger??!0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.limitedButton,this.maxButton,this.triggerButton])}toString(){return`[${Yt.name}#${this.componentId}]`}}class ho extends I{constructor(e,t,i){const s=e.host.engine.i18n("ui.upgrade.upgrades");super(e,t,new U(e,t,i,s,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger===-1?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(o)}},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.upgrades).some(o=>o.enabled&&o.trigger<0),this.expando.ineffective=t.enabled&&!Object.values(t.upgrades).some(o=>o.enabled)}});const a=this.host.game.workshop.upgrades.filter(o=>!g(this.setting.upgrades[o.name])),n=[];let r=a[0].label,c;for(const o of a.sort((h,u)=>h.label.localeCompare(u.label,i.selected))){const h=this.setting.upgrades[o.name],u=new U(this,h,i,o.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o.label])},onRefreshRequest:()=>{u.triggerButton.inactive=!h.enabled||h.trigger===-1,u.triggerButton.ineffective=t.enabled&&h.enabled&&t.trigger===-1&&h.trigger===-1},onRefreshTrigger:()=>{u.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[h.trigger<0?t.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[s]):`${this.host.renderPercentage(t.trigger,i.selected,!0)} (${this.host.engine.i18n("ui.trigger.section.inherited")})`:this.host.renderPercentage(h.trigger,i.selected,!0)])},onSetTrigger:async()=>{const d=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[s,h.trigger!==-1?this.host.renderPercentage(h.trigger,i.selected,!0):this.host.engine.i18n("ui.trigger.section.inherited")]),h.trigger!==-1?this.host.renderPercentage(h.trigger):"",this.host.engine.i18n("ui.trigger.section.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){h.trigger=-1;return}h.trigger=this.host.parsePercentage(d)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o.label])},renderLabelTrigger:!1});u.triggerButton.element.addClass(w.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&r[0]!==o.label[0]&&(g(c)||c.element.addClass(ge.delimiter),u.element.addClass(E.splitter)),c=u,n.push(u),r=o.label}this.addChildContent(new _(this).addChildren(n))}}class Qt extends I{_crafts;constructor(e,t,i){console.debug(...f(`Constructing ${Qt.name}`));const s=e.host.engine.i18n("ui.craft");super(e,t,new U(e,t,i,s,{onCheck:c=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const c=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(c!==void 0){if(c===""||c.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(c)}},onUnCheck:c=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.resources).some(c=>c.enabled&&c.max!==0&&c.trigger<0)}});let a=[];game.challenges.getChallenge("ironWill").active||(this.setting.resources.bloodstone.enabled=!1,this.setting.resources.tMythril.enabled=!1,a=["bloodstone","tMythril"]);const n=this.host.game.workshop.crafts.filter(c=>!a.includes(c.name)&&!g(this.setting.resources[c.name])).map(c=>[this.setting.resources[c.name],W(c.label)]);this._crafts=[];for(const[c,o]of n){const h=async()=>{const d=await x.prompt(this,this.host.engine.i18n("ui.max.craft.prompt",[o]),this.host.engine.i18n("ui.max.craft.promptTitle",[o,this.host.renderAbsolute(c.max,i.selected)]),this.host.renderAbsolute(c.max),this.host.engine.i18n("ui.max.craft.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){c.max=-1;return}d==="0"&&(c.enabled=!1),c.max=this.host.parseAbsolute(d)??c.max}},u=new Yt(this,c,i,o,{delimiter:c.resource==="kerosene"||c.resource==="blueprint",onCheck:d=>{if(this.host.engine.imessage("status.sub.enable",[o]),c.max===0&&!d)return h()},onLimitedCheck:()=>{this.host.engine.imessage("craft.limited",[o])},onLimitedUnCheck:()=>{this.host.engine.imessage("craft.unlimited",[o])},onRefreshMax:()=>{u.maxButton.updateLabel(this.host.renderAbsolute(c.max)),u.maxButton.element[0].title=c.max<0?this.host.engine.i18n("ui.max.craft.titleInfinite",[o]):c.max===0?this.host.engine.i18n("ui.max.craft.titleZero",[o]):this.host.engine.i18n("ui.max.craft.title",[this.host.renderAbsolute(c.max),o])},onRefreshRequest:()=>{u.limitedButton.inactive=!c.enabled||!c.limited,u.maxButton.inactive=!c.enabled||c.max===-1,u.maxButton.ineffective=t.enabled&&c.enabled&&c.max===0,u.triggerButton.inactive=!c.enabled||c.trigger===-1,u.triggerButton.ineffective=t.enabled&&c.enabled&&t.trigger===-1&&c.trigger===-1},onRefreshTrigger:()=>{u.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[c.trigger<0?t.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[o]):`${this.host.renderPercentage(t.trigger,i.selected,!0)} (${this.host.engine.i18n("ui.trigger.build.inherited")})`:this.host.renderPercentage(c.trigger,i.selected,!0)])},onSetMax:h,onSetTrigger:async()=>{const d=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[o,c.trigger!==-1?this.host.renderPercentage(c.trigger,i.selected,!0):this.host.engine.i18n("ui.trigger.build.inherited")]),c.trigger!==-1?this.host.renderPercentage(c.trigger):"",this.host.engine.i18n("ui.trigger.build.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){c.trigger=-1;return}c.trigger=this.host.parsePercentage(d)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o])},renderLabelTrigger:!1});this._crafts.push(u),c.resource==="ship"&&this._crafts.push(new k(this,this.setting.shipOverride,this.host.engine.i18n("option.shipOverride"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.shipOverride")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.shipOverride")])},upgradeIndicator:!0}))}const r=new _(this,{onReset:()=>{this.setting.load({resources:new Fe().resources})}}).addChildren(this._crafts);this.addChildContent(r),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new ho(this,this.setting.unlockUpgrades,i)]))}}class Ae extends D{showActivity;_engineUi;_sections;stateManagementUi;_refreshTimeout;constructor(e){console.debug(...f(`Constructing ${Ae.name}`)),super({host:e},{});const t=e.engine;this._engineUi=new Sn(this,t.settings),this.stateManagementUi=new Ht(this,t.settings.states,t.settings.locale),this._sections=[new Tt(this,t.bonfireManager.settings,t.settings.locale),new Xt(this,t.villageManager.settings,t.settings.locale),new Ut(this,t.scienceManager.settings,t.settings.locale),new Qt(this,t.workshopManager.settings,t.settings.locale),new Ot(this,t.settings.resources,t.settings.locale),new jt(this,t.tradeManager.settings,t.settings.locale),new It(this,t.religionManager.settings,t.settings.locale),new Dt(this,t.spaceManager.settings,t.settings.locale),new Wt(this,t.timeManager.settings,t.settings.locale),new Ft(this,t.timeControlManager.settings,t.settings.locale),new Bt(this,t.settings.filters),this.stateManagementUi,new At(this,t.settings,t.settings.locale)],this.parent=this,this.element=$("<div/>").addClass("kitten-scientists").addClass(Jt.ui);for(const o of[this._engineUi,...this._sections])this.addChild(o);const i=$("<ul/>");i.append(this._engineUi.element);for(const o of this._sections)i.append(o.element);this.element.append(i);const s=this._engineUi.expando;let a=!1;s.element.on("click",()=>{a=!a;for(const o of this._sections)o.toggle(a,!0)});let n=0;for(const o of this._sections)o.element[0].addEventListener("panelHidden",()=>{--n,n===0&&(a=!1),a||s.setCollapsed()}),o.element[0].addEventListener("panelShown",()=>{++n,a=!0,s.setExpanded()});this.showActivity=$("<span/>",{html:`<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor"><path d="${M.Summary}"/></svg>`,title:e.engine.i18n("summary.show")}).addClass(Jt.showActivity),this.showActivity.on("click",()=>{e.engine.displayActivitySummary()}),$("#clearLog").prepend(this.showActivity);const r=t.settings.ksColumn.enabled&&game.colorScheme!=="sleek";r?$("#rightColumn").after(`<div id="ksColumn" class="column"><span class="${Jt.spacer}"></span></div>`):$("#ksColumn").remove();const c=$(r?"#ksColumn":"#rightColumn");if(c.length===0){const o=$("#optionsPage .full-screen-position .page .page-content");o.length===0?console.warn(...f("Unable to find right column to inject UI into. Running headless.")):(o.append(this.element),this.element.attr("style","border-top:1px solid grey; padding:15px"))}else c.prepend(this.element);this.element=this.element,this._needsRefresh=!1}toString(){return`[${Ae.name}#${this.componentId}]`}destroy(){this._refreshTimeout!==void 0&&(C.window.clearTimeout(this._refreshTimeout),this._refreshTimeout=void 0),this.showActivity.remove(),this.element.remove()}requestRefresh(e=!0,t=0,i=!1){if(this._needsRefresh){this._refreshTimeout===void 0&&console.error(...f("User interface claims to have a refresh pending, but there isn't."));return}this._refreshTimeout=C.window.setTimeout(()=>{const[s,a]=X(()=>this.refresh());console.info(...f(`UI refresh took ${wn(a)}.`)),this._refreshTimeout=void 0},0),super.requestRefresh(!0,t,!1)}forceFullRefresh(){console.debug(...f("Forcing refresh on all user interface components...")),this.requestRefresh(),console.debug(...f("Refresh on all user interface components enforced."))}}const Pe=(l="")=>{if(g("2.0.0-beta.11-live"))throw Error("Build error: RELEASE_VERSION is not defined.");return`${l}2.0.0-beta.11-live`};class ae{game;i18nEngine;_userInterface;engine;_gameBeforeSaveHandle;_serverLoadHandle;constructor(e,t,i="en",s){console.info(...f(`Kitten Scientists ${Pe("v")} constructed. Checking for previous instances...`)),"kittenScientists"in C.window&&(console.warn(...f("Detected existing KS instance. Trying to unload it...")),C.window.kittenScientists?.unload()),console.info(...f("You are on the 'fixed' release channel.")),this.game=e,this.i18nEngine=t;try{this.engine=new ee(this,i),this._userInterface=new Ae(this)}catch(a){throw console.error(...f("Failed to construct core components.",a)),a}g(s)?this._userInterface.stateManagementUi.loadAutoSave():this.setSettings(s)}rebuildUi(){this._userInterface.destroy(),this._userInterface=new Ae(this),this._userInterface.forceFullRefresh()}validateGame(){St.validateGame(this.game,this.engine.scienceManager.settings),He.validateGame(this.game,this.engine.spaceManager.settings),Fe.validateGame(this.game,this.engine.workshopManager.settings)}unload(){console.warn(...f("Unloading Kitten Scientists...")),this.engine.stop(),this._userInterface.destroy(),$("#ks-styles").remove(),this._gameBeforeSaveHandle!==void 0&&(C.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle!==void 0&&(C.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0);const e=this.game.managers.indexOf(this._saveManager);-1<e&&this.game.managers.splice(e,1),C.window.kittenScientists=void 0,console.warn(...f("Kitten Scientists have been unloaded!"))}run(){this.refreshEntireUserInterface(),this.engine.settings.enabled&&this.engine.start(!0),this.engine.imessage("status.ks.init"),this.runUpdateCheck().catch(H(console)),this._gameBeforeSaveHandle!==void 0&&(C.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._gameBeforeSaveHandle=C.window.dojo.subscribe("game/beforesave",e=>{console.info(...f("Injecting Kitten Scientists engine state into save data..."));const t=this.getSettings();e.ks={state:[t]},this._userInterface.stateManagementUi.storeAutoSave(t),document.dispatchEvent(new CustomEvent("ks.reportSavegame",{detail:e}))}),this._serverLoadHandle!==void 0&&(C.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle=C.window.dojo.subscribe("server/load",e=>{const t=C.tryEngineStateFromSaveData("ks",e);if(!t){console.info(...f("The Kittens Game save data did not contain a script state. Trying to load Auto-Save settings..."));return}console.info(...f("Found! Loading settings...")),this.engine.stateLoad(t),this._userInterface.forceFullRefresh()})}async runUpdateCheck(){{console.debug(...f("No update check on 'fixed' release channel."));return}}refreshEntireUserInterface(){console.info(...f("Requesting entire user interface to be refreshed.")),this._userInterface.forceFullRefresh()}parseFloat(e){if(e===null||e==="")return null;const t=/[KMGTP]$/i.test(e),i=e.substring(0,e.length-(t?1:0));let s=e.includes("e")||t?Number.parseFloat(i):Number.parseInt(i,10);if(t){const a=e.substring(e.length-1).toUpperCase();s=s*1e3**["","K","M","G","T","P"].indexOf(a)}return(s===Number.POSITIVE_INFINITY||s<0)&&(s=-1),s}parseAbsolute(e){const t=this.parseFloat(e);return t!==null?Math.round(t):null}parsePercentage(e){const t=e.trim().replace(/%$/,"");return Math.max(0,Math.min(1,Number.parseFloat(t)/100))}renderAbsolute(e,t="invariant"){return e<0||e===Number.POSITIVE_INFINITY?"∞":t!=="invariant"&&Math.floor(Math.log10(e))<9?new Intl.NumberFormat(t,{maximumFractionDigits:0,style:"decimal"}).format(e):this.game.getDisplayValueExt(e,!1,!1)}renderPercentage(e,t="invariant",i){return e<0||e===Number.POSITIVE_INFINITY?"∞":t!=="invariant"?new Intl.NumberFormat(t,{style:"percent"}).format(e):`${this.game.getDisplayValueExt(e*100,!1,!1)}${i?"%":""}`}renderFloat(e,t="invariant"){return e<0||e===Number.POSITIVE_INFINITY?"∞":t!=="invariant"?new Intl.NumberFormat(t,{style:"decimal"}).format(e):this.game.getDisplayValueExt(e,!1,!1)}static encodeSettings(e,t=!0){const i=JSON.stringify(e);return t?C.window.LZString.compressToBase64(i):i}static decodeSettings(e){try{const s=JSON.parse(e);return ae.unknownAsEngineStateOrThrow(s)}catch{}if(e.match(/\r?\n/))throw new $e("Multi-line non-JSON input can't be decoded.");const t=C.window.LZString.decompressFromBase64(e),i=JSON.parse(t);return ae.unknownAsEngineStateOrThrow(i)}getSettings(){return this.engine.stateSerialize()}getSettingsAsJson(){return JSON.stringify(this.getSettings())}setSettings(e){console.info(...f("Loading engine state..."));const t=this.engine.settings.ksColumn.enabled!==e.engine.ksColumn.enabled;this.engine.stateLoad(e),t&&this.rebuildUi(),this._userInterface.refresh(!0)}importSettingsFromString(e){const t=ae.decodeSettings(e);this.setSettings(t)}async copySettings(e=this.getSettings(),t=!0){const i=ae.encodeSettings(e,t);await C.window.navigator.clipboard.writeText(i)}static unknownAsEngineStateOrThrow(e){const t=e.v;if(!g(t)&&typeof t=="string"&&t.startsWith("2"))return e;throw new Error("Not a valid engine state.")}installSaveManager(){console.info(...f("Installing save game manager...")),this.game.managers.push(this._saveManager)}_saveManager={load:e=>{console.info(...f("Looking for Kitten Scientists engine state in save data..."));const t=C.tryEngineStateFromSaveData("ks",e);if(!t){console.info(...f("The Kittens Game save data did not contain a script state."));return}console.info(...f("Found Kitten Scientists engine state in save data.")),this.engine.stateLoad(t),this.refreshEntireUserInterface()},resetState:()=>null,save:e=>{}}}const Yi=async()=>{const l=await new C().waitForGame(ae,"ks");C.window.kittenScientists=l,l.validateGame(),l.run()};(typeof GM>"u"||GM?.info?.scriptHandler==="Tampermonkey")&&Yi().catch(H(console)),ue.main=Yi,Object.defineProperty(ue,Symbol.toStringTag,{value:"Module"})}));
|
|
21
|
+
`),t=document.createElement("a"),i=new Blob([e],{type:"application/x-ndjson"}),s=URL.createObjectURL(i);t.setAttribute("href",s),t.setAttribute("download",`ks-local-states-${Date.now()}.ndjson`),t.click()}async loadGame(e){this._destructiveActionPrevented()||await new Xr(this.host.game).loadRaw(e)}loadState(e){this._destructiveActionPrevented()||(this.host.engine.stateLoad(e,!0),this.host.refreshEntireUserInterface())}loadAutoSave(){if(this.host.engine.isLoaded){console.info(...f("Not attempting to load Auto-Save, because a state is already loaded."));return}const e=this.states.find(t=>t.unwrap().label==="Auto-Save");if(g(e)){console.info(...f("No Auto-Save settings found."));return}console.info(...f("Loading Auto-Save...")),this.host.engine.stateLoad(e.unwrap().state,!1)}updateGame(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({game:t,label:i,timestamp:new Date().toISOString()}),this._storeGames(),this.requestRefresh()}updateState(e,t){if(this._destructiveActionPrevented())return;const i=e.unwrap().label;e.replace({label:i,state:t,timestamp:new Date().toISOString()}),this._storeStates(),this.requestRefresh()}deleteGame(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.games.indexOf(e);i<0||(this.games.splice(i,1),this._storeGames(),this.requestRefresh())}deleteState(e,t=!1){if(!t&&this._destructiveActionPrevented())return;const i=this.states.indexOf(e);i<0||(this.states.splice(i,1),this._storeStates(),this.requestRefresh())}_destructiveActionPrevented(){return!this.setting.noConfirm.enabled&&!C.window.confirm(this.host.engine.i18n("state.confirmDestruction"))}}class _e extends me{setting;constructor(e,t,i,s){super(e,new ne(e,t,{classes:[B.checked,B.setting],icon:s?.icon}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),s),this.setting=i}}class Yr extends _e{_buildings;constructor(e,t,i){const s=e.host.engine.i18n("ui.build");super(e,s,t,{icon:M.Bonfire,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(n=>n.enabled&&n.trigger===-1)}}),this._buildings=[];for(const n of this.host.game.bld.buildingGroups){this._buildings.push(new A(this,n.title));for(const r of n.buildings){if(r==="unicornPasture"||g(this.setting.buildings[r]))continue;const c=this.host.game.bld.getBuildingExt(r).meta;if(g(c.stages))g(c.label)||this._buildings.push(this._getResetOption(this,this.setting.buildings[r],i,t,c.label));else{const o=Object.values(this.setting.buildings).find(h=>h.baseBuilding===r)?.building;this._buildings.push(this._getResetOption(this,this.setting.buildings[r],i,t,c.stages[0].label),this._getResetOption(this,this.setting.buildings[o],i,t,c.stages[1].label,!1,!0))}}n!==this.host.game.bld.buildingGroups[this.host.game.bld.buildingGroups.length-1]&&this._buildings.at(-1)?.element.addClass(ge.delimiter)}const a=new _(this);a.addChildren(this._buildings),this.addChildContent(a)}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class Qr extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.faith");super(e,s,t,{icon:M.Religion,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(n=>n.enabled&&n.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]);const a=[...Ne];this.addChildContent(new _(this).addChildren([new A(this,this.host.engine.i18n("$religion.panel.ziggurat.label")),this._getResetOption(this,this.setting.buildings.unicornPasture,i,t,this.host.engine.i18n("$buildings.unicornPasture.label")),...this.host.game.religion.zigguratUpgrades.filter(n=>a.includes(n.name)&&!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label)),new K(this),...this.host.game.religion.zigguratUpgrades.filter(n=>!a.includes(n.name)&&!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label)),new K(this),new A(this,this.host.engine.i18n("$religion.panel.orderOfTheSun.label")),...this.host.game.religion.religionUpgrades.filter(n=>!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label,n.name===this.host.game.religion.religionUpgrades.at(-1)?.name)),new A(this,this.host.engine.i18n("$religion.panel.cryptotheology.label")),...this.host.game.religion.transcendenceUpgrades.filter(n=>!g(this.setting.buildings[n.name])).map(n=>this._getResetOption(this,this.setting.buildings[n.name],i,t,n.label))]))}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class eo extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.resources");super(e,s,t,{icon:M.Resources,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.resources).some(c=>c.enabled&&c.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]);const a=this.host.game.resPool.resources,n=[];let r=a[0].title;for(const c of[...a].sort((o,h)=>o.title.localeCompare(h.title,i.selected))){const o=this.setting.resources[c.name],h=new U(this,o,i,W(c.title),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[c.title])},onRefreshRequest:()=>{h.triggerButton.inactive=!o.enabled||o.trigger===0,h.triggerButton.ineffective=o.enabled&&o.trigger===-1},onSetTrigger:async()=>{const u=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.float"),this.host.engine.i18n("ui.trigger.build.prompt",[c.title,o.trigger!==-1?this.host.renderAbsolute(o.trigger,i.selected):this.host.engine.i18n("ui.trigger.inactive")]),o.trigger!==-1?this.host.renderAbsolute(o.trigger):"",this.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(u!==void 0){if(u===""||u.startsWith("-")){o.trigger=-1,o.enabled=!1;return}u==="0"&&(o.enabled=!1),o.trigger=e.host.parseAbsolute(u)??o.trigger}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[c.title])}});h.triggerButton.element.addClass(w.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&r[0]!==c.title[0]&&h.element.addClass(E.splitter),n.push(h),r=c.title}this.addChildContent(new _(this).addChildren(n))}}class to extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.space");super(e,s,t,{icon:M.Space,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(a=>a.enabled&&a.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]),this.addChildContent(new _(this).addChildren(this.host.game.space.planets.filter(a=>0<a.buildings.length).flatMap((a,n,r)=>[new A(this,this.host.engine.labelForPlanet(a.name)),...a.buildings.filter(c=>!g(this.setting.buildings[c.name])).map((c,o,h)=>this._getResetOption(this,this.setting.buildings[c.name],i,t,c.label,n<r.length-1&&o===h.length-1))])))}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class io extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.time");super(e,s,t,{icon:M.Time,onRefreshRequest:()=>{this.expando.ineffective=Object.values(t.buildings).some(a=>a.enabled&&a.trigger===-1)}}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]),this.addChildContent(new _(this).addChildren([new A(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(a=>!g(this.setting.buildings[a.name])).map(a=>this._getResetOption(this,this.setting.buildings[a.name],i,t,a.label,a.name===this.host.game.time.chronoforgeUpgrades.at(-1)?.name)),new A(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(a=>a.name in this.setting.buildings).map(a=>this._getResetOption(this,this.setting.buildings[a.name],i,t,a.label))]))}_getResetOption(e,t,i,s,a,n=!1,r=!1){const c=new U(e,t,i,a,{delimiter:n,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[a])},onRefreshRequest:()=>{c.triggerButton.inactive=!t.enabled||t.trigger===0,c.triggerButton.ineffective=t.enabled&&t.trigger===-1},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.absolute"),e.host.engine.i18n("ui.trigger.build.prompt",[a,t.trigger!==-1?e.host.renderAbsolute(t.trigger,i.selected):e.host.engine.i18n("ui.trigger.inactive")]),t.trigger!==-1?e.host.renderAbsolute(t.trigger):"",e.host.engine.i18n("ui.trigger.reset.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1,t.enabled=!1;return}o==="0"&&(t.enabled=!1),t.trigger=Number(o)}},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[a])},upgradeIndicator:r});return c.triggerButton.element.addClass(w.lastHeadAction),c}}class so extends _e{constructor(e,t,i){const s=e.host.engine.i18n("ui.upgrades");super(e,s,t,{icon:M.Workshop}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]})]);const a=this.host.game.workshop.upgrades.filter(o=>!g(this.setting.upgrades[o.name])),n=[];let r=a[0].label,c;for(const o of a.sort((h,u)=>h.label.localeCompare(u.label,i.selected))){const h=this.setting.upgrades[o.name],u=this._getResetOption(this,h,o.label);this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&r[0]!==o.label[0]&&(g(c)||c.element.addClass(ge.delimiter),u.element.addClass(E.splitter)),c=u,n.push(u),r=o.label}this.addChildContent(new _(this).addChildren(n))}_getResetOption(e,t,i,s=!1,a=!1){return new k(e,t,i,{delimiter:s,onCheck:()=>{e.host.engine.imessage("status.reset.check.enable",[i])},onUnCheck:()=>{e.host.engine.imessage("status.reset.check.disable",[i])},upgradeIndicator:a})}}class no extends I{_bonfireUi;_religionUi;_resourcesUi;_spaceUi;_timeUi;_upgradesUi;constructor(e,t,i){const s=e.host.engine.i18n("option.time.reset");super(e,t,new k(e,t,s,{onCheck:n=>{e.host.engine.imessage("status.auto.enable",[s])},onUnCheck:n=>{e.host.engine.imessage("status.auto.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&([this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi].some(n=>n.expando.ineffective)||!Object.values(this.setting.bonfire.buildings).some(n=>n.enabled)&&!Object.values(this.setting.religion.buildings).some(n=>n.enabled)&&!Object.values(this.setting.resources.resources).some(n=>n.enabled)&&!Object.values(this.setting.space.buildings).some(n=>n.enabled)&&!Object.values(this.setting.time.buildings).some(n=>n.enabled)&&!Object.values(this.setting.upgrades.upgrades).some(n=>n.enabled))}});const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1});this._bonfireUi=new Yr(this,this.setting.bonfire,i),this._religionUi=new Qr(this,this.setting.religion,i),this._resourcesUi=new eo(this,this.setting.resources,i),this._spaceUi=new to(this,this.setting.space,i),this._timeUi=new io(this,this.setting.time,i),this._upgradesUi=new so(this,this.setting.upgrades,i),a.addChildren([this._bonfireUi,this._religionUi,this._resourcesUi,this._spaceUi,this._timeUi,this._upgradesUi]),this.addChildContent(a)}}class Xi extends _{setting;constructor(e,t,i){super(e,i),this.setting=t;const s=(n,r)=>{const c=e.host.engine.labelForCycle(n);return new k(e,r,c,{onCheck:o=>{i?.onCheckCycle?.(c,r,o)},onUnCheck:o=>{i?.onUnCheckCycle?.(c,r,o)}})},a=[s("charon",this.setting.charon),s("umbra",this.setting.umbra),s("yarn",this.setting.yarn),s("helios",this.setting.helios),s("cath",this.setting.cath),s("redmoon",this.setting.redmoon),s("dune",this.setting.dune),s("piscine",this.setting.piscine),s("terminus",this.setting.terminus),s("kairo",this.setting.kairo)];this.addChildren(a),this.element[0].addEventListener("enableAll",()=>{for(const n of a)n.check(!0)}),this.element[0].addEventListener("disableAll",()=>{for(const n of a)n.uncheck(!0)})}}class tt extends _{setting;spring;summer;autumn;winter;constructor(e,t,i){super(e,i),this.setting=t;const s=(a,n)=>new k(this,n,a,{onCheck:r=>{i?.onCheckSeason?.(a,n,r)},onUnCheck:r=>{i?.onUnCheckSeason?.(a,n,r)}});this.spring=s(this.host.engine.i18n("$calendar.season.spring"),this.setting.spring),this.summer=s(this.host.engine.i18n("$calendar.season.summer"),this.setting.summer),this.autumn=s(this.host.engine.i18n("$calendar.season.autumn"),this.setting.autumn),this.winter=s(this.host.engine.i18n("$calendar.season.winter"),this.setting.winter),this.addChildren([this.spring,this.summer,this.autumn,this.winter])}toString(){return`[${tt.name}#${this.componentId}]`}}class ao extends I{constructor(e,t,i,s,a){const n=e.host.engine.i18n("option.time.activeHeatTransfer");super(e,t,new U(e,t,i,n,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[n])},onSetTrigger:async()=>{const r=await x.prompt(e,e.host.engine.i18n("ui.trigger.activeHeatTransfer.prompt"),e.host.engine.i18n("ui.trigger.activeHeatTransfer.promptTitle",[e.host.renderPercentage(t.trigger,i.selected,!0)]),e.host.renderPercentage(t.trigger),e.host.engine.i18n("ui.trigger.activeHeatTransfer.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(t.trigger=e.host.parsePercentage(r))},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[n]),t.activeHeatTransferStatus.enabled=!1}}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled,this.settingItem.triggerButton.ineffective=a.enabled&&s.enabled&&t.enabled&&t.trigger===-1,this.expando.ineffective=a.enabled&&s.enabled&&t.enabled&&!Object.values(t.cycles).some(r=>r.enabled),t.activeHeatTransferStatus.enabled?(this.head.elementLabel.attr("data-ks-active-from","◎"),this.head.elementLabel.attr("data-ks-active-to","◎"),this.head.elementLabel.addClass(Je.active)):this.head.elementLabel.removeClass(Je.active)}}),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new Xi(this,this.setting.cycles,{onCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.enable",[r])},onUnCheckCycle:r=>{this.host.engine.imessage("time.heatTransfer.cycle.disable",[r])}})]))}}class ro extends I{_cycles;_seasons;_activeHeatTransferUI;constructor(e,t,i,s){const a=e.host.engine.i18n("option.time.skip");super(e,t,new je(e,t,i,a,{onCheck:n=>{e.host.engine.imessage("status.auto.enable",[a])},onRefreshMax(){this.maxButton.updateLabel(e.host.renderAbsolute(t.max)),this.maxButton.element[0].title=t.max<0?e.host.engine.i18n("ui.max.timeSkip.titleInfinite",[a]):t.max===0?e.host.engine.i18n("ui.max.timeSkip.titleZero",[a]):e.host.engine.i18n("ui.max.timeSkip.title",[e.host.renderAbsolute(t.max),a])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):`${e.host.renderFloat(t.trigger,i.selected)} TC`])},onSetMax:async()=>{const n=await x.prompt(e,e.host.engine.i18n("ui.max.timeSkip.prompt"),e.host.engine.i18n("ui.max.timeSkip.promptTitle",[e.host.renderAbsolute(t.max,i.selected)]),e.host.renderAbsolute(t.max),e.host.engine.i18n("ui.max.timeSkip.promptExplainer"));if(n!==void 0){if(n===""||n.startsWith("-")){t.max=-1;return}n==="0"&&(t.enabled=!1),t.max=e.host.parseAbsolute(n)??t.max}},onSetTrigger:async()=>{const n=await x.prompt(e,e.host.engine.i18n("ui.trigger.timeSkip.prompt"),e.host.engine.i18n("ui.trigger.timeSkip.promptTitle",[e.host.renderAbsolute(t.trigger,i.selected)]),e.host.renderAbsolute(t.trigger),e.host.engine.i18n("ui.trigger.timeSkip.promptExplainer"));n===void 0||n===""||n.startsWith("-")||(t.trigger=e.host.parseAbsolute(n)??t.trigger)},onUnCheck:n=>{e.host.engine.imessage("status.auto.disable",[a])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.maxButton.inactive=!t.enabled||t.max===-1,this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.maxButton.ineffective=s.enabled&&t.enabled&&t.max===0,this._cycles.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.cycles).some(n=>n.enabled),this._seasons.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.seasons).some(n=>n.enabled)}}),this.settingItem.triggerButton.element.removeClass(w.lastHeadAction),this._cycles=new me(this,new ne(this,W(this.host.engine.i18n("ui.cycles")),{classes:[B.checked,B.setting],icon:M.Cycles}).addChildrenHead([new T(this,{classes:[E.fillSpace]})])).addChildrenContent([new Xi(this,this.setting.cycles,{onCheckCycle:n=>{this.host.engine.imessage("time.skip.cycle.enable",[n])},onUnCheckCycle:n=>{this.host.engine.imessage("time.skip.cycle.disable",[n])}})]),this._seasons=new me(this,new ne(this,W(this.host.engine.i18n("trade.seasons")),{classes:[B.checked,B.setting],icon:M.Seasons}).addChildrenHead([new T(this,{classes:[E.fillSpace]})])).addChildrenContent([new tt(this,this.setting.seasons,{onCheckSeason:n=>{this.host.engine.imessage("time.skip.season.enable",[n])},onUnCheckSeason:n=>{this.host.engine.imessage("time.skip.season.disable",[n])}})]),this._activeHeatTransferUI=new ao(this,this.setting.activeHeatTransfer,i,t,s),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([this._cycles,this._seasons,new k(this,this.setting.ignoreOverheat,this.host.engine.i18n("option.time.skip.ignoreOverheat")),this._activeHeatTransferUI]))}}class Ft extends I{_items;_accelerateTime;_timeSkipUi;_resetUi;constructor(e,t,i){console.debug(...f(`Constructing ${Ft.name}`));const s=e.host.engine.i18n("ui.timeCtrl");super(e,t,new k(e,t,s,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[s])},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&[this._timeSkipUi,this._resetUi].some(r=>r.expando.ineffective)}});const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1}),n=this.host.engine.i18n("option.accelerate");this._accelerateTime=new U(this,this.setting.accelerateTime,i,n,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[n])},onRefresh:()=>{this._accelerateTime.triggerButton.inactive=!this.setting.accelerateTime.enabled,this._accelerateTime.triggerButton.ineffective=this.setting.enabled&&this.setting.accelerateTime.enabled&&this.setting.accelerateTime.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.accelerateTime.prompt"),this.host.engine.i18n("ui.trigger.accelerateTime.promptTitle",[this.host.renderPercentage(this.setting.accelerateTime.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.accelerateTime.trigger),this.host.engine.i18n("ui.trigger.accelerateTime.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.accelerateTime.trigger=this.host.parsePercentage(r))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[n])}}),this._accelerateTime.triggerButton.element.addClass(w.lastHeadAction),this._timeSkipUi=new ro(this,this.setting.timeSkip,i,t),this._resetUi=new no(this,this.setting.reset,i),this._items=[this._accelerateTime,this._timeSkipUi,this._resetUi],a.addChildren(this._items),this.addChildContent(a)}}class Wt extends I{constructor(e,t,i){console.debug(...f(`Constructing ${Wt.name}`));const s=e.host.engine.i18n("ui.time");super(e,t,new U(e,t,i,s,{onCheck:a=>{e.host.engine.imessage("status.auto.enable",[s])},onRefresh:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const a=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(a)}},onUnCheck:a=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger<0,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.buildings).some(a=>a.enabled&&0<a.max&&a.trigger<0),this.expando.ineffective=t.enabled&&Object.values(t.buildings).some(a=>a.enabled&&(a.max===0||a.trigger<0&&t.trigger<0))}}),this.addChildrenContent([new _(this).addChildren([new A(this,this.host.engine.i18n("$workshop.chronoforge.label")),...this.host.game.time.chronoforgeUpgrades.filter(a=>!g(this.setting.buildings[a.name])).map(a=>te.getBuildOption(this,this.setting.buildings[a.name],i,this.setting,a.label,s,{delimiter:a.name===this.host.game.time.chronoforgeUpgrades.at(-1)?.name,renderLabelTrigger:!1})),new A(this,this.host.engine.i18n("$science.voidSpace.label")),...this.host.game.time.voidspaceUpgrades.filter(a=>a.name in this.setting.buildings).map(a=>te.getBuildOption(this,this.setting.buildings[a.name],i,this.setting,a.label,s,{renderLabelTrigger:!1}))]),new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new A(this,this.host.engine.i18n("ui.additional")),new k(this,this.setting.fixCryochambers,this.host.engine.i18n("option.fix.cry"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.fix.cry")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.fix.cry")])}})])])}}const oo={buyButton:"_buyButton_10eul_1"};class Gt extends fe{setting;constructor(e,t,i,s){super(e,void 0,{onClick:async()=>{const a=await x.prompt(e,e.host.engine.i18n("blackcoin.buy.prompt"),e.host.engine.i18n("blackcoin.buy.promptTitle",[e.host.renderAbsolute(t.buy,i.selected)]),e.host.renderAbsolute(t.buy),e.host.engine.i18n("blackcoin.buy.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.buy=-1;return}t.buy=e.host.parseAbsolute(a)??t.buy}},onRefresh:()=>{this.element.prop("title",this.host.engine.i18n("blackcoin.buy.title",[this.host.renderAbsolute(this.setting.buy)])),this.element.text(this.host.engine.i18n("blackcoin.buy",[this.host.renderAbsolute(this.setting.buy)])),s?.onRefresh?.call(this)}}),this.element.addClass(oo.buyButton),this.setting=t}toString(){return`[${Gt.name}#${this.componentId}]`}}const lo={sellButton:"_sellButton_1tmvd_1"};class Zt extends fe{setting;constructor(e,t,i,s){super(e,void 0,{onClick:async()=>{const a=await x.prompt(e,e.host.engine.i18n("blackcoin.sell.prompt"),e.host.engine.i18n("blackcoin.sell.promptTitle",[e.host.renderAbsolute(t.sell,i.selected)]),e.host.renderAbsolute(t.sell),e.host.engine.i18n("blackcoin.sell.promptExplainer"));if(a!==void 0){if(a===""||a.startsWith("-")){t.sell=-1;return}t.sell=e.host.parseAbsolute(a)??t.sell}},onRefresh:()=>{this.element.prop("title",this.host.engine.i18n("blackcoin.sell.title",[this.host.renderAbsolute(this.setting.sell)])),this.element.text(this.host.engine.i18n("blackcoin.sell",[this.host.renderAbsolute(this.setting.sell)])),s?.onRefresh?.()}}),this.element.addClass(lo.sellButton),this.setting=t}toString(){return`[${Zt.name}#${this.componentId}]`}}class it extends F{setting;constructor(e,t,i){super(e,"",M.Eco,{border:!1,classes:[],onClick:()=>{this.setting.limited=!this.setting.limited,this.setting.limited?i?.onLimitedCheck?.call(this):i?.onLimitedUnCheck?.call(this)},onRefresh:()=>{this.updateTitle(this.host.engine.i18n(this.setting.limited?"ui.limited.on":"ui.limited.off")),this.setting.limited&&!this.inactive?this.element.removeClass(w.inactive):this.element.addClass(w.inactive),i?.onRefresh?.call(this)}}),this.setting=t;for(const s of i?.classes??[])this.element.addClass(s)}toString(){return`[${it.name}#${this.componentId}]`}}class Kt extends k{limitedButton;constructor(e,t,i,s){super(e,t,i,s),this.limitedButton=new it(e,t,{border:!1,onLimitedCheck:s?.onLimitedCheck?()=>s.onLimitedCheck?.call(this):void 0,onLimitedUnCheck:s?.onLimitedUnCheck?()=>s.onLimitedUnCheck?.call(this):void 0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.limitedButton])}toString(){return`[${Kt.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class Vt extends Kt{triggerButton;constructor(e,t,i,s,a){super(e,t,s,a),this.triggerButton=new ke(e,t,i,{border:!1,onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a?.onRefreshTrigger?()=>a.onRefreshTrigger?.call(this):void 0,renderLabel:a?.renderLabelTrigger??!0}),this.addChildHead(this.triggerButton)}toString(){return`[${Vt.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class st extends k{maxButton;constructor(e,t,i,s){super(e,t,i,s),this.maxButton=new Ee(e,t,{border:!1,onClick:async()=>{await s.onSetMax.call(this)},onRefresh:s?.onRefreshMax?()=>s.onRefreshMax?.call(this):void 0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.maxButton])}toString(){return`[${st.name}#${this.componentId}]: '${this.elementLabel.text()}'`}}class co extends I{constructor(e,t,i,s){const a=e.host.engine.i18n("option.embassies");super(e,t,new U(e,t,i,a,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[a])},onSetTrigger:async()=>{const r=await x.prompt(e,e.host.engine.i18n("ui.trigger.embassies.prompt"),e.host.engine.i18n("ui.trigger.embassies.promptTitle",[e.host.renderPercentage(t.trigger,i.selected,!0)]),e.host.renderPercentage(t.trigger),e.host.engine.i18n("ui.trigger.embassies.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(t.trigger=e.host.parsePercentage(r))},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[a])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger===-1,this.expando.ineffective=s.enabled&&t.enabled&&!Object.values(t.races).some(r=>r.enabled)}});const n=new _(this).addChildren(this.host.game.diplomacy.races.filter(r=>r.name!=="leviathans"&&!g(this.setting.races[r.name])).map(r=>this._makeEmbassySetting(this,this.setting.races[r.name],i.selected,t,r.title)));this.addChildContent(n)}_makeEmbassySetting(e,t,i,s,a){const n=async()=>{const c=await x.prompt(e,e.host.engine.i18n("ui.max.prompt.absolute"),e.host.engine.i18n("ui.max.build.prompt",[a,e.host.renderAbsolute(t.max,i)]),e.host.renderAbsolute(t.max),e.host.engine.i18n("ui.max.build.promptExplainer"));if(c!==void 0){if(c===""||c.startsWith("-")){t.max=-1;return}c==="0"&&(t.enabled=!1),t.max=e.host.parseAbsolute(c)??t.max}},r=new st(e,t,a,{onCheck:c=>{if(e.host.engine.imessage("status.sub.enable",[a]),t.max===0&&!c)return n()},onRefresh:()=>{r.maxButton.inactive=!t.enabled||t.max===-1,r.maxButton.ineffective=s.enabled&&t.enabled&&t.max===0},onRefreshMax:()=>{r.maxButton.updateLabel(e.host.renderAbsolute(t.max)),r.maxButton.element[0].title=t.max<0?e.host.engine.i18n("ui.max.embassy.titleInfinite",[a]):t.max===0?e.host.engine.i18n("ui.max.embassy.titleZero",[a]):e.host.engine.i18n("ui.max.embassy.title",[e.host.renderAbsolute(t.max),a])},onSetMax:n,onUnCheck:()=>{e.host.engine.imessage("status.sub.disable",[a])}});return r.maxButton.element.addClass(w.lastHeadAction),r}}class jt extends I{_racePanels;constructor(e,t,i){console.debug(...f(`Constructing ${jt.name}`));const s=e.host.engine.i18n("ui.trade");super(e,t,new U(e,t,i,s,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const r=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(r!==void 0){if(r===""||r.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(r)}},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.races).some(r=>r.enabled&&r.trigger<0),this.expando.ineffective=t.enabled&&Object.values(this._racePanels).some(r=>r.expando.ineffective||r.settingItem.triggerButton.ineffective)}}),this._racePanels=this.host.game.diplomacy.races.filter(r=>!g(this.setting.races[r.name])).map(r=>this._getTradeOption(this,this.setting.races[r.name],i,t,r.title,s,r.name===this.host.game.diplomacy.races.at(-2)?.name));const a=new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren(this._racePanels);a.addChild(new k(this,this.setting.feedLeviathans,this.host.engine.i18n("option.autofeed"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.autofeed")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.autofeed")])}})),a.addChild(new I(this,this.setting.tradeBlackcoin,new U(this,this.setting.tradeBlackcoin,i,this.host.engine.i18n("option.crypto"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.crypto")])},onRefreshRequest(){this.triggerButton.inactive=!this.setting.enabled||this.setting.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.crypto.promptTitle"),this.host.engine.i18n("ui.trigger.crypto.prompt",[this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger,i.selected)]),this.host.renderAbsolute(this.setting.tradeBlackcoin.trigger),this.host.engine.i18n("ui.trigger.crypto.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.tradeBlackcoin.trigger=this.host.parseAbsolute(r)??this.setting.tradeBlackcoin.trigger)},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.crypto")])}})).addChildrenContent([new Gt(this,this.setting.tradeBlackcoin,i),new Zt(this,this.setting.tradeBlackcoin,i)])),this.addChildContent(a);const n=new _(this,{hasDisableAll:!1,hasEnableAll:!1});n.addChild(new A(this,this.host.engine.i18n("ui.additional"))),n.addChild(new co(this,this.setting.buildEmbassies,i,t)),n.addChild(new k(this,this.setting.unlockRaces,this.host.engine.i18n("ui.upgrade.races"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("ui.upgrade.races")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("ui.upgrade.races")])}})),this.addChildContent(n)}_getTradeOption(e,t,i,s,a,n,r=!1,c=!1){const o=new Vt(e,t,i,a,{delimiter:r,onCheck:()=>{e.host.engine.imessage("status.sub.enable",[a])},onLimitedCheck:()=>{e.host.engine.imessage("trade.limited",[a])},onLimitedUnCheck:()=>{e.host.engine.imessage("trade.unlimited",[a])},onRefreshTrigger:()=>{o.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger<0?s.trigger<0?e.host.engine.i18n("ui.trigger.section.blocked",[n]):`${e.host.renderPercentage(s.trigger,i.selected,!0)} (${e.host.engine.i18n("ui.trigger.section.inherited")})`:e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const u=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[a,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.trigger.section.inherited")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(u!==void 0){if(u===""||u.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(u)}},onUnCheck:()=>{e.host.engine.imessage("status.sub.disable",[a])},renderLabelTrigger:!1,upgradeIndicator:c}),h=new I(e,t,o,{onRefreshRequest:()=>{o.limitedButton.inactive=!t.enabled||!t.limited,o.triggerButton.inactive=!t.enabled||t.trigger===-1,o.triggerButton.ineffective=s.enabled&&t.enabled&&s.trigger===-1&&t.trigger===-1,h.expando.ineffective=s.enabled&&t.enabled&&!t.seasons.autumn.enabled&&!t.seasons.spring.enabled&&!t.seasons.summer.enabled&&!t.seasons.winter.enabled}}).addChildContent(new tt(e,t.seasons,{onCheckSeason:u=>{e.host.engine.imessage("trade.season.enable",[W(a),u])},onUnCheckSeason:u=>{e.host.engine.imessage("trade.season.disable",[W(a),u])}}));return h}}const Jt={spacer:"_spacer_90nk2_45",ui:"_ui_90nk2_50",showActivity:"_showActivity_90nk2_67"};class Xt extends I{_hunt;_festivals;_promoteKittens;_promoteLeader;_electLeader;constructor(e,t,i){console.debug(...f(`Constructing ${Xt.name}`));const s=e.host.engine.i18n("ui.distribute");super(e,t,new k(e,t,s,{onCheck:r=>{e.host.engine.imessage("status.auto.enable",[s])},onUnCheck:r=>{e.host.engine.imessage("status.auto.disable",[s])}}).addChildrenHead([new T(e,{classes:[E.fillSpace]})]),{onRefreshRequest:()=>{this.expando.ineffective=t.enabled&&Object.values(t.jobs).some(r=>r.enabled&&r.max===0)}});const a=new _(this).addChildren(this.host.game.village.jobs.filter(r=>!g(this.setting.jobs[r.name])).map(r=>this._getDistributeOption(this.setting.jobs[r.name],i.selected,t,r.title)));this.addChildContent(a);const n=new _(this,{hasDisableAll:!1,hasEnableAll:!1});n.addChild(new A(this,this.host.engine.i18n("ui.additional"))),this._hunt=new U(this,this.setting.hunt,i,this.host.engine.i18n("option.hunt"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.hunt")])},onRefreshRequest:()=>{this._hunt.triggerButton.inactive=!this.setting.hunt.enabled,this._hunt.triggerButton.ineffective=this.setting.enabled&&this.setting.hunt.enabled&&this.setting.hunt.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.hunt.prompt",[this.host.renderPercentage(this.setting.hunt.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.hunt.trigger),this.host.engine.i18n("ui.trigger.hunt.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.hunt.trigger=this.host.parsePercentage(r))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.hunt")])}}),this._hunt.triggerButton.element.addClass(w.lastHeadAction),n.addChild(this._hunt),this._festivals=new k(this,this.setting.holdFestivals,this.host.engine.i18n("option.festival"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.festival")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.festival")])}}),n.addChild(this._festivals),this._promoteKittens=new U(this,this.setting.promoteKittens,i,this.host.engine.i18n("option.promotekittens"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promotekittens")])},onRefresh:()=>{this._promoteKittens.triggerButton.inactive=!this.setting.promoteKittens.enabled,this._promoteKittens.triggerButton.ineffective=this.setting.enabled&&this.setting.promoteKittens.enabled&&this.setting.promoteKittens.trigger===-1},onSetTrigger:async()=>{const r=await x.prompt(this,this.host.engine.i18n("ui.trigger.promoteKittens.promptTitle"),this.host.engine.i18n("ui.trigger.promoteKittens.prompt",[this.host.renderPercentage(this.setting.promoteKittens.trigger,i.selected,!0)]),this.host.renderPercentage(this.setting.promoteKittens.trigger),this.host.engine.i18n("ui.trigger.promoteKittens.promptExplainer"));r===void 0||r===""||r.startsWith("-")||(this.setting.promoteKittens.trigger=this.host.parsePercentage(r))},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promotekittens")])}}),this._promoteKittens.triggerButton.element.addClass(w.lastHeadAction),n.addChild(this._promoteKittens),this._promoteLeader=new k(this,this.setting.promoteLeader,this.host.engine.i18n("option.promote"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.promote")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.promote")])}}),n.addChild(this._promoteLeader);for(const r of this.setting.electLeader.job.options)r.value==="any"?r.label=this.host.engine.i18n("option.elect.job.any"):r.label=this.host.engine.i18n(`$village.job.${r.value}`);for(const r of this.setting.electLeader.trait.options)r.label=this.host.engine.i18n(`$village.trait.${r.value}`);this._electLeader=new k(this,this.setting.electLeader,this.host.engine.i18n("option.elect"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.elect")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.elect")])}}).addChildren([new Me(this,this.host.engine.i18n("option.elect.job"),this.setting.electLeader.job),new Me(this,this.host.engine.i18n("option.elect.trait"),this.setting.electLeader.trait)]),n.addChild(this._electLeader),this.addChildContent(n)}_getDistributeOption(e,t,i,s,a=!1){const n=async()=>{const c=await x.prompt(this,this.host.engine.i18n("ui.max.distribute.prompt",[s]),this.host.engine.i18n("ui.max.distribute.promptTitle",[s,this.host.renderAbsolute(e.max,t)]),this.host.renderAbsolute(e.max),this.host.engine.i18n("ui.max.distribute.promptExplainer"));if(c!==void 0){if(c===""||c.startsWith("-")){e.max=-1;return}c==="0"&&(e.enabled=!1),e.max=this.host.parseAbsolute(c)??e.max}},r=new st(this,e,s,{delimiter:a,onCheck:c=>{if(this.host.engine.imessage("status.sub.enable",[s]),e.max===0&&!c)return n()},onRefresh:()=>{r.maxButton.inactive=!e.enabled||e.max===-1,r.maxButton.ineffective=i.enabled&&e.enabled&&e.max===0},onRefreshMax:()=>{r.maxButton.updateLabel(this.host.renderAbsolute(e.max)),r.maxButton.element[0].title=e.max<0?this.host.engine.i18n("ui.max.distribute.titleInfinite",[s]):e.max===0?this.host.engine.i18n("ui.max.distribute.titleZero",[s]):this.host.engine.i18n("ui.max.distribute.title",[this.host.renderAbsolute(e.max),s])},onSetMax:n,onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[s])}});return r.maxButton.element.addClass(w.lastHeadAction),r}}class Yt extends k{limitedButton;maxButton;triggerButton;constructor(e,t,i,s,a){super(e,t,s,a),this.limitedButton=new it(e,t,{...a,classes:[Ge.headAction]}),this.maxButton=new Ee(e,t,{alignment:"right",border:!1,classes:[w.headAction],onClick:()=>a.onSetMax.call(this),onRefresh:a?.onRefreshMax?()=>a.onRefreshMax?.call(this):void 0}),this.triggerButton=new ke(e,t,i,{border:!1,classes:[w.lastHeadAction],onClick:async()=>{await a.onSetTrigger.call(this)},onRefresh:a?.onRefreshTrigger?()=>a.onRefreshTrigger?.call(this):void 0,renderLabel:a?.renderLabelTrigger??!0}),this.addChildrenHead([new T(e,{classes:[E.fillSpace]}),this.limitedButton,this.maxButton,this.triggerButton])}toString(){return`[${Yt.name}#${this.componentId}]`}}class ho extends I{constructor(e,t,i){const s=e.host.engine.i18n("ui.upgrade.upgrades");super(e,t,new U(e,t,i,s,{onCheck:o=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger",[t.trigger===-1?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const o=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(o!==void 0){if(o===""||o.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(o)}},onUnCheck:o=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.upgrades).some(o=>o.enabled&&o.trigger<0),this.expando.ineffective=t.enabled&&!Object.values(t.upgrades).some(o=>o.enabled)}});const a=this.host.game.workshop.upgrades.filter(o=>!g(this.setting.upgrades[o.name])),n=[];let r=a[0].label,c;for(const o of a.sort((h,u)=>h.label.localeCompare(u.label,i.selected))){const h=this.setting.upgrades[o.name],u=new U(this,h,i,o.label,{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[o.label])},onRefreshRequest:()=>{u.triggerButton.inactive=!h.enabled||h.trigger===-1,u.triggerButton.ineffective=t.enabled&&h.enabled&&t.trigger===-1&&h.trigger===-1},onRefreshTrigger:()=>{u.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[h.trigger<0?t.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[s]):`${this.host.renderPercentage(t.trigger,i.selected,!0)} (${this.host.engine.i18n("ui.trigger.section.inherited")})`:this.host.renderPercentage(h.trigger,i.selected,!0)])},onSetTrigger:async()=>{const d=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[s,h.trigger!==-1?this.host.renderPercentage(h.trigger,i.selected,!0):this.host.engine.i18n("ui.trigger.section.inherited")]),h.trigger!==-1?this.host.renderPercentage(h.trigger):"",this.host.engine.i18n("ui.trigger.section.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){h.trigger=-1;return}h.trigger=this.host.parsePercentage(d)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o.label])},renderLabelTrigger:!1});u.triggerButton.element.addClass(w.lastHeadAction),this.host.engine.localeSupportsFirstLetterSplits(i.selected)&&r[0]!==o.label[0]&&(g(c)||c.element.addClass(ge.delimiter),u.element.addClass(E.splitter)),c=u,n.push(u),r=o.label}this.addChildContent(new _(this).addChildren(n))}}class Qt extends I{_crafts;constructor(e,t,i){console.debug(...f(`Constructing ${Qt.name}`));const s=e.host.engine.i18n("ui.craft");super(e,t,new U(e,t,i,s,{onCheck:c=>{e.host.engine.imessage("status.auto.enable",[s])},onRefreshTrigger(){this.triggerButton.element[0].title=e.host.engine.i18n("ui.trigger.section",[t.trigger<0?e.host.engine.i18n("ui.trigger.section.inactive"):e.host.renderPercentage(t.trigger,i.selected,!0)])},onSetTrigger:async()=>{const c=await x.prompt(e,e.host.engine.i18n("ui.trigger.prompt.percentage"),e.host.engine.i18n("ui.trigger.section.prompt",[s,t.trigger!==-1?e.host.renderPercentage(t.trigger,i.selected,!0):e.host.engine.i18n("ui.infinity")]),t.trigger!==-1?e.host.renderPercentage(t.trigger):"",e.host.engine.i18n("ui.trigger.section.promptExplainer"));if(c!==void 0){if(c===""||c.startsWith("-")){t.trigger=-1;return}t.trigger=e.host.parsePercentage(c)}},onUnCheck:c=>{e.host.engine.imessage("status.auto.disable",[s])},renderLabelTrigger:!1}),{onRefreshRequest:()=>{this.settingItem.triggerButton.inactive=!t.enabled||t.trigger===-1,this.settingItem.triggerButton.ineffective=t.enabled&&t.trigger<0&&Object.values(t.resources).some(c=>c.enabled&&c.max!==0&&c.trigger<0)}});let a=[];game.challenges.getChallenge("ironWill").active||(this.setting.resources.bloodstone.enabled=!1,this.setting.resources.tMythril.enabled=!1,a=["bloodstone","tMythril"]);const n=this.host.game.workshop.crafts.filter(c=>!a.includes(c.name)&&!g(this.setting.resources[c.name])).map(c=>[this.setting.resources[c.name],W(c.label)]);this._crafts=[];for(const[c,o]of n){const h=async()=>{const d=await x.prompt(this,this.host.engine.i18n("ui.max.craft.prompt",[o]),this.host.engine.i18n("ui.max.craft.promptTitle",[o,this.host.renderAbsolute(c.max,i.selected)]),this.host.renderAbsolute(c.max),this.host.engine.i18n("ui.max.craft.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){c.max=-1;return}d==="0"&&(c.enabled=!1),c.max=this.host.parseAbsolute(d)??c.max}},u=new Yt(this,c,i,o,{delimiter:c.resource==="kerosene"||c.resource==="blueprint",onCheck:d=>{if(this.host.engine.imessage("status.sub.enable",[o]),c.max===0&&!d)return h()},onLimitedCheck:()=>{this.host.engine.imessage("craft.limited",[o])},onLimitedUnCheck:()=>{this.host.engine.imessage("craft.unlimited",[o])},onRefreshMax:()=>{u.maxButton.updateLabel(this.host.renderAbsolute(c.max)),u.maxButton.element[0].title=c.max<0?this.host.engine.i18n("ui.max.craft.titleInfinite",[o]):c.max===0?this.host.engine.i18n("ui.max.craft.titleZero",[o]):this.host.engine.i18n("ui.max.craft.title",[this.host.renderAbsolute(c.max),o])},onRefreshRequest:()=>{u.limitedButton.inactive=!c.enabled||!c.limited,u.maxButton.inactive=!c.enabled||c.max===-1,u.maxButton.ineffective=t.enabled&&c.enabled&&c.max===0,u.triggerButton.inactive=!c.enabled||c.trigger===-1,u.triggerButton.ineffective=t.enabled&&c.enabled&&t.trigger===-1&&c.trigger===-1},onRefreshTrigger:()=>{u.triggerButton.element[0].title=this.host.engine.i18n("ui.trigger",[c.trigger<0?t.trigger<0?this.host.engine.i18n("ui.trigger.build.blocked",[o]):`${this.host.renderPercentage(t.trigger,i.selected,!0)} (${this.host.engine.i18n("ui.trigger.build.inherited")})`:this.host.renderPercentage(c.trigger,i.selected,!0)])},onSetMax:h,onSetTrigger:async()=>{const d=await x.prompt(this,this.host.engine.i18n("ui.trigger.prompt.percentage"),this.host.engine.i18n("ui.trigger.section.prompt",[o,c.trigger!==-1?this.host.renderPercentage(c.trigger,i.selected,!0):this.host.engine.i18n("ui.trigger.build.inherited")]),c.trigger!==-1?this.host.renderPercentage(c.trigger):"",this.host.engine.i18n("ui.trigger.build.promptExplainer"));if(d!==void 0){if(d===""||d.startsWith("-")){c.trigger=-1;return}c.trigger=this.host.parsePercentage(d)}},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[o])},renderLabelTrigger:!1});this._crafts.push(u),c.resource==="ship"&&this._crafts.push(new k(this,this.setting.shipOverride,this.host.engine.i18n("option.shipOverride"),{onCheck:()=>{this.host.engine.imessage("status.sub.enable",[this.host.engine.i18n("option.shipOverride")])},onUnCheck:()=>{this.host.engine.imessage("status.sub.disable",[this.host.engine.i18n("option.shipOverride")])},upgradeIndicator:!0}))}const r=new _(this,{onReset:()=>{this.setting.load({resources:new Fe().resources})}}).addChildren(this._crafts);this.addChildContent(r),this.addChildContent(new _(this,{hasDisableAll:!1,hasEnableAll:!1}).addChildren([new ho(this,this.setting.unlockUpgrades,i)]))}}class Ae extends D{showActivity;_engineUi;_sections;stateManagementUi;_refreshTimeout;constructor(e){console.debug(...f(`Constructing ${Ae.name}`)),super({host:e},{});const t=e.engine;this._engineUi=new Sn(this,t.settings),this.stateManagementUi=new Ht(this,t.settings.states,t.settings.locale),this._sections=[new Tt(this,t.bonfireManager.settings,t.settings.locale),new Xt(this,t.villageManager.settings,t.settings.locale),new Ut(this,t.scienceManager.settings,t.settings.locale),new Qt(this,t.workshopManager.settings,t.settings.locale),new Ot(this,t.settings.resources,t.settings.locale),new jt(this,t.tradeManager.settings,t.settings.locale),new It(this,t.religionManager.settings,t.settings.locale),new Dt(this,t.spaceManager.settings,t.settings.locale),new Wt(this,t.timeManager.settings,t.settings.locale),new Ft(this,t.timeControlManager.settings,t.settings.locale),new Bt(this,t.settings.filters),this.stateManagementUi,new At(this,t.settings,t.settings.locale)],this.parent=this,this.element=$("<div/>").addClass("kitten-scientists").addClass(Jt.ui);for(const o of[this._engineUi,...this._sections])this.addChild(o);const i=$("<ul/>");i.append(this._engineUi.element);for(const o of this._sections)i.append(o.element);this.element.append(i);const s=this._engineUi.expando;let a=!1;s.element.on("click",()=>{a=!a;for(const o of this._sections)o.toggle(a,!0)});let n=0;for(const o of this._sections)o.element[0].addEventListener("panelHidden",()=>{--n,n===0&&(a=!1),a||s.setCollapsed()}),o.element[0].addEventListener("panelShown",()=>{++n,a=!0,s.setExpanded()});this.showActivity=$("<span/>",{html:`<svg style="width: 18px; height: 18px;" viewBox="0 -960 960 960" fill="currentColor"><path d="${M.Summary}"/></svg>`,title:e.engine.i18n("summary.show")}).addClass(Jt.showActivity),this.showActivity.on("click",()=>{e.engine.displayActivitySummary()}),$("#clearLog").prepend(this.showActivity);const r=t.settings.ksColumn.enabled&&game.colorScheme!=="sleek";r?$("#rightColumn").after(`<div id="ksColumn" class="column"><span class="${Jt.spacer}"></span></div>`):$("#ksColumn").remove();const c=$(r?"#ksColumn":"#rightColumn");if(c.length===0){const o=$("#optionsPage .full-screen-position .page .page-content");o.length===0?console.warn(...f("Unable to find right column to inject UI into. Running headless.")):(o.append(this.element),this.element.attr("style","border-top:1px solid grey; padding:15px"))}else c.prepend(this.element);this.element=this.element,this._needsRefresh=!1}toString(){return`[${Ae.name}#${this.componentId}]`}destroy(){this._refreshTimeout!==void 0&&(C.window.clearTimeout(this._refreshTimeout),this._refreshTimeout=void 0),this.showActivity.remove(),this.element.remove()}requestRefresh(e=!0,t=0,i=!1){if(this._needsRefresh){this._refreshTimeout===void 0&&console.error(...f("User interface claims to have a refresh pending, but there isn't."));return}this._refreshTimeout=C.window.setTimeout(()=>{const[s,a]=X(()=>this.refresh());console.info(...f(`UI refresh took ${wn(a)}.`)),this._refreshTimeout=void 0},0),super.requestRefresh(!0,t,!1)}forceFullRefresh(){console.debug(...f("Forcing refresh on all user interface components...")),this.requestRefresh(),console.debug(...f("Refresh on all user interface components enforced."))}}const Pe=(l="")=>{if(g("2.0.0-beta.12-live"))throw Error("Build error: RELEASE_VERSION is not defined.");return`${l}2.0.0-beta.12-live`};class ae{game;i18nEngine;_userInterface;engine;_gameBeforeSaveHandle;_serverLoadHandle;constructor(e,t,i="en",s){console.info(...f(`Kitten Scientists ${Pe("v")} constructed. Checking for previous instances...`)),"kittenScientists"in C.window&&(console.warn(...f("Detected existing KS instance. Trying to unload it...")),C.window.kittenScientists?.unload()),console.info(...f("You are on the 'fixed' release channel.")),this.game=e,this.i18nEngine=t;try{this.engine=new ee(this,i),this._userInterface=new Ae(this)}catch(a){throw console.error(...f("Failed to construct core components.",a)),a}g(s)?this._userInterface.stateManagementUi.loadAutoSave():this.setSettings(s)}rebuildUi(){this._userInterface.destroy(),this._userInterface=new Ae(this),this._userInterface.forceFullRefresh()}validateGame(){St.validateGame(this.game,this.engine.scienceManager.settings),He.validateGame(this.game,this.engine.spaceManager.settings),Fe.validateGame(this.game,this.engine.workshopManager.settings)}unload(){console.warn(...f("Unloading Kitten Scientists...")),this.engine.stop(),this._userInterface.destroy(),$("#ks-styles").remove(),this._gameBeforeSaveHandle!==void 0&&(C.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle!==void 0&&(C.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0);const e=this.game.managers.indexOf(this._saveManager);-1<e&&this.game.managers.splice(e,1),C.window.kittenScientists=void 0,console.warn(...f("Kitten Scientists have been unloaded!"))}run(){this.refreshEntireUserInterface(),this.engine.settings.enabled&&this.engine.start(!0),this.engine.imessage("status.ks.init"),this.runUpdateCheck().catch(H(console)),this._gameBeforeSaveHandle!==void 0&&(C.window.dojo.unsubscribe(this._gameBeforeSaveHandle),this._gameBeforeSaveHandle=void 0),this._gameBeforeSaveHandle=C.window.dojo.subscribe("game/beforesave",e=>{console.info(...f("Injecting Kitten Scientists engine state into save data..."));const t=this.getSettings();e.ks={state:[t]},this._userInterface.stateManagementUi.storeAutoSave(t),document.dispatchEvent(new CustomEvent("ks.reportSavegame",{detail:e}))}),this._serverLoadHandle!==void 0&&(C.window.dojo.unsubscribe(this._serverLoadHandle),this._gameBeforeSaveHandle=void 0),this._serverLoadHandle=C.window.dojo.subscribe("server/load",e=>{const t=C.tryEngineStateFromSaveData("ks",e);if(!t){console.info(...f("The Kittens Game save data did not contain a script state. Trying to load Auto-Save settings..."));return}console.info(...f("Found! Loading settings...")),this.engine.stateLoad(t),this._userInterface.forceFullRefresh()})}async runUpdateCheck(){{console.debug(...f("No update check on 'fixed' release channel."));return}}refreshEntireUserInterface(){console.info(...f("Requesting entire user interface to be refreshed.")),this._userInterface.forceFullRefresh()}parseFloat(e){if(e===null||e==="")return null;const t=/[KMGTP]$/i.test(e),i=e.substring(0,e.length-(t?1:0));let s=e.includes("e")||t?Number.parseFloat(i):Number.parseInt(i,10);if(t){const a=e.substring(e.length-1).toUpperCase();s=s*1e3**["","K","M","G","T","P"].indexOf(a)}return(s===Number.POSITIVE_INFINITY||s<0)&&(s=-1),s}parseAbsolute(e){const t=this.parseFloat(e);return t!==null?Math.round(t):null}parsePercentage(e){const t=e.trim().replace(/%$/,"");return Math.max(0,Math.min(1,Number.parseFloat(t)/100))}renderAbsolute(e,t="invariant"){return e<0||e===Number.POSITIVE_INFINITY?"∞":t!=="invariant"&&Math.floor(Math.log10(e))<9?new Intl.NumberFormat(t,{maximumFractionDigits:0,style:"decimal"}).format(e):this.game.getDisplayValueExt(e,!1,!1)}renderPercentage(e,t="invariant",i){return e<0||e===Number.POSITIVE_INFINITY?"∞":t!=="invariant"?new Intl.NumberFormat(t,{style:"percent"}).format(e):`${this.game.getDisplayValueExt(e*100,!1,!1)}${i?"%":""}`}renderFloat(e,t="invariant"){return e<0||e===Number.POSITIVE_INFINITY?"∞":t!=="invariant"?new Intl.NumberFormat(t,{style:"decimal"}).format(e):this.game.getDisplayValueExt(e,!1,!1)}static encodeSettings(e,t=!0){const i=JSON.stringify(e);return t?C.window.LZString.compressToBase64(i):i}static decodeSettings(e){try{const s=JSON.parse(e);return ae.unknownAsEngineStateOrThrow(s)}catch{}if(e.match(/\r?\n/))throw new $e("Multi-line non-JSON input can't be decoded.");const t=C.window.LZString.decompressFromBase64(e),i=JSON.parse(t);return ae.unknownAsEngineStateOrThrow(i)}getSettings(){return this.engine.stateSerialize()}getSettingsAsJson(){return JSON.stringify(this.getSettings())}setSettings(e){console.info(...f("Loading engine state..."));const t=this.engine.settings.ksColumn.enabled!==e.engine.ksColumn.enabled;this.engine.stateLoad(e),t&&this.rebuildUi(),this._userInterface.refresh(!0)}importSettingsFromString(e){const t=ae.decodeSettings(e);this.setSettings(t)}async copySettings(e=this.getSettings(),t=!0){const i=ae.encodeSettings(e,t);await C.window.navigator.clipboard.writeText(i)}static unknownAsEngineStateOrThrow(e){const t=e.v;if(!g(t)&&typeof t=="string"&&t.startsWith("2"))return e;throw new Error("Not a valid engine state.")}installSaveManager(){console.info(...f("Installing save game manager...")),this.game.managers.push(this._saveManager)}_saveManager={load:e=>{console.info(...f("Looking for Kitten Scientists engine state in save data..."));const t=C.tryEngineStateFromSaveData("ks",e);if(!t){console.info(...f("The Kittens Game save data did not contain a script state."));return}console.info(...f("Found Kitten Scientists engine state in save data.")),this.engine.stateLoad(t),this.refreshEntireUserInterface()},resetState:()=>null,save:e=>{}}}const Yi=async()=>{const l=await new C().waitForGame(ae,"ks");C.window.kittenScientists=l,l.validateGame(),l.run()};(typeof GM>"u"||GM?.info?.scriptHandler==="Tampermonkey")&&Yi().catch(H(console)),ue.main=Yi,Object.defineProperty(ue,Symbol.toStringTag,{value:"Module"})}));
|
|
22
22
|
(function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.id="ks-styles",t.appendChild(document.createTextNode('._label_1nlev_1{align-content:center;display:inline-block;flex:0 1 fit-content;opacity:.8;white-space:nowrap;transition:.3s;&:hover{opacity:1}}._splitter_1nlev_16 ._label_1nlev_1:first-letter{font-weight:700}._iconLabel_1nlev_20{display:inline-block;margin-right:4px;margin-left:2px;vertical-align:middle}._fillSpace_1nlev_26{flex:1}._delimiter_16hnh_1{margin-bottom:10px}._head_wr1pj_1{display:flex;align-items:stretch;flex-direction:row;justify-content:flex-start;width:100%;transition:.3s;>._headFlexItem_wr1pj_10{flex:1;margin-right:8px}}._setting_1ndg5_1{border-bottom:1px solid transparent;transition:border-bottom .3s;._checkbox_1ndg5_6{margin:1px 5px 2px 2px}._panelContent_1ndg5_10{border-left:1px dashed grey;padding-left:16px;margin-left:8px;margin-top:1px;opacity:.5;&._hidden_1ndg5_17{display:none}}&._checked_1ndg5_22>._panelContent_1ndg5_10{opacity:1}&._expanded_1ndg5_26{margin-bottom:10px}&:not(._expanded_1ndg5_26):hover{border-bottom:1px dashed rgba(160,160,160,.2)}&._readonly_1ndg5_34{cursor:default;pointer-events:none}}@keyframes _hail-rainbow_q7zpt_1{0%,to{color:red;text-shadow:0 0 10px red}33%{color:#888;text-shadow:0 0 10px yellow}66%{color:#fff;text-shadow:0 0 10px black}}._iconButton_q7zpt_17{cursor:pointer;display:block;padding-right:3px;line-height:0;opacity:.8;transition:.3s;&:hover{opacity:1}&._inactive_q7zpt_29{opacity:.4;&:hover{opacity:.6}}&._ineffective_q7zpt_37{color:red;animation:_hail-rainbow_q7zpt_1 5s linear infinite}}._button_q7zpt_43{align-items:end;cursor:pointer;display:flex;opacity:.8;transition:.3s;&:hover{opacity:1}&._inactive_q7zpt_29{opacity:.4;&:hover{opacity:.6}}&._ineffective_q7zpt_37{color:red;animation:_hail-rainbow_q7zpt_1 5s linear infinite}&._readonly_q7zpt_67{cursor:default;pointer-events:none}._buttonIcon_q7zpt_72{margin:0 2px 0 0;vertical-align:sub}&._alignRight_q7zpt_77{justify-content:end}&._large_q7zpt_81{padding:5px 10px}&._bordered_q7zpt_85{border:1px solid rgba(180,180,180,.2);&:not(._large_q7zpt_81){padding:0 2px}&:hover{border:1px solid rgba(180,180,180,1)}}&._headAction_q7zpt_97{min-width:50px}&._lastHeadAction_q7zpt_100{padding-right:20px}&._consumeButton_q7zpt_104{border:1px solid transparent}&._stockButton_q7zpt_107{border:1px solid transparent}}._button_q7zpt_43:not(._bordered_q7zpt_85)+._button_q7zpt_43:not(._bordered_q7zpt_85):before{content:"";display:inline-block;height:1em;border-left:1px solid transparent}._button_q7zpt_43:not(._bordered_q7zpt_85):not(._inactive_q7zpt_29)._alignRight_q7zpt_77+._button_q7zpt_43:not(._bordered_q7zpt_85):not(._inactive_q7zpt_29):before{content:"";display:inline-block;height:1em;border-left:1px solid rgba(180,180,180,.4)}._listContainer_1kxbq_1{margin-bottom:4px}._itemsList_1kxbq_5{user-select:none}._list_1kxbq_1~._listTools_1kxbq_9{border-top:1px dotted rgba(128,128,128,.3);margin-left:0;padding-top:2px}._list_1kxbq_1~._listTools_1kxbq_9 *{display:inline-block}._expandoButton_l1ukp_1:not(._expanded_l1ukp_1) ._up_l1ukp_1{display:none}._expandoButton_l1ukp_1:not(._expanded_l1ukp_1) ._down_l1ukp_4{opacity:.6;&:hover{opacity:1}}._expandoButton_l1ukp_1._expanded_l1ukp_1 ._down_l1ukp_4{display:none}#gamePageContainer .dialog.help._dialog_b4vj0_1{display:flex;flex-direction:column;height:fit-content!important;box-shadow:none!important;._close_b4vj0_7{position:absolute;top:10px;right:15px}}._explainer_1idu3_1{color:#888;display:inline-block;min-width:100px;user-select:none;padding:4px;white-space:break-spaces}._explainer_1idu3_1 p{margin:0}._header_19ql8_1{display:block;margin-bottom:3px;min-width:100px;border-bottom:1px dashed rgba(255,255,255,.1);font-weight:700;user-select:none}._toolbar_1654f_1{display:flex;flex-direction:row;padding:0 0 2px;margin:0 0 3px}._toolbar_1654f_1>*{margin:0 3px 0 0}._maxButton_133h2_1{padding-right:5px;padding-top:2px}._fieldset_tfwil_1{border-bottom:none;border-right:none;border-top:none}._textButton_1mv97_1{display:inline-block;white-space:nowrap;opacity:.8;cursor:pointer;user-select:none}._textButton_1mv97_1:hover{opacity:1}@keyframes _scale_6c09s_1{0%{scale:.5;opacity:0}50%{scale:1;opacity:1}to{scale:2;opacity:0}}._active_6c09s_16{text-shadow:rgba(128,128,128,.8) 0 0 15px;position:relative;&:after,&:before{display:inline-block;width:1em;height:100%;position:absolute;right:-1.5em;scale:0;text-align:center;transform-origin:center}&:after{content:attr(data-ks-active-from);animation:_scale_6c09s_1 8s linear infinite}&:before{content:attr(data-ks-active-to);animation:_scale_6c09s_1 8s linear infinite;animation-delay:4s}}._buyButton_10eul_1,._sellButton_1tmvd_1{display:inline-block;padding-right:10px;min-width:86px}#ksColumn{min-width:250px;max-width:440px;vertical-align:top;padding-left:8px;top:20px;position:relative;overflow-y:auto}#crowdjet-expand-container{position:fixed!important;bottom:10px!important;right:-10px!important;opacity:.5;&:hover{opacity:1}}#footerLinks{display:flex;flex-direction:column;position:fixed;text-align:right;line-height:0;right:-5px!important;margin-bottom:1em;a{line-height:1;padding-right:10px;opacity:.5;transition:.3s;text-decoration:none;text-transform:lowercase;&:hover{opacity:1}}}._spacer_90nk2_45{display:block;margin-bottom:100px}._ui_90nk2_50{margin:5px 0 10px;padding-right:10px;ul{list-style:none;margin:0;padding:0}#_toggle-list-resources_90nk2_1 ._stockWarn_90nk2_61 *,#_toggle-reset-list-resources_90nk2_1 ._stockWarn_90nk2_61 *{color:#dd1e00}}._showActivity_90nk2_67{cursor:pointer;display:inline-block;vertical-align:middle}#game #rightColumn{overflow-y:auto;#rightTabLog{overflow-y:visible;#logFiltersBlock{display:none!important}#gameLog{height:auto;min-height:auto;overflow-y:visible;.type_ks-default{color:#9748e0}.type_ks-activity{color:#ffac74bf}.type_ks-summary{color:#093}}}}#game .res-row .res-cell.ks-stock-above{color:green}#game .res-row .res-cell.ks-stock-below{color:red}')),document.head.appendChild(t)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@kitten-science/kitten-scientists",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
4
|
+
"version": "2.0.0-beta.12-dev.20251225210304",
|
|
5
5
|
"description": "Add-on for the wonderful incremental browser game: https://kittensgame.com/web/",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Oliver Salzburg <oliver.salzburg@gmail.com>",
|