2021-06-20 23:29:55 -05:00
|
|
|
<template>
|
2022-01-24 22:25:34 -06:00
|
|
|
<Modal v-model="isOpen" ref="modal">
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
<template v-slot:header>
|
|
|
|
<h2>Saves Manager</h2>
|
|
|
|
</template>
|
2022-03-02 20:16:59 -06:00
|
|
|
<template #body="{ shown }">
|
2022-01-24 22:25:34 -06:00
|
|
|
<Draggable
|
|
|
|
:list="settings.saves"
|
|
|
|
handle=".handle"
|
2022-03-02 20:16:59 -06:00
|
|
|
v-if="shown"
|
2022-01-24 22:25:34 -06:00
|
|
|
:itemKey="(save: string) => save"
|
|
|
|
>
|
|
|
|
<template #item="{ element }">
|
|
|
|
<Save
|
|
|
|
:save="saves[element]"
|
|
|
|
@open="openSave(element)"
|
|
|
|
@export="exportSave(element)"
|
|
|
|
@editName="name => editSave(element, name)"
|
|
|
|
@duplicate="duplicateSave(element)"
|
|
|
|
@delete="deleteSave(element)"
|
|
|
|
/>
|
|
|
|
</template>
|
|
|
|
</Draggable>
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
</template>
|
|
|
|
<template v-slot:footer>
|
|
|
|
<div class="modal-footer">
|
2022-01-13 22:25:47 -06:00
|
|
|
<Text
|
|
|
|
v-model="saveToImport"
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
title="Import Save"
|
|
|
|
placeholder="Paste your save here!"
|
|
|
|
:class="{ importingFailed }"
|
|
|
|
/>
|
|
|
|
<div class="field">
|
|
|
|
<span class="field-title">Create Save</span>
|
|
|
|
<div class="field-buttons">
|
|
|
|
<button class="button" @click="newSave">New Game</button>
|
|
|
|
<Select
|
|
|
|
v-if="Object.keys(bank).length > 0"
|
|
|
|
:options="bank"
|
2022-02-27 13:49:34 -06:00
|
|
|
:modelValue="undefined"
|
2022-01-13 22:25:47 -06:00
|
|
|
@update:modelValue="preset => newFromPreset(preset as string)"
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
closeOnSelect
|
|
|
|
placeholder="Select preset"
|
|
|
|
class="presets"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="footer">
|
|
|
|
<div style="flex-grow: 1"></div>
|
2022-01-13 22:25:47 -06:00
|
|
|
<button class="button modal-default-button" @click="isOpen = false">
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
Close
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</Modal>
|
2021-06-20 23:29:55 -05:00
|
|
|
</template>
|
|
|
|
|
2022-01-13 22:25:47 -06:00
|
|
|
<script setup lang="ts">
|
2022-03-03 21:39:48 -06:00
|
|
|
import Modal from "components/Modal.vue";
|
|
|
|
import player, { PlayerData } from "game/player";
|
|
|
|
import settings from "game/settings";
|
|
|
|
import { getUniqueID, loadSave, save, newSave } from "util/save";
|
2022-02-27 13:49:34 -06:00
|
|
|
import {
|
|
|
|
ComponentPublicInstance,
|
|
|
|
computed,
|
|
|
|
nextTick,
|
|
|
|
ref,
|
|
|
|
shallowReactive,
|
|
|
|
unref,
|
|
|
|
watch
|
|
|
|
} from "vue";
|
2022-02-27 16:04:56 -06:00
|
|
|
import Select from "./fields/Select.vue";
|
|
|
|
import Text from "./fields/Text.vue";
|
2022-01-13 22:25:47 -06:00
|
|
|
import Save from "./Save.vue";
|
2022-01-24 22:25:34 -06:00
|
|
|
import Draggable from "vuedraggable";
|
2021-06-20 23:29:55 -05:00
|
|
|
|
2022-01-13 22:25:47 -06:00
|
|
|
export type LoadablePlayerData = Omit<Partial<PlayerData>, "id"> & { id: string; error?: unknown };
|
2021-06-20 23:29:55 -05:00
|
|
|
|
2022-01-13 22:25:47 -06:00
|
|
|
const isOpen = ref(false);
|
2022-01-24 22:25:34 -06:00
|
|
|
const modal = ref<ComponentPublicInstance<typeof Modal> | null>(null);
|
2021-06-20 23:29:55 -05:00
|
|
|
|
2022-01-13 22:25:47 -06:00
|
|
|
defineExpose({
|
|
|
|
open() {
|
|
|
|
isOpen.value = true;
|
|
|
|
}
|
|
|
|
});
|
2021-06-20 23:29:55 -05:00
|
|
|
|
2022-01-13 22:25:47 -06:00
|
|
|
const importingFailed = ref(false);
|
|
|
|
const saveToImport = ref("");
|
2021-06-20 23:29:55 -05:00
|
|
|
|
2022-01-13 22:25:47 -06:00
|
|
|
watch(saveToImport, save => {
|
|
|
|
if (save) {
|
|
|
|
nextTick(() => {
|
|
|
|
try {
|
|
|
|
const playerData = JSON.parse(decodeURIComponent(escape(atob(save))));
|
|
|
|
if (typeof playerData !== "object") {
|
|
|
|
importingFailed.value = true;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const id = getUniqueID();
|
|
|
|
playerData.id = id;
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
localStorage.setItem(
|
|
|
|
id,
|
2022-01-13 22:25:47 -06:00
|
|
|
btoa(unescape(encodeURIComponent(JSON.stringify(playerData))))
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
);
|
2022-01-13 22:25:47 -06:00
|
|
|
saveToImport.value = "";
|
|
|
|
importingFailed.value = false;
|
|
|
|
|
|
|
|
settings.saves.push(id);
|
|
|
|
} catch (e) {
|
|
|
|
importingFailed.value = true;
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
}
|
2022-01-13 22:25:47 -06:00
|
|
|
});
|
|
|
|
} else {
|
|
|
|
importingFailed.value = false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2022-02-27 16:04:56 -06:00
|
|
|
let bankContext = require.context("raw-loader!../../saves", true, /\.txt$/);
|
2022-01-13 22:25:47 -06:00
|
|
|
let bank = ref(
|
|
|
|
bankContext.keys().reduce((acc: Array<{ label: string; value: string }>, curr) => {
|
|
|
|
// .slice(2, -4) strips the leading ./ and the trailing .txt
|
|
|
|
acc.push({
|
|
|
|
label: curr.slice(2, -4),
|
|
|
|
value: bankContext(curr).default
|
|
|
|
});
|
|
|
|
return acc;
|
|
|
|
}, [])
|
|
|
|
);
|
2021-06-20 23:29:55 -05:00
|
|
|
|
2022-02-27 13:49:34 -06:00
|
|
|
const cachedSaves = shallowReactive<Record<string, LoadablePlayerData | undefined>>({});
|
2022-01-24 22:25:34 -06:00
|
|
|
function getCachedSave(id: string) {
|
2022-02-27 13:49:34 -06:00
|
|
|
if (cachedSaves[id] == null) {
|
2022-01-24 22:25:34 -06:00
|
|
|
const save = localStorage.getItem(id);
|
|
|
|
if (save == null) {
|
2022-02-27 13:49:34 -06:00
|
|
|
cachedSaves[id] = { error: `Save doesn't exist in localStorage`, id };
|
|
|
|
} else if (save === "dW5kZWZpbmVk") {
|
|
|
|
cachedSaves[id] = { error: `Save is undefined`, id };
|
2022-01-24 22:25:34 -06:00
|
|
|
} else {
|
|
|
|
try {
|
2022-02-27 13:49:34 -06:00
|
|
|
cachedSaves[id] = { ...JSON.parse(decodeURIComponent(escape(atob(save)))), id };
|
2022-01-24 22:25:34 -06:00
|
|
|
} catch (error) {
|
|
|
|
cachedSaves[id] = { error, id };
|
2022-02-27 13:49:34 -06:00
|
|
|
console.warn(
|
|
|
|
`SavesManager: Failed to load info about save with id ${id}:\n${error}\n${save}`
|
|
|
|
);
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
}
|
|
|
|
}
|
2022-01-24 22:25:34 -06:00
|
|
|
}
|
2022-02-27 13:49:34 -06:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
|
|
return cachedSaves[id]!;
|
2022-01-13 22:25:47 -06:00
|
|
|
}
|
2022-01-24 22:25:34 -06:00
|
|
|
// Wipe cache whenever the modal is opened
|
|
|
|
watch(isOpen, isOpen => {
|
|
|
|
if (isOpen) {
|
|
|
|
Object.keys(cachedSaves).forEach(key => delete cachedSaves[key]);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
const saves = computed(() =>
|
|
|
|
settings.saves.reduce((acc: Record<string, LoadablePlayerData>, curr: string) => {
|
|
|
|
acc[curr] = getCachedSave(curr);
|
|
|
|
return acc;
|
|
|
|
}, {})
|
|
|
|
);
|
2022-01-13 22:25:47 -06:00
|
|
|
|
|
|
|
function exportSave(id: string) {
|
|
|
|
let saveToExport;
|
|
|
|
if (player.id === id) {
|
|
|
|
saveToExport = save();
|
|
|
|
} else {
|
|
|
|
saveToExport = btoa(unescape(encodeURIComponent(JSON.stringify(saves.value[id]))));
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
}
|
2022-01-13 22:25:47 -06:00
|
|
|
|
|
|
|
// Put on clipboard. Using the clipboard API asks for permissions and stuff
|
|
|
|
const el = document.createElement("textarea");
|
|
|
|
el.value = saveToExport;
|
|
|
|
document.body.appendChild(el);
|
|
|
|
el.select();
|
|
|
|
el.setSelectionRange(0, 99999);
|
|
|
|
document.execCommand("copy");
|
|
|
|
document.body.removeChild(el);
|
|
|
|
}
|
|
|
|
|
|
|
|
function duplicateSave(id: string) {
|
|
|
|
if (player.id === id) {
|
|
|
|
save();
|
|
|
|
}
|
|
|
|
|
|
|
|
const playerData = { ...saves.value[id], id: getUniqueID() };
|
|
|
|
localStorage.setItem(
|
|
|
|
playerData.id,
|
|
|
|
btoa(unescape(encodeURIComponent(JSON.stringify(playerData))))
|
|
|
|
);
|
|
|
|
|
|
|
|
settings.saves.push(playerData.id);
|
|
|
|
}
|
|
|
|
|
|
|
|
function deleteSave(id: string) {
|
|
|
|
settings.saves = settings.saves.filter((save: string) => save !== id);
|
|
|
|
localStorage.removeItem(id);
|
2022-02-27 13:49:34 -06:00
|
|
|
cachedSaves[id] = undefined;
|
2022-01-13 22:25:47 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
function openSave(id: string) {
|
2022-01-24 22:23:30 -06:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
|
|
saves.value[player.id]!.time = player.time;
|
2022-01-13 22:25:47 -06:00
|
|
|
save();
|
2022-01-24 22:23:30 -06:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
|
|
loadSave(saves.value[id]!);
|
2022-02-27 13:49:34 -06:00
|
|
|
// Delete cached version in case of opening it again
|
|
|
|
cachedSaves[id] = undefined;
|
2022-01-13 22:25:47 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
function newFromPreset(preset: string) {
|
|
|
|
const playerData = JSON.parse(decodeURIComponent(escape(atob(preset))));
|
|
|
|
playerData.id = getUniqueID();
|
|
|
|
localStorage.setItem(
|
|
|
|
playerData.id,
|
|
|
|
btoa(unescape(encodeURIComponent(JSON.stringify(playerData))))
|
|
|
|
);
|
|
|
|
|
|
|
|
settings.saves.push(playerData.id);
|
|
|
|
}
|
|
|
|
|
|
|
|
function editSave(id: string, newName: string) {
|
2022-01-24 22:25:34 -06:00
|
|
|
const currSave = saves.value[id];
|
|
|
|
if (currSave) {
|
|
|
|
currSave.name = newName;
|
|
|
|
if (player.id === id) {
|
|
|
|
player.name = newName;
|
|
|
|
save();
|
|
|
|
} else {
|
|
|
|
localStorage.setItem(id, btoa(unescape(encodeURIComponent(JSON.stringify(currSave)))));
|
2022-02-27 13:49:34 -06:00
|
|
|
cachedSaves[id] = undefined;
|
2022-01-24 22:25:34 -06:00
|
|
|
}
|
2022-01-13 22:25:47 -06:00
|
|
|
}
|
|
|
|
}
|
2021-06-20 23:29:55 -05:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.field form,
|
|
|
|
.field .field-title,
|
|
|
|
.field .field-buttons {
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
margin: 0;
|
2021-06-20 23:29:55 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
.field-buttons {
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
display: flex;
|
2021-06-20 23:29:55 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
.field-buttons .field {
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
margin: 0;
|
|
|
|
margin-left: 8px;
|
2021-06-20 23:29:55 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
.modal-footer {
|
|
|
|
margin-top: -20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.footer {
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
display: flex;
|
|
|
|
margin-top: 20px;
|
2021-06-20 23:29:55 -05:00
|
|
|
}
|
|
|
|
</style>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
.importingFailed input {
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
color: red;
|
2021-06-20 23:29:55 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
.field-buttons .v-select {
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
width: 220px;
|
2021-07-24 17:08:52 -05:00
|
|
|
}
|
|
|
|
|
First pass at typescript support
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)
2021-08-16 23:30:54 -05:00
|
|
|
.presets .vue-select[aria-expanded="true"] vue-dropdown {
|
|
|
|
visibility: hidden;
|
2021-07-24 17:08:52 -05:00
|
|
|
}
|
2021-06-20 23:29:55 -05:00
|
|
|
</style>
|