"use strict";var e=require("postcss-value-parser"),t=require("path"),r=require("url"),o=require("postcss"),s=require("fs");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=n(e),c=n(t);function u(e){const t=e.selector?e:e.parent;return/(!\s*)?postcss-custom-properties:\s*off\b/i.test(t.toString())}function l(e,t){const r=new Map,o=new Map,s=new Map;e.nodes.slice().forEach((e=>{const s=m(e)?r:w(e)?o:null;s&&(e.nodes.slice().forEach((e=>{if(e.variable&&!u(e)){const{prop:r}=e;s.set(r,a.default(e.value)),t.preserve||e.remove()}})),t.preserve||!v(e)||u(e)||e.remove())}));for(const[e,t]of r.entries())s.set(e,t);for(const[e,t]of o.entries())s.set(e,t);return s}const p=/^html$/i,f=/^:root$/i,m=e=>"rule"===e.type&&e.selector.split(",").some((e=>p.test(e)))&&Object(e.nodes).length,w=e=>"rule"===e.type&&e.selector.split(",").some((e=>f.test(e)))&&Object(e.nodes).length,v=e=>0===Object(e.nodes).length;function d(e){const t=new Map;if("customProperties"in e)for(const[r,o]of Object.entries(e.customProperties))t.set(r,a.default(o.toString()));if("custom-properties"in e)for(const[r,o]of Object.entries(e["custom-properties"]))t.set(r,a.default(o.toString()));return t}async function y(e){let t;try{t=await(o=e,Promise.resolve().then((function(){return i(require(o))})))}catch(o){t=await function(e){return Promise.resolve().then((function(){return i(require(e))}))}(r.pathToFileURL(e).href)}var o;return d("default"in t?t.default:t)}async function j(e){const t=(await Promise.all(e.map((async e=>{if(e instanceof Promise?e=await e:e instanceof Function&&(e=await e()),"string"==typeof e){const t=c.default.resolve(e);return{type:c.default.extname(t).slice(1).toLowerCase(),from:t}}if("customProperties"in e&&Object(e.customProperties)===e.customProperties)return e;if("custom-properties"in e&&Object(e["custom-properties"])===e["custom-properties"])return e;if("from"in e){const t=c.default.resolve(e.from);let r=e.type;return r||(r=c.default.extname(t).slice(1).toLowerCase()),{type:r,from:t}}return Object.keys(e).length,null})))).filter((e=>!!e)),r=await Promise.all(t.map((async e=>{if("type"in e&&"from"in e){if("css"===e.type||"pcss"===e.type)return await async function(e){const t=await s.promises.readFile(e);return l(o.parse(t,{from:e.toString()}),{preserve:!0})}(e.from);if("js"===e.type||"cjs"===e.type)return await y(e.from);if("mjs"===e.type)return await y(e.from);if("json"===e.type)return await async function(e){return d(await O(e))}(e.from);throw new Error("Invalid source type: "+e.type)}return d(e)}))),n=new Map;return r.forEach((e=>{for(const[t,r]of e.entries())n.set(t,r)})),n}const O=async e=>JSON.parse((await s.promises.readFile(e)).toString());function h(e,t){return e.nodes&&e.nodes.length&&e.nodes.slice().forEach((r=>{if(b(r)){const[o,...s]=r.nodes.filter((e=>"div"!==e.type)),{value:n}=o,i=e.nodes.indexOf(r);if(t.has(n)){const r=t.get(n).nodes;!function(e,t,r){const o=new Map(t);o.delete(r),h(e,o)}({nodes:r},t,n),i>-1&&e.nodes.splice(i,1,...r)}else s.length&&(i>-1&&e.nodes.splice(i,1,...s),h(e,t))}else h(r,t)})),e.toString()}const g=/^var$/i,b=e=>"function"===e.type&&g.test(e.value)&&Object(e.nodes).length>0;var $=(e,t,r)=>{if(F(e)&&!function(e){const t=e.prev();return Boolean(u(e)||t&&"comment"===t.type&&/(!\s*)?postcss-custom-properties:\s*ignore\s+next\b/i.test(t.text))}(e)){const o=e.value;let s=h(a.default(o),t);const n=new Set;for(;x.test(s)&&!n.has(s);){n.add(s);s=h(a.default(s),t)}if(s!==o)if(r.preserve){const t=e.cloneBefore({value:s});S(t)&&(t.raws.value.value=t.value.replace(E,"$1"),t.raws.value.raw=t.raws.value.value+t.raws.value.raw.replace(E,"$2"))}else e.value=s,S(e)&&(e.raws.value.value=e.value.replace(E,"$1"),e.raws.value.raw=e.raws.value.value+e.raws.value.raw.replace(E,"$2"))}};const P=/^--[A-z][\w-]*$/,x=/(^|[^\w-])var\([\W\w]+\)/,F=e=>!P.test(e.prop)&&x.test(e.value),S=e=>"value"in Object(Object(e.raws).value)&&"raw"in e.raws.value&&E.test(e.raws.value.raw),E=/^([\W\w]+)(\s*\/\*[\W\w]+?\*\/)$/;async function M(e,t,r){"css"===t&&await async function(e,t){const r=`:root {\n${Object.keys(t).reduce(((e,r)=>(e.push(`\t${r}: ${t[r]};`),e)),[]).join("\n")}\n}\n`;await s.promises.writeFile(e,r)}(e,r),"scss"===t&&await async function(e,t){const r=`${Object.keys(t).reduce(((e,r)=>{const o=r.replace("--","$");return e.push(`${o}: ${t[r]};`),e}),[]).join("\n")}\n`;await s.promises.writeFile(e,r)}(e,r),"js"===t&&await async function(e,t){const r=`module.exports = {\n\tcustomProperties: {\n${Object.keys(t).reduce(((e,r)=>(e.push(`\t\t'${k(r)}': '${k(t[r])}'`),e)),[]).join(",\n")}\n\t}\n};\n`;await s.promises.writeFile(e,r)}(e,r),"json"===t&&await async function(e,t){const r=`${JSON.stringify({"custom-properties":t},null,"  ")}\n`;await s.promises.writeFile(e,r)}(e,r),"mjs"===t&&await async function(e,t){const r=`export const customProperties = {\n${Object.keys(t).reduce(((e,r)=>(e.push(`\t'${k(r)}': '${k(t[r])}'`),e)),[]).join(",\n")}\n};\n`;await s.promises.writeFile(e,r)}(e,r)}function q(e){const t={};for(const[r,o]of e.entries())t[r]=o.toString();return t}const k=e=>e.replace(/\\([\s\S])|(')/g,"\\$1$2").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),A=e=>{const t=!("preserve"in Object(e))||Boolean(e.preserve),r="overrideImportFromWithRoot"in Object(e)&&Boolean(e.overrideImportFromWithRoot);let o=[];Array.isArray(null==e?void 0:e.importFrom)?o=e.importFrom:null!=e&&e.importFrom&&(o=[e.importFrom]);let s=[];Array.isArray(null==e?void 0:e.exportTo)?s=e.exportTo:null!=e&&e.exportTo&&(s=[e.exportTo]);const n=j(o);let i=new Map;const a=0===o.length&&0===s.length;return{postcssPlugin:"postcss-custom-properties",prepare:()=>a?{Once:e=>{i=l(e,{preserve:t})},Declaration:e=>{$(e,i,{preserve:t})},OnceExit:()=>{i.clear()}}:{Once:async e=>{const o=(await n).entries(),a=l(e,{preserve:t}).entries();if(r)for(const[e,t]of[...o,...a])i.set(e,t);else for(const[e,t]of[...a,...o])i.set(e,t);await function(e,t){return Promise.all(t.map((async t=>{if(t instanceof Function)return void await t(q(e));if("string"==typeof t){const r=c.default.resolve(t),o=c.default.extname(r).slice(1).toLowerCase();return void await M(r,o,q(e))}let r={};if(r="toJSON"in t?t.toJSON(q(e)):q(e),"to"in t){const e=c.default.resolve(t.to);let o=t.type;return o||(o=c.default.extname(e).slice(1).toLowerCase()),void await M(e,o,r)}"customProperties"in t?t.customProperties=r:"custom-properties"in t&&(t["custom-properties"]=r)})))}(i,s)},Declaration:e=>{$(e,i,{preserve:t})},OnceExit:()=>{i.clear()}}}};A.postcss=!0,module.exports=A;