Buckets:
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = composeClasses; | |
| /* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0 | |
| --- | |
| These rules are preventing the performance optimizations below. | |
| */ | |
| /** | |
| * Compose classes from multiple sources. | |
| * | |
| * @example | |
| * ```tsx | |
| * const slots = { | |
| * root: ['root', 'primary'], | |
| * label: ['label'], | |
| * }; | |
| * | |
| * const getUtilityClass = (slot) => `MuiButton-${slot}`; | |
| * | |
| * const classes = { | |
| * root: 'my-root-class', | |
| * }; | |
| * | |
| * const output = composeClasses(slots, getUtilityClass, classes); | |
| * // { | |
| * // root: 'MuiButton-root MuiButton-primary my-root-class', | |
| * // label: 'MuiButton-label', | |
| * // } | |
| * ``` | |
| * | |
| * @param slots a list of classes for each possible slot | |
| * @param getUtilityClass a function to resolve the class based on the slot name | |
| * @param classes the input classes from props | |
| * @returns the resolved classes for all slots | |
| */ | |
| function composeClasses(slots, getUtilityClass, classes = undefined) { | |
| const output = {}; | |
| for (const slotName in slots) { | |
| const slot = slots[slotName]; | |
| let buffer = ''; | |
| let start = true; | |
| for (let i = 0; i < slot.length; i += 1) { | |
| const value = slot[i]; | |
| if (value) { | |
| buffer += (start === true ? '' : ' ') + getUtilityClass(value); | |
| start = false; | |
| if (classes && classes[value]) { | |
| buffer += ' ' + classes[value]; | |
| } | |
| } | |
| } | |
| output[slotName] = buffer; | |
| } | |
| return output; | |
| } |
Xet Storage Details
- Size:
- 1.52 kB
- Xet hash:
- 008add18cbfe99313489669c69dd2ef200f98ed5e4e459b9743357e97ed26183
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.