35 lines
596 B
JavaScript
35 lines
596 B
JavaScript
import BaseComponent, {register} from './BaseComponent.mjs';
|
|
|
|
export class Mark extends BaseComponent {
|
|
makeState(state) {
|
|
state.marks = new Map();
|
|
}
|
|
|
|
resetState(state) {
|
|
state.marks.clear();
|
|
}
|
|
|
|
render({name}, {topY, state}) {
|
|
state.marks.set(name, topY);
|
|
}
|
|
|
|
renderHidden(stage, env) {
|
|
this.render(stage, env);
|
|
}
|
|
}
|
|
|
|
export class Async extends BaseComponent {
|
|
renderPre({target}, {state}) {
|
|
let y = 0;
|
|
if(target && state.marks) {
|
|
y = state.marks.get(target) || 0;
|
|
}
|
|
return {
|
|
asynchronousY: y,
|
|
};
|
|
}
|
|
}
|
|
|
|
register('mark', new Mark());
|
|
register('async', new Async());
|