@csstools/postcss-text-decoration-shorthand 2.2.1 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changes to PostCSS Text Decoration Shorthand
2
2
 
3
+ ### 2.2.2 (March 25, 2023)
4
+
5
+ - Add `color-mix` as a known color function.
6
+
3
7
  ### 2.2.1 (February 13, 2023)
4
8
 
5
9
  - Updated: `preserve` option defaults to `true`
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("@csstools/color-helpers"),t=require("postcss-value-parser");const creator=e=>{const l=Object.assign({preserve:!0},e);return{postcssPlugin:"postcss-text-decoration-shorthand",prepare(){const e=new Map;return{OnceExit:()=>{e.clear()},Declaration:i=>{if("text-decoration"!==i.prop.toLowerCase())return;const a=i.parent.index(i);if(i.parent.nodes.some((t=>"decl"===t.type&&"text-decoration"===t.prop.toLowerCase()&&e.get(i.value)===t.value&&i.parent.index(t)!==a)))return;const c=t(i.value),u=c.nodes.filter((e=>"space"!==e.type&&"comment"!==e.type));if(u.find((e=>"var"===e.value.toLowerCase()&&"function"===e.type)))return;if(u.find((e=>"word"===e.type&&o.includes(e.value))))return;const p={line:[],style:null,color:null,thickness:null};for(let e=0;e<u.length;e++){const o=u[e];if(p.line.length||"word"!==o.type||!r.includes(o.value.toLowerCase()))if(p.line.length||"word"!==o.type||"none"!==o.value.toLowerCase())if(p.style||"word"!==o.type||!n.includes(o.value.toLowerCase()))if(p.thickness||"word"!==o.type||!s.includes(o.value.toLowerCase()))if(p.thickness||"function"!==o.type||"calc"!==o.value.toLowerCase())if(p.color||!nodeIsAColor(o)){if("word"!==o.type)return;{let e;try{e=t.unit(o.value)}catch(e){return}if(!e||!e.unit)return;p.thickness=o,"%"===e.unit&&(p.thickness={type:"function",value:"calc",nodes:[{type:"word",value:"0.01em"},{type:"space",value:" "},{type:"word",value:"*"},{type:"space",value:" "},{type:"word",value:e.number}]})}}else p.color=o;else p.thickness=o;else p.thickness=o;else p.style=o;else p.line.push(o);else{const t=o;let n=o;for(;;){const t=u[e+1];if(!t||"word"!==t.type||!r.includes(t.value.toLowerCase()))break;n=t,e++}p.line=c.nodes.slice(c.nodes.indexOf(t),c.nodes.indexOf(n)+1)}}p.line.length||p.line.push({type:"word",value:"none"}),p.style||(p.style={type:"word",value:"solid"}),p.color||(p.color={type:"word",value:"currentColor"});const d=t.stringify(p.line);if(i.value.toLowerCase()===d.toLowerCase()){const e=i.next();return void(e&&"decl"===e.type&&"text-decoration"===e.prop.toLowerCase()||i.cloneBefore({prop:"-webkit-text-decoration",value:d}))}i.cloneBefore({prop:"text-decoration",value:d});const v=t.stringify([...p.line,{type:"space",value:" "},p.style,{type:"space",value:" "},p.color]);p.thickness&&i.cloneBefore({prop:"text-decoration",value:v}),p.thickness&&i.cloneBefore({prop:"text-decoration-thickness",value:t.stringify([p.thickness])}),e.set(i.value,d),e.set(v,d),l.preserve||i.remove()}}}}};function nodeIsAColor(e){return!("word"!==e.type||!e.value.startsWith("#"))||(!("word"!==e.type||!i.includes(e.value.toLowerCase()))||!("function"!==e.type||!l.includes(e.value.toLowerCase())))}creator.postcss=!0;const o=["unset","inherit","initial","revert","revert-layer"],r=["underline","overline","line-through","blink","spelling-error","grammar-error"],n=["solid","double","dotted","dashed","wavy"],s=["auto","from-font"],l=["rgb","rgba","hsl","hsla","hwb","lch","lab","color","oklch","oklab"],i=["currentcolor","transparent",...Object.keys(e.namedColors)];module.exports=creator;
1
+ "use strict";var e=require("@csstools/color-helpers"),o=require("postcss-value-parser");const creator=e=>{const l=Object.assign({preserve:!0},e);return{postcssPlugin:"postcss-text-decoration-shorthand",prepare(){const e=new Map;return{OnceExit:()=>{e.clear()},Declaration:c=>{if("text-decoration"!==c.prop.toLowerCase())return;const a=c.parent;if(!a)return;const u=a.index(c);if(a.nodes.some((o=>"decl"===o.type&&"text-decoration"===o.prop.toLowerCase()&&e.get(c.value)===o.value&&a.index(o)!==u)))return;const i=o(c.value),d=i.nodes.filter((e=>"space"!==e.type&&"comment"!==e.type));if(d.find((e=>"var"===e.value.toLowerCase()&&"function"===e.type)))return;if(d.find((e=>"word"===e.type&&r.includes(e.value))))return;const p={line:[],style:null,color:null,thickness:null};for(let e=0;e<d.length;e++){const r=d[e];if(p.line.length||"word"!==r.type||!t.includes(r.value.toLowerCase()))if(p.line.length||"word"!==r.type||"none"!==r.value.toLowerCase())if(p.style||"word"!==r.type||!n.includes(r.value.toLowerCase()))if(p.thickness||"word"!==r.type||!s.includes(r.value.toLowerCase()))if(p.thickness||"function"!==r.type||"calc"!==r.value.toLowerCase())if(p.color||!nodeIsAColor(r)){if("word"!==r.type)return;{let e;try{e=o.unit(r.value)}catch(e){return}if(!e||!e.unit)return;p.thickness=r,"%"===e.unit&&(p.thickness={before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"function",value:"calc",nodes:[{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"0.01em"},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"*"},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:e.number}]})}}else p.color=r;else p.thickness=r;else p.thickness=r;else p.style=r;else p.line.push(r);else{const o=r;let n=r;for(;;){const o=d[e+1];if(!o||"word"!==o.type||!t.includes(o.value.toLowerCase()))break;n=o,e++}p.line=i.nodes.slice(i.nodes.indexOf(o),i.nodes.indexOf(n)+1)}}p.line.length||p.line.push({before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"none"}),p.style||(p.style={before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"solid"}),p.color||(p.color={before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"currentColor"});const f=o.stringify(p.line);if(c.value.toLowerCase()===f.toLowerCase()){const e=c.next();return void(e&&"decl"===e.type&&"text-decoration"===e.prop.toLowerCase()||c.cloneBefore({prop:"-webkit-text-decoration",value:f}))}c.cloneBefore({prop:"text-decoration",value:f});const v=o.stringify([...p.line,{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},p.style,{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},p.color]);p.thickness&&c.cloneBefore({prop:"text-decoration",value:v}),p.thickness&&c.cloneBefore({prop:"text-decoration-thickness",value:o.stringify([p.thickness])}),e.set(c.value,f),e.set(v,f),l.preserve||c.remove()}}}}};function nodeIsAColor(e){return!("word"!==e.type||!e.value.startsWith("#"))||(!("word"!==e.type||!c.includes(e.value.toLowerCase()))||!("function"!==e.type||!l.includes(e.value.toLowerCase())))}creator.postcss=!0;const r=["unset","inherit","initial","revert","revert-layer"],t=["underline","overline","line-through","blink","spelling-error","grammar-error"],n=["solid","double","dotted","dashed","wavy"],s=["auto","from-font"],l=["color","color-mix","hsl","hsla","hwb","lab","lch","oklab","oklch","rgb","rgba"],c=["currentcolor","transparent",...Object.keys(e.namedColors)];module.exports=creator;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{namedColors as e}from"@csstools/color-helpers";import t from"postcss-value-parser";const creator=e=>{const l=Object.assign({preserve:!0},e);return{postcssPlugin:"postcss-text-decoration-shorthand",prepare(){const e=new Map;return{OnceExit:()=>{e.clear()},Declaration:a=>{if("text-decoration"!==a.prop.toLowerCase())return;const i=a.parent.index(a);if(a.parent.nodes.some((t=>"decl"===t.type&&"text-decoration"===t.prop.toLowerCase()&&e.get(a.value)===t.value&&a.parent.index(t)!==i)))return;const c=t(a.value),u=c.nodes.filter((e=>"space"!==e.type&&"comment"!==e.type));if(u.find((e=>"var"===e.value.toLowerCase()&&"function"===e.type)))return;if(u.find((e=>"word"===e.type&&o.includes(e.value))))return;const p={line:[],style:null,color:null,thickness:null};for(let e=0;e<u.length;e++){const o=u[e];if(p.line.length||"word"!==o.type||!r.includes(o.value.toLowerCase()))if(p.line.length||"word"!==o.type||"none"!==o.value.toLowerCase())if(p.style||"word"!==o.type||!n.includes(o.value.toLowerCase()))if(p.thickness||"word"!==o.type||!s.includes(o.value.toLowerCase()))if(p.thickness||"function"!==o.type||"calc"!==o.value.toLowerCase())if(p.color||!nodeIsAColor(o)){if("word"!==o.type)return;{let e;try{e=t.unit(o.value)}catch(e){return}if(!e||!e.unit)return;p.thickness=o,"%"===e.unit&&(p.thickness={type:"function",value:"calc",nodes:[{type:"word",value:"0.01em"},{type:"space",value:" "},{type:"word",value:"*"},{type:"space",value:" "},{type:"word",value:e.number}]})}}else p.color=o;else p.thickness=o;else p.thickness=o;else p.style=o;else p.line.push(o);else{const t=o;let n=o;for(;;){const t=u[e+1];if(!t||"word"!==t.type||!r.includes(t.value.toLowerCase()))break;n=t,e++}p.line=c.nodes.slice(c.nodes.indexOf(t),c.nodes.indexOf(n)+1)}}p.line.length||p.line.push({type:"word",value:"none"}),p.style||(p.style={type:"word",value:"solid"}),p.color||(p.color={type:"word",value:"currentColor"});const d=t.stringify(p.line);if(a.value.toLowerCase()===d.toLowerCase()){const e=a.next();return void(e&&"decl"===e.type&&"text-decoration"===e.prop.toLowerCase()||a.cloneBefore({prop:"-webkit-text-decoration",value:d}))}a.cloneBefore({prop:"text-decoration",value:d});const v=t.stringify([...p.line,{type:"space",value:" "},p.style,{type:"space",value:" "},p.color]);p.thickness&&a.cloneBefore({prop:"text-decoration",value:v}),p.thickness&&a.cloneBefore({prop:"text-decoration-thickness",value:t.stringify([p.thickness])}),e.set(a.value,d),e.set(v,d),l.preserve||a.remove()}}}}};function nodeIsAColor(e){return!("word"!==e.type||!e.value.startsWith("#"))||(!("word"!==e.type||!a.includes(e.value.toLowerCase()))||!("function"!==e.type||!l.includes(e.value.toLowerCase())))}creator.postcss=!0;const o=["unset","inherit","initial","revert","revert-layer"],r=["underline","overline","line-through","blink","spelling-error","grammar-error"],n=["solid","double","dotted","dashed","wavy"],s=["auto","from-font"],l=["rgb","rgba","hsl","hsla","hwb","lch","lab","color","oklch","oklab"],a=["currentcolor","transparent",...Object.keys(e)];export{creator as default};
1
+ import{namedColors as e}from"@csstools/color-helpers";import o from"postcss-value-parser";const creator=e=>{const l=Object.assign({preserve:!0},e);return{postcssPlugin:"postcss-text-decoration-shorthand",prepare(){const e=new Map;return{OnceExit:()=>{e.clear()},Declaration:c=>{if("text-decoration"!==c.prop.toLowerCase())return;const a=c.parent;if(!a)return;const u=a.index(c);if(a.nodes.some((o=>"decl"===o.type&&"text-decoration"===o.prop.toLowerCase()&&e.get(c.value)===o.value&&a.index(o)!==u)))return;const i=o(c.value),d=i.nodes.filter((e=>"space"!==e.type&&"comment"!==e.type));if(d.find((e=>"var"===e.value.toLowerCase()&&"function"===e.type)))return;if(d.find((e=>"word"===e.type&&r.includes(e.value))))return;const p={line:[],style:null,color:null,thickness:null};for(let e=0;e<d.length;e++){const r=d[e];if(p.line.length||"word"!==r.type||!t.includes(r.value.toLowerCase()))if(p.line.length||"word"!==r.type||"none"!==r.value.toLowerCase())if(p.style||"word"!==r.type||!n.includes(r.value.toLowerCase()))if(p.thickness||"word"!==r.type||!s.includes(r.value.toLowerCase()))if(p.thickness||"function"!==r.type||"calc"!==r.value.toLowerCase())if(p.color||!nodeIsAColor(r)){if("word"!==r.type)return;{let e;try{e=o.unit(r.value)}catch(e){return}if(!e||!e.unit)return;p.thickness=r,"%"===e.unit&&(p.thickness={before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"function",value:"calc",nodes:[{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"0.01em"},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"*"},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:e.number}]})}}else p.color=r;else p.thickness=r;else p.thickness=r;else p.style=r;else p.line.push(r);else{const o=r;let n=r;for(;;){const o=d[e+1];if(!o||"word"!==o.type||!t.includes(o.value.toLowerCase()))break;n=o,e++}p.line=i.nodes.slice(i.nodes.indexOf(o),i.nodes.indexOf(n)+1)}}p.line.length||p.line.push({before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"none"}),p.style||(p.style={before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"solid"}),p.color||(p.color={before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"word",value:"currentColor"});const f=o.stringify(p.line);if(c.value.toLowerCase()===f.toLowerCase()){const e=c.next();return void(e&&"decl"===e.type&&"text-decoration"===e.prop.toLowerCase()||c.cloneBefore({prop:"-webkit-text-decoration",value:f}))}c.cloneBefore({prop:"text-decoration",value:f});const v=o.stringify([...p.line,{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},p.style,{before:"",after:"",sourceIndex:0,sourceEndIndex:0,type:"space",value:" "},p.color]);p.thickness&&c.cloneBefore({prop:"text-decoration",value:v}),p.thickness&&c.cloneBefore({prop:"text-decoration-thickness",value:o.stringify([p.thickness])}),e.set(c.value,f),e.set(v,f),l.preserve||c.remove()}}}}};function nodeIsAColor(e){return!("word"!==e.type||!e.value.startsWith("#"))||(!("word"!==e.type||!c.includes(e.value.toLowerCase()))||!("function"!==e.type||!l.includes(e.value.toLowerCase())))}creator.postcss=!0;const r=["unset","inherit","initial","revert","revert-layer"],t=["underline","overline","line-through","blink","spelling-error","grammar-error"],n=["solid","double","dotted","dashed","wavy"],s=["auto","from-font"],l=["color","color-mix","hsl","hsla","hwb","lab","lch","oklab","oklch","rgb","rgba"],c=["currentcolor","transparent",...Object.keys(e)];export{creator as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@csstools/postcss-text-decoration-shorthand",
3
3
  "description": "Use text-decoration in it's shorthand form in CSS",
4
- "version": "2.2.1",
4
+ "version": "2.2.2",
5
5
  "contributors": [
6
6
  {
7
7
  "name": "Antonio Laguna",
@@ -46,19 +46,15 @@
46
46
  "postcss": "^8.4"
47
47
  },
48
48
  "devDependencies": {
49
+ "@csstools/postcss-tape": "*",
49
50
  "autoprefixer": "^10.4.8"
50
51
  },
51
52
  "scripts": {
52
- "prebuild": "npm run clean",
53
53
  "build": "rollup -c ../../rollup/default.mjs",
54
- "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true }); fs.mkdirSync('./dist');\"",
55
54
  "docs": "node ../../.github/bin/generate-docs/install.mjs && node ../../.github/bin/generate-docs/readme.mjs",
56
- "lint": "npm run lint:eslint && npm run lint:package-json",
57
- "lint:eslint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
58
- "lint:package-json": "node ../../.github/bin/format-package-json.mjs",
59
- "prepublishOnly": "npm run clean && npm run build && npm run test",
60
- "test": "node .tape.mjs && npm run test:exports",
61
- "test:exports": "node ./test/_import.mjs && node ./test/_require.cjs",
55
+ "lint": "node ../../.github/bin/format-package-json.mjs",
56
+ "prepublishOnly": "npm run build && npm run test",
57
+ "test": "node .tape.mjs && node ./test/_import.mjs && node ./test/_require.cjs",
62
58
  "test:rewrite-expects": "REWRITE_EXPECTS=true node .tape.mjs"
63
59
  },
64
60
  "homepage": "https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-text-decoration-shorthand#readme",