mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-02-23 06:19:38 +08:00
27 lines
614 B
JavaScript
27 lines
614 B
JavaScript
export function parseHookProps(element, names) {
|
|
const props = {};
|
|
|
|
for (const name of names) {
|
|
const attr = `data-p-${name}`;
|
|
|
|
if (!element.hasAttribute(attr)) {
|
|
throw new Error(
|
|
`Missing attribute "${attr}" on element <${element.tagName}:${element.id}>`,
|
|
);
|
|
}
|
|
|
|
const value = element.getAttribute(attr);
|
|
props[kebabToCamelCase(name)] = JSON.parse(value);
|
|
}
|
|
|
|
return props;
|
|
}
|
|
|
|
function kebabToCamelCase(name) {
|
|
const [part, ...parts] = name.split("-");
|
|
|
|
return [
|
|
part,
|
|
...parts.map((part) => part.charAt(0).toUpperCase() + part.slice(1)),
|
|
].join("");
|
|
}
|