melt
Version:
The next generation of Melt UI. Built for Svelte 5.
35 lines (34 loc) • 907 B
JavaScript
import { keys } from "./object";
let id = 0;
export function createId() {
return `melt-${id++}`;
}
/**
* @deprecated use `createBuilderMetaData` instead
*/
export function createDataIds(name, parts) {
return parts.reduce((acc, part) => {
acc[part] = `data-melt-${name}-${part}`;
return acc;
}, {});
}
export function createIds(identifiers) {
const id = createId();
return Object.keys(identifiers).reduce((acc, key) => {
acc[key] = `${key}-${id}`;
return acc;
}, {});
}
export function createBuilderMetadata(name, parts) {
// TODO: clean this up
const dataAttrs = createDataIds(name, parts);
const dataSelectors = keys(dataAttrs).reduce((acc, key) => {
acc[key] = `[${dataAttrs[key]}]`;
return acc;
}, {});
return {
dataAttrs,
dataSelectors,
createIds: () => createIds(dataAttrs),
};
}