Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Use extension for auto execute javascript runner
- /**
- * @type {HTMLElement}
- */
- let blockChat;
- window.addEventListener('load', () => {
- console.log("Window loaded");
- // Смотри есть ли /prompts/ в url
- const prompt = window.location.href.match(/\/prompts\/\d+/);
- if (prompt == undefined) {
- console.log("You are not in chat");
- throw new Error("You are not in chat");
- }
- console.log("You are in chat");
- const interval = 200;
- const intervalId = setInterval(() => {
- blockChat = document.querySelector("ms-chat-session");
- console.log("blockChat", blockChat != undefined, blockChat);
- if (blockChat != undefined) {
- console.log("Call")
- paralax();
- clearInterval(intervalId);
- }
- }, interval);
- })
- function paralax() {
- console.log("main", blockChat.cloneNode(true));
- // Just paste into browser console
- let scrollThreshold = 5;
- function updateForEach(xTurns) {
- xTurns.forEach(turn => {
- contentBlock.removeChild(turn);
- lastTurn = turn;
- });
- }
- const scrollBlock = blockChat.querySelector("ms-autoscroll-container");
- const contentBlock = scrollBlock.querySelector("div");
- let turns = Array.from(contentBlock.querySelectorAll("ms-chat-turn"));
- let lastTurn;
- updateForEach(turns);
- let observer = new MutationObserver((mutations) => {
- mutations.forEach((mutation) => {
- mutation.addedNodes.forEach((node) => {
- if (node.nodeType == 1 && node.tagName == "MS-CHAT-TURN" && node != lastTurn && turns.find(nide) == undefined) {
- turns.push(node);
- contentBlock.appendChild(node);
- updateForEach(turns);
- }
- })
- })
- })
- observer.observe(contentBlock, { childList: true });
- scrollBlock.onscroll = () => {
- if (scrollBlock.scrollTop < scrollThreshold) {
- let newTurn = turns.pop();
- contentBlock.insertBefore(newTurn, contentBlock.firstChild);
- scrollBlock.scrollTop = newTurn.offsetTop + newTurn.offsetHeight - scrollThreshold;
- lastTurn = newTurn;
- } else if (lastTurn != undefined && scrollBlock.scrollTop > lastTurn.offsetTop + lastTurn.offsetHeight + scrollThreshold) {
- contentBlock.removeChild(lastTurn);
- turns.push(lastTurn);
- lastTurn = undefined;
- requestAnimationFrame(() => {
- scrollBlock.scrollTop = scrollThreshold * 2;
- lastTurn = contentBlock.querySelector("ms-chat-turn:first-child");
- })
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement