c6a0cfc2b1
* Initial factoring out of parts of the LayerUI component 2360 → 2224 LOC * Create a Section component * Break up src/index.tsx * Refactor actions to reduce duplication, fix CSS Also consolidate icons * Move scene/data.ts to its own directory * Fix accidental reverts, banish further single-character variables * ACTIVE_ELEM_COLOR → ACTIVE_ELEMENT_COLOR * Further refactoring the icons file * Log all errors * Pointer Event polyfill to make the tests work * add test hooks & fix tests Co-authored-by: dwelle <luzar.david@gmail.com>
18 lines
557 B
TypeScript
18 lines
557 B
TypeScript
import { Pointer } from "./types";
|
|
import { normalizeScroll } from "./scene";
|
|
|
|
export function getCenter(pointers: readonly Pointer[]) {
|
|
return {
|
|
x: normalizeScroll(sum(pointers, pointer => pointer.x) / pointers.length),
|
|
y: normalizeScroll(sum(pointers, pointer => pointer.y) / pointers.length),
|
|
};
|
|
}
|
|
|
|
export function getDistance([a, b]: readonly Pointer[]) {
|
|
return Math.hypot(a.x - b.x, a.y - b.y);
|
|
}
|
|
|
|
function sum<T>(array: readonly T[], mapper: (item: T) => number): number {
|
|
return array.reduce((acc, item) => acc + mapper(item), 0);
|
|
}
|