in modules/core/src/lib/attribute/data-column.js [352:387]
_normalizeValue(value, out, start) {
const {defaultValue, size} = this.settings;
if (Number.isFinite(value)) {
out[start] = value;
return out;
}
if (!value) {
out[start] = defaultValue[0];
return out;
}
// Important - switch cases are 5x more performant than a for loop!
/* eslint-disable no-fallthrough, default-case */
switch (size) {
case 4:
out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];
case 3:
out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];
case 2:
out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];
case 1:
out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];
break;
default:
// In the rare case where the attribute size > 4, do it the slow way
// This is used for e.g. transform matrices
let i = size;
while (--i >= 0) {
out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];
}
}
return out;
}