clases 1.1.2 → 1.1.3
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 +2 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -12
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +10 -18
package/dist/index.cjs
CHANGED
|
@@ -18,21 +18,11 @@ function createCl(...plugins) {
|
|
|
18
18
|
if (typeof value === "object") {
|
|
19
19
|
return Object.entries(value).map(([nestedKey, nestedValue]) => {
|
|
20
20
|
const isRegistered = registry[nestedKey] !== void 0;
|
|
21
|
-
|
|
22
|
-
if (key === "base") {
|
|
23
|
-
nextKey = nestedKey;
|
|
24
|
-
} else if (isRegistered) {
|
|
25
|
-
nextKey = `${key}:${nestedKey}`;
|
|
26
|
-
} else {
|
|
27
|
-
nextKey = key;
|
|
28
|
-
}
|
|
21
|
+
const nextKey = key === "base" ? nestedKey : isRegistered ? `${key}:${nestedKey}` : key;
|
|
29
22
|
return process(nextKey, nestedValue);
|
|
30
23
|
}).join(" ");
|
|
31
24
|
}
|
|
32
|
-
const resolvedPrefix = key.split(":").map((part) =>
|
|
33
|
-
if (part === "base") return null;
|
|
34
|
-
return registry[part] || null;
|
|
35
|
-
}).filter(Boolean).join(":");
|
|
25
|
+
const resolvedPrefix = key.split(":").map((part) => part === "base" ? null : registry[part] || null).filter(Boolean).join(":");
|
|
36
26
|
if (typeof value === "string") {
|
|
37
27
|
return value.split(/[,\s\n]+/).filter(Boolean).map((cls) => !resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`).join(" ");
|
|
38
28
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["twMerge","clsx"],"mappings":";;;;;;;;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;
|
|
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;AAErE,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,EAAa,KAAA,KAAuB;AACjD,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IACrE;AAEA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,KAAM;AAC/B,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAS,CAAA,KAAM,MAAA;AAK7C,QAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,GAClB,SAAA,GACC,eAAe,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK,GAAA;AAE9C,QAAA,OAAO,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,MACvC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,MAAM,cAAA,GAAiB,IAClB,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAU,IAAA,KAAS,MAAA,GAAS,OAAQ,QAAA,CAAS,IAAI,KAAK,IAAM,CAAA,CACjE,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEb,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,KAAA,CACF,MAAM,UAAU,CAAA,CAChB,OAAO,OAAO,CAAA,CACd,IAAI,CAAC,GAAA,KAAS,CAAC,cAAA,GAAiB,GAAA,GAAM,GAAG,cAAc,CAAA,CAAA,EAAI,GAAG,CAAA,CAAG,CAAA,CACjE,KAAK,GAAG,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAkB;AACzB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtE,QAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,CAAA,KAAM,MAAM,OAAO,CAAA;AAGvB,UAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA;AACrC,UAAA,OAAO,OAAA,CAAQ,YAAA,GAAe,CAAA,GAAI,MAAA,EAAQ,CAAC,CAAA;AAAA,QAC/C,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,MACjB;AACA,MAAA,OAAO,KAAA;AAAA,IACX,CAAC,CAAA;AACD,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 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 const process = (key: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((v) => process(key, v)).filter(Boolean).join(' ');\r\n }\r\n\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([nestedKey, nestedValue]) => {\r\n const isRegistered = registry[nestedKey] !== undefined;\r\n \r\n // Si el padre es 'base', el hijo toma su lugar.\r\n // Si el hijo está registrado, se concatena.\r\n // Si no, heredamos el padre para mantener la transparencia.\r\n const nextKey = key === 'base' \r\n ? nestedKey \r\n : (isRegistered ? `${key}:${nestedKey}` : key);\r\n\r\n return process(nextKey, nestedValue);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // RESOLUCIÓN: Solo permitimos partes que existan en el registry\r\n const resolvedPrefix = key\r\n .split(':')\r\n .map((part) => (part === 'base' ? null : (registry[part] || null)))\r\n .filter(Boolean)\r\n .join(':');\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => (!resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`))\r\n .join(' ');\r\n }\r\n return '';\r\n };\r\n\r\n return (...inputs: any[]) => {\r\n const processed = inputs.map((input) => {\r\n if (input !== null && typeof input === 'object' && !Array.isArray(input)) {\r\n return Object.entries(input)\r\n .map(([k, v]) => {\r\n if (v === true) return k;\r\n // SI LA LLAVE NO ESTÁ REGISTRADA (ej: 'variants'), \r\n // entramos como 'base' para que sea invisible.\r\n const isRegistered = registry[k] !== undefined;\r\n return process(isRegistered ? k : 'base', v);\r\n })\r\n .join(' ');\r\n }\r\n return input;\r\n });\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
|
package/dist/index.js
CHANGED
|
@@ -12,21 +12,11 @@ function createCl(...plugins) {
|
|
|
12
12
|
if (typeof value === "object") {
|
|
13
13
|
return Object.entries(value).map(([nestedKey, nestedValue]) => {
|
|
14
14
|
const isRegistered = registry[nestedKey] !== void 0;
|
|
15
|
-
|
|
16
|
-
if (key === "base") {
|
|
17
|
-
nextKey = nestedKey;
|
|
18
|
-
} else if (isRegistered) {
|
|
19
|
-
nextKey = `${key}:${nestedKey}`;
|
|
20
|
-
} else {
|
|
21
|
-
nextKey = key;
|
|
22
|
-
}
|
|
15
|
+
const nextKey = key === "base" ? nestedKey : isRegistered ? `${key}:${nestedKey}` : key;
|
|
23
16
|
return process(nextKey, nestedValue);
|
|
24
17
|
}).join(" ");
|
|
25
18
|
}
|
|
26
|
-
const resolvedPrefix = key.split(":").map((part) =>
|
|
27
|
-
if (part === "base") return null;
|
|
28
|
-
return registry[part] || null;
|
|
29
|
-
}).filter(Boolean).join(":");
|
|
19
|
+
const resolvedPrefix = key.split(":").map((part) => part === "base" ? null : registry[part] || null).filter(Boolean).join(":");
|
|
30
20
|
if (typeof value === "string") {
|
|
31
21
|
return value.split(/[,\s\n]+/).filter(Boolean).map((cls) => !resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`).join(" ");
|
|
32
22
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;
|
|
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;AAErE,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,EAAa,KAAA,KAAuB;AACjD,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IACrE;AAEA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,KAAM;AAC/B,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAS,CAAA,KAAM,MAAA;AAK7C,QAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,GAClB,SAAA,GACC,eAAe,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK,GAAA;AAE9C,QAAA,OAAO,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,MACvC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,MAAM,cAAA,GAAiB,IAClB,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAU,IAAA,KAAS,MAAA,GAAS,OAAQ,QAAA,CAAS,IAAI,KAAK,IAAM,CAAA,CACjE,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEb,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,KAAA,CACF,MAAM,UAAU,CAAA,CAChB,OAAO,OAAO,CAAA,CACd,IAAI,CAAC,GAAA,KAAS,CAAC,cAAA,GAAiB,GAAA,GAAM,GAAG,cAAc,CAAA,CAAA,EAAI,GAAG,CAAA,CAAG,CAAA,CACjE,KAAK,GAAG,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAkB;AACzB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtE,QAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,CAAA,KAAM,MAAM,OAAO,CAAA;AAGvB,UAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA;AACrC,UAAA,OAAO,OAAA,CAAQ,YAAA,GAAe,CAAA,GAAI,MAAA,EAAQ,CAAC,CAAA;AAAA,QAC/C,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,MACjB;AACA,MAAA,OAAO,KAAA;AAAA,IACX,CAAC,CAAA;AACD,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 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 const process = (key: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((v) => process(key, v)).filter(Boolean).join(' ');\r\n }\r\n\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([nestedKey, nestedValue]) => {\r\n const isRegistered = registry[nestedKey] !== undefined;\r\n \r\n // Si el padre es 'base', el hijo toma su lugar.\r\n // Si el hijo está registrado, se concatena.\r\n // Si no, heredamos el padre para mantener la transparencia.\r\n const nextKey = key === 'base' \r\n ? nestedKey \r\n : (isRegistered ? `${key}:${nestedKey}` : key);\r\n\r\n return process(nextKey, nestedValue);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // RESOLUCIÓN: Solo permitimos partes que existan en el registry\r\n const resolvedPrefix = key\r\n .split(':')\r\n .map((part) => (part === 'base' ? null : (registry[part] || null)))\r\n .filter(Boolean)\r\n .join(':');\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => (!resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`))\r\n .join(' ');\r\n }\r\n return '';\r\n };\r\n\r\n return (...inputs: any[]) => {\r\n const processed = inputs.map((input) => {\r\n if (input !== null && typeof input === 'object' && !Array.isArray(input)) {\r\n return Object.entries(input)\r\n .map(([k, v]) => {\r\n if (v === true) return k;\r\n // SI LA LLAVE NO ESTÁ REGISTRADA (ej: 'variants'), \r\n // entramos como 'base' para que sea invisible.\r\n const isRegistered = registry[k] !== undefined;\r\n return process(isRegistered ? k : 'base', v);\r\n })\r\n .join(' ');\r\n }\r\n return input;\r\n });\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { twMerge } from 'tailwind-merge';
|
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
|
|
4
4
|
export function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {
|
|
5
|
-
// Importante: No incluimos 'base' aquí para que no interfiera en el filtrado final
|
|
6
5
|
const registry: Record<string, string> = Object.assign({}, ...plugins);
|
|
7
6
|
|
|
8
7
|
const process = (key: string, value: any): string => {
|
|
@@ -17,30 +16,22 @@ export function createCl<TPlugins extends Record<string, string>[]>(...plugins:
|
|
|
17
16
|
.map(([nestedKey, nestedValue]) => {
|
|
18
17
|
const isRegistered = registry[nestedKey] !== undefined;
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// Si no está registrado, mantenemos el key actual (transparencia)
|
|
27
|
-
nextKey = key;
|
|
28
|
-
}
|
|
19
|
+
// Si el padre es 'base', el hijo toma su lugar.
|
|
20
|
+
// Si el hijo está registrado, se concatena.
|
|
21
|
+
// Si no, heredamos el padre para mantener la transparencia.
|
|
22
|
+
const nextKey = key === 'base'
|
|
23
|
+
? nestedKey
|
|
24
|
+
: (isRegistered ? `${key}:${nestedKey}` : key);
|
|
29
25
|
|
|
30
26
|
return process(nextKey, nestedValue);
|
|
31
27
|
})
|
|
32
28
|
.join(' ');
|
|
33
29
|
}
|
|
34
30
|
|
|
35
|
-
// RESOLUCIÓN
|
|
31
|
+
// RESOLUCIÓN: Solo permitimos partes que existan en el registry
|
|
36
32
|
const resolvedPrefix = key
|
|
37
33
|
.split(':')
|
|
38
|
-
.map((part) =>
|
|
39
|
-
if (part === 'base') return null;
|
|
40
|
-
// SOLO devolvemos si existe en el registro.
|
|
41
|
-
// Si 'variants' no está, esto devuelve null y se limpia.
|
|
42
|
-
return registry[part] || null;
|
|
43
|
-
})
|
|
34
|
+
.map((part) => (part === 'base' ? null : (registry[part] || null)))
|
|
44
35
|
.filter(Boolean)
|
|
45
36
|
.join(':');
|
|
46
37
|
|
|
@@ -60,7 +51,8 @@ export function createCl<TPlugins extends Record<string, string>[]>(...plugins:
|
|
|
60
51
|
return Object.entries(input)
|
|
61
52
|
.map(([k, v]) => {
|
|
62
53
|
if (v === true) return k;
|
|
63
|
-
//
|
|
54
|
+
// SI LA LLAVE NO ESTÁ REGISTRADA (ej: 'variants'),
|
|
55
|
+
// entramos como 'base' para que sea invisible.
|
|
64
56
|
const isRegistered = registry[k] !== undefined;
|
|
65
57
|
return process(isRegistered ? k : 'base', v);
|
|
66
58
|
})
|