UNPKG

perfectionist-dfd

Version:

Beautify and/or normalize CSS files. Fork and update of a fork and update of an archived project.

2 lines (1 loc) 7.83 kB
import e,{list as r}from"postcss";import{createRequire as t}from"module";import n from"postcss-value-parser";import a from"defined";import"string.prototype.repeat";const o=n.unit;const s=["px","em","rem","ex","ch","vh","vw","cm","mm","in","pt","pc","vmin","vmax"];function l(e,r){var t;(function(e){if("#"!==e.value[0])return!1;const r=e.value.slice(1);return~[3,4,6,8].indexOf(r.length)&&!isNaN(parseInt(r,16))})(e)&&("upper"===r.colorCase&&(e.value=e.value.toUpperCase()),"lower"===r.colorCase&&(e.value=e.value.toLowerCase()),!0===r.colorShorthand&&(e.value=7===(t=e.value).length&&t[1]===t[2]&&t[3]===t[4]&&t[5]===t[6]?"#"+t[2]+t[4]+t[6]:t),!1===r.colorShorthand&&(e.value=function(e){if(4!==e.length)return e;const r=e[1],t=e[2],n=e[3];return"#"+r+r+t+t+n+n}(e.value)));const n=o(e.value);if(n){if(!0===r.zeroLengthNoUnit&&~s.indexOf(n.unit.toLowerCase())&&0===Number(n.number))return void(e.value="0");const t=n.number.split(".");let a=t[0],o=t.slice(1).join(".");if(!0===r.trimLeadingZero&&t[1]?a=a.replace(/^0+/,""):!1!==r.trimLeadingZero||a.length||(a=0),!0===r.trimTrailingZeros&&t[1]){const e=String(Number(a+"."+o)).split(".")[1];o=e?"."+e:""}else!1===r.trimTrailingZeros&&t[1]&&(o="."+t[1]);e.value=a+o+n.unit}}function i(e){return a(e,"")}function p({nodes:e}){return e&&e.some((({nodes:e})=>e))}function u(e,r=" "){return r.repeat(e)}function f(e,r=" ",t=4){let n=0,{parent:a}=e;for(;a&&"root"!==a.type;)n++,a=a.parent;return u(n*t,r)}function c({parent:e,prop:r}){return"root"===e.type&&"$"===r[0]}function w(e,t,n){const{breakEvery:a,reindent:o,reduce:s,max:l}={reindent:!1,...n},i=e[t];if(!l||!i)return;const p=r.comma(i);if(i.length>l||s){let r=0;"function"==typeof o&&(r=o(e)),e[t]=p.reduce(((e,t)=>{if(a)return e.push(t),e;if(e[e.length-1].length+r<=l){const n=`${e[e.length-1]}, ${t}`;if(r+n.length<=l)return e[e.length-1]=n,e}return e.push(t),e}),[p.shift()]).join(",\n"+u(r))}}function d(e,r){return w(e,"selector",{max:r.maxSelectorLength,reduce:!0,reindent:function(e){return f(e,r.indentChar,r.indentSize).length}})}function m(e,r){e.nodes.forEach(((t,n)=>{const a=r(t,n,e);t.nodes&&!1!==a&&m(t,r)}))}var v=(e,r)=>r.prop.length-e.prop.length;const b=["ah","apple","atsc","epub","hp","khtml","moz","ms","o","rim","ro","tc","wap","webkit","xv"].map((e=>`-${e}-`));function h(e){return e.replace(/^-\w+-/,"")}function y(e,r){e.walk((t=>{const{raws:a,type:o}=t;if("decl"===o){a.value&&(t.value=a.value.raw.trim()),c(t)&&(t!==e.first&&(t.raws.before="\n"),t.raws.between=": ");const o=n(t.value);m(o,((e,t,n)=>{const a=n.nodes[t+1];"function"===e.type&&(e.before=e.after=""),"div"===e.type&&","===e.value&&(e.before="",e.after=" "),"space"===e.type&&(e.value=" "),"word"===e.type&&"!"===e.value&&n.nodes[t+2]&&"space"===a.type&&"word"===n.nodes[t+2].type&&(a.type="word",a.value=""),"word"===e.type&&l(e,r)})),t.value=o.toString(),t.important&&(t.raws.important=" !important"),a.value&&(t.raws.value.raw=t.value)}let s=f(t,r.indentChar,r.indentSize);if("comment"!==o){var p;if(t.raws.before=s+i(t.raws.before),"rule"!==o&&"atrule"!==o||(t.nodes?t.raws.between=" ":t.raws.between="",t.raws.semicolon=!0,t.nodes&&(t.raws.after="\n")),r.cascade&&"rule"===o&&t.nodes.length>1){let e=[];(function({nodes:e}){return e.filter((e=>b.some((r=>e.prop&&!e.prop.indexOf(r)))))})(t).sort(v).filter((({prop:r})=>{let t=h(r);return!~e.indexOf(t)&&e.push(t)})).forEach((e=>{let r=h(e.prop),n=e.prop.replace(r,"").length;t.nodes.filter((({prop:e})=>e&&~e.indexOf(r))).forEach((e=>{let t=e.prop.replace(r,"").length,a=n-t;a>0&&(e.raws.before=u(a)+i(e.raws.before))}))}))}if(a.selector&&a.selector.raw&&(t.selector=t.raws.selector.raw),d(t,r),"atrule"===o&&(t.params&&(t.raws.afterName=" "),function(e,{maxAtRuleLength:r}){w(e,"params",{max:r,breakEvery:!0,reindent:function(e){return e.name.length+2}})}(t,r)),"decl"===o&&(/\/\*(.*?)\*\//gms.test(t.raws.between)||(t.raws.between=": "),function(e,{maxValueLength:r}){e.raws.value&&e.raws.value.raw&&(e.value=e.raws.value.raw),w(e,"value",{max:r,breakEvery:!0,reindent:function(e){return f(e).length+e.prop.length+2}})}(t,r)),t.parent&&"root"!==t.parent.type&&(t.raws.before="\n"+i(t.raws.before),t.raws.after="\n"+s),t.parent&&t!==t.parent.first&&("rule"===o||"atrule"===o)){if("atrule"===o&&!t.nodes)return void(t.raws.before="\n"+s);t.raws.before="\n\n"+s}}else{let r=t.prev();if(r&&"decl"===r.type&&(p=t,r.source.end.line===p.source.start.line?t.raws.before=" "+i(t.raws.before):t.raws.before="\n"+s+i(t.raws.before)),r||t===e.first||(t.raws.before="\n"+s+i(t.raws.before)),t.parent&&"root"===t.parent.type){let r=t.next();r&&(r.raws.before="\n\n"),t!==e.first&&(t.raws.before="\n\n")}}})),e.raws.after="\n"}const g=t(import.meta.url);function x(e,r={}){var t=r;return Object.keys(e).forEach((n=>{void 0===r[n]&&(t[n]=e[n])})),t}const S={cascade:!0,colorCase:"lower",colorShorthand:!0,format:"expanded",from:void 0,indentSize:4,indentChar:" ",maxAtRuleLength:80,maxSelectorLength:80,maxValueLength:80,trimLeadingZero:!0,trimTrailingZeros:!0,zeroLengthNoUnit:!0},L=(e={})=>(e=x(S,e),{postcssPlugin:"perfectionist-dfd",postcssVersion:"8.0.0",Once(r){switch(r.walk((e=>{e.raws.before&&(e.raws.before=e.raws.before.replace(/[;\s]/g,""))})),e.format){case"compact":!function(e,r){e.walk((t=>{if("decl"===t.type){t.raws.value&&(t.value=t.raws.value.raw.trim()),c(t)&&(t.raws.before="",t.raws.between=": ");const e=n(t.value);m(e,((e,t,n)=>{const a=n.nodes[t+1];"div"===e.type&&","===e.value&&(e.before="",e.after=" "),"function"===e.type&&(e.before=e.after=" "),"space"===e.type&&(e.value=" "),"word"===e.type&&"!"===e.value&&n.nodes[t+2]&&"space"===a.type&&"word"===n.nodes[t+2].type&&(a.type="word",a.value=""),"word"===e.type&&l(e,r)})),t.value=e.toString(),t.important&&(t.raws.important=" !important"),t.raws.value&&(t.raws.value.raw=t.value)}if(r.indentSize=1,"comment"===t.type){t.raws.inline&&(t.raws.inline=null);let r=t.prev();if(r&&"decl"===r.type&&(t.raws.before=" "+i(t.raws.before)),t.parent&&"root"===t.parent.type){let r=t.next();r&&(r.raws.before="\n"),t!==e.first&&(t.raws.before="\n")}return}let a=f(t,r.indentChar,r.indentSize),o=p(t);if("rule"!==t.type&&"atrule"!==t.type||(t.nodes?t.raws.between=" ":t.raws.between="",t.raws.after=" ",t.raws.before=a+i(t.raws.before),t.raws.semicolon=!0),t.raws.selector&&t.raws.selector.raw&&(t.selector=t.raws.selector.raw),d(t,r),"decl"===t.type){if(p(t.parent)){let r=t===e.first?"":"\n";t.raws.before=r+a+i(t.raws.before)}else t.raws.before=" "+i(t.raws.before);/\/\*(.*?)\*\//gms.test(t.raws.between)||(t.raws.between=": ")}(o||t.nodes)&&t!==e.first&&(t.raws.before="\n "),o&&(t.raws.after="\n"+a),!t.parent||t===t.parent.first||"rule"!==t.type&&"atrule"!==t.type||(t.raws.before="\n"+a)})),e.raws.after="\n"}(r,e);break;case"compressed":!function(e,r){e.walk((e=>{const{raws:t,type:a}=e;if(e.raws.semicolon=!1,"comment"===a&&t.inline&&(e.raws.inline=null),"rule"!==a&&"atrule"!==a||(e.raws.between=e.raws.after=""),"decl"!==a||/\/\*(.*?)\*\//gms.test(t.between)||(e.raws.between=":"),"decl"===e.type){t.value&&(e.value=t.value.raw.trim());const a=n(e.value);m(a,((e,t,n)=>{const a=n.nodes[t+1];("div"===e.type&&","===e.value||"function"===e.type)&&(e.before=e.after=""),"space"===e.type&&(e.value=" ","word"===a.type&&"!"===a.value[0]&&(e.value="")),"word"===e.type&&"!"===e.value&&n.nodes[t+2]&&"space"===a.type&&"word"===n.nodes[t+2].type&&(a.type="word",a.value=""),"word"===e.type&&l(e,r)})),e.value=a.toString(),c(e)&&(e.raws.before=""),e.important&&(e.raws.important="!important"),t.value&&(e.raws.value.raw=e.value)}})),e.raws.after=""}(r,e);break;default:y(r,e)}}});L.postcss=!0,L.process=(r,t={})=>(t=x({from:void 0,map:void 0,sourcemap:void 0,syntax:void 0,to:void 0},t),(t=x(S,t)).map=t.map||!!t.sourcemap||void 0,"scss"===t.syntax&&(t.syntax=g("postcss-scss")),e([L(t)]).process(r,t));export{L as default};