export function scrollAndHighlightElement(element) {
if (!element) return;
- const parentDetails = element.closest('details');
- if (parentDetails && !parentDetails.open) {
- parentDetails.open = true;
+ let parent = element;
+ while (parent.parentElement) {
+ parent = parent.parentElement;
+ if (parent.nodeName === 'DETAILS' && !parent.open) {
+ parent.open = true;
+ }
}
element.scrollIntoView({behavior: 'smooth'});
return (`${S4() + S4()}-${S4()}-${S4()}-${S4()}-${S4()}${S4()}${S4()}`);
}
+/**
+ * Generate a random smaller unique ID.
+ *
+ * @returns {string}
+ */
+export function uniqueIdSmall() {
+ // eslint-disable-next-line no-bitwise
+ const S4 = () => (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+ return S4();
+}
+
/**
* Create a promise that resolves after the given time.
* @param {int} timeMs