132 lines
2.0 KiB
JavaScript
132 lines
2.0 KiB
JavaScript
/* eslint-disable spaced-comment */
|
|
/* eslint-disable capitalized-comments */
|
|
|
|
export default class BaseComponent {
|
|
makeState(/*state*/) {
|
|
// Override if required
|
|
}
|
|
|
|
resetState(state) {
|
|
// Override if required
|
|
this.makeState(state);
|
|
}
|
|
|
|
prepareMeasurements(/*stage, {
|
|
renderer,
|
|
theme,
|
|
agentInfos,
|
|
textSizer,
|
|
state,
|
|
components,
|
|
}*/) {
|
|
// Override if required
|
|
}
|
|
|
|
separationPre(/*stage, {
|
|
renderer,
|
|
theme,
|
|
agentInfos,
|
|
visibleAgentIDs,
|
|
momentaryAgentIDs,
|
|
textSizer,
|
|
addSpacing,
|
|
addSeparation,
|
|
state,
|
|
components,
|
|
}*/) {
|
|
// Override if required
|
|
}
|
|
|
|
separation(/*stage, {
|
|
renderer,
|
|
theme,
|
|
agentInfos,
|
|
visibleAgentIDs,
|
|
momentaryAgentIDs,
|
|
textSizer,
|
|
addSpacing,
|
|
addSeparation,
|
|
state,
|
|
components,
|
|
}*/) {
|
|
// Override if required
|
|
}
|
|
|
|
renderPre(/*stage, {
|
|
renderer,
|
|
theme,
|
|
agentInfos,
|
|
textSizer,
|
|
state,
|
|
components,
|
|
}*/) {
|
|
// Override if required
|
|
// Return {topShift, agentIDs, asynchronousY}
|
|
}
|
|
|
|
render(/*stage, {
|
|
renderer,
|
|
topY,
|
|
primaryY,
|
|
fillLayer,
|
|
blockLayer,
|
|
theme,
|
|
agentInfos,
|
|
svg,
|
|
textSizer,
|
|
addDef,
|
|
makeRegion,
|
|
state,
|
|
components,
|
|
}*/) {
|
|
// Override if required
|
|
// Return bottom Y coordinate
|
|
}
|
|
|
|
renderHidden(/*stage, {
|
|
(same args as render, with primaryY = topY)
|
|
}*/) {
|
|
// Override if required
|
|
}
|
|
|
|
shouldHide(/*stage, {
|
|
renderer,
|
|
theme,
|
|
agentInfos,
|
|
textSizer,
|
|
state,
|
|
components,
|
|
}*/) {
|
|
// Override if required
|
|
// Return {self, nest}
|
|
}
|
|
}
|
|
|
|
export function cleanRenderPreResult({
|
|
agentIDs = [],
|
|
topShift = 0,
|
|
y = null,
|
|
asynchronousY = null,
|
|
} = {}, currentY = null) {
|
|
let ts = topShift;
|
|
if(y !== null && currentY !== null) {
|
|
ts = Math.max(ts, y - currentY);
|
|
}
|
|
return {
|
|
agentIDs,
|
|
asynchronousY: (asynchronousY === null) ? currentY : asynchronousY,
|
|
topShift: ts,
|
|
y,
|
|
};
|
|
}
|
|
|
|
const components = new Map();
|
|
|
|
export function register(name, component) {
|
|
components.set(name, component);
|
|
}
|
|
|
|
export function getComponents() {
|
|
return components;
|
|
}
|