combinations() — tailwindcss Function Reference
Architecture documentation for the combinations() function in canonicalize-candidates.ts from the tailwindcss codebase.
Entity Profile
Dependency Diagram
graph TD ab8d344f_10ae_ff6d_9378_cf7d5cb6ec72["combinations()"] 7d350d81_5de1_f9f3_5b2c_19ec8fd3c37e["canonicalize-candidates.ts"] ab8d344f_10ae_ff6d_9378_cf7d5cb6ec72 -->|defined in| 7d350d81_5de1_f9f3_5b2c_19ec8fd3c37e 6b36dfc9_f213_8083_55ea_8d0541032f05["collapseCandidates()"] 6b36dfc9_f213_8083_55ea_8d0541032f05 -->|calls| ab8d344f_10ae_ff6d_9378_cf7d5cb6ec72 style ab8d344f_10ae_ff6d_9378_cf7d5cb6ec72 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/tailwindcss/src/canonicalize-candidates.ts lines 2574–2600
function* combinations<T>(arr: T[]): Generator<T[]> {
let n = arr.length
let limit = 1n << BigInt(n)
for (let k = n; k >= 2; k--) {
let mask = (1n << BigInt(k)) - 1n
while (mask < limit) {
let out = []
for (let i = 0; i < n; i++) {
if ((mask >> BigInt(i)) & 1n) {
out.push(arr[i])
}
}
yield out
// Gosper's hack:
// - https://programmingforinsomniacs.blogspot.com/2018/03/gospers-hack-explained.html
// - https://rosettacode.org/wiki/Gosper%27s_hack
//
// We need to generate the next mask in lexicographical order.
let carry = mask & -mask
let ripple = mask + carry
mask = (((ripple ^ mask) >> 2n) / carry) | ripple
}
}
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does combinations() do?
combinations() is a function in the tailwindcss codebase, defined in packages/tailwindcss/src/canonicalize-candidates.ts.
Where is combinations() defined?
combinations() is defined in packages/tailwindcss/src/canonicalize-candidates.ts at line 2574.
What calls combinations()?
combinations() is called by 1 function(s): collapseCandidates.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free