clases 1.1.7 → 1.1.8
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/dist/index.cjs +17 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -13
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +34 -27
package/dist/index.cjs
CHANGED
|
@@ -10,30 +10,34 @@ var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
|
10
10
|
// src/index.ts
|
|
11
11
|
function createCl(...plugins) {
|
|
12
12
|
const registry = Object.assign({}, ...plugins);
|
|
13
|
-
const
|
|
13
|
+
const getPrefix = (key) => {
|
|
14
|
+
return key.split(":").map((part) => registry[part]).filter(Boolean).join(":");
|
|
15
|
+
};
|
|
16
|
+
const process = (accumulatedKey, value) => {
|
|
14
17
|
if (!value) return "";
|
|
15
18
|
if (Array.isArray(value)) {
|
|
16
|
-
return value.map((v) => process(
|
|
19
|
+
return value.map((v) => process(accumulatedKey, v)).filter(Boolean).join(" ");
|
|
17
20
|
}
|
|
18
21
|
if (typeof value === "object") {
|
|
19
|
-
return Object.entries(value).map(([
|
|
20
|
-
|
|
21
|
-
if (
|
|
22
|
-
const nextKey =
|
|
23
|
-
return process(nextKey,
|
|
24
|
-
}
|
|
25
|
-
if (nestedValue) {
|
|
26
|
-
return process(key, nestedKey);
|
|
22
|
+
return Object.entries(value).map(([k, v]) => {
|
|
23
|
+
if (!v) return "";
|
|
24
|
+
if (registry[k] !== void 0) {
|
|
25
|
+
const nextKey = accumulatedKey ? `${accumulatedKey}:${k}` : k;
|
|
26
|
+
return process(nextKey, v);
|
|
27
27
|
}
|
|
28
|
-
return
|
|
28
|
+
return applyPrefix(accumulatedKey, k);
|
|
29
29
|
}).join(" ");
|
|
30
30
|
}
|
|
31
|
-
const resolvedPrefix = key.split(":").map((part) => registry[part] || null).filter(Boolean).join(":");
|
|
32
31
|
if (typeof value === "string") {
|
|
33
|
-
return
|
|
32
|
+
return applyPrefix(accumulatedKey, value);
|
|
34
33
|
}
|
|
35
34
|
return "";
|
|
36
35
|
};
|
|
36
|
+
const applyPrefix = (key, classString) => {
|
|
37
|
+
const resolved = getPrefix(key);
|
|
38
|
+
if (!resolved) return classString;
|
|
39
|
+
return classString.split(/[,\s\n]+/).filter(Boolean).map((cls) => `${resolved}:${cls}`).join(" ");
|
|
40
|
+
};
|
|
37
41
|
return (...inputs) => {
|
|
38
42
|
const processed = inputs.map((input) => process("", input));
|
|
39
43
|
return tailwindMerge.twMerge(clsx__default.default(processed));
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["twMerge","clsx"],"mappings":";;;;;;;;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["twMerge","clsx"],"mappings":";;;;;;;;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;AAGrE,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAgB;AAC/B,IAAA,OAAO,GAAA,CACF,KAAA,CAAM,GAAG,CAAA,CACT,IAAI,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,CAAC,CAAA,CAC5B,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,cAAA,EAAwB,KAAA,KAAuB;AAC5D,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAGnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CACF,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,cAAA,EAAgB,CAAC,CAAC,CAAA,CACrC,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,QAAA,IAAI,CAAC,GAAG,OAAO,EAAA;AAGf,QAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA,EAAW;AAC3B,UAAA,MAAM,UAAU,cAAA,GAAiB,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,GAAK,CAAA;AAC5D,UAAA,OAAO,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,QAC7B;AAIA,QAAA,OAAO,WAAA,CAAY,gBAAgB,CAAC,CAAA;AAAA,MACxC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,WAAA,CAAY,gBAAgB,KAAK,CAAA;AAAA,IAC5C;AAEA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAGA,EAAA,MAAM,WAAA,GAAc,CAAC,GAAA,EAAa,WAAA,KAAgC;AAC9D,IAAA,MAAM,QAAA,GAAW,UAAU,GAAG,CAAA;AAC9B,IAAA,IAAI,CAAC,UAAU,OAAO,WAAA;AAEtB,IAAA,OAAO,YACF,KAAA,CAAM,UAAU,CAAA,CAChB,MAAA,CAAO,OAAO,CAAA,CACd,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAG,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA,CACjC,KAAK,GAAG,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAyB;AAChC,IAAA,MAAM,SAAA,GAAY,OAAO,GAAA,CAAI,CAAC,UAAU,OAAA,CAAQ,EAAA,EAAI,KAAK,CAAC,CAAA;AAC1D,IAAA,OAAOA,qBAAA,CAAQC,qBAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EAClC,CAAA;AACJ","file":"index.cjs","sourcesContent":["import { twMerge } from 'tailwind-merge';\r\nimport clsx, { type ClassValue } from 'clsx';\r\n\r\nexport function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {\r\n const registry: Record<string, string> = Object.assign({}, ...plugins);\r\n\r\n // Función auxiliar para obtener el prefijo real de Tailwind\r\n const getPrefix = (key: string) => {\r\n return key\r\n .split(':')\r\n .map((part) => registry[part])\r\n .filter(Boolean)\r\n .join(':');\r\n };\r\n\r\n const process = (accumulatedKey: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n // 1. Arrays: Multilínea\r\n if (Array.isArray(value)) {\r\n return value\r\n .map((v) => process(accumulatedKey, v))\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n // 2. Objetos\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([k, v]) => {\r\n if (!v) return '';\r\n\r\n // Si la llave es un prefijo (md, hover), profundizamos\r\n if (registry[k] !== undefined) {\r\n const nextKey = accumulatedKey ? `${accumulatedKey}:${k}` : k;\r\n return process(nextKey, v);\r\n }\r\n\r\n // Si NO es prefijo, tratamos la llave 'k' como la clase final\r\n // Pero le aplicamos el prefijo acumulado hasta ahora\r\n return applyPrefix(accumulatedKey, k);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // 3. Strings directos: Aplicamos el prefijo acumulado a cada palabra\r\n if (typeof value === 'string') {\r\n return applyPrefix(accumulatedKey, value);\r\n }\r\n\r\n return '';\r\n };\r\n\r\n // Función para aplicar el prefijo resuelto a un string de clases\r\n const applyPrefix = (key: string, classString: string): string => {\r\n const resolved = getPrefix(key);\r\n if (!resolved) return classString;\r\n\r\n return classString\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => `${resolved}:${cls}`)\r\n .join(' ');\r\n };\r\n\r\n return (...inputs: ClassValue[]) => {\r\n const processed = inputs.map((input) => process('', input));\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
|
package/dist/index.js
CHANGED
|
@@ -4,30 +4,34 @@ import clsx from 'clsx';
|
|
|
4
4
|
// src/index.ts
|
|
5
5
|
function createCl(...plugins) {
|
|
6
6
|
const registry = Object.assign({}, ...plugins);
|
|
7
|
-
const
|
|
7
|
+
const getPrefix = (key) => {
|
|
8
|
+
return key.split(":").map((part) => registry[part]).filter(Boolean).join(":");
|
|
9
|
+
};
|
|
10
|
+
const process = (accumulatedKey, value) => {
|
|
8
11
|
if (!value) return "";
|
|
9
12
|
if (Array.isArray(value)) {
|
|
10
|
-
return value.map((v) => process(
|
|
13
|
+
return value.map((v) => process(accumulatedKey, v)).filter(Boolean).join(" ");
|
|
11
14
|
}
|
|
12
15
|
if (typeof value === "object") {
|
|
13
|
-
return Object.entries(value).map(([
|
|
14
|
-
|
|
15
|
-
if (
|
|
16
|
-
const nextKey =
|
|
17
|
-
return process(nextKey,
|
|
18
|
-
}
|
|
19
|
-
if (nestedValue) {
|
|
20
|
-
return process(key, nestedKey);
|
|
16
|
+
return Object.entries(value).map(([k, v]) => {
|
|
17
|
+
if (!v) return "";
|
|
18
|
+
if (registry[k] !== void 0) {
|
|
19
|
+
const nextKey = accumulatedKey ? `${accumulatedKey}:${k}` : k;
|
|
20
|
+
return process(nextKey, v);
|
|
21
21
|
}
|
|
22
|
-
return
|
|
22
|
+
return applyPrefix(accumulatedKey, k);
|
|
23
23
|
}).join(" ");
|
|
24
24
|
}
|
|
25
|
-
const resolvedPrefix = key.split(":").map((part) => registry[part] || null).filter(Boolean).join(":");
|
|
26
25
|
if (typeof value === "string") {
|
|
27
|
-
return
|
|
26
|
+
return applyPrefix(accumulatedKey, value);
|
|
28
27
|
}
|
|
29
28
|
return "";
|
|
30
29
|
};
|
|
30
|
+
const applyPrefix = (key, classString) => {
|
|
31
|
+
const resolved = getPrefix(key);
|
|
32
|
+
if (!resolved) return classString;
|
|
33
|
+
return classString.split(/[,\s\n]+/).filter(Boolean).map((cls) => `${resolved}:${cls}`).join(" ");
|
|
34
|
+
};
|
|
31
35
|
return (...inputs) => {
|
|
32
36
|
const processed = inputs.map((input) => process("", input));
|
|
33
37
|
return twMerge(clsx(processed));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;AAGrE,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAgB;AAC/B,IAAA,OAAO,GAAA,CACF,KAAA,CAAM,GAAG,CAAA,CACT,IAAI,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,CAAC,CAAA,CAC5B,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,cAAA,EAAwB,KAAA,KAAuB;AAC5D,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAGnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CACF,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,cAAA,EAAgB,CAAC,CAAC,CAAA,CACrC,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,QAAA,IAAI,CAAC,GAAG,OAAO,EAAA;AAGf,QAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA,EAAW;AAC3B,UAAA,MAAM,UAAU,cAAA,GAAiB,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,GAAK,CAAA;AAC5D,UAAA,OAAO,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,QAC7B;AAIA,QAAA,OAAO,WAAA,CAAY,gBAAgB,CAAC,CAAA;AAAA,MACxC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,WAAA,CAAY,gBAAgB,KAAK,CAAA;AAAA,IAC5C;AAEA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAGA,EAAA,MAAM,WAAA,GAAc,CAAC,GAAA,EAAa,WAAA,KAAgC;AAC9D,IAAA,MAAM,QAAA,GAAW,UAAU,GAAG,CAAA;AAC9B,IAAA,IAAI,CAAC,UAAU,OAAO,WAAA;AAEtB,IAAA,OAAO,YACF,KAAA,CAAM,UAAU,CAAA,CAChB,MAAA,CAAO,OAAO,CAAA,CACd,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAG,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA,CACjC,KAAK,GAAG,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAyB;AAChC,IAAA,MAAM,SAAA,GAAY,OAAO,GAAA,CAAI,CAAC,UAAU,OAAA,CAAQ,EAAA,EAAI,KAAK,CAAC,CAAA;AAC1D,IAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EAClC,CAAA;AACJ","file":"index.js","sourcesContent":["import { twMerge } from 'tailwind-merge';\r\nimport clsx, { type ClassValue } from 'clsx';\r\n\r\nexport function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {\r\n const registry: Record<string, string> = Object.assign({}, ...plugins);\r\n\r\n // Función auxiliar para obtener el prefijo real de Tailwind\r\n const getPrefix = (key: string) => {\r\n return key\r\n .split(':')\r\n .map((part) => registry[part])\r\n .filter(Boolean)\r\n .join(':');\r\n };\r\n\r\n const process = (accumulatedKey: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n // 1. Arrays: Multilínea\r\n if (Array.isArray(value)) {\r\n return value\r\n .map((v) => process(accumulatedKey, v))\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n // 2. Objetos\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([k, v]) => {\r\n if (!v) return '';\r\n\r\n // Si la llave es un prefijo (md, hover), profundizamos\r\n if (registry[k] !== undefined) {\r\n const nextKey = accumulatedKey ? `${accumulatedKey}:${k}` : k;\r\n return process(nextKey, v);\r\n }\r\n\r\n // Si NO es prefijo, tratamos la llave 'k' como la clase final\r\n // Pero le aplicamos el prefijo acumulado hasta ahora\r\n return applyPrefix(accumulatedKey, k);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // 3. Strings directos: Aplicamos el prefijo acumulado a cada palabra\r\n if (typeof value === 'string') {\r\n return applyPrefix(accumulatedKey, value);\r\n }\r\n\r\n return '';\r\n };\r\n\r\n // Función para aplicar el prefijo resuelto a un string de clases\r\n const applyPrefix = (key: string, classString: string): string => {\r\n const resolved = getPrefix(key);\r\n if (!resolved) return classString;\r\n\r\n return classString\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => `${resolved}:${cls}`)\r\n .join(' ');\r\n };\r\n\r\n return (...inputs: ClassValue[]) => {\r\n const processed = inputs.map((input) => process('', input));\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -4,13 +4,22 @@ import clsx, { type ClassValue } from 'clsx';
|
|
|
4
4
|
export function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {
|
|
5
5
|
const registry: Record<string, string> = Object.assign({}, ...plugins);
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// Función auxiliar para obtener el prefijo real de Tailwind
|
|
8
|
+
const getPrefix = (key: string) => {
|
|
9
|
+
return key
|
|
10
|
+
.split(':')
|
|
11
|
+
.map((part) => registry[part])
|
|
12
|
+
.filter(Boolean)
|
|
13
|
+
.join(':');
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const process = (accumulatedKey: string, value: any): string => {
|
|
8
17
|
if (!value) return '';
|
|
9
18
|
|
|
10
19
|
// 1. Arrays: Multilínea
|
|
11
20
|
if (Array.isArray(value)) {
|
|
12
21
|
return value
|
|
13
|
-
.map((v) => process(
|
|
22
|
+
.map((v) => process(accumulatedKey, v))
|
|
14
23
|
.filter(Boolean)
|
|
15
24
|
.join(' ');
|
|
16
25
|
}
|
|
@@ -18,44 +27,42 @@ export function createCl<TPlugins extends Record<string, string>[]>(...plugins:
|
|
|
18
27
|
// 2. Objetos
|
|
19
28
|
if (typeof value === 'object') {
|
|
20
29
|
return Object.entries(value)
|
|
21
|
-
.map(([
|
|
22
|
-
|
|
30
|
+
.map(([k, v]) => {
|
|
31
|
+
if (!v) return '';
|
|
23
32
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
33
|
+
// Si la llave es un prefijo (md, hover), profundizamos
|
|
34
|
+
if (registry[k] !== undefined) {
|
|
35
|
+
const nextKey = accumulatedKey ? `${accumulatedKey}:${k}` : k;
|
|
36
|
+
return process(nextKey, v);
|
|
27
37
|
}
|
|
28
38
|
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
return process(key, nestedKey);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return '';
|
|
39
|
+
// Si NO es prefijo, tratamos la llave 'k' como la clase final
|
|
40
|
+
// Pero le aplicamos el prefijo acumulado hasta ahora
|
|
41
|
+
return applyPrefix(accumulatedKey, k);
|
|
36
42
|
})
|
|
37
43
|
.join(' ');
|
|
38
44
|
}
|
|
39
45
|
|
|
40
|
-
// 3.
|
|
41
|
-
const resolvedPrefix = key
|
|
42
|
-
.split(':')
|
|
43
|
-
.map((part) => registry[part] || null)
|
|
44
|
-
.filter(Boolean)
|
|
45
|
-
.join(':');
|
|
46
|
-
|
|
47
|
-
// 4. Aplicación (Ahora sí recibirá la clase desde el paso 2)
|
|
46
|
+
// 3. Strings directos: Aplicamos el prefijo acumulado a cada palabra
|
|
48
47
|
if (typeof value === 'string') {
|
|
49
|
-
return value
|
|
50
|
-
.split(/[,\s\n]+/)
|
|
51
|
-
.filter(Boolean)
|
|
52
|
-
.map((cls) => (!resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`))
|
|
53
|
-
.join(' ');
|
|
48
|
+
return applyPrefix(accumulatedKey, value);
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
return '';
|
|
57
52
|
};
|
|
58
53
|
|
|
54
|
+
// Función para aplicar el prefijo resuelto a un string de clases
|
|
55
|
+
const applyPrefix = (key: string, classString: string): string => {
|
|
56
|
+
const resolved = getPrefix(key);
|
|
57
|
+
if (!resolved) return classString;
|
|
58
|
+
|
|
59
|
+
return classString
|
|
60
|
+
.split(/[,\s\n]+/)
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.map((cls) => `${resolved}:${cls}`)
|
|
63
|
+
.join(' ');
|
|
64
|
+
};
|
|
65
|
+
|
|
59
66
|
return (...inputs: ClassValue[]) => {
|
|
60
67
|
const processed = inputs.map((input) => process('', input));
|
|
61
68
|
return twMerge(clsx(processed));
|