import { Element } from "@xmldom/xmldom";
import { isElement, nodeVal } from "../shared";
export type ExtendedValues = [string, string | number][];
export function getExtensions(node: Element | null): ExtendedValues {
let values: [string, string | number][] = [];
if (node === null) return values;
for (const child of Array.from(node.childNodes)) {
if (!isElement(child)) continue;
const name = abbreviateName(child.nodeName);
if (name === "gpxtpx:TrackPointExtension") {
values = values.concat(getExtensions(child));
} else {
const val = nodeVal(child);
values.push([name, parseNumeric(val)]);
}
}
return values;
}
function abbreviateName(name: string) {
return ["heart", "gpxtpx:hr", "hr"].includes(name) ? "heart" : name;
}
function parseNumeric(val: string) {
const num = Number.parseFloat(val);
return Number.isNaN(num) ? val : num;
}