line multi authors

This commit is contained in:
Mateusz Gruszczyński
2026-07-25 18:12:41 +02:00
parent 5d9c1cb677
commit be374980d4
7 changed files with 57 additions and 8 deletions
+14 -2
View File
@@ -14,7 +14,7 @@ import { PadSocket } from "@rustpad/socket";
import { currentShareUrl, readEditorState, writeEditorState } from "@rustpad/url-state";
const slug = location.pathname.split("/").filter(Boolean)[1];
const editor = document.querySelector("#editor"), preview = document.querySelector("#preview"), editorWorkspace = document.querySelector("#editor-workspace"), gutter = document.querySelector("#line-gutter"), ownerLabels = document.querySelector("#owner-labels"), authorshipLayer = document.querySelector("#authorship-layer");
const editor = document.querySelector("#editor"), preview = document.querySelector("#preview"), editorWorkspace = document.querySelector("#editor-workspace"), gutter = document.querySelector("#line-gutter"), ownerLabels = document.querySelector("#owner-labels"), authorshipLayer = document.querySelector("#authorship-layer"), documentOwnerBadge = document.querySelector("#document-owner-badge");
const modeToggle = document.querySelector("#mode-toggle"), passwordDialog = document.querySelector("#password-dialog"), identityDialog = document.querySelector("#identity-dialog");
const roomDetails = document.querySelector("#room-details"), roomUsers = document.querySelector("#room-users"), roomCount = document.querySelector("#room-count"), socketLatency = document.querySelector("#socket-latency"), chatMessages = document.querySelector("#chat-messages"), chatForm = document.querySelector("#chat-form"), chatInput = document.querySelector("#chat-input"), chatUnread = document.querySelector("#chat-unread");
let unreadChat = 0;
@@ -50,8 +50,20 @@ async function renderCodeHighlight() { const nodes = preview.querySelectorAll('p
function renderGutter() {
const lineCount = Math.max(1, (editor.value.match(/\n/g) || []).length + 1);
const lines = Array.from({ length: lineCount });
const showAuthorship = authorshipOwners(authorship).length > 1;
const owners = authorshipOwners(authorship);
const showSingleOwner = owners.length === 1;
const showAuthorship = owners.length > 1;
const authorsByLine = showAuthorship ? lineAuthors(editor.value, authorship) : [];
if (documentOwnerBadge) {
documentOwnerBadge.hidden = !showSingleOwner;
if (showSingleOwner) {
documentOwnerBadge.textContent = ownerName(owners[0]);
documentOwnerBadge.style.setProperty("--owner", colorFor(owners[0]));
} else {
documentOwnerBadge.textContent = "";
documentOwnerBadge.style.removeProperty("--owner");
}
}
authorshipLayer.hidden = !showAuthorship;
ownerLabels.hidden = !showAuthorship;
const style = getComputedStyle(editor), lineHeight = parseFloat(style.lineHeight) || 29, paddingTop = parseFloat(style.paddingTop) || 24, paddingBottom = parseFloat(style.paddingBottom) || 24;