loader.cjs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. 'use strict';
  2. const loader_custom = require('./custom.cjs');
  3. const loader_modern = require('./modern.cjs');
  4. require('debug');
  5. require('./utils.cjs');
  6. require('../svg/build.cjs');
  7. require('../icon/defaults.cjs');
  8. require('../customisations/defaults.cjs');
  9. require('../svg/size.cjs');
  10. require('../svg/defs.cjs');
  11. require('../svg/trim.cjs');
  12. require('../icon-set/get-icon.cjs');
  13. require('../icon/merge.cjs');
  14. require('../icon/transformations.cjs');
  15. require('../icon-set/tree.cjs');
  16. const loadIcon = async (collection, icon, options) => {
  17. const custom = options?.customCollections?.[collection];
  18. if (custom) {
  19. if (typeof custom === "function") {
  20. let result;
  21. try {
  22. result = await custom(icon);
  23. } catch (err) {
  24. console.warn(
  25. `Failed to load custom icon "${icon}" in "${collection}":`,
  26. err
  27. );
  28. return;
  29. }
  30. if (result) {
  31. if (typeof result === "string") {
  32. return await loader_custom.getCustomIcon(
  33. () => result,
  34. collection,
  35. icon,
  36. options
  37. );
  38. }
  39. if ("icons" in result) {
  40. const ids = [
  41. icon,
  42. icon.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(),
  43. icon.replace(/([a-z])(\d+)/g, "$1-$2")
  44. ];
  45. return await loader_modern.searchForIcon(
  46. result,
  47. collection,
  48. ids,
  49. options
  50. );
  51. }
  52. }
  53. } else {
  54. return await loader_custom.getCustomIcon(custom, collection, icon, options);
  55. }
  56. }
  57. };
  58. exports.loadIcon = loadIcon;