icon.cjs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. 'use strict';
  2. const icon_defaults = require('../icon/defaults.cjs');
  3. const css_common = require('./common.cjs');
  4. const css_format = require('./format.cjs');
  5. require('../svg/html.cjs');
  6. require('../svg/size.cjs');
  7. require('../svg/url.cjs');
  8. require('../icon/square.cjs');
  9. require('../svg/build.cjs');
  10. require('../customisations/defaults.cjs');
  11. require('../svg/defs.cjs');
  12. function getIconCSS(icon, options = {}) {
  13. const body = options.customise ? options.customise(icon.body) : icon.body;
  14. const mode = options.mode || (options.color || !body.includes("currentColor") ? "background" : "mask");
  15. let varName = options.varName;
  16. if (varName === void 0 && mode === "mask") {
  17. varName = "svg";
  18. }
  19. const newOptions = {
  20. ...options,
  21. // Override mode and varName
  22. mode,
  23. varName
  24. };
  25. if (mode === "background") {
  26. delete newOptions.varName;
  27. }
  28. const rules = {
  29. ...options.rules,
  30. ...css_common.getCommonCSSRules(newOptions),
  31. ...css_common.generateItemCSSRules(
  32. {
  33. ...icon_defaults.defaultIconProps,
  34. ...icon,
  35. body
  36. },
  37. newOptions
  38. )
  39. };
  40. const selector = options.iconSelector || ".icon";
  41. return css_format.formatCSS(
  42. [
  43. {
  44. selector,
  45. rules
  46. }
  47. ],
  48. newOptions.format
  49. );
  50. }
  51. function getIconContentCSS(icon, options) {
  52. const body = options.customise ? options.customise(icon.body) : icon.body;
  53. const content = css_common.generateItemContent(
  54. {
  55. ...icon_defaults.defaultIconProps,
  56. ...icon,
  57. body
  58. },
  59. options
  60. );
  61. const selector = options.iconSelector || ".icon::after";
  62. return css_format.formatCSS(
  63. [
  64. {
  65. selector,
  66. rules: {
  67. ...options.rules,
  68. content
  69. }
  70. }
  71. ],
  72. options.format
  73. );
  74. }
  75. exports.getIconCSS = getIconCSS;
  76. exports.getIconContentCSS = getIconContentCSS;