diff --git a/src/App.ts b/src/App.ts index 34ec917..9a96c21 100644 --- a/src/App.ts +++ b/src/App.ts @@ -1,8 +1,8 @@ import { generateID } from "IDUtils"; import { PeerManager, PeerEventTypes } from "PeerManager"; import { Sync } from "Sync"; -import { openDatabase, getData, addData, addDataArray, clearData, deleteData, mergeDataArray, getAllData, checkPostIds, getAllIds, getPostsByIds, getPostForUser } from "db"; -import { arrayBufferToBase64, compressString } from "dataUtils"; +import { openDatabase, getData, addData, addDataArray, clearData, deleteData, mergeDataArray, getAllData, checkPostIds, getAllIds, getPostsByIds, getPostForUser, getPostById, getRepliesForPost, buildReplyCountMap } from "db"; +import { arrayBufferToBase64, compressString, decompressBuffer, base64ToArrayBuffer } from "dataUtils"; import { log, logID, renderLog, setLogVisibility } from "log" declare let marked: any; @@ -14,6 +14,7 @@ class Post { post_timestamp: Date; post_id: string; reply_to_id: string|null; + root_id: string|null; author: string; author_id: string; text: string; @@ -29,7 +30,8 @@ class Post { imageData: ArrayBuffer | null = null, importedFrom: "twitter" | null = null, importSource: any = null, - reply_to_id:string|null = null) { + reply_to_id: string|null = null, + root_id: string|null = null) { this.post_timestamp = post_timestamp; this.post_id = generateID(); @@ -42,6 +44,7 @@ class Post { this.importedFrom = importedFrom; this.importSource = importSource; this.reply_to_id = reply_to_id; + this.root_id = root_id; } } @@ -120,6 +123,7 @@ export class App { userID: string = ''; peerID: string = ''; replyToID: string|null = null; + replyRootID: string|null = null; following: Set = new Set(); posts: StoragePost[] = []; isHeadless: boolean = false; @@ -524,8 +528,22 @@ export class App { globalThis.URL.revokeObjectURL(url); } - async importPostsForUser(userID: string, posts: string) { + async importPostsForUser(userID: string, buffer: ArrayBuffer) { + console.log.apply(null, log("Importing posts")); + const json = await decompressBuffer(buffer); + const posts = JSON.parse(json); + for (let post of posts) { + if (post.image_data && typeof post.image_data === 'string') { + post.image_data = await base64ToArrayBuffer(post.image_data); + } + if (post.post_timestamp && typeof post.post_timestamp === 'string') { + post.post_timestamp = new Date(post.post_timestamp); + } + } + + await mergeDataArray(userID, posts); + console.log.apply(null, log(`Imported ${posts.length} posts`)); } async exportPostsForUser(userID: string) { @@ -723,7 +741,7 @@ export class App { } } - async createPost(userID: string, postText: string, mediaData?: ArrayBuffer, mimeType?: "image/svg+xml" | "image/png" | "image/gif" | "image/jpg" | "image/jpeg" | "video/mp4", replyToID:string|null = null) { + async createPost(userID: string, postText: string, mediaData?: ArrayBuffer, mimeType?: "image/svg+xml" | "image/png" | "image/gif" | "image/jpg" | "image/jpeg" | "video/mp4", replyToID: string|null = null, replyRootID: string|null = null) { if ((typeof postText !== "string") || postText.length === 0) { console.log.apply(null, log("Not posting an empty string...")); return; @@ -738,7 +756,7 @@ export class App { } } - let post = new Post(this.username, userID, postText, new Date(), mediaData, null, null, replyToID); + let post = new Post(this.username, userID, postText, new Date(), mediaData, null, null, replyToID, replyRootID); // this.posts.push(post); // localStorage.setItem(key, JSON.stringify(posts)); addData(userID, post); @@ -972,6 +990,16 @@ export class App { let burgerMenuButton = this.div('burger-menu-button'); burgerMenuButton.addEventListener('click', e => navContainer.classList.toggle('active')); + let importFilePicker = document.getElementById('import-file-input') as HTMLInputElement; + importFilePicker?.addEventListener('change', async () => { + const file = importFilePicker.files?.[0]; + if (!file) return; + const buffer = await file.arrayBuffer(); + await this.importPostsForUser(this.userID, buffer); + importFilePicker.value = ''; + this.render(); + }); + let exportButton = this.button("export-button"); exportButton.addEventListener('click', async e => { @@ -988,7 +1016,7 @@ export class App { filePicker?.addEventListener('change', async (event: any) => { for (let file of filePicker.files as any) { let buffer = await file.arrayBuffer(); - await this.createPost(this.userID, 'image...', buffer, file.type); + await this.createPost(this.userID, 'image...', buffer, file.type, this.replyToID, this.replyRootID); } // Reset so that if they pick the same image again, we still get the change event. @@ -1047,12 +1075,21 @@ export class App { const dataTransfer = e.clipboardData const file = dataTransfer!.files[0]; let buffer = await file.arrayBuffer(); - await this.createPost(this.userID, 'image...', buffer, file.type as any); + await this.createPost(this.userID, 'image...', buffer, file.type as any, this.replyToID, this.replyRootID); }); - postButton.addEventListener("click", () => { - this.createPost(userID, postText.value, undefined, undefined, this.replyToID); + const submitPost = () => { + this.createPost(userID, postText.value, undefined, undefined, this.replyToID, this.replyRootID); this.exitCompose(); + }; + + postButton.addEventListener("click", submitPost); + + postText.addEventListener("keydown", (e) => { + if ((e.metaKey || e.ctrlKey) && e.key === "Enter") { + e.preventDefault(); + submitPost(); + } }); // updateApp.addEventListener("click", () => { @@ -1068,21 +1105,24 @@ export class App { // Change this all to a template so we're not toggling state in this crazy way! - enterCompose(replyToID:string|null=null) { + enterCompose(replyToID: string|null = null, replyRootID: string|null = null) { + this.replyToID = replyToID; + this.replyRootID = replyRootID; + if (replyToID) { this.renderComposeReplyArea(replyToID); document.getElementById("compose-reply-area")!.style.display = "block"; } - replyToID = replyToID; - - document.getElementById('compose')!.style.display = 'block'; + document.getElementById('compose')!.style.display = 'flex'; document.getElementById('textarea_post')?.focus(); document.getElementById('compose-dimmer')?.classList.add("compose-dimmer-dimmed"); document.body.classList.add("no-scroll"); } exitCompose() { + this.replyToID = null; + this.replyRootID = null; let postText = document.getElementById("textarea_post") as HTMLTextAreaElement; postText.value = ""; document.getElementById('compose')!.style.display = 'none'; @@ -1276,6 +1316,8 @@ export class App { await this.initDB(); + window.addEventListener('popstate', () => { this.getRoute(); this.render(); }); + this.connectURL = `${document.location.origin}/connect/${this.userID}`; document.getElementById('connectURL')!.innerHTML = `connect`; @@ -1460,13 +1502,19 @@ export class App { contentDiv.innerHTML = ""; let count = 0; + const isPostView = this.router.route === App.Route.POST; + contentDiv.classList.toggle('post-view', isPostView); + + const replyCountMap = await buildReplyCountMap(); + this.renderedPosts.clear(); let first = true; for (let i = this.posts.length - 1; i >= 0; i--) { let postData = this.posts[i]; + if (!isPostView && postData.data.reply_to_id) continue; // this.postsSet.add(postData); // TODO return promises for all image loads and await those. - let post = this.renderPost(postData.data, first); + let post = this.renderPost(postData.data, first, replyCountMap.recursive.get(postData.data.post_id) ?? 0); first = false; // this.renderedPosts.set(postData.post_id, post); if (post) { @@ -1485,6 +1533,39 @@ export class App { contentDiv.appendChild(fragment); + if (isPostView && this.posts.length > 0) { + const currentPost = this.posts[0].data; + if (currentPost.root_id) { + const rootRecord = await getPostById(currentPost.root_id); + if (rootRecord) { + const rootEl = this.renderPost(rootRecord.data, true, replyCountMap.recursive.get(rootRecord.data.post_id) ?? 0); + contentDiv.insertBefore(rootEl, contentDiv.firstChild); + } + } + + const renderReplies = async (postID: string, depth: number) => { + if (depth > 2) return; + const replies = await getRepliesForPost(postID); + // Top-level replies: newest first. Nested replies: oldest first (readable order). + if (depth === 0) { + replies.sort((a, b) => + new Date(b.data.post_timestamp).getTime() - new Date(a.data.post_timestamp).getTime() + ); + } else { + replies.sort((a, b) => + new Date(a.data.post_timestamp).getTime() - new Date(b.data.post_timestamp).getTime() + ); + } + for (const reply of replies) { + const el = this.renderPost(reply.data, false, replyCountMap.direct.get(reply.data.post_id) ?? 0); + if (depth > 0) el.style.marginLeft = `${depth * 20}px`; + contentDiv.appendChild(el); + await renderReplies(reply.data.post_id, depth + 1); + } + }; + await renderReplies(this.posts[0].data.post_id, currentPost.root_id ? 1 : 0); + } + let renderTime = this.timerDelta(); console.log.apply(null, log(`render took: ${renderTime.toFixed(2)}ms`));; @@ -1505,13 +1586,39 @@ export class App { this.render(); } - renderComposeReplyArea(replyToID:string) { - let composeReplyArea = document.getElementById('compose-reply-area') as HTMLElement; - composeReplyArea.innerText = replyToID; - composeReplyArea.classList.add("show"); + async renderComposeReplyArea(replyToID: string) { + const composeReplyArea = document.getElementById('compose-reply-area') as HTMLElement; + composeReplyArea.innerHTML = ''; + + const record = await getPostById(replyToID); + if (!record) return; + const postData = record.data; + + const authorDiv = document.createElement('div'); + authorDiv.className = 'compose-reply-author'; + authorDiv.textContent = `@${postData.author}`; + composeReplyArea.appendChild(authorDiv); + + const previewDiv = document.createElement('div'); + previewDiv.className = 'compose-reply-preview'; + + const textDiv = document.createElement('div'); + textDiv.className = 'compose-reply-preview-text'; + textDiv.innerHTML = this.markedAvailable ? marked.parse(postData.text) : postData.text; + previewDiv.appendChild(textDiv); + + if (postData.image_data) { + const img = document.createElement('img'); + img.className = 'compose-reply-preview-image'; + const blob = new Blob([postData.image_data as ArrayBuffer]); + img.src = URL.createObjectURL(blob); + previewDiv.appendChild(img); + } + + composeReplyArea.appendChild(previewDiv); } - renderPost(post: Post, first: boolean) { + renderPost(post: Post, first: boolean, replyCount: number = 0) { if (!(post.hasOwnProperty("text"))) { throw new Error("Post is malformed!"); } @@ -1530,13 +1637,11 @@ export class App { await navigator.clipboard.writeText(shareUrl) }; - let replyButton = document.createElement('button'); replyButton.innerText = 'reply'; + let replyButton = document.createElement('button'); replyButton.innerText = replyCount > 0 ? `reply (${replyCount})` : 'reply'; replyButton.onclick = async () => { console.log(`replying to post ${post.post_id}`); - this.enterCompose(post.post_id); - // let shareUrl = `${document.location.origin}/user/${post.author_id}/post/${post.post_id}`; - - // await navigator.clipboard.writeText(shareUrl) + const rootID = post.root_id ?? post.post_id; + this.enterCompose(post.post_id, rootID); }; @@ -1560,26 +1665,33 @@ export class App { let userURL = `${document.location.origin}/user/${post.author_id}/` let postTemplate = - `
${first ? '' : '
'} -
- @${post.author} - - ${post.post_timestamp.toLocaleDateString()} - + `
${first ? '' : '
'} +
+
+ @${post.author} - + ${post.post_timestamp.toLocaleDateString()} + +
+
${markdown}
+ +
+ + + ${ownPost ? `` : ''} + + ${ownPost ? `` : ''}
-
${markdown}
- -
- - - ${ownPost ? `` : ''} - - ${ownPost ? `` : ''} - -
` containerDiv.innerHTML = postTemplate; + const postBody = containerDiv.querySelector('.post-body') as HTMLElement; + postBody.addEventListener('click', (e) => { + if ((e.target as HTMLElement).closest('button, a')) return; + history.pushState({}, '', `/user/${post.author_id}/post/${post.post_id}`); + this.getRoute(); + this.render(); + }); if (ownPost) { containerDiv.querySelector('#deleteButton')?.appendChild(deleteButton); @@ -1653,6 +1765,11 @@ export class App { this.router.route = App.Route.USER; } } + } else { + this.router.route = App.Route.HOME; + this.router.userID = ''; + this.router.postID = ''; + this.router.mediaID = ''; } console.log.apply(null, log("router: ", this.router.userID, this.router.postID, this.router.mediaID, App.Route[this.router.route])); diff --git a/src/dataUtils.ts b/src/dataUtils.ts index d2f9ed5..3e43279 100644 --- a/src/dataUtils.ts +++ b/src/dataUtils.ts @@ -39,6 +39,20 @@ export async function compressString(input: string) { return compressedArray; } +export async function decompressBuffer(input: ArrayBuffer): Promise { + const decompressionStream = new DecompressionStream('gzip'); + const writer = decompressionStream.writable.getWriter(); + writer.write(new Uint8Array(input)); + writer.close(); + const decompressedBuffer = await new Response(decompressionStream.readable).arrayBuffer(); + return new TextDecoder().decode(decompressedBuffer); +} + +export async function base64ToArrayBuffer(base64: string): Promise { + const response = await fetch("data:application/octet-stream;base64," + base64); + return response.arrayBuffer(); +} + // Base58 character set // const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; // Base58 encoding diff --git a/src/db.ts b/src/db.ts index d8285c1..2b30822 100644 --- a/src/db.ts +++ b/src/db.ts @@ -463,6 +463,85 @@ export async function getAllIds(userID: string): Promise { }); } +export async function buildReplyCountMap(): Promise<{ direct: Map, recursive: Map }> { + const children = new Map(); + const knownUsers = [...(await indexedDB.databases())] + .map(db => db.name?.replace('user_', '')).filter(Boolean) as string[]; + for (const userID of knownUsers) { + try { + const { store } = await getDBTransactionStore(userID); + const index = store.index("postReplyIndex"); + const replies: any[] = await new Promise((resolve, reject) => { + const req = index.getAll(); + req.onsuccess = () => resolve(req.result); + req.onerror = () => reject(req.error); + }); + for (const r of replies) { + const parentID = r.data.reply_to_id; + const replyID = r.data.post_id; + if (parentID && replyID) { + if (!children.has(parentID)) children.set(parentID, []); + children.get(parentID)!.push(replyID); + } + } + } catch (_) {} + } + + const direct = new Map(); + for (const [parentID, kids] of children) { + direct.set(parentID, kids.length); + } + + const countDescendants = (postID: string): number => { + const kids = children.get(postID) ?? []; + return kids.reduce((sum, kid) => sum + 1 + countDescendants(kid), 0); + }; + + const recursive = new Map(); + for (const postID of children.keys()) { + recursive.set(postID, countDescendants(postID)); + } + + return { direct, recursive }; +} + +export async function getPostById(postID: string): Promise { + const knownUsers = [...(await indexedDB.databases())] + .map(db => db.name?.replace('user_', '')).filter(Boolean) as string[]; + for (const userID of knownUsers) { + try { + const { store } = await getDBTransactionStore(userID); + const index = store.index("postIDIndex"); + const result: any = await new Promise((resolve, reject) => { + const req = index.get(postID); + req.onsuccess = () => resolve(req.result); + req.onerror = () => reject(req.error); + }); + if (result) return result; + } catch (_) {} + } + return undefined; +} + +export async function getRepliesForPost(postID: string): Promise { + const knownUsers = [...(await indexedDB.databases())] + .map(db => db.name?.replace('user_', '')).filter(Boolean) as string[]; + let replies: any[] = []; + for (const userID of knownUsers) { + try { + const { store } = await getDBTransactionStore(userID); + const index = store.index("postReplyIndex"); + const results: any[] = await new Promise((resolve, reject) => { + const req = index.getAll(postID); + req.onsuccess = () => resolve(req.result); + req.onerror = () => reject(req.error); + }); + replies = replies.concat(results); + } catch (_) {} + } + return replies; +} + export async function getPostsByIds(userID: string, postIDs: string[]) { const { store } = await getDBTransactionStore(userID); const index = store.index("postIDIndex"); diff --git a/src/sw.ts b/src/sw.ts index 6d858e3..62fec5a 100644 --- a/src/sw.ts +++ b/src/sw.ts @@ -38,102 +38,44 @@ self.addEventListener("install", (e: any) => { }); -async function staleWhileRevalidate(event: any) { - - let cache = await caches.open(cacheName); - - let response = await cache.match(event.request); - - if (response) { - debugLog ? console.log('Service Worker: Cache hit', event.request.url) : null; +async function fetchAndUpdateCache(request: Request): Promise { + debugLog && console.log('Service Worker: Fetching', request.url); + let networkResponse: Response; + try { + networkResponse = await fetch(request); + } catch (e) { + debugLog && console.log('Service Worker: Failed to fetch', e); + return new Response('Network error occurred', { + status: 404, + statusText: 'Cache miss and fetch failed', + headers: { 'Content-Type': 'text/plain' } + }); } - - const fetchPromise = (async () => { - debugLog ? console.log('Service Worker: Fetching', event.request.url) : null; - - let networkResponse = null; - try { - networkResponse = await fetch(event.request); - } catch (e) { - debugLog ? console.log('Service Worker: Failed to fetch', e) : null; - - return new Response('Network error occurred', { - status: 404, - statusText: 'Cache miss and fetch failed', - headers: { 'Content-Type': 'text/plain' } - }); - } - - debugLog ? console.log('Service Worker: Updating cache', event.request.url) : null; - - try { - await cache.put(event.request, networkResponse.clone()); - } catch (e) { - debugLog ? console.log('Service Worker: failed to update cache', event.request.url, e) : null; - - } - - debugLog ? console.log('Service Worker: Returning networkResponse', event.request.url) : null; - return networkResponse; - })(); - - - debugLog ? console.log('Service Worker: Returning return response || fetchPromise', event.request.url) : null; - return response || fetchPromise; - - // if (networkResponse) { - // cache.put(event.request, networkResponse.clone()) - // return networkResponse; - // } - - - - // caches.open(cacheName) - // .then(function (cache) { - // return cache.match(event.request) - // .then(function (response) { - // var fetchPromise = fetch(event.request) - // .then(function (networkResponse) { - // cache.put(event.request, networkResponse.clone()); - // return networkResponse; - // }); - // return response || fetchPromise; - // }); - // }) + debugLog && console.log('Service Worker: Updating cache', request.url); + const cache = await caches.open(cacheName); + try { + await cache.put(request, networkResponse.clone()); + } catch (e) { + debugLog && console.log('Service Worker: failed to update cache', request.url, e); + } + return networkResponse; } -// async function responder(event: any) { -// debugLog ? console.log('Fetching', event.request.url) : null; - -// let response = await fetch(event.request); - -// if (!response) { -// debugLog ? console.log('Fetch failed, falling back to cache', event.request.url) : null; -// let cacheMatch = await caches.match(event.request); -// if (!cacheMatch) { -// // DUnno what to return here! -// } -// return cacheMatch; -// } - -// if (response.status === 206) { -// debugLog ? console.log('Not caching partial content') : null; -// return response; -// } - -// debugLog ? console.log('Fetch successful, updating cache', event.request.url) : null; -// const cache = await caches.open(cacheName); -// try { -// cache.put(event.request, response.clone()).catch((error) => debugLog ? console.log('failed to cache', event.request, error)) : null; -// } catch (e) { -// console.log('failed to cache', event.request) -// } -// return response; -// } - self.addEventListener('fetch', function (event: any) { - event.respondWith(staleWhileRevalidate(event)); - // event.respondWith(responder(event)); + const networkFetch = fetchAndUpdateCache(event.request); + + event.respondWith(async function () { + const cache = await caches.open(cacheName); + const cached = await cache.match(event.request); + if (cached) { + debugLog && console.log('Service Worker: Cache hit', event.request.url); + return cached; + } + return networkFetch; + }()); + + // Keep the SW alive until the background cache update finishes + event.waitUntil(networkFetch); }); addEventListener("message", async (e) => { diff --git a/static/App.js b/static/App.js index bd675b1..387e92b 100644 --- a/static/App.js +++ b/static/App.js @@ -1,11 +1,11 @@ import { generateID } from "IDUtils"; import { PeerManager, PeerEventTypes } from "PeerManager"; import { Sync } from "Sync"; -import { openDatabase, getData, addData, deleteData, getAllData, getPostForUser } from "db"; -import { arrayBufferToBase64, compressString } from "dataUtils"; +import { openDatabase, getData, addData, deleteData, mergeDataArray, getAllData, getPostForUser, getPostById, getRepliesForPost, buildReplyCountMap } from "db"; +import { arrayBufferToBase64, compressString, decompressBuffer, base64ToArrayBuffer } from "dataUtils"; import { log, logID, renderLog, setLogVisibility } from "log"; class Post { - constructor(author, author_id, text, post_timestamp, imageData = null, importedFrom = null, importSource = null, reply_to_id = null) { + constructor(author, author_id, text, post_timestamp, imageData = null, importedFrom = null, importSource = null, reply_to_id = null, root_id = null) { this.post_timestamp = post_timestamp; this.post_id = generateID(); this.author = author; @@ -15,6 +15,7 @@ class Post { this.importedFrom = importedFrom; this.importSource = importSource; this.reply_to_id = reply_to_id; + this.root_id = root_id; } } class StatusBar { @@ -70,6 +71,7 @@ export class App { this.userID = ''; this.peerID = ''; this.replyToID = null; + this.replyRootID = null; this.following = new Set(); this.posts = []; this.isHeadless = false; @@ -382,7 +384,20 @@ export class App { document.body.removeChild(link); globalThis.URL.revokeObjectURL(url); } - async importPostsForUser(userID, posts) { + async importPostsForUser(userID, buffer) { + console.log.apply(null, log("Importing posts")); + const json = await decompressBuffer(buffer); + const posts = JSON.parse(json); + for (let post of posts) { + if (post.image_data && typeof post.image_data === 'string') { + post.image_data = await base64ToArrayBuffer(post.image_data); + } + if (post.post_timestamp && typeof post.post_timestamp === 'string') { + post.post_timestamp = new Date(post.post_timestamp); + } + } + await mergeDataArray(userID, posts); + console.log.apply(null, log(`Imported ${posts.length} posts`)); } async exportPostsForUser(userID) { let posts = await getAllData(userID); @@ -525,7 +540,7 @@ export class App { return null; } } - async createPost(userID, postText, mediaData, mimeType, replyToID = null) { + async createPost(userID, postText, mediaData, mimeType, replyToID = null, replyRootID = null) { if ((typeof postText !== "string") || postText.length === 0) { console.log.apply(null, log("Not posting an empty string...")); return; @@ -538,7 +553,7 @@ export class App { mediaData = compressedImage; } } - let post = new Post(this.username, userID, postText, new Date(), mediaData, null, null, replyToID); + let post = new Post(this.username, userID, postText, new Date(), mediaData, null, null, replyToID, replyRootID); // this.posts.push(post); // localStorage.setItem(key, JSON.stringify(posts)); addData(userID, post); @@ -723,6 +738,16 @@ export class App { let navContainer = this.div('nav-container'); let burgerMenuButton = this.div('burger-menu-button'); burgerMenuButton.addEventListener('click', e => navContainer.classList.toggle('active')); + let importFilePicker = document.getElementById('import-file-input'); + importFilePicker?.addEventListener('change', async () => { + const file = importFilePicker.files?.[0]; + if (!file) + return; + const buffer = await file.arrayBuffer(); + await this.importPostsForUser(this.userID, buffer); + importFilePicker.value = ''; + this.render(); + }); let exportButton = this.button("export-button"); exportButton.addEventListener('click', async (e) => { await this.exportPostsForUser(this.userID); @@ -735,7 +760,7 @@ export class App { filePicker?.addEventListener('change', async (event) => { for (let file of filePicker.files) { let buffer = await file.arrayBuffer(); - await this.createPost(this.userID, 'image...', buffer, file.type); + await this.createPost(this.userID, 'image...', buffer, file.type, this.replyToID, this.replyRootID); } // Reset so that if they pick the same image again, we still get the change event. filePicker.value = ''; @@ -779,11 +804,18 @@ export class App { const dataTransfer = e.clipboardData; const file = dataTransfer.files[0]; let buffer = await file.arrayBuffer(); - await this.createPost(this.userID, 'image...', buffer, file.type); + await this.createPost(this.userID, 'image...', buffer, file.type, this.replyToID, this.replyRootID); }); - postButton.addEventListener("click", () => { - this.createPost(userID, postText.value, undefined, undefined, this.replyToID); + const submitPost = () => { + this.createPost(userID, postText.value, undefined, undefined, this.replyToID, this.replyRootID); this.exitCompose(); + }; + postButton.addEventListener("click", submitPost); + postText.addEventListener("keydown", (e) => { + if ((e.metaKey || e.ctrlKey) && e.key === "Enter") { + e.preventDefault(); + submitPost(); + } }); // updateApp.addEventListener("click", () => { // registration?.active?.postMessage({ type: "update_app" }); @@ -793,18 +825,21 @@ export class App { // }); } // Change this all to a template so we're not toggling state in this crazy way! - enterCompose(replyToID = null) { + enterCompose(replyToID = null, replyRootID = null) { + this.replyToID = replyToID; + this.replyRootID = replyRootID; if (replyToID) { this.renderComposeReplyArea(replyToID); document.getElementById("compose-reply-area").style.display = "block"; } - replyToID = replyToID; - document.getElementById('compose').style.display = 'block'; + document.getElementById('compose').style.display = 'flex'; document.getElementById('textarea_post')?.focus(); document.getElementById('compose-dimmer')?.classList.add("compose-dimmer-dimmed"); document.body.classList.add("no-scroll"); } exitCompose() { + this.replyToID = null; + this.replyRootID = null; let postText = document.getElementById("textarea_post"); postText.value = ""; document.getElementById('compose').style.display = 'none'; @@ -940,6 +975,7 @@ export class App { this.sync.setArchive(this.isArchivePeer); this.connect(); await this.initDB(); + window.addEventListener('popstate', () => { this.getRoute(); this.render(); }); this.connectURL = `${document.location.origin}/connect/${this.userID}`; document.getElementById('connectURL').innerHTML = `connect`; let time = 0; @@ -1072,13 +1108,18 @@ export class App { const fragment = document.createDocumentFragment(); contentDiv.innerHTML = ""; let count = 0; + const isPostView = this.router.route === App.Route.POST; + contentDiv.classList.toggle('post-view', isPostView); + const replyCountMap = await buildReplyCountMap(); this.renderedPosts.clear(); let first = true; for (let i = this.posts.length - 1; i >= 0; i--) { let postData = this.posts[i]; + if (!isPostView && postData.data.reply_to_id) + continue; // this.postsSet.add(postData); // TODO return promises for all image loads and await those. - let post = this.renderPost(postData.data, first); + let post = this.renderPost(postData.data, first, replyCountMap.recursive.get(postData.data.post_id) ?? 0); first = false; // this.renderedPosts.set(postData.post_id, post); if (post) { @@ -1093,6 +1134,36 @@ export class App { throw new Error("Couldn't get content div!"); } contentDiv.appendChild(fragment); + if (isPostView && this.posts.length > 0) { + const currentPost = this.posts[0].data; + if (currentPost.root_id) { + const rootRecord = await getPostById(currentPost.root_id); + if (rootRecord) { + const rootEl = this.renderPost(rootRecord.data, true, replyCountMap.recursive.get(rootRecord.data.post_id) ?? 0); + contentDiv.insertBefore(rootEl, contentDiv.firstChild); + } + } + const renderReplies = async (postID, depth) => { + if (depth > 2) + return; + const replies = await getRepliesForPost(postID); + // Top-level replies: newest first. Nested replies: oldest first (readable order). + if (depth === 0) { + replies.sort((a, b) => new Date(b.data.post_timestamp).getTime() - new Date(a.data.post_timestamp).getTime()); + } + else { + replies.sort((a, b) => new Date(a.data.post_timestamp).getTime() - new Date(b.data.post_timestamp).getTime()); + } + for (const reply of replies) { + const el = this.renderPost(reply.data, false, replyCountMap.direct.get(reply.data.post_id) ?? 0); + if (depth > 0) + el.style.marginLeft = `${depth * 20}px`; + contentDiv.appendChild(el); + await renderReplies(reply.data.post_id, depth + 1); + } + }; + await renderReplies(this.posts[0].data.post_id, currentPost.root_id ? 1 : 0); + } let renderTime = this.timerDelta(); console.log.apply(null, log(`render took: ${renderTime.toFixed(2)}ms`)); ; @@ -1106,12 +1177,33 @@ export class App { deleteData(userID, postID); this.render(); } - renderComposeReplyArea(replyToID) { - let composeReplyArea = document.getElementById('compose-reply-area'); - composeReplyArea.innerText = replyToID; - composeReplyArea.classList.add("show"); + async renderComposeReplyArea(replyToID) { + const composeReplyArea = document.getElementById('compose-reply-area'); + composeReplyArea.innerHTML = ''; + const record = await getPostById(replyToID); + if (!record) + return; + const postData = record.data; + const authorDiv = document.createElement('div'); + authorDiv.className = 'compose-reply-author'; + authorDiv.textContent = `@${postData.author}`; + composeReplyArea.appendChild(authorDiv); + const previewDiv = document.createElement('div'); + previewDiv.className = 'compose-reply-preview'; + const textDiv = document.createElement('div'); + textDiv.className = 'compose-reply-preview-text'; + textDiv.innerHTML = this.markedAvailable ? marked.parse(postData.text) : postData.text; + previewDiv.appendChild(textDiv); + if (postData.image_data) { + const img = document.createElement('img'); + img.className = 'compose-reply-preview-image'; + const blob = new Blob([postData.image_data]); + img.src = URL.createObjectURL(blob); + previewDiv.appendChild(img); + } + composeReplyArea.appendChild(previewDiv); } - renderPost(post, first) { + renderPost(post, first, replyCount = 0) { if (!(post.hasOwnProperty("text"))) { throw new Error("Post is malformed!"); } @@ -1128,12 +1220,11 @@ export class App { await navigator.clipboard.writeText(shareUrl); }; let replyButton = document.createElement('button'); - replyButton.innerText = 'reply'; + replyButton.innerText = replyCount > 0 ? `reply (${replyCount})` : 'reply'; replyButton.onclick = async () => { console.log(`replying to post ${post.post_id}`); - this.enterCompose(post.post_id); - // let shareUrl = `${document.location.origin}/user/${post.author_id}/post/${post.post_id}`; - // await navigator.clipboard.writeText(shareUrl) + const rootID = post.root_id ?? post.post_id; + this.enterCompose(post.post_id, rootID); }; let ownPost = post.author_id === this.userID; let markdown = post.text; @@ -1148,24 +1239,32 @@ export class App { markdown = markdown.replace("${first ? '' : '
'} -
- @${post.author} - - ${post.post_timestamp.toLocaleDateString()} - + let postTemplate = `
${first ? '' : '
'} +
+
+ @${post.author} - + ${post.post_timestamp.toLocaleDateString()} + +
+
${markdown}
+ +
+ + + ${ownPost ? `` : ''} + + ${ownPost ? `` : ''}
-
${markdown}
- -
- - - ${ownPost ? `` : ''} - - ${ownPost ? `` : ''} - -
`; containerDiv.innerHTML = postTemplate; + const postBody = containerDiv.querySelector('.post-body'); + postBody.addEventListener('click', (e) => { + if (e.target.closest('button, a')) + return; + history.pushState({}, '', `/user/${post.author_id}/post/${post.post_id}`); + this.getRoute(); + this.render(); + }); if (ownPost) { containerDiv.querySelector('#deleteButton')?.appendChild(deleteButton); // containerDiv.querySelector('#editButton')?.appendChild(editButton); @@ -1219,6 +1318,12 @@ export class App { } } } + else { + this.router.route = App.Route.HOME; + this.router.userID = ''; + this.router.postID = ''; + this.router.mediaID = ''; + } console.log.apply(null, log("router: ", this.router.userID, this.router.postID, this.router.mediaID, App.Route[this.router.route])); // user = /user/ // post = /user//post/ diff --git a/static/App.js.map b/static/App.js.map index 34e88d2..81e8bc0 100644 --- a/static/App.js.map +++ b/static/App.js.map @@ -1 +1 @@ -{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/static/dataUtils.js b/static/dataUtils.js index 6f2ecbb..320161d 100644 --- a/static/dataUtils.js +++ b/static/dataUtils.js @@ -31,6 +31,18 @@ export async function compressString(input) { // Convert the compressed data to a Uint8Array return compressedArray; } +export async function decompressBuffer(input) { + const decompressionStream = new DecompressionStream('gzip'); + const writer = decompressionStream.writable.getWriter(); + writer.write(new Uint8Array(input)); + writer.close(); + const decompressedBuffer = await new Response(decompressionStream.readable).arrayBuffer(); + return new TextDecoder().decode(decompressedBuffer); +} +export async function base64ToArrayBuffer(base64) { + const response = await fetch("data:application/octet-stream;base64," + base64); + return response.arrayBuffer(); +} // Base58 character set // const BASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; // Base58 encoding diff --git a/static/dataUtils.js.map b/static/dataUtils.js.map index 25d3837..35b90be 100644 --- a/static/dataUtils.js.map +++ b/static/dataUtils.js.map @@ -1 +1 @@ -{"version":3,"file":"dataUtils.js","sourceRoot":"","sources":["../src/dataUtils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAA8B,EAAE,IAAI,GAAG,0BAA0B;IAC1G,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,EAAE;YAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAmB;IAC3D,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,MAAM,oBAAoB,CAAC,KAAK,CAAY,CAAA,CAAC,OAAO,CAAC,uCAAuC,EAAE,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,6DAA6D;AAC7D,wFAAwF;AACxF,oDAAoD;AACpD,wBAAwB;AACxB,IAAI;AAEJ,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa;IAChD,qCAAqC;IACrC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7C,6BAA6B;IAC7B,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAEtD,sCAAsC;IACtC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,2CAA2C;IAC3C,MAAM,eAAe,GAAG,MAAM,IAAI,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAErF,8CAA8C;IAC9C,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,uBAAuB;AACvB,wFAAwF;AACxF,kBAAkB;AAClB,kBAAkB;AAClB,sDAAsD;AACtD,eAAe;AACf,wBAAwB;AAExB,iCAAiC;AACjC,oBAAoB;AACpB,gDAAgD;AAChD,iCAAiC;AACjC,gCAAgC;AAChC,wCAAwC;AACxC,QAAQ;AACR,0BAA0B;AAC1B,iCAAiC;AACjC,wCAAwC;AACxC,QAAQ;AACR,MAAM;AAEN,qBAAqB;AACrB,4CAA4C;AAC5C,wCAAwC;AACxC,MAAM;AAEN,iCAAiC;AACjC,iCAAiC;AACjC,2BAA2B;AAC3B,8CAA8C;AAC9C,eAAe;AACf,eAAe;AACf,QAAQ;AACR,MAAM;AAEN,mBAAmB;AACnB,IAAI;AAEJ,4BAA4B;AAC5B,gDAAgD;AAChD,qCAAqC;AACrC,gCAAgC;AAChC,IAAI"} \ No newline at end of file +{"version":3,"file":"dataUtils.js","sourceRoot":"","sources":["../src/dataUtils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/static/db.js b/static/db.js index 03c368d..668af22 100644 --- a/static/db.js +++ b/static/db.js @@ -356,6 +356,83 @@ export async function getAllIds(userID) { }; }); } +export async function buildReplyCountMap() { + const children = new Map(); + const knownUsers = [...(await indexedDB.databases())] + .map(db => db.name?.replace('user_', '')).filter(Boolean); + for (const userID of knownUsers) { + try { + const { store } = await getDBTransactionStore(userID); + const index = store.index("postReplyIndex"); + const replies = await new Promise((resolve, reject) => { + const req = index.getAll(); + req.onsuccess = () => resolve(req.result); + req.onerror = () => reject(req.error); + }); + for (const r of replies) { + const parentID = r.data.reply_to_id; + const replyID = r.data.post_id; + if (parentID && replyID) { + if (!children.has(parentID)) + children.set(parentID, []); + children.get(parentID).push(replyID); + } + } + } + catch (_) { } + } + const direct = new Map(); + for (const [parentID, kids] of children) { + direct.set(parentID, kids.length); + } + const countDescendants = (postID) => { + const kids = children.get(postID) ?? []; + return kids.reduce((sum, kid) => sum + 1 + countDescendants(kid), 0); + }; + const recursive = new Map(); + for (const postID of children.keys()) { + recursive.set(postID, countDescendants(postID)); + } + return { direct, recursive }; +} +export async function getPostById(postID) { + const knownUsers = [...(await indexedDB.databases())] + .map(db => db.name?.replace('user_', '')).filter(Boolean); + for (const userID of knownUsers) { + try { + const { store } = await getDBTransactionStore(userID); + const index = store.index("postIDIndex"); + const result = await new Promise((resolve, reject) => { + const req = index.get(postID); + req.onsuccess = () => resolve(req.result); + req.onerror = () => reject(req.error); + }); + if (result) + return result; + } + catch (_) { } + } + return undefined; +} +export async function getRepliesForPost(postID) { + const knownUsers = [...(await indexedDB.databases())] + .map(db => db.name?.replace('user_', '')).filter(Boolean); + let replies = []; + for (const userID of knownUsers) { + try { + const { store } = await getDBTransactionStore(userID); + const index = store.index("postReplyIndex"); + const results = await new Promise((resolve, reject) => { + const req = index.getAll(postID); + req.onsuccess = () => resolve(req.result); + req.onerror = () => reject(req.error); + }); + replies = replies.concat(results); + } + catch (_) { } + } + return replies; +} export async function getPostsByIds(userID, postIDs) { const { store } = await getDBTransactionStore(userID); const index = store.index("postIDIndex"); diff --git a/static/db.js.map b/static/db.js.map index 83675aa..faa7305 100644 --- a/static/db.js.map +++ b/static/db.js.map @@ -1 +1 @@ -{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,gBAAgB;AAChB,kBAAkB;AAClB,mBAAmB;AACnB,IAAI;AAKJ,4EAA4E;AAE5E,MAAM,aAAa,GAAW,OAAO,CAAC;AACtC,MAAM,kBAAkB,GAAW,YAAY,CAAA;AAC/C,MAAM,kBAAkB,GAAW,WAAW,CAAA;AAC9C,MAAM,gBAAgB,GAAW,UAAU,CAAA;AAC3C,IAAI,OAAO,GAAG,qBAAqB,CAAA;AACnC,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,OAAO,GAAG,CAAC,CAAC;AAahB,KAAK,UAAU,YAAY,CAAC,EAAe,EAAE,YAA4B;IACrE,IAAI,UAAU,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7F,UAAU,CAAC,WAAW,CAAC,eAAe,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,UAAU,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAgB,EAAE,YAA4B;IACtE,qEAAqE;AACzE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAgB,EAAE,WAA2B;IACrE,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpD,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;AACL,CAAC;AAED,4DAA4D;AAE5D,mBAAmB;AACnB,QAAQ;AACR,sDAAsD;AACtD,oCAAoC;AACpC,oCAAoC;AACpC,+CAA+C;AAC/C,+CAA+C;AAC/C,4EAA4E;AAC5E,UAAU;AAGV,6DAA6D;AAE7D,iDAAiD;AACjD,6GAA6G;AAC7G,yGAAyG;AACzG,6GAA6G;AAC7G,mFAAmF;AAEnF,IAAI;AAEJ,iDAAiD;AACjD,qDAAqD;AACrD,gEAAgE;AAEhE,4DAA4D;AAC5D,sGAAsG;AACtG,qCAAqC;AACrC,kBAAkB;AAClB,QAAQ;AAER,qDAAqD;AACrD,8DAA8D;AAC9D,gDAAgD;AAEhD,sCAAsC;AACtC,qDAAqD;AACrD,gCAAgC;AAChC,oEAAoE;AACpE,+CAA+C;AAE/C,6DAA6D;AAC7D,yCAAyC;AACzC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AAEJ,iDAAiD;AACjD,6GAA6G;AAC7G,IAAI;AAGJ,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,YAAY,CAAC;IACjB,CAAC,CAAC,EAAE,YAAY,CAAC;IACjB,CAAC,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,YAAY,CAAC,MAAc;IACvC,MAAM,MAAM,GAAG,QAAQ,MAAM,EAAE,CAAA;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,OAAO,GAAqB,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAElE,OAAO,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAG,KAAwB,CAAC;YAC5C,MAAM,CAAC,mBAAmB,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,OAAO,CAAC,eAAe,GAAG,KAAK,EAAE,KAA4B,EAAE,EAAE;YAC7D,MAAM,EAAE,GAAiB,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;YAClE,MAAM,WAAW,GAAoB,KAAK,CAAC,MAA2B,CAAC,WAAY,CAAC;YAEpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpE,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,eAAe,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtG,CAAC;gBACD,MAAM,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;YACjC,MAAM,EAAE,GAAiB,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;YAClE,OAAO,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE,OAA2B,UAAU;IACtF,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACrD,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;AACrC,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,IAAS;IACnD,IAAI,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACpF,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAElF,UAAU,CAAC,SAAS,GAAG,CAAC,CAAQ,EAAE,EAAE;YAChC,wEAAwE;QAC5E,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YAClC,mFAAmF;YACnF,MAAM,UAAU,GAAG,KAAwB,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,MAAc;IAC3D,IAAI,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEzC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAExC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,CAAC,MAAqB,CAAC,KAAK,CAAC,CAAA;QAErE,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;YACvB,MAAM,GAAG,GAAI,CAAC,CAAC,MAAqB,CAAC,MAAM,CAAC;YAC5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxC,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC,CAAC,MAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC,CAAC;YAC7F,aAAa,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;QACzC,CAAC,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC1C,IAAI,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEpF,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QACnC,YAAY,CAAC,SAAS,GAAG,CAAC,CAAQ,EAAE,EAAE;YAClC,wEAAwE;QAC5E,CAAC,CAAC;QAEF,YAAY,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YACpC,mFAAmF;YACnF,MAAM,UAAU,GAAG,KAAwB,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC,CAAC;IAEN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAGD,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,KAAY;IAC3D,IAAI,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAKpF,IAAI,iBAAiB,GAAI,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,WAAW,CAAC,UAAU,GAAG,CAAC,KAAY,EAAE,EAAE;gBACvC,OAAO,EAAE,CAAC;YACb,CAAC,CAAC;YAEF,WAAW,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;gBACnC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM,EAAE,CAAC;YACb,CAAC,CAAA;QACL,CAAC,CAAC,CAAC;QAIH,iBAAiB;QAEjB,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClF,yCAAyC;YACzC,+EAA+E;YAC/E,KAAK;YAEL,2CAA2C;YAC3C,0FAA0F;YAC1F,mDAAmD;YACnD,gFAAgF;YAChF,KAAK;YAEL,WAAW;YAEX,2BAA2B;YAC3B,8CAA8C;YAC9C,IAAI;QACR,CAAC;QAED,OAAO,iBAAiB,CAAC;IAG7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,QAAkB;IACjE,IAAI,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEvE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEzC,WAAW,CAAC,UAAU,GAAG,GAAG,EAAE;YAC1B,qDAAqD;YACrD,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAG,KAAK,CAAC,MAAc,CAAC,KAAK,CAAC,CAAC;YACjE,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,IAAI,aAAa,GAAQ,EAAE,CAAC;QAE5B,KAAK,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC;gBACD,IAAI,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAEpC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;wBACvB,OAAO,CAAC,GAAG,CAAE,CAAC,CAAC,MAAqB,CAAC,KAAK,CAAC,CAAC;wBAC5C,MAAM,CAAC,CAAC,CAAC,CAAC;oBACd,CAAC,CAAC;oBAEF,UAAU,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;wBAC/B,MAAM,GAAG,GAAI,CAAC,CAAC,MAAqB,CAAC,MAAM,CAAC;wBAC5C,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAA;oBAC9B,CAAC,CAAC;gBAEN,CAAC,CAAC,CAAC;gBAEH,uCAAuC;gBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;YAEL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,kEAAkE;QAClE,OAAO,aAAa,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,KAAY;IAC7D,IAAI,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEpF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEzC,WAAW,CAAC,UAAU,GAAG,GAAG,EAAE;YAC1B,qDAAqD;YACrD,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,WAAW,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAG,KAAK,CAAC,MAAc,CAAC,KAAK,CAAC,CAAC;YACjE,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,IAAI,YAAY,GAAQ,EAAE,CAAC;QAE3B,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC;gBACD,IAAI,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAE9C,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;wBACvB,OAAO,CAAC,GAAG,CAAE,CAAC,CAAC,MAAqB,CAAC,KAAK,CAAC,CAAC;wBAC5C,MAAM,CAAC,CAAC,CAAC,CAAC;oBACd,CAAC,CAAC;oBAEF,UAAU,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;wBAC/B,MAAM,GAAG,GAAI,CAAC,CAAC,MAAqB,CAAC,MAAM,CAAC;wBAC5C,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAA;oBAC9B,CAAC,CAAC;gBAEN,CAAC,CAAC,CAAC;gBAEH,uCAAuC;gBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YAEL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,WAAW,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;QAEpD,MAAM,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,MAAc;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAExC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzC,cAAc,CAAC,SAAS,GAAG,GAAG,EAAE;YAC5B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,cAAc,CAAC,OAAO,GAAG,GAAG,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACpE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,OAAa,EAAE,OAAa;IACtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAElD,aAAa,CAAC,SAAS,GAAG,GAAG,EAAE;YAC3B,oBAAoB;YACpB,6CAA6C;YAC7C,4BAA4B;YAC5B,IAAI;YACJ,yEAAyE;YACzE,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC;QAEF,aAAa,CAAC,OAAO,GAAG,GAAG,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAElC,UAAU,CAAC,SAAS,GAAG,GAAG,EAAE;YACxB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACpB,gEAAgE;gBAChE,8CAA8C;gBAC9C,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;gBACjD,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,0DAA0D;YAClF,CAAC;QACL,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YAClC,mFAAmF;YACnF,MAAM,UAAU,GAAG,KAAwB,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACvE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,yCAAyC;QAC9E,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEzC,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAEpC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;YAC/B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YACjC,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;SAChD,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAC1E,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAU,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3B,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;gBACpC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC/B,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;oBACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACxD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAU,EAAE;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC5C,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;SAChD,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAC1E,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACzC,MAAM,MAAM,GAAQ,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC9B,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IAClD,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;SAChD,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAC1E,IAAI,OAAO,GAAU,EAAE,CAAC;IACxB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAU,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjC,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,OAAiB;IACjE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEhC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;gBAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,wBAAwB;YAC3D,CAAC,CAAC;YAEF,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,6BAA6B;YACjD,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,4CAA4C;QACnE,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,CAAE,4BAA4B;AAC/C,CAAC"} \ No newline at end of file diff --git a/static/index.html b/static/index.html index 547cd98..437a35b 100644 --- a/static/index.html +++ b/static/index.html @@ -3,7 +3,7 @@ - + Dandelion @@ -87,6 +87,8 @@
diff --git a/static/main.css b/static/main.css index 14b7cbe..42f395f 100644 --- a/static/main.css +++ b/static/main.css @@ -4,7 +4,9 @@ :root { --main-bg-color: white; - --main-hover-color: rgb(64, 64, 64) --border-color: rgb(132, 136, 138); + --main-hover-color: rgb(64, 64, 64); + --post-hover-color: rgb(32,32,32); + --border-color: rgb(132, 136, 138); --edge-color: rgb(60, 60, 60); --main-fg-color: black; --highlight-fg-color: rgb(255, 255, 255); @@ -124,6 +126,24 @@ hr { .postImage { width: 100%; + max-height: 500px; + object-fit: contain; + object-position: left; +} + +.post-view .postImage { + max-height: none; +} + +.post-body { + border-radius: 4px; + padding: 4px; + transition: background-color 0.1s; + cursor: pointer; +} + +.post-body:hover { + background-color: var(--post-hover-color); } #log { @@ -277,6 +297,7 @@ iframe { #compose { display: none; + flex-direction: column; position: fixed; top: 5%; left: 50%; @@ -285,7 +306,7 @@ iframe { max-height: 85vh; max-width: 600px; - overflow-y: auto; + overflow-y: auto; background-color: var(--main-bg-color); z-index: 100; @@ -296,8 +317,83 @@ iframe { box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5); } +#compose-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 4px 8px; +} + +@media (pointer: coarse) { + #compose { + top: 0; + width: 100%; + height: 100dvh; + max-height: 100dvh; + box-sizing: border-box; + overflow-y: hidden; + border: none; + border-radius: 0; + box-shadow: none; + } + + #textarea_post { + flex: 1; + min-height: 0; + height: auto; + max-height: none; + resize: none; + border: none; + } + + #textarea_post:focus { + outline: none; + } + + #compose-reply-area { + border-bottom: 1px solid var(--border-color); + margin-bottom: 0; + } +} + #compose-reply-area { - display:none; + display: none; + padding: 8px 10px; + margin-bottom: 8px; + font-size: 0.85em; +} + +.compose-reply-author { + font-weight: bold; + font-size: 0.85em; + margin-bottom: 2px; +} + +.compose-reply-preview { + display: flex; + gap: 10px; + align-items: flex-start; +} + +.compose-reply-preview-text { + flex: 1; + overflow: hidden; + max-height: 80px; +} + +.compose-reply-preview-text iframe { + height: 68px; + pointer-events: none; +} + +.compose-reply-preview-image { + width: 96px; + height: 96px; + max-width: 96px; + max-height: 96px; + object-fit: cover; + border-radius: 4px; + flex-shrink: 0; } .show { diff --git a/static/sw.js b/static/sw.js index dc06358..8ed749f 100644 --- a/static/sw.js +++ b/static/sw.js @@ -30,82 +30,43 @@ self.addEventListener("install", (e) => { } })()); }); -async function staleWhileRevalidate(event) { - let cache = await caches.open(cacheName); - let response = await cache.match(event.request); - if (response) { - debugLog ? console.log('Service Worker: Cache hit', event.request.url) : null; +async function fetchAndUpdateCache(request) { + debugLog && console.log('Service Worker: Fetching', request.url); + let networkResponse; + try { + networkResponse = await fetch(request); } - const fetchPromise = (async () => { - debugLog ? console.log('Service Worker: Fetching', event.request.url) : null; - let networkResponse = null; - try { - networkResponse = await fetch(event.request); - } - catch (e) { - debugLog ? console.log('Service Worker: Failed to fetch', e) : null; - return new Response('Network error occurred', { - status: 404, - statusText: 'Cache miss and fetch failed', - headers: { 'Content-Type': 'text/plain' } - }); - } - debugLog ? console.log('Service Worker: Updating cache', event.request.url) : null; - try { - await cache.put(event.request, networkResponse.clone()); - } - catch (e) { - debugLog ? console.log('Service Worker: failed to update cache', event.request.url, e) : null; - } - debugLog ? console.log('Service Worker: Returning networkResponse', event.request.url) : null; - return networkResponse; - })(); - debugLog ? console.log('Service Worker: Returning return response || fetchPromise', event.request.url) : null; - return response || fetchPromise; - // if (networkResponse) { - // cache.put(event.request, networkResponse.clone()) - // return networkResponse; - // } - // caches.open(cacheName) - // .then(function (cache) { - // return cache.match(event.request) - // .then(function (response) { - // var fetchPromise = fetch(event.request) - // .then(function (networkResponse) { - // cache.put(event.request, networkResponse.clone()); - // return networkResponse; - // }); - // return response || fetchPromise; - // }); - // }) + catch (e) { + debugLog && console.log('Service Worker: Failed to fetch', e); + return new Response('Network error occurred', { + status: 404, + statusText: 'Cache miss and fetch failed', + headers: { 'Content-Type': 'text/plain' } + }); + } + debugLog && console.log('Service Worker: Updating cache', request.url); + const cache = await caches.open(cacheName); + try { + await cache.put(request, networkResponse.clone()); + } + catch (e) { + debugLog && console.log('Service Worker: failed to update cache', request.url, e); + } + return networkResponse; } -// async function responder(event: any) { -// debugLog ? console.log('Fetching', event.request.url) : null; -// let response = await fetch(event.request); -// if (!response) { -// debugLog ? console.log('Fetch failed, falling back to cache', event.request.url) : null; -// let cacheMatch = await caches.match(event.request); -// if (!cacheMatch) { -// // DUnno what to return here! -// } -// return cacheMatch; -// } -// if (response.status === 206) { -// debugLog ? console.log('Not caching partial content') : null; -// return response; -// } -// debugLog ? console.log('Fetch successful, updating cache', event.request.url) : null; -// const cache = await caches.open(cacheName); -// try { -// cache.put(event.request, response.clone()).catch((error) => debugLog ? console.log('failed to cache', event.request, error)) : null; -// } catch (e) { -// console.log('failed to cache', event.request) -// } -// return response; -// } self.addEventListener('fetch', function (event) { - event.respondWith(staleWhileRevalidate(event)); - // event.respondWith(responder(event)); + const networkFetch = fetchAndUpdateCache(event.request); + event.respondWith(async function () { + const cache = await caches.open(cacheName); + const cached = await cache.match(event.request); + if (cached) { + debugLog && console.log('Service Worker: Cache hit', event.request.url); + return cached; + } + return networkFetch; + }()); + // Keep the SW alive until the background cache update finishes + event.waitUntil(networkFetch); }); addEventListener("message", async (e) => { debugLog ? console.log(`Message received:`, e.data) : null; diff --git a/static/sw.js.map b/static/sw.js.map index a47930d..62f5136 100644 --- a/static/sw.js.map +++ b/static/sw.js.map @@ -1 +1 @@ -{"version":3,"file":"sw.js","sourceRoot":"","sources":["../src/sw.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sw.js","sourceRoot":"","sources":["../src/sw.ts"],"names":[],"mappings":"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"} \ No newline at end of file