diff --git a/src/index.html b/src/index.html
index b4ab5d0..1e18769 100644
--- a/src/index.html
+++ b/src/index.html
@@ -43,7 +43,7 @@
Addons
-
+
diff --git a/src/main.mjs b/src/main.mjs
index acfe3f3..868bcb2 100644
--- a/src/main.mjs
+++ b/src/main.mjs
@@ -37,9 +37,22 @@ export let pieces = {};
export let pieceSources = {};
import { spellToSnbt } from 'psi-spell-encode-wasm';
const builtinSources = ['psi'].reduce((obj, list) => (obj[list] = 'pieces/' + list + '.html', obj), {});
+const addonSources = { ...builtinSources, ...['phi'].reduce((obj, list) => (obj[list] = 'pieces/' + list + '.html', obj), {}) };
const loads = Promise.all([init(wasmUrl), ...Object.values(builtinSources)
.map(url => addPieceSource(url, true))]);
+{
+ let list = document.createElement('datalist');
+ sourceURL.parentNode.appendChild(list);
+ list.id = 'addon-sources';
+ sourceURL.setAttribute('list', list.id);
+ for (let source of Object.keys(addonSources)) {
+ let option = document.createElement('option');
+ option.value = source;
+ list.appendChild(option);
+ }
+}
+
parseURLArgs(loads);
async function loadPieceDesc(url) {
@@ -57,6 +70,7 @@ sourceURL.addEventListener('keydown', e => {
});
export async function addPieceSource(url, builtin = false, urlArg = false) {
+ if (addonSources[url]) url = addonSources[url];
let pieces = await loadPieceDesc(url);
if (pieceSources[pieces.namespace]) removePieceSource(pieces.namespace, true, urlArg);
let item = sourceList.div('source-item', 'horizontal', 'vcenter-items', ...builtin ? ['builtin'] : []);
@@ -88,6 +102,7 @@ export async function addPieceSource(url, builtin = false, urlArg = false) {
};
reorderSources();
rebuildCatalog();
+ // TODO rebuild grid
}
function reorderSources() {
@@ -107,6 +122,7 @@ function removePieceSource(namespace, replacing = false, urlArg = false) {
addPieceSource(builtinSources[namespace], true, urlArg);
}
rebuildCatalog();
+ // TODO rebuild grid
}
function rebuildCatalog() {
diff --git a/src/piece.mjs b/src/piece.mjs
index cabed5d..97b579c 100644
--- a/src/piece.mjs
+++ b/src/piece.mjs
@@ -200,6 +200,7 @@ export async function loadPieces(html) {
e.dataset.key = e.dataset.key || `${namespace}:${e.dataset.type}`;
e.dataset.sortingName = e.dataset.sortingName || e.dataset.name;
e.dataset.tooltip = e.dataset.name + '\n' + e.dataset.desc;
+ if (namespace != 'psi') e.dataset.tooltip += `\nAddon: ${namespace}`;
pieces[e.dataset.key] = e;
});
return {