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) • 8.15 kB
JavaScript
;var e=require("postcss"),r=require("module"),t=require("postcss-value-parser"),n=require("defined");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("string.prototype.repeat");var o=a(e),s=a(t),l=a(n);const i=s.default.unit;const u=["px","em","rem","ex","ch","vh","vw","cm","mm","in","pt","pc","vmin","vmax"];function f(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=i(e.value);if(n){if(!0===r.zeroLengthNoUnit&&~u.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 p(e){return l.default(e,"")}function c({nodes:e}){return e&&e.some((({nodes:e})=>e))}function w(e,r=" "){return r.repeat(e)}function d(e,r=" ",t=4){let n=0,{parent:a}=e;for(;a&&"root"!==a.type;)n++,a=a.parent;return w(n*t,r)}function v({parent:e,prop:r}){return"root"===e.type&&"$"===r[0]}function m(r,t,n){const{breakEvery:a,reindent:o,reduce:s,max:l}={reindent:!1,...n},i=r[t];if(!l||!i)return;const u=e.list.comma(i);if(i.length>l||s){let e=0;"function"==typeof o&&(e=o(r)),r[t]=u.reduce(((r,t)=>{if(a)return r.push(t),r;if(r[r.length-1].length+e<=l){const n=`${r[r.length-1]}, ${t}`;if(e+n.length<=l)return r[r.length-1]=n,r}return r.push(t),r}),[u.shift()]).join(",\n"+w(e))}}function b(e,r){return m(e,"selector",{max:r.maxSelectorLength,reduce:!0,reindent:function(e){return d(e,r.indentChar,r.indentSize).length}})}function h(e,r){e.nodes.forEach(((t,n)=>{const a=r(t,n,e);t.nodes&&!1!==a&&h(t,r)}))}var y=(e,r)=>r.prop.length-e.prop.length;const g=["ah","apple","atsc","epub","hp","khtml","moz","ms","o","rim","ro","tc","wap","webkit","xv"].map((e=>`-${e}-`));function x(e){return e.replace(/^-\w+-/,"")}function S(e,r){e.walk((t=>{const{raws:n,type:a}=t;if("decl"===a){n.value&&(t.value=n.value.raw.trim()),v(t)&&(t!==e.first&&(t.raws.before="\n"),t.raws.between=": ");const a=s.default(t.value);h(a,((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&&f(e,r)})),t.value=a.toString(),t.important&&(t.raws.important=" !important"),n.value&&(t.raws.value.raw=t.value)}let o=d(t,r.indentChar,r.indentSize);if("comment"!==a){var l;if(t.raws.before=o+p(t.raws.before),"rule"!==a&&"atrule"!==a||(t.nodes?t.raws.between=" ":t.raws.between="",t.raws.semicolon=!0,t.nodes&&(t.raws.after="\n")),r.cascade&&"rule"===a&&t.nodes.length>1){let e=[];(function({nodes:e}){return e.filter((e=>g.some((r=>e.prop&&!e.prop.indexOf(r)))))})(t).sort(y).filter((({prop:r})=>{let t=x(r);return!~e.indexOf(t)&&e.push(t)})).forEach((e=>{let r=x(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=w(a)+p(e.raws.before))}))}))}if(n.selector&&n.selector.raw&&(t.selector=t.raws.selector.raw),b(t,r),"atrule"===a&&(t.params&&(t.raws.afterName=" "),function(e,{maxAtRuleLength:r}){m(e,"params",{max:r,breakEvery:!0,reindent:function(e){return e.name.length+2}})}(t,r)),"decl"===a&&(/\/\*(.*?)\*\//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),m(e,"value",{max:r,breakEvery:!0,reindent:function(e){return d(e).length+e.prop.length+2}})}(t,r)),t.parent&&"root"!==t.parent.type&&(t.raws.before="\n"+p(t.raws.before),t.raws.after="\n"+o),t.parent&&t!==t.parent.first&&("rule"===a||"atrule"===a)){if("atrule"===a&&!t.nodes)return void(t.raws.before="\n"+o);t.raws.before="\n\n"+o}}else{let r=t.prev();if(r&&"decl"===r.type&&(l=t,r.source.end.line===l.source.start.line?t.raws.before=" "+p(t.raws.before):t.raws.before="\n"+o+p(t.raws.before)),r||t===e.first||(t.raws.before="\n"+o+p(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 L=r.createRequire("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("perfectionist-dfd.min.js",document.baseURI).href);function k(e,r={}){var t=r;return Object.keys(e).forEach((n=>{void 0===r[n]&&(t[n]=e[n])})),t}const C={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},z=(e={})=>(e=k(C,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()),v(t)&&(t.raws.before="",t.raws.between=": ");const e=s.default(t.value);h(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&&f(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=" "+p(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 n=d(t,r.indentChar,r.indentSize),a=c(t);if("rule"!==t.type&&"atrule"!==t.type||(t.nodes?t.raws.between=" ":t.raws.between="",t.raws.after=" ",t.raws.before=n+p(t.raws.before),t.raws.semicolon=!0),t.raws.selector&&t.raws.selector.raw&&(t.selector=t.raws.selector.raw),b(t,r),"decl"===t.type){if(c(t.parent)){let r=t===e.first?"":"\n";t.raws.before=r+n+p(t.raws.before)}else t.raws.before=" "+p(t.raws.before);/\/\*(.*?)\*\//gms.test(t.raws.between)||(t.raws.between=": ")}(a||t.nodes)&&t!==e.first&&(t.raws.before="\n "),a&&(t.raws.after="\n"+n),!t.parent||t===t.parent.first||"rule"!==t.type&&"atrule"!==t.type||(t.raws.before="\n"+n)})),e.raws.after="\n"}(r,e);break;case"compressed":!function(e,r){e.walk((e=>{const{raws:t,type:n}=e;if(e.raws.semicolon=!1,"comment"===n&&t.inline&&(e.raws.inline=null),"rule"!==n&&"atrule"!==n||(e.raws.between=e.raws.after=""),"decl"!==n||/\/\*(.*?)\*\//gms.test(t.between)||(e.raws.between=":"),"decl"===e.type){t.value&&(e.value=t.value.raw.trim());const n=s.default(e.value);h(n,((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&&f(e,r)})),e.value=n.toString(),v(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:S(r,e)}}});z.postcss=!0,z.process=(e,r={})=>(r=k({from:void 0,map:void 0,sourcemap:void 0,syntax:void 0,to:void 0},r),(r=k(C,r)).map=r.map||!!r.sourcemap||void 0,"scss"===r.syntax&&(r.syntax=L("postcss-scss")),o.default([z(r)]).process(e,r)),module.exports=z;