annotate hg-web/src/repo-browser.tsx @ 190:a2725419f988 hg-web

Updated so that bun builds will with already existing js files.
author MrJuneJune <me@mrjunejune.com>
date Sat, 24 Jan 2026 21:06:42 -0800
parents 32ce881452fa
children a06710325c30
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
190
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
1 import React, { useState, useEffect, useRef } from 'react';
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
2 import createMarkdownModule from 'markdown_converter/markdown_to_html_wasm/markdown_to_html_bin.js';
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
3
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
4 // --- ICONS (Using CDN Links) ---
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
5 const ICONS = {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
6 folder: "https://cdn-icons-png.flaticon.com/512/11471/11471391.png",
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
7 file: "https://raw.githubusercontent.com/PKief/vscode-material-icon-theme/main/icons/document.svg",
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
8 home: "https://cdn-icons-png.flaticon.com/512/1946/1946488.png",
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
9 repo: "/public/epi_all_colors.svg",
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
10 clone: "https://cdn-icons-png.flaticon.com/512/11471/11471391.png"
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
11 };
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
12
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
13 const API_BASE = '/api/repo';
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
14
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
15 /**
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
16 * Component: Styles
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
17 * Injected CSS for the polished look
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
18 */
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
19 const GlobalStyles = () => (
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
20 <style>{`
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
21 :root {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
22 --bg-color: #ffffff;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
23 --bg-subtle: #f6f8fa;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
24 --border-color: #d0d7de;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
25 --accent-color: #0969da;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
26 --text-primary: #1f2328;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
27 --text-secondary: #656d76;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
28 --hover-color: #f3f4f6;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
29 --radius: 6px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
30 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
31
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
32 .repo-container {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
33 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
34 max-width: 980px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
35 margin: 40px auto;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
36 color: var(--text-primary);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
37 padding: 0 20px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
38 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
39
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
40 /* Header */
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
41 .header {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
42 display: flex;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
43 align-items: center;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
44 margin-bottom: 20px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
45 gap: 15px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
46 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
47 .header-icon { width: 32px; height: 32px; opacity: 0.8; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
48 .header h1 { margin: 0; font-size: 24px; font-weight: 600; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
49 .description { color: var(--text-secondary); margin: 0; font-size: 14px; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
50
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
51 /* Clone Box */
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
52 .clone-box {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
53 background: var(--bg-subtle);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
54 border: 1px solid var(--border-color);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
55 border-radius: var(--radius);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
56 padding: 12px 16px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
57 margin-bottom: 24px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
58 display: flex;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
59 justify-content: space-between;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
60 align-items: center;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
61 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
62 .clone-label { font-weight: 600; font-size: 13px; margin-right: 10px; color: var(--text-primary); }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
63 .clone-url {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
64 font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
65 background: white;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
66 border: 1px solid var(--border-color);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
67 padding: 4px 8px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
68 border-radius: 4px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
69 font-size: 12px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
70 color: var(--text-secondary);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
71 flex-grow: 1;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
72 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
73
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
74 /* Breadcrumb */
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
75 #breadcrumb {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
76 display: flex;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
77 align-items: center;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
78 font-size: 14px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
79 margin-bottom: 16px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
80 color: var(--text-secondary);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
81 padding: 8px 0;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
82 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
83 #breadcrumb a {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
84 color: var(--accent-color);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
85 text-decoration: none;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
86 border-radius: 4px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
87 padding: 2px 6px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
88 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
89 #breadcrumb a:hover { background: var(--bg-subtle); text-decoration: underline; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
90 #breadcrumb .separator { margin: 0 4px; color: var(--text-secondary); opacity: 0.5; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
91 #breadcrumb .nav-item.active { font-weight: 600; color: var(--text-primary); padding: 2px 6px;}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
92
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
93 /* File List Table Structure */
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
94 .file-list-container {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
95 border: 1px solid var(--border-color);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
96 border-radius: var(--radius);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
97 overflow: hidden;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
98 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
99 .file-header {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
100 background: var(--bg-subtle);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
101 border-bottom: 1px solid var(--border-color);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
102 padding: 12px 16px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
103 font-size: 13px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
104 font-weight: 600;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
105 color: var(--text-secondary);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
106 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
107 .empty-state { padding: 40px; text-align: center; color: var(--text-secondary); }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
108 .error-message {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
109 padding: 15px; border: 1px solid #ffdce0;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
110 background: #ffebe9; color: #cf222e;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
111 border-radius: var(--radius); margin-bottom: 20px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
112 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
113
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
114 /* File Row */
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
115 .file-row {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
116 display: flex;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
117 align-items: center;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
118 padding: 10px 16px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
119 border-bottom: 1px solid var(--border-color);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
120 transition: background 0.1s;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
121 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
122 .file-row:last-child { border-bottom: none; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
123 .file-row:hover { background: var(--hover-color); }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
124
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
125 .file-row .icon img { width: 20px; height: 20px; vertical-align: middle; margin-right: 12px; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
126 .file-row .name a {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
127 color: var(--text-primary);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
128 text-decoration: none;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
129 font-size: 14px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
130 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
131 .file-row .name a:hover { color: var(--accent-color); text-decoration: underline; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
132
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
133 /* Readme */
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
134 #readmeSection { margin-top: 32px; border: 1px solid var(--border-color); border-radius: var(--radius); }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
135 .readme-header {
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
136 background: var(--bg-subtle);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
137 padding: 10px 16px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
138 font-size: 12px; font-weight: 600;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
139 border-bottom: 1px solid var(--border-color);
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
140 display: flex; align-items: center; gap: 8px;
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
141 }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
142 #readmeContent { padding: 32px; background: white; overflow-x: auto; }
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
143 `}</style>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
144 );
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
145
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
146 /**
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
147 * Component: Breadcrumb
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
148 */
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
149 function Breadcrumb({ currentPath, onNavigate }) {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
150 if (!currentPath) {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
151 return (
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
152 <nav id="breadcrumb">
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
153 <span className="nav-item active">root</span>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
154 </nav>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
155 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
156 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
157
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
158 const parts = currentPath.split('/').filter(p => p);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
159 const crumbs = parts.map((part, index) => ({
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
160 name: part,
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
161 fullPath: parts.slice(0, index + 1).join('/')
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
162 }));
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
163
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
164 return (
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
165 <nav id="breadcrumb">
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
166 <a
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
167 href="/"
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
168 onClick={(e) => { e.preventDefault(); onNavigate(''); }}
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
169 title="Go to Root"
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
170 >
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
171 root
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
172 </a>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
173 {crumbs.map((crumb, index) => {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
174 const isLast = index === crumbs.length - 1;
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
175 return (
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
176 <React.Fragment key={crumb.fullPath}>
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
177 <span className="separator">/</span>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
178 {isLast ? (
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
179 <span className="nav-item active">{crumb.name}</span>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
180 ) : (
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
181 <a
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
182 href={`?path=${encodeURIComponent(crumb.fullPath)}`}
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
183 onClick={(e) => { e.preventDefault(); onNavigate(crumb.fullPath); }}
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
184 >
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
185 {crumb.name}
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
186 </a>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
187 )}
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
188 </React.Fragment>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
189 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
190 })}
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
191 </nav>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
192 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
193 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
194
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
195 /**
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
196 * Component: FileList
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
197 */
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
198 function FileList({ directories, files, onNavigate }) {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
199 const isEmpty = directories.length === 0 && files.length === 0;
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
200
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
201 if (isEmpty) {
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
202 return (
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
203 <div className="file-list-container">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
204 <div className="empty-state">This directory is empty.</div>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
205 </div>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
206 );
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
207 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
208
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
209 return (
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
210 <div className="file-list-container">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
211 {/* Optional header row like GitHub */}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
212 <div className="file-header">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
213 Files
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
214 </div>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
215
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
216 <div id="fileListBody">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
217 {directories.map((dir) => (
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
218 <FileRow
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
219 key={dir.abspath}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
220 item={dir}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
221 iconUrl={ICONS.folder}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
222 isDir={true}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
223 onNavigate={onNavigate}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
224 />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
225 ))}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
226
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
227 {files.map((file) => (
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
228 <FileRow
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
229 key={file.abspath}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
230 item={file}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
231 iconUrl={ICONS.file}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
232 isDir={false}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
233 />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
234 ))}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
235 </div>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
236 </div>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
237 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
238 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
239
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
240 /**
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
241 * Component: FileRow
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
242 */
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
243 function FileRow({ item, iconUrl, isDir, onNavigate }) {
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
244 const handleClick = (e) => {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
245 if (isDir) {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
246 e.preventDefault();
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
247 onNavigate(item.abspath);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
248 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
249 };
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
250
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
251 const href = isDir
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
252 ? `?path=${encodeURIComponent(item.abspath)}`
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
253 : `/api/repo/file?path=${encodeURIComponent(item.abspath)}`;
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
254
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
255 const target = isDir ? undefined : "_blank";
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
256
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
257 return (
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
258 <div className="file-row">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
259 <span className="icon">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
260 <img src={iconUrl} alt={isDir ? "Directory" : "File"} />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
261 </span>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
262 <span className="name">
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
263 <a href={href} onClick={handleClick} target={target} rel="noreferrer">
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
264 {item.basename}
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
265 </a>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
266 </span>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
267 </div>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
268 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
269 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
270
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
271 /**
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
272 * Component: ReadmeViewer
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
273 */
190
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
274 function ReadmeViewer({ content }: { content: string | null }) {
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
275 const contentRef = useRef<HTMLDivElement>(null);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
276 const moduleRef = useRef<any>(null);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
277 const [wasmReady, setWasmReady] = useState(false);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
278
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
279 useEffect(() => {
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
280 createMarkdownModule().then((Module) => {
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
281 moduleRef.current = Module;
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
282 setWasmReady(true);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
283 });
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
284 }, []);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
285
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
286 useEffect(() => {
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
287 if (!content || !wasmReady || !contentRef.current || !moduleRef.current) return;
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
288
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
289 const Module = moduleRef.current;
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
290 const markdownToHtmlPtr = Module.cwrap('markdown_to_html', 'number', ['string']);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
291 const markdownFree = Module.cwrap('markdown_free', null, ['number']);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
292
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
293 const ptr = markdownToHtmlPtr(content);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
294 const html = Module.UTF8ToString(ptr);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
295 markdownFree(ptr);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
296 contentRef.current.innerHTML = html;
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
297 }, [content, wasmReady]);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
298
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
299 if (!content) return null;
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
300
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
301 return (
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
302 <div id="readmeSection">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
303 <div className="readme-header">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
304 <img src="https://img.icons8.com/material-outlined/24/000000/menu--v1.png" width="16" alt="" style={{opacity:0.5}} />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
305 README.md
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
306 </div>
190
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
307 <div id="readmeContent" ref={contentRef}>
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
308 {!wasmReady && 'Loading...'}
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
309 </div>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
310 </div>
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
311 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
312 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
313
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
314 /**
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
315 * Main Application Component
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
316 */
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
317 function RepoBrowser() {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
318 const [currentPath, setCurrentPath] = useState(getCurrentPath());
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
319 const [content, setContent] = useState({ files: [], directories: [] });
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
320 const [readme, setReadme] = useState(null);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
321 const [error, setError] = useState(null);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
322 const [loading, setLoading] = useState(false);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
323
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
324 function getCurrentPath() {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
325 const params = new URLSearchParams(window.location.search);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
326 return params.get('path') || '';
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
327 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
328
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
329 useEffect(() => {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
330 const handlePopState = () => setCurrentPath(getCurrentPath());
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
331 window.addEventListener('popstate', handlePopState);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
332 return () => window.removeEventListener('popstate', handlePopState);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
333 }, []);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
334
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
335 useEffect(() => {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
336 fetchDirectory(currentPath);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
337 fetchReadme(currentPath);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
338 }, [currentPath]);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
339
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
340 const navigate = (path) => {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
341 const newUrl = path ? `?path=${encodeURIComponent(path)}` : '/';
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
342 window.history.pushState({ path }, '', newUrl);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
343 setCurrentPath(path);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
344 };
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
345
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
346 const fetchDirectory = async (path) => {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
347 setLoading(true);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
348 setError(null);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
349 try {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
350 const url = path
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
351 ? `${API_BASE}/list?path=${encodeURIComponent(path)}`
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
352 : `${API_BASE}/list`;
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
353
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
354 const response = await fetch(url);
190
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
355 let data;
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
356 if (response.ok)
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
357 data = await response.json();
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
358
190
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
359 if (data.error)
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
360 throw new Error(data.error);
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
361
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
362 setContent({
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
363 files: data.files || [],
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
364 directories: data.directories || []
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
365 });
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
366 } catch (err) {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
367 console.error('Error loading directory:', err);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
368 setError(err.message);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
369 } finally {
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
370 setLoading(false);
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
371 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
372 };
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
373
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
374 const fetchReadme = async (path) => {
190
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
375 const readmePath = path ? `${path}/README.md` : 'README.md';
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
376 const response = await fetch(`${API_BASE}/file?path=${encodeURIComponent(readmePath)}`);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
377 console.log(response);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
378 if (response.ok)
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
379 {
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
380 const text = await response.text();
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
381 setReadme(text);
a2725419f988 Updated so that bun builds will with already existing js files.
MrJuneJune <me@mrjunejune.com>
parents: 188
diff changeset
382 }
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
383 };
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
384
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
385 return (
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
386 <>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
387 <GlobalStyles />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
388 <div className="repo-container">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
389
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
390 {/* Header */}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
391 <div className="header">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
392 <img src={ICONS.repo} alt="Repo" className="header-icon" />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
393 <div>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
394 <h1>Zenbu Repository</h1>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
395 <p className="description">Browse and manage the mercurial codebase</p>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
396 </div>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
397 </div>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
398
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
399 {/* Clone Bar */}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
400 <div className="clone-box">
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
401 <div style={{display:'flex', alignItems:'center', width:'100%'}}>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
402 <span className="clone-label">Clone HTTPS</span>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
403 <code className="clone-url">hg clone http://zenbu.babocoder.com/repo</code>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
404 </div>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
405 </div>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
406
176
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
407 {/* Navigation & Content */}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
408 <Breadcrumb currentPath={currentPath} onNavigate={navigate} />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
409
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
410 {error && <div className="error-message">Error: {error}</div>}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
411
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
412 {loading ? (
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
413 <div className="file-list-container" style={{padding: '40px', textAlign: 'center', color:'#666'}}>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
414 Loading files...
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
415 </div>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
416 ) : (
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
417 <>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
418 <FileList
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
419 directories={content.directories}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
420 files={content.files}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
421 onNavigate={navigate}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
422 />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
423 <ReadmeViewer content={readme} />
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
424 </>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
425 )}
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
426 </div>
fed99fc04e12 [HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents: 175
diff changeset
427 </>
175
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
428 );
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
429 }
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
430
71ad34a8bc9a [HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
431 export { RepoBrowser };