index.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _path = _interopRequireDefault(require("path"));
  7. var _utils = require("./utils");
  8. var _options = _interopRequireDefault(require("./options.json"));
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  10. const loaderAPI = () => {};
  11. loaderAPI.pitch = function loader(request) {
  12. const options = this.getOptions(_options.default);
  13. const injectType = options.injectType || "styleTag";
  14. const esModule = typeof options.esModule !== "undefined" ? options.esModule : true;
  15. const runtimeOptions = {};
  16. if (options.attributes) {
  17. runtimeOptions.attributes = options.attributes;
  18. }
  19. if (options.base) {
  20. runtimeOptions.base = options.base;
  21. }
  22. const insertType = typeof options.insert === "function" ? "function" : options.insert && _path.default.isAbsolute(options.insert) ? "module-path" : "selector";
  23. const styleTagTransformType = typeof options.styleTagTransform === "function" ? "function" : options.styleTagTransform && _path.default.isAbsolute(options.styleTagTransform) ? "module-path" : "default";
  24. switch (injectType) {
  25. case "linkTag":
  26. {
  27. const hmrCode = this.hot ? (0, _utils.getLinkHmrCode)(esModule, this, request) : "";
  28. return `
  29. ${(0, _utils.getImportLinkAPICode)(esModule, this)}
  30. ${(0, _utils.getImportInsertBySelectorCode)(esModule, this, insertType, options)}
  31. ${(0, _utils.getImportLinkContentCode)(esModule, this, request)}
  32. ${esModule ? "" : `content = content.__esModule ? content.default : content;`}
  33. var options = ${JSON.stringify(runtimeOptions)};
  34. ${(0, _utils.getInsertOptionCode)(insertType, options)}
  35. var update = API(content, options);
  36. ${hmrCode}
  37. ${esModule ? "export default {}" : ""}`;
  38. }
  39. case "lazyStyleTag":
  40. case "lazyAutoStyleTag":
  41. case "lazySingletonStyleTag":
  42. {
  43. const isSingleton = injectType === "lazySingletonStyleTag";
  44. const isAuto = injectType === "lazyAutoStyleTag";
  45. const hmrCode = this.hot ? (0, _utils.getStyleHmrCode)(esModule, this, request, true) : "";
  46. return `
  47. var exported = {};
  48. ${(0, _utils.getImportStyleAPICode)(esModule, this)}
  49. ${(0, _utils.getImportStyleDomAPICode)(esModule, this, isSingleton, isAuto)}
  50. ${(0, _utils.getImportInsertBySelectorCode)(esModule, this, insertType, options)}
  51. ${(0, _utils.getSetAttributesCode)(esModule, this, options)}
  52. ${(0, _utils.getImportInsertStyleElementCode)(esModule, this)}
  53. ${(0, _utils.getStyleTagTransformFnCode)(esModule, this, options, isSingleton, styleTagTransformType)}
  54. ${(0, _utils.getImportStyleContentCode)(esModule, this, request)}
  55. ${isAuto ? (0, _utils.getImportIsOldIECode)(esModule, this) : ""}
  56. ${esModule ? `if (content && content.locals) {
  57. exported.locals = content.locals;
  58. }
  59. ` : `content = content.__esModule ? content.default : content;
  60. exported.locals = content.locals || {};`}
  61. var refs = 0;
  62. var update;
  63. var options = ${JSON.stringify(runtimeOptions)};
  64. ${(0, _utils.getStyleTagTransformFn)(options, isSingleton)};
  65. options.setAttributes = setAttributes;
  66. ${(0, _utils.getInsertOptionCode)(insertType, options)}
  67. options.domAPI = ${(0, _utils.getdomAPI)(isAuto)};
  68. options.insertStyleElement = insertStyleElement;
  69. exported.use = function(insertOptions) {
  70. options.options = insertOptions || {};
  71. if (!(refs++)) {
  72. update = API(content, options);
  73. }
  74. return exported;
  75. };
  76. exported.unuse = function() {
  77. if (refs > 0 && !--refs) {
  78. update();
  79. update = null;
  80. }
  81. };
  82. ${hmrCode}
  83. ${(0, _utils.getExportLazyStyleCode)(esModule, this, request)}
  84. `;
  85. }
  86. case "styleTag":
  87. case "autoStyleTag":
  88. case "singletonStyleTag":
  89. default:
  90. {
  91. const isSingleton = injectType === "singletonStyleTag";
  92. const isAuto = injectType === "autoStyleTag";
  93. const hmrCode = this.hot ? (0, _utils.getStyleHmrCode)(esModule, this, request, false) : "";
  94. return `
  95. ${(0, _utils.getImportStyleAPICode)(esModule, this)}
  96. ${(0, _utils.getImportStyleDomAPICode)(esModule, this, isSingleton, isAuto)}
  97. ${(0, _utils.getImportInsertBySelectorCode)(esModule, this, insertType, options)}
  98. ${(0, _utils.getSetAttributesCode)(esModule, this, options)}
  99. ${(0, _utils.getImportInsertStyleElementCode)(esModule, this)}
  100. ${(0, _utils.getStyleTagTransformFnCode)(esModule, this, options, isSingleton, styleTagTransformType)}
  101. ${(0, _utils.getImportStyleContentCode)(esModule, this, request)}
  102. ${isAuto ? (0, _utils.getImportIsOldIECode)(esModule, this) : ""}
  103. ${esModule ? "" : `content = content.__esModule ? content.default : content;`}
  104. var options = ${JSON.stringify(runtimeOptions)};
  105. ${(0, _utils.getStyleTagTransformFn)(options, isSingleton)};
  106. options.setAttributes = setAttributes;
  107. ${(0, _utils.getInsertOptionCode)(insertType, options)}
  108. options.domAPI = ${(0, _utils.getdomAPI)(isAuto)};
  109. options.insertStyleElement = insertStyleElement;
  110. var update = API(content, options);
  111. ${hmrCode}
  112. ${(0, _utils.getExportStyleCode)(esModule, this, request)}
  113. `;
  114. }
  115. }
  116. };
  117. var _default = loaderAPI;
  118. exports.default = _default;