UNPKG

@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
/*! * ==================================================== * Rzl Utils-JS. * ---------------------------------------------------- * Version: 3.11.0. * Author: Rizalvin Dwiky. * Repository: https://github.com/rzl-zone/utils-js. * ==================================================== */ 'use strict'; 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;