Files
DiceCloud/app/imports/client/ui/icons/importIcons.js
2023-09-28 21:27:05 +02:00

51 lines
1.4 KiB
JavaScript

import { writeIcons } from '/imports/api/icons/Icons';
/*
* Import a SVG sprite file.
*
* A svg sprite file can be created by downloading the entire archive of
* https://game-icons.net/ then using the search function with *.svg to copy
* all the individual files into a single directory, and then using
* `npm i -g svg-sprite-generator` `npm i -g xml-js`
* run `svg-sprite-generate -d icons -o sprite.xml`
* run `xml-js sprite.xml --out sprite.json --compact true `
* to save the sprite file as json.
*/
let metadata;
export function importIcons(file) {
let reader = new FileReader();
if (!metadata) throw 'No metadata to build with';
reader.onload = function () {
let data = JSON.parse(reader.result);
let icons = [];
data.svg.symbol.forEach(iconData => {
let name = iconData._attributes.id;
let shape = iconData.path[1]._attributes.d;
let icon = metadata[name] || {};
icon._id = Random.id();
icon.name = name;
icon.shape = shape;
icons.push(icon);
});
writeIcons.call(icons);
};
reader.readAsText(file);
}
// Get metadata here:
// https://gist.github.com/ThaumRystra/ffb264dea8c32e15de95f775596194a4
// It is probably out of date though
export function importIconMetadata(file) {
let reader = new FileReader();
reader.onload = function () {
metadata = JSON.parse(reader.result);
console.log(metadata);
};
reader.readAsText(file);
}