png.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import axios from '@/http';
  2. import { parseSvg } from '@meta2d/svg';
  3. import { cdn } from './api';
  4. import { filename } from './file';
  5. export async function getFolders(name: string, isSvg?: boolean) {
  6. const path = name;
  7. const folders: any = await axios.post('/api/assets/folders', {
  8. path,
  9. });
  10. if (!folders || !folders.list) {
  11. return [];
  12. }
  13. const files: any = await axios.post('/api/assets/files', {
  14. path,
  15. });
  16. const results = [];
  17. for (const item of folders.list) {
  18. let name = item;
  19. if (folders.prefix) {
  20. const temp = name.split('/');
  21. name = temp[temp.length - 2];
  22. }
  23. const list = [];
  24. for (const f of files.list) {
  25. if (f.indexOf(item) >= 0) {
  26. const temp = f.split('/');
  27. const name = filename(temp[temp.length - 1]);
  28. const elem: any = {
  29. name,
  30. image: cdn + '/' + f,
  31. isSvg,
  32. };
  33. list.push(elem);
  34. }
  35. }
  36. results.push({ name, list });
  37. }
  38. return results;
  39. }
  40. export async function makeSvg(elem: any) {
  41. const svgDom: string = await axios.get(elem.image);
  42. let _svgDom = svgDom.replaceAll('#333;', '#fff;');
  43. elem.svg = _svgDom;
  44. elem.data = parseSvg(_svgDom);
  45. }