aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/cssstyle/lib/utils/camelize.js
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/cssstyle/lib/utils/camelize.js')
-rw-r--r--vanilla/node_modules/cssstyle/lib/utils/camelize.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/vanilla/node_modules/cssstyle/lib/utils/camelize.js b/vanilla/node_modules/cssstyle/lib/utils/camelize.js
new file mode 100644
index 0000000..19aaf7d
--- /dev/null
+++ b/vanilla/node_modules/cssstyle/lib/utils/camelize.js
@@ -0,0 +1,37 @@
+"use strict";
+
+const { asciiLowercase } = require("./strings");
+
+// Utility to translate from `border-width` to `borderWidth`.
+// NOTE: For values prefixed with webkit, e.g. `-webkit-foo`, we need to provide
+// both `webkitFoo` and `WebkitFoo`. Here we only return `webkitFoo`.
+exports.dashedToCamelCase = function (dashed) {
+ if (dashed.startsWith("--")) {
+ return dashed;
+ }
+ let camel = "";
+ let nextCap = false;
+ // skip leading hyphen in vendor prefixed value, e.g. -webkit-foo
+ let i = /^-webkit-/.test(dashed) ? 1 : 0;
+ for (; i < dashed.length; i++) {
+ if (dashed[i] !== "-") {
+ camel += nextCap ? dashed[i].toUpperCase() : dashed[i];
+ nextCap = false;
+ } else {
+ nextCap = true;
+ }
+ }
+ return camel;
+};
+
+// Utility to translate from `borderWidth` to `border-width`.
+exports.camelCaseToDashed = function (camelCase) {
+ if (camelCase.startsWith("--")) {
+ return camelCase;
+ }
+ const dashed = asciiLowercase(camelCase.replace(/(?<=[a-z])[A-Z]/g, "-$&"));
+ if (/^webkit-/.test(dashed)) {
+ return `-${dashed}`;
+ }
+ return dashed;
+};