diff --git a/docs/homepage.md b/docs/homepage.md
index 8e226492..b1d2a5ec 100644
--- a/docs/homepage.md
+++ b/docs/homepage.md
@@ -6,7 +6,7 @@
[](https://www.npmjs.com/package/mlut)
[](https://x.com/mlutcss)
-Atomic CSS toolkit with Sass and ergonomics for creating styles of any complexity
Get almost all power of CSS in one utility!
+Atomic CSS toolkit with Sass and ergonomics for creating styles of any complexity.
Make CSS exciting again!
diff --git a/package-lock.json b/package-lock.json
index 04bdaa24..1922d8c3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -475,9 +475,10 @@
}
},
"node_modules/@bufbuild/protobuf": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.9.0.tgz",
- "integrity": "sha512-W7gp8Q/v1NlCZLsv8pQ3Y0uCu/SHgXOVFK+eUluUKWXmsb6VHkpNx0apdOWWcDbB9sJoKeP8uPrjmehJz6xETQ=="
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.9.0.tgz",
+ "integrity": "sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==",
+ "license": "(Apache-2.0 AND BSD-3-Clause)"
},
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
@@ -1269,6 +1270,302 @@
"node": ">= 8"
}
},
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.39.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz",
@@ -3754,6 +4051,12 @@
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true
},
+ "node_modules/colorjs.io": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz",
+ "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==",
+ "license": "MIT"
+ },
"node_modules/commander": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
@@ -4467,7 +4770,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
- "dev": true,
+ "devOptional": true,
"bin": {
"detect-libc": "bin/detect-libc.js"
},
@@ -10473,6 +10776,13 @@
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
"dev": true
},
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -12591,13 +12901,14 @@
"dev": true
},
"node_modules/sass": {
- "version": "1.77.4",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.4.tgz",
- "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==",
- "dev": true,
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.0.tgz",
+ "integrity": "sha512-CQi5/AzCwiubU3dSqRDJ93RfOfg/hhpW1l6wCIvolmehfwgCI35R/0QDs1+R+Ygrl8jFawwwIojE2w47/mf94A==",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
@@ -12605,212 +12916,221 @@
},
"engines": {
"node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
}
},
"node_modules/sass-embedded": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.77.2.tgz",
- "integrity": "sha512-luiDeWNZ0tKs1jCiSFbuz8wFVQxYqN+vh+yfm9v7kW42yPtwEF8+z2ROaDJluSUZ7vhFmsXuqoKg9qBxc7SCnw==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.93.0.tgz",
+ "integrity": "sha512-dQACVfrbwKtvnrA0xH67YAdUYi6k7XcPg8uNF3DPf/VaJMQzduE1z5w3NFa9oVjtqXM4+FA9P7Qdv06Bzf614g==",
+ "license": "MIT",
"dependencies": {
- "@bufbuild/protobuf": "^1.0.0",
+ "@bufbuild/protobuf": "^2.5.0",
"buffer-builder": "^0.2.0",
- "immutable": "^4.0.0",
+ "colorjs.io": "^0.5.0",
+ "immutable": "^5.0.2",
"rxjs": "^7.4.0",
"supports-color": "^8.1.1",
+ "sync-child-process": "^1.0.2",
"varint": "^6.0.0"
},
+ "bin": {
+ "sass": "dist/bin/sass.js"
+ },
"engines": {
"node": ">=16.0.0"
},
"optionalDependencies": {
- "sass-embedded-android-arm": "1.77.2",
- "sass-embedded-android-arm64": "1.77.2",
- "sass-embedded-android-ia32": "1.77.2",
- "sass-embedded-android-x64": "1.77.2",
- "sass-embedded-darwin-arm64": "1.77.2",
- "sass-embedded-darwin-x64": "1.77.2",
- "sass-embedded-linux-arm": "1.77.2",
- "sass-embedded-linux-arm64": "1.77.2",
- "sass-embedded-linux-ia32": "1.77.2",
- "sass-embedded-linux-musl-arm": "1.77.2",
- "sass-embedded-linux-musl-arm64": "1.77.2",
- "sass-embedded-linux-musl-ia32": "1.77.2",
- "sass-embedded-linux-musl-x64": "1.77.2",
- "sass-embedded-linux-x64": "1.77.2",
- "sass-embedded-win32-arm64": "1.77.2",
- "sass-embedded-win32-ia32": "1.77.2",
- "sass-embedded-win32-x64": "1.77.2"
+ "sass-embedded-all-unknown": "1.93.0",
+ "sass-embedded-android-arm": "1.93.0",
+ "sass-embedded-android-arm64": "1.93.0",
+ "sass-embedded-android-riscv64": "1.93.0",
+ "sass-embedded-android-x64": "1.93.0",
+ "sass-embedded-darwin-arm64": "1.93.0",
+ "sass-embedded-darwin-x64": "1.93.0",
+ "sass-embedded-linux-arm": "1.93.0",
+ "sass-embedded-linux-arm64": "1.93.0",
+ "sass-embedded-linux-musl-arm": "1.93.0",
+ "sass-embedded-linux-musl-arm64": "1.93.0",
+ "sass-embedded-linux-musl-riscv64": "1.93.0",
+ "sass-embedded-linux-musl-x64": "1.93.0",
+ "sass-embedded-linux-riscv64": "1.93.0",
+ "sass-embedded-linux-x64": "1.93.0",
+ "sass-embedded-unknown-all": "1.93.0",
+ "sass-embedded-win32-arm64": "1.93.0",
+ "sass-embedded-win32-x64": "1.93.0"
+ }
+ },
+ "node_modules/sass-embedded-all-unknown": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.93.0.tgz",
+ "integrity": "sha512-fBTnh5qgOyw0CGVaF2iPsIIRj40D9Mnf19WerixjmWwmYKaGhxd62STsuMt6t1dWS5lkUZWRgrJ+2biQiEcCBg==",
+ "cpu": [
+ "!arm",
+ "!arm64",
+ "!riscv64",
+ "!x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "sass": "1.93.0"
}
},
"node_modules/sass-embedded-android-arm": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.77.2.tgz",
- "integrity": "sha512-rMuIMZ/FstMrT9Y23LDgQGpCyfe3i10dJnmW+DVJ9Gqz4dR7qpysEBIQXU35mHVq8ppNZ0yGiFlFZTSiiVMdzQ==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.93.0.tgz",
+ "integrity": "sha512-oMm6RafXdpWDejufUs+GcgBSS/wa/iG1zRhwsCrkIkMLhqa34oN7xLkNs9Ieg337nlIryUBijwAVMFlAs/mgIg==",
"cpu": [
"arm"
],
+ "license": "MIT",
"optional": true,
"os": [
"android"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded-android-arm64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.77.2.tgz",
- "integrity": "sha512-7DiFMros5iRYrkPlNqUBfzZ/DCgsI199pRF8xuBsPf9yuB8SLDOqvNk3QOnUCMAbpjW5VW1JgdfGFFlHTCnJQA==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.93.0.tgz",
+ "integrity": "sha512-bwU+0uWUVoATaYAb9mnDj7GCEnNAIrinzT4UlA6GlicH+ELEZlNwVjaPJfdCyyYs8iOKuzUPfZrFZuwRCsXXqw==",
"cpu": [
"arm64"
],
+ "license": "MIT",
"optional": true,
"os": [
"android"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/sass-embedded-android-ia32": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.77.2.tgz",
- "integrity": "sha512-qN0laKrAjuvBLFdUogGz8jQlbHs6tgH91tKQeE7ZE4AO9zzDRlXtaEJP1x6B6AGVc8UOEkvQyR3Nej4qwWprhA==",
+ "node_modules/sass-embedded-android-riscv64": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.93.0.tgz",
+ "integrity": "sha512-lKk7elql2abYeLY+wNBW8DB13W8An9JWlAr/BWOAtluz1RMsPVZwv0amQiP2PcR6HA02QDoLfRE/QpnPDHzCuw==",
"cpu": [
- "ia32"
+ "riscv64"
],
+ "license": "MIT",
"optional": true,
"os": [
"android"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded-android-x64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.77.2.tgz",
- "integrity": "sha512-HByqtC5g5hOaJenWs4Klx6gFEIZYx+IEFh5K56U+wB+jd6EU32Lrnbdxy1+i/p/kZrd+23HrVHQPv8zpmxucaw==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.93.0.tgz",
+ "integrity": "sha512-wuyphs1VMS/PRXtCBLhA0bVo5nyKFCXKaVKMbqPylOTvoTHe7u0zxjWRN4eF5LTPVuQp0A+LYgJz07duzxwJew==",
"cpu": [
"x64"
],
+ "license": "MIT",
"optional": true,
"os": [
"android"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded-darwin-arm64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.77.2.tgz",
- "integrity": "sha512-0jkL/FwbAStqqxFSjHfhElEAWrKRRvFz2JeXOxskUdzMehDMv5LaewqSRCijyeKBO3KgurvndmSfrOizdU6WAw==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.93.0.tgz",
+ "integrity": "sha512-lEb5J/jabesh16xdocRFgpzIa8GAZCLrdKtUnGbn9a4Y4WkEKHtUkvAm9ZtqE8YiuIm8PwHW/zBUKtZYoGYoYA==",
"cpu": [
"arm64"
],
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded-darwin-x64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.77.2.tgz",
- "integrity": "sha512-8Sy36IxOOFPWA5TdhC87SvOkrXUSis51CGKlIsM8yZISQiY9y8b+wrNJM1f3oHvs641xZBaeIuwibJXaY6hNBg==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.93.0.tgz",
+ "integrity": "sha512-mo9OfKyNF6MiFf711c+QGR7aPpFqAC9FttiLKPYH3RRBZQZU/UcG4mbg+yXfKbhZrJmYngbGiTzE9B+xiOz27Q==",
"cpu": [
"x64"
],
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded-linux-arm": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.77.2.tgz",
- "integrity": "sha512-/gtCseBkGCBw61p6MG2BqeYy8rblffw2KXUzMKjo9Hlqj/KajWDk7j1B+mVnqrHOPB/KBbm8Ym/2ooCYpnMIkQ==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.93.0.tgz",
+ "integrity": "sha512-wtO2vB8rMc5zF29xwC3AMgmBgNgm3i3/8zog5vQBD4yddqCJ93JcWDjdUqYmq0H/DLD/Z7q91j6X/YgPq1WuEg==",
"cpu": [
"arm"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded-linux-arm64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.77.2.tgz",
- "integrity": "sha512-hlfNFu1IWHI0cOsbpFWPrJlx7IFZfXuI3iEhwa4oljM21y72E6tETUFmTr4f9Ka9qDLXkUxUoYaTH2SqGU9dDA==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.93.0.tgz",
+ "integrity": "sha512-bJclpjTeP/qCu7zYLZQXROx4xIT3x+qfj/q92fripV9L9Oj2khfUm+2nW0Cq7DS6UrHphrWZ9QSnVYFhkCKtEA==",
"cpu": [
"arm64"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/sass-embedded-linux-ia32": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.77.2.tgz",
- "integrity": "sha512-JSIqGIeAKlrMw/oMFFFxZ10F3QUJVdjeGVI83h6mwNHTYgrX6PuOngcAYleIpYR5XicQgfueC5pPVPbP5CArBQ==",
+ "node_modules/sass-embedded-linux-musl-arm": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.93.0.tgz",
+ "integrity": "sha512-mMGAy+2VLLTMDPDG/mfzMmoy09potXp/ZRPRsyJEYVjF0rQij6Iss3qsZbCjVJa4atLwBtPJ14M0NvqpAa2WIg==",
"cpu": [
- "ia32"
+ "arm"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/sass-embedded-linux-musl-arm": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.77.2.tgz",
- "integrity": "sha512-LZTSnfHPlfvkdQ8orpnEUCEx40qhKpMjxN3Ggi8kgQqv5jvtqn0ECdWl0n4WI5CrlkmtdS3VeFcsf078bt/f8Q==",
+ "node_modules/sass-embedded-linux-musl-arm64": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.93.0.tgz",
+ "integrity": "sha512-VH0zFGqsTy+lThHAm3y8Dpd/X4nC5DLJvk66+mJTg7rwblRhfPpsVO6n8QHeN5ZV1ATTnLh/PbZ7uEPiyAg2wg==",
"cpu": [
- "arm"
+ "arm64"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -12819,13 +13139,14 @@
"node": ">=14.0.0"
}
},
- "node_modules/sass-embedded-linux-musl-arm64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.77.2.tgz",
- "integrity": "sha512-JQZuONuhIurKjc/qE9cTiJXSLixL8hGkalWN3LJHasYHVAU92QA/t8rv0T51vIzf/I2F59He3bapkPme60dwSw==",
+ "node_modules/sass-embedded-linux-musl-riscv64": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.93.0.tgz",
+ "integrity": "sha512-/a+MvExFEKvwPXyZsQ8b1DWYJMpTnXSdwpe9pDNkdTIcliMAtP952krCx14nBP0UqqNoU/TetyMR8H0WwyeJEA==",
"cpu": [
- "arm64"
+ "riscv64"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -12834,13 +13155,14 @@
"node": ">=14.0.0"
}
},
- "node_modules/sass-embedded-linux-musl-ia32": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.77.2.tgz",
- "integrity": "sha512-6F1GHBgPkcTXtfM0MK3PofozagNF8IawdfIG4RNzGeSZRhGBRgZLOS+vdre4xubTLSaa6xjbI47YfaD43z8URQ==",
+ "node_modules/sass-embedded-linux-musl-x64": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.93.0.tgz",
+ "integrity": "sha512-o168nV9QI5U+2LFBMmMecWzu6yJ7WJZZfQGlo4Frvg9vC3Em3W02GfAel+g9leJg+0PDnpJLqOsPdrngg25T/Q==",
"cpu": [
- "ia32"
+ "x64"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -12849,13 +13171,14 @@
"node": ">=14.0.0"
}
},
- "node_modules/sass-embedded-linux-musl-x64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.77.2.tgz",
- "integrity": "sha512-8BiqLA1NJeN3rCaX6t747GWMMdH5YUFYuytXU8waDC/u+FSGoOHRxfrsB8BEWHVgSPDxhwZklanPCXXzbzB2lw==",
+ "node_modules/sass-embedded-linux-riscv64": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.93.0.tgz",
+ "integrity": "sha512-KYHED49coJQT633cBbqBfBOPmRe3yNbE+D2kqMONADBqzGyxHZpQRStCenhPmDabVLI4fgc3fn//6ubqH724jA==",
"cpu": [
- "x64"
+ "riscv64"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -12865,81 +13188,74 @@
}
},
"node_modules/sass-embedded-linux-x64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.77.2.tgz",
- "integrity": "sha512-czQOxGOX4U47jW9k+cbFBgSt/6FVx2WGLPqPvrgDiEToLJdZyvzUqrkpqQYfJ6hN1koqatCPEpDrUZBcTPGUGg==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.93.0.tgz",
+ "integrity": "sha512-9OD9OlZ61dmz/BbW4n29l3v74//ibiQCmWu8YBoXVgxxgcbi+2CFv+vRE8guA73BgEdPComw0tpgD1FkW3v12g==",
"cpu": [
"x64"
],
+ "license": "MIT",
"optional": true,
"os": [
"linux"
],
- "bin": {
- "sass": "dart-sass/sass"
- },
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/sass-embedded-win32-arm64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.77.2.tgz",
- "integrity": "sha512-NA+4Y5PO04YQGtKNCyLrUjQU2nijskVA3Er/UYGtx66BBlWZ/ttbnlk+dU05SF5Jhjb3HtThGGH1meb7pKA+OQ==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/sass-embedded-unknown-all": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.93.0.tgz",
+ "integrity": "sha512-Hh9OPBMg+i1g8OzQyOtQuJg/3ncup4Z+FHdXNzPIeFXcIeS+TVuVQyvJfnB+hYgvVGyBJ+9ekuUYzB+1zA82nw==",
+ "license": "MIT",
"optional": true,
"os": [
- "win32"
+ "!android",
+ "!darwin",
+ "!linux",
+ "!win32"
],
- "bin": {
- "sass": "dart-sass/sass.bat"
- },
- "engines": {
- "node": ">=14.0.0"
+ "dependencies": {
+ "sass": "1.93.0"
}
},
- "node_modules/sass-embedded-win32-ia32": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.77.2.tgz",
- "integrity": "sha512-/3hGz4GefhVuuUu2gSOdsxBYym5Di0co0tZbtiokCU/8VhYhcAQ3v2Lni49VV6OnsyJLb1nUx+rbpd8cKO1U4w==",
+ "node_modules/sass-embedded-win32-arm64": {
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.93.0.tgz",
+ "integrity": "sha512-3SNRTxBVk+c0Oyd4gCp4/KAQ+S6B9S5ihq5dxMMfWpvoQSUqn6mqhkEFrofG1oNlP7KsA2UzhTnFGDRid1An+A==",
"cpu": [
- "ia32"
+ "arm64"
],
+ "license": "MIT",
"optional": true,
"os": [
"win32"
],
- "bin": {
- "sass": "dart-sass/sass.bat"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded-win32-x64": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.77.2.tgz",
- "integrity": "sha512-joHLDICWmnR9Ca+LT9B+Fp85sCvV9F3gdtHtXLSuQAEulG5Ip1Z9euB3FUw+Z0s0Vz4MjNea+JD+TwO9eMrpyw==",
+ "version": "1.93.0",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.93.0.tgz",
+ "integrity": "sha512-6/RJGOdm3bwe71YJaYanQ81I6KA//T/a+MnKlRpP5zk5fy2ygAIGNeNr2ENEBu/KZCuFg7KY49g46v+hPKT6Ow==",
"cpu": [
"x64"
],
+ "license": "MIT",
"optional": true,
"os": [
"win32"
],
- "bin": {
- "sass": "dart-sass/sass.bat"
- },
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass-embedded/node_modules/immutable": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
- "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ=="
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz",
+ "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
+ "license": "MIT"
},
"node_modules/sass-embedded/node_modules/supports-color": {
"version": "8.1.1",
@@ -13004,11 +13320,42 @@
"decode-uri-component": "^0.2.0"
}
},
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
"node_modules/sass/node_modules/immutable": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
- "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
- "dev": true
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz",
+ "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
},
"node_modules/schema-utils": {
"version": "4.3.0",
@@ -14375,6 +14722,27 @@
"integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
"dev": true
},
+ "node_modules/sync-child-process": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz",
+ "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==",
+ "license": "MIT",
+ "dependencies": {
+ "sync-message-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/sync-message-port": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz",
+ "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/table": {
"version": "6.8.2",
"resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz",
@@ -16649,12 +17017,12 @@
},
"packages/core": {
"name": "@mlut/core",
- "version": "2.1.2",
+ "version": "2.1.3",
"license": "MIT",
"devDependencies": {
"@types/node": "^20.10.5",
- "sass": "^1.71.0",
- "sass-embedded": "^1.71.0",
+ "sass": "^1.93.0",
+ "sass-embedded": "^1.93.0",
"typescript": "^4.8.0"
}
},
@@ -16666,7 +17034,7 @@
"arg": "^5.0.2",
"csso": "^5.0.5",
"fast-glob": "^3.3.2",
- "sass-embedded": "^1.71.0",
+ "sass-embedded": "^1.93.0",
"watcher": "^2.3.0"
},
"bin": {
diff --git a/packages/core/package.json b/packages/core/package.json
index 415a84fc..15bb0423 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,11 +1,11 @@
{
"name": "@mlut/core",
- "version": "2.1.2",
+ "version": "2.1.3",
"description": "Atomic CSS toolkit with Sass and ergonomics for creating styles of any complexity",
"author": "mr150",
"type": "module",
"license": "MIT",
- "homepage": "https://mlutcss.github.io/mlut/",
+ "homepage": "https://mlut.style/",
"types": "dist/index.d.ts",
"keywords": [
"mlut",
@@ -41,8 +41,8 @@
],
"devDependencies": {
"@types/node": "^20.10.5",
- "sass-embedded": "^1.71.0",
- "sass": "^1.71.0",
+ "sass": "^1.93.0",
+ "sass-embedded": "^1.93.0",
"typescript": "^4.8.0"
}
}
diff --git a/packages/core/src/jit/JitEngine.ts b/packages/core/src/jit/JitEngine.ts
index bd780c00..da13c88b 100644
--- a/packages/core/src/jit/JitEngine.ts
+++ b/packages/core/src/jit/JitEngine.ts
@@ -22,7 +22,7 @@ export class JitEngine {
private inputFileCache = '@use "../sass/tools";';
private readonly defaultSassConfig =
'@use "sass:map";\n @use "../sass/tools/settings" as ml;';
- private readonly utilsByFile = new Map();
+ private readonly utilsByFile = new Map();
private readonly utilsRegexps = {
quotedContent: /"\n?[^"]*[^"\n]*\n?"/g,
singleQuotedContent: /'\n?[^']*[^'\n]*\n?'/g,
@@ -89,7 +89,16 @@ export class JitEngine {
return '';
}
- const allUniqueUtils = [...new Set([...this.utilsByFile.values()].flat())];
+ const mainUtils: string[][] = [];
+ const atRuleUtils: string[][] = [];
+
+ for (const [main, withAr] of this.utilsByFile.values()) {
+ mainUtils.push(main);
+ atRuleUtils.push(withAr);
+ }
+
+ const sortedAtRuleUtils = atRuleUtils.flat().sort(this.compareUtilsWithAtRule);
+ const allUniqueUtils = [...new Set(mainUtils.flat().concat(sortedAtRuleUtils))];
const applyStr =
`\n@include ${this.sassModuleName}.apply(${JSON.stringify(allUniqueUtils)},(),true);`;
@@ -103,7 +112,7 @@ export class JitEngine {
);
}
- private extractUtils(content: string): string[] {
+ private extractUtils(content: string): [string[], string[]] {
let fixedContent = content.replace(this.utilsRegexps.escapedQuotes, '');
const allClassNames = fixedContent
.match(this.utilsRegexps.quotedContent)
@@ -161,9 +170,7 @@ export class JitEngine {
return acc;
}, new Set())];
- return mainUtils.concat(
- [...utilsWithAtRule].sort(this.compareUtilsWithAtRule)
- );
+ return [mainUtils, [...utilsWithAtRule]];
}
private compareUtilsWithAtRule = (a: string, b: string): number => {
diff --git a/packages/mlut/README.md b/packages/mlut/README.md
index a77d6155..a2ef9570 100644
--- a/packages/mlut/README.md
+++ b/packages/mlut/README.md
@@ -6,7 +6,7 @@
[](https://www.npmjs.com/package/mlut)
[](https://x.com/mlutcss)
-Atomic CSS toolkit with Sass and ergonomics for creating styles of any complexity.
Get almost all power of CSS in one utility!
+Atomic CSS toolkit with Sass and ergonomics for creating styles of any complexity.
Make CSS exciting again!
## Table of Contents
diff --git a/packages/mlut/package.json b/packages/mlut/package.json
index 5b09d9aa..9e8f9299 100644
--- a/packages/mlut/package.json
+++ b/packages/mlut/package.json
@@ -5,7 +5,7 @@
"author": "mr150",
"type": "module",
"license": "MIT",
- "homepage": "https://mlutcss.github.io/mlut/",
+ "homepage": "https://mlut.style/",
"types": "dist/index.d.ts",
"keywords": [
"mlut",
@@ -54,7 +54,7 @@
"arg": "^5.0.2",
"csso": "^5.0.5",
"fast-glob": "^3.3.2",
- "sass-embedded": "^1.71.0",
+ "sass-embedded": "^1.93.0",
"watcher": "^2.3.0"
}
}
diff --git a/packages/plugins/package.json b/packages/plugins/package.json
index a6e31c97..c3d72645 100644
--- a/packages/plugins/package.json
+++ b/packages/plugins/package.json
@@ -5,7 +5,7 @@
"author": "mr150",
"type": "module",
"license": "MIT",
- "homepage": "https://mlutcss.github.io/mlut/",
+ "homepage": "https://mlut.style/",
"types": "dist/index.d.ts",
"keywords": [
"mlut",
diff --git a/test/jit/JitEngine.test.ts b/test/jit/JitEngine.test.ts
index 9b01defb..93e8f53e 100644
--- a/test/jit/JitEngine.test.ts
+++ b/test/jit/JitEngine.test.ts
@@ -11,6 +11,15 @@ describe('JitEngine', () => {
const htmlPath0 = '/tmp/mlut-test0.html';
const htmlPath1 = '/tmp/mlut-test1.html';
+
+ const tplContent0 = '';
+ const tplContent1 = '';
+ const tplContent2 = '';
+
+ const tplPath0 = 'section.ejs';
+ const tplPath1 = 'footer.ejs';
+ const tplPath2 = 'aside.ejs';
+
const sassInputPath = '/tmp/mlut-input.scss';
const sassInputContent = `
@@ -66,38 +75,49 @@ const wrapperCss = "M1u -Myvar=block \\"Ps\\" d-g";
//@ts-expect-error
jit.extractUtils(extractUtilsContent),
[
- 'D-n',
- 'Pb6u',
- 'Ps',
- '^one_Bgc-$bgColor?#c06_h',
- //eslint-disable-next-line
- "Ct-'id:';attr(id)_b",
- 'M1u',
- '-Myvar=block',
- 'D-f',
- 'Gap5u',
- 'Bgc#f00',
- 'D-ib',
- 'sm_Gc-s1',
- 'md_Mxh130vh',
- 'xl_D',
- 'md:lg_D-t',
- '@:pfrm_-Try0',
+ [
+ 'D-n',
+ 'Pb6u',
+ 'Ps',
+ '^one_Bgc-$bgColor?#c06_h',
+ //eslint-disable-next-line
+ "Ct-'id:';attr(id)_b",
+ 'M1u',
+ '-Myvar=block',
+ 'D-f',
+ 'Gap5u',
+ 'Bgc#f00',
+ 'D-ib',
+ ],
+ [
+ 'xl_D',
+ '@:pfrm_-Try0',
+ 'md:lg_D-t',
+ 'md_Mxh130vh',
+ 'sm_Gc-s1',
+ ],
],
);
+ //@ts-expect-error
+ const [utils, arUtils] = jit.extractUtils(utilsWithAtRules);
+
assert.deepEqual(
//@ts-expect-error
- jit.extractUtils(utilsWithAtRules),
+ [utils, arUtils.sort(jit.compareUtilsWithAtRule)],
[
- 'D',
- 'C-cc_h',
- ' {
+ const jit = new JitEngine();
+ await jit.init();
+
+ jit.putContent(tplPath0, tplContent0);
+ jit.putContent(tplPath1, tplContent1);
+ jit.putContent(tplPath2, tplContent2);
+
+ const result = await jit.generateCss();
+ const wUtilOnMdPos = result.indexOf('md_W100p');
+ const wUtilOnSmPos = result.indexOf('sm_W60p');
+ const pUtilOnMdPos = result.indexOf('lg_P10u');
+ const pUtilOnSmPos = result.indexOf('sm_P4u');
+
+ assert.isTrue(wUtilOnSmPos > -1 && pUtilOnSmPos > -1);
+ assert.isAbove(wUtilOnMdPos, wUtilOnSmPos);
+ assert.isAbove(pUtilOnMdPos, pUtilOnSmPos);
+ });
});
diff --git a/test/sass/tools/functions/utils/_convert-util-value.scss b/test/sass/tools/functions/utils/_convert-util-value.scss
index c1402586..2cc26bcd 100644
--- a/test/sass/tools/functions/utils/_convert-util-value.scss
+++ b/test/sass/tools/functions/utils/_convert-util-value.scss
@@ -105,7 +105,7 @@ ml.$utils-cfg: map.set(
(2u, 'P'): ml.su(2),
('16/9', 'Apcr'): string.unquote('16/9'),
('-1/3', 'Apcr'): string.unquote('-1/3'),
- (70p, 'O'): 0.7,
+ (70p, 'O'): 0.7000000000000001,
('-50p', 'O'): -0.5,
('0.8', 'O'): 0.8,
(1.5, 'W'): 1.5rem,
@@ -117,7 +117,7 @@ ml.$utils-cfg: map.set(
('-2gg', 'Ml'): calc(var(--ml-gg) * -2),
),
'converts fractions': (
- ('1/3', 'W'): 33.3333333333%,
+ ('1/3', 'W'): 33.33333333333333%,
('-1/4', 'Ml'): -25%,
('2/2.5', 'T'): 80%,
('1/$div', 'W'): calc(1 / var(--ml-div) * 100%),
diff --git a/test/sass/tools/functions/utils/_generate-uv-color-range.scss b/test/sass/tools/functions/utils/_generate-uv-color-range.scss
index 6f8c5b21..798893bb 100644
--- a/test/sass/tools/functions/utils/_generate-uv-color-range.scss
+++ b/test/sass/tools/functions/utils/_generate-uv-color-range.scss
@@ -139,12 +139,12 @@ $rgba-scale: ('rgb': 15%, 'alpha': 10%);
'prm0': #c06,
'prm0*90p': rgba(204, 0, 102, 0.9),
'prm0*81p': rgba(204, 0, 102, 0.81),
- 'prm50': #d4267d,
- 'prm50*90p': rgba(212, 38, 125, 0.9),
- 'prm50*81p': rgba(212, 38, 125, 0.81),
- 'prm100': #da4791,
- 'prm100*90p': rgba(218, 71, 145, 0.90),
- 'prm100*81p': rgba(218, 71, 145, 0.81),
+ 'prm50': rgb(211.65, 38.25, 124.95),
+ 'prm50*90p': rgba(211.65, 38.25, 124.95, 0.9),
+ 'prm50*81p': rgba(211.65, 38.25, 124.95, 0.81),
+ 'prm100': rgb(218.1525, 70.76249999999999, 144.4575),
+ 'prm100*90p': rgba(218.1525, 70.76249999999999, 144.4575, 0.9),
+ 'prm100*81p': rgba(218.1525, 70.76249999999999, 144.4575, 0.81),
)),
(['sec0', 3, $rgb-step5, meta.get-function('custom-color-change')], 'C'): (
'values': (