Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 32x 32x 34x 32x 4x 4x 32x 32x | import type { SvgTransformOrder } from '../svg-transform-order';
import type { OrderState } from './order-states';
import { orderStates } from './order-states';
// An order whose effect is the screen change `toChange(element, screen, ...args)`, `screen` being the screen
// matrix of the element without this order.
export function createOrder<TArguments extends unknown[]>(
initialArguments: TArguments,
toChange: (element: SVGGraphicsElement, screen: DOMMatrix, ...args: TArguments) => DOMMatrix,
): SvgTransformOrder<TArguments> {
let currentArguments = initialArguments;
const state: OrderState = {
toChange: (element, screen) => toChange(element, screen, ...currentArguments),
update: undefined,
};
const order: SvgTransformOrder<TArguments> = {
set(...args: TArguments): void {
currentArguments = args;
state.update?.();
},
};
orderStates.set(order, state);
return order;
}
|