Fixed layer tree node options

This commit is contained in:
thepaperpilot 2022-03-05 16:42:55 -06:00
parent 79dd822b3a
commit d1cdfd2c9c

View file

@ -18,6 +18,7 @@ import player from "game/player";
import Decimal from "util/bignum"; import Decimal from "util/bignum";
import { import {
Computable, Computable,
GetComputableType,
GetComputableTypeWithDefault, GetComputableTypeWithDefault,
processComputable, processComputable,
ProcessedComputable ProcessedComputable
@ -118,39 +119,48 @@ export function createResetButton<T extends ClickableOptions & ResetButtonOption
export interface LayerTreeNodeOptions extends TreeNodeOptions { export interface LayerTreeNodeOptions extends TreeNodeOptions {
layerID: string; layerID: string;
color: string; color: Computable<string>; // marking as required
append?: boolean; display?: Computable<string>;
append?: Computable<boolean>;
} }
export type LayerTreeNode<T extends LayerTreeNodeOptions> = Replace< export type LayerTreeNode<T extends LayerTreeNodeOptions> = Replace<
TreeNode<T>, TreeNode<T>,
{ {
append: ProcessedComputable<boolean>; display: GetComputableTypeWithDefault<T["display"], T["layerID"]>;
append: GetComputableType<T["append"]>;
}
>;
export type GenericLayerTreeNode = Replace<
LayerTreeNode<LayerTreeNodeOptions>,
{
display: ProcessedComputable<string>;
append?: ProcessedComputable<boolean>;
} }
>; >;
export type GenericLayerTreeNode = LayerTreeNode<LayerTreeNodeOptions>;
export function createLayerTreeNode<T extends LayerTreeNodeOptions>( export function createLayerTreeNode<T extends LayerTreeNodeOptions>(
optionsFunc: () => T optionsFunc: () => T
): LayerTreeNode<T> { ): LayerTreeNode<T> {
return createTreeNode(() => { return createTreeNode(() => {
const options = optionsFunc(); const options = optionsFunc();
processComputable(options as T, "display");
setDefault(options, "display", options.layerID);
processComputable(options as T, "append"); processComputable(options as T, "append");
return { return {
...options, ...options,
display: options.layerID, display: options.layerID,
onClick: onClick: unref((options as unknown as GenericLayerTreeNode).append)
options.append != null && options.append ? function () {
? function () { if (player.tabs.includes(options.layerID)) {
if (player.tabs.includes(options.layerID)) { const index = player.tabs.lastIndexOf(options.layerID);
const index = player.tabs.lastIndexOf(options.layerID); player.tabs.splice(index, 1);
player.tabs.splice(index, 1); } else {
} else { player.tabs.push(options.layerID);
player.tabs.push(options.layerID);
}
}
: function () {
player.tabs.splice(1, 1, options.layerID);
} }
}
: function () {
player.tabs.splice(1, 1, options.layerID);
}
}; };
}) as unknown as LayerTreeNode<T>; }) as unknown as LayerTreeNode<T>;
} }