52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| Object.defineProperty(exports, "__esModule", {
 | |
|   value: true
 | |
| });
 | |
| exports.default = void 0;
 | |
| const importPattern = /^:import\(("[^"]*"|'[^']*'|[^"']+)\)$/;
 | |
| 
 | |
| const getDeclsObject = rule => {
 | |
|   const object = {};
 | |
|   rule.walkDecls(decl => {
 | |
|     const before = decl.raws.before ? decl.raws.before.trim() : "";
 | |
|     object[before + decl.prop] = decl.value;
 | |
|   });
 | |
|   return object;
 | |
| };
 | |
| 
 | |
| const extractICSS = (css, removeRules = true) => {
 | |
|   const icssImports = {};
 | |
|   const icssExports = {};
 | |
|   css.each(node => {
 | |
|     if (node.type === "rule") {
 | |
|       if (node.selector.slice(0, 7) === ":import") {
 | |
|         const matches = importPattern.exec(node.selector);
 | |
| 
 | |
|         if (matches) {
 | |
|           const path = matches[1].replace(/'|"/g, "");
 | |
|           icssImports[path] = Object.assign(icssImports[path] || {}, getDeclsObject(node));
 | |
| 
 | |
|           if (removeRules) {
 | |
|             node.remove();
 | |
|           }
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       if (node.selector === ":export") {
 | |
|         Object.assign(icssExports, getDeclsObject(node));
 | |
| 
 | |
|         if (removeRules) {
 | |
|           node.remove();
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   });
 | |
|   return {
 | |
|     icssImports,
 | |
|     icssExports
 | |
|   };
 | |
| };
 | |
| 
 | |
| var _default = extractICSS;
 | |
| exports.default = _default; | 
