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 {