refactor message_renderer
This commit is contained in:
parent
0cccdce615
commit
ecd018a9e1
6 changed files with 240 additions and 32 deletions
57
src/composables/messageRenderer/useMessageRenderer.ts
Normal file
57
src/composables/messageRenderer/useMessageRenderer.ts
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
import useMessageOffsets from "./useOffsets";
|
||||
import useRendererAnims from "./useRendererAnims";
|
||||
export default function useMessageRenderer() {
|
||||
|
||||
const { calculateMessageOffsets } = useMessageOffsets();
|
||||
const { scrollAnimate, stackAnimate } = useRendererAnims();
|
||||
|
||||
let messageOffset = {
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
let modifier: string;
|
||||
let msg: HTMLElement | null;
|
||||
let renderList: NodeList;
|
||||
let scrollAnim = false;
|
||||
let scroll = 0;
|
||||
|
||||
function setRenderList(): void {
|
||||
const messages = document.querySelectorAll(".test");
|
||||
if (messages.length) renderList = messages;
|
||||
}
|
||||
|
||||
function renderMessage(el: SVGGElement): void {
|
||||
const transform = {
|
||||
initialTranslate: `translate(${messageOffset.x} ${messageOffset.y})`,
|
||||
finalTranslate: `translate(${messageOffset.x} ${messageOffset.y + 5})`
|
||||
}
|
||||
scrollAnim ? scrollAnimate(el, transform, scroll, renderList) : stackAnimate(el, transform);
|
||||
}
|
||||
|
||||
function beforeEnter(el: SVGGElement): void {
|
||||
setRenderList();
|
||||
modifier = el.className.baseVal.substring(0, 2);
|
||||
}
|
||||
|
||||
function enter(el: SVGGElement): void {
|
||||
msg = document.getElementById(el.id);
|
||||
}
|
||||
|
||||
function afterEnter(el: SVGGElement) {
|
||||
const messagePadding = 10;
|
||||
if (msg) {
|
||||
messageOffset = calculateMessageOffsets(msg, modifier);
|
||||
scrollAnim = messageOffset.y > 450 ? true : false;
|
||||
}
|
||||
if (scrollAnim) {
|
||||
scroll -= el.getBBox().height + messagePadding;
|
||||
}
|
||||
renderMessage(el);
|
||||
}
|
||||
|
||||
return {
|
||||
beforeEnter,
|
||||
enter,
|
||||
afterEnter
|
||||
};
|
||||
}
|
||||
Loading…
Reference in a new issue