@rzl-zone/utils-js
Version:
A modern, lightweight set of JavaScript utility functions with TypeScript support for everyday development, crafted to enhance code readability and maintainability.
252 lines (243 loc) • 8.4 kB
JavaScript
/*!
* ====================================================
* Rzl Utils-JS.
* ----------------------------------------------------
* Version: 3.11.0.
* Author: Rizalvin Dwiky.
* Repository: https://github.com/rzl-zone/utils-js.
* ====================================================
*/
;
var chunkWLOQQFDS_cjs = require('./chunk-WLOQQFDS.cjs');
var chunkDLS3G6WQ_cjs = require('./chunk-DLS3G6WQ.cjs');
var chunkSYHPSOUU_cjs = require('./chunk-SYHPSOUU.cjs');
var tailwindMergeV3 = require('tailwind-merge-v3');
var tailwindMergeV4 = require('tailwind-merge-v4');
function toStringValue(value) {
let str = "";
if (chunkSYHPSOUU_cjs.isNonEmptyString(value) || chunkSYHPSOUU_cjs.isNumber(value)) {
str += value;
} else if (chunkSYHPSOUU_cjs.isObjectOrArray(value)) {
if (chunkSYHPSOUU_cjs.isStringObject(value) || chunkSYHPSOUU_cjs.isNumberObject(value) || chunkSYHPSOUU_cjs.isBooleanObject(value)) {
const val = value.valueOf();
if (val) str += val;
} else if (chunkSYHPSOUU_cjs.isArray(value)) {
for (const item of value) {
if (!item) continue;
const y = toStringValue(item);
if (!y) continue;
if (str) str += " ";
str += y;
}
} else {
for (const key in value) {
if (!value[key]) continue;
if (str) str += " ";
str += key;
}
}
}
return str;
}
function cx(...values) {
let str = "";
for (const value of values) {
if (!value) continue;
const x = toStringValue(value);
if (!x) continue;
if (str) str += " ";
str += x;
}
return str;
}
var validatorPropsTwMerge = (options) => {
if (!chunkSYHPSOUU_cjs.isPlainObject(options)) options = {};
let { config, prefix, extend, override, cacheSize, experimentalParseClassName } = options;
if (!chunkSYHPSOUU_cjs.isPlainObject(config)) config = {};
if (!chunkSYHPSOUU_cjs.isPlainObject(extend)) extend = {};
if (!chunkSYHPSOUU_cjs.isPlainObject(override)) override = {};
if (!chunkSYHPSOUU_cjs.isNumber(cacheSize)) cacheSize = void 0;
if (!chunkSYHPSOUU_cjs.isNonEmptyString(prefix)) prefix = void 0;
if (!chunkSYHPSOUU_cjs.isFunction(experimentalParseClassName)) experimentalParseClassName = void 0;
const theme = chunkSYHPSOUU_cjs.hasOwnProp(extend, "theme") ? extend.theme : {};
const classGroups = chunkSYHPSOUU_cjs.hasOwnProp(extend, "classGroups") ? extend.classGroups : {};
const conflictingClassGroupModifiers = chunkSYHPSOUU_cjs.hasOwnProp(
extend,
"conflictingClassGroupModifiers"
) ? extend.conflictingClassGroupModifiers : {};
const conflictingClassGroups = chunkSYHPSOUU_cjs.hasOwnProp(extend, "conflictingClassGroups") ? extend.conflictingClassGroups : {};
const orderSensitiveModifiers = chunkSYHPSOUU_cjs.hasOwnProp(extend, "orderSensitiveModifiers") && chunkSYHPSOUU_cjs.isNonEmptyArray(extend.orderSensitiveModifiers) ? extend.orderSensitiveModifiers : [];
return {
config,
override,
cacheSize,
prefix,
experimentalParseClassName,
theme,
classGroups,
conflictingClassGroupModifiers,
conflictingClassGroups,
orderSensitiveModifiers
};
};
var defaultConfig = tailwindMergeV3.getDefaultConfig();
var twMergeDefaultV3 = (options = {}) => {
if (!chunkSYHPSOUU_cjs.isPlainObject(options)) options = {};
const {
cacheSize,
classGroups,
config,
conflictingClassGroupModifiers,
conflictingClassGroups,
override,
prefix,
theme,
experimentalParseClassName
} = validatorPropsTwMerge(options);
return tailwindMergeV3.extendTailwindMerge({
prefix: prefix ?? config.prefix,
cacheSize: cacheSize || defaultConfig.cacheSize,
experimentalParseClassName,
override,
extend: {
conflictingClassGroupModifiers: {
...defaultConfig.conflictingClassGroupModifiers,
...conflictingClassGroupModifiers
},
theme: { ...defaultConfig.theme, ...theme },
conflictingClassGroups: {
...defaultConfig.conflictingClassGroups,
...conflictingClassGroups
},
classGroups: {
...defaultConfig.classGroups,
...classGroups,
"text-shadow": ["", "-sm", "-md", "-lg", "-xl", "-xxl", "-none", "-default"].map(
(size) => `text-shadow${size}`
),
"font-size": Object.keys({
...config.theme?.fontSize || {},
...config.theme?.extend?.fontSize || {}
}).map((size) => `text-${size}`)
}
}
});
};
var defaultConfig2 = tailwindMergeV4.getDefaultConfig();
var twMergeDefaultV4 = (options = {}) => {
if (!chunkSYHPSOUU_cjs.isPlainObject(options)) options = {};
const {
cacheSize,
classGroups,
config,
conflictingClassGroupModifiers,
conflictingClassGroups,
orderSensitiveModifiers,
override,
prefix,
theme,
experimentalParseClassName
} = validatorPropsTwMerge(options);
return tailwindMergeV4.extendTailwindMerge({
prefix: prefix || config.prefix,
cacheSize: cacheSize || defaultConfig2.cacheSize,
experimentalParseClassName,
override,
extend: {
conflictingClassGroupModifiers: {
...defaultConfig2.conflictingClassGroupModifiers,
...conflictingClassGroupModifiers
},
theme: { ...defaultConfig2.theme, ...theme },
conflictingClassGroups: {
...defaultConfig2.conflictingClassGroups,
...conflictingClassGroups
},
orderSensitiveModifiers: [
...defaultConfig2.orderSensitiveModifiers,
...orderSensitiveModifiers
],
classGroups: {
...defaultConfig2.classGroups,
...classGroups,
"text-shadow": ["", "-sm", "-md", "-lg", "-xl", "-xxl", "-none", "-default"].map(
(size) => `text-shadow${size}`
),
"font-size": Object.keys({
...config.theme?.fontSize || {},
...config.theme?.extend?.fontSize || {}
}).map((size) => `text-${size}`)
}
}
});
};
var defaultTwMergeV3 = twMergeDefaultV3();
var defaultTwMergeV4 = twMergeDefaultV4();
var cnV3 = (...classes) => {
return defaultTwMergeV3(cx(...classes));
};
var cnV4 = (...classes) => {
return defaultTwMergeV4(cx(...classes));
};
var customCnV3 = (customTwMergeV3, ...classes) => {
if (!chunkSYHPSOUU_cjs.isFunction(customTwMergeV3)) {
throw new TypeError(
`first Parameter (\`customTwMergeV3\`) must be of type \`function\`, but received: \`${chunkSYHPSOUU_cjs.getPreciseType(
customTwMergeV3
)}\`.`
);
}
return customTwMergeV3(cx(...classes));
};
var customCnV4 = (customTwMergeV4, ...classes) => {
if (!chunkSYHPSOUU_cjs.isFunction(customTwMergeV4)) {
throw new TypeError(
`first Parameter (\`customTwMergeV4\`) must be of type \`function\`, but received: \`${chunkSYHPSOUU_cjs.getPreciseType(
customTwMergeV4
)}\`.`
);
}
return customTwMergeV4(cx(...classes));
};
var shouldForwardProp = (props) => {
chunkDLS3G6WQ_cjs.assertIsArray(props, {
message: ({ currentType, validType }) => `First parameter (\`props\`) must be of type \`${validType}\`, but received: \`${currentType}\`.`
});
const invalidItems = [];
props.forEach((p, idx) => {
if (!chunkSYHPSOUU_cjs.isString(p)) {
invalidItems.push({
index: idx,
reason: `Expected a non-empty string, but received ${chunkSYHPSOUU_cjs.getPreciseType(p, {
formatCase: "toPascalCaseSpace"
})}.`
});
} else if (chunkWLOQQFDS_cjs.isEmptyString(p)) {
invalidItems.push({
index: idx,
reason: `Expected a non-empty string, but received EmptyString.`
});
}
});
if (chunkSYHPSOUU_cjs.isNonEmptyArray(invalidItems)) {
const maxWidth = Math.max(...invalidItems.map((item) => String(item.index).length));
const details = invalidItems.map(
(item) => `\u2022 [Index ${String(item.index).padStart(maxWidth, "0")}] ${item.reason}`
).join("\n");
throw new TypeError(
`First parameter (\`props\`) contains invalid entries:
${details}`
);
}
return (propName) => {
return !props.map(String).includes(String(propName));
};
};
exports.cnV3 = cnV3;
exports.cnV4 = cnV4;
exports.customCnV3 = customCnV3;
exports.customCnV4 = customCnV4;
exports.cx = cx;
exports.shouldForwardProp = shouldForwardProp;
exports.twMergeDefaultV3 = twMergeDefaultV3;
exports.twMergeDefaultV4 = twMergeDefaultV4;