reviw 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/server.js +393 -916
- package/dist/ui/ui.js +230 -848
- package/package.json +1 -1
package/dist/server/server.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { dirname as dirname$
|
|
3
|
-
import { spawnSync as spawnSync$
|
|
4
|
-
import { createHash as createHash$
|
|
5
|
-
import { createServer as createServer$
|
|
6
|
-
import { statSync as statSync$
|
|
7
|
-
import { tmpdir as tmpdir$
|
|
2
|
+
import { dirname as dirname$1978, join as join$1952, resolve as resolve$1997, extname as extname$1985, basename as basename$1995 } from "node:path";
|
|
3
|
+
import { spawnSync as spawnSync$2074, execSync as execSync$2041, spawn as spawn$2069 } from "node:child_process";
|
|
4
|
+
import { createHash as createHash$2023 } from "node:crypto";
|
|
5
|
+
import { createServer as createServer$2002 } from "node:http";
|
|
6
|
+
import { statSync as statSync$2092, unwatchFile as unwatchFile$2028, readdirSync as readdirSync$2054, existsSync as existsSync$1961, rmSync as rmSync$2063, mkdtempSync as mkdtempSync$2044, appendFileSync as appendFileSync$1959, createReadStream as createReadStream$2096, writeFileSync as writeFileSync$1956, unlinkSync as unlinkSync$1963, readFileSync as readFileSync$1966, watchFile as watchFile$2130, mkdirSync as mkdirSync$1971 } from "node:fs";
|
|
7
|
+
import { tmpdir as tmpdir$1949, homedir as homedir$1968 } from "node:os";
|
|
8
8
|
class $PanicError extends Error {}
|
|
9
9
|
function $panic() {
|
|
10
10
|
throw new $PanicError();
|
|
@@ -12,22 +12,6 @@ function $panic() {
|
|
|
12
12
|
function _M0TPB13StringBuilder(param0) {
|
|
13
13
|
this.val = param0;
|
|
14
14
|
}
|
|
15
|
-
function $bound_check(arr, index) {
|
|
16
|
-
if (index < 0 || index >= arr.length) throw new Error("Index out of bounds");
|
|
17
|
-
}
|
|
18
|
-
function _M0TPC16string10StringView(param0, param1, param2) {
|
|
19
|
-
this.str = param0;
|
|
20
|
-
this.start = param1;
|
|
21
|
-
this.end = param2;
|
|
22
|
-
}
|
|
23
|
-
function _M0TPB13SourceLocRepr(param0, param1, param2, param3, param4, param5) {
|
|
24
|
-
this.pkg = param0;
|
|
25
|
-
this.filename = param1;
|
|
26
|
-
this.start_line = param2;
|
|
27
|
-
this.start_column = param3;
|
|
28
|
-
this.end_line = param4;
|
|
29
|
-
this.end_column = param5;
|
|
30
|
-
}
|
|
31
15
|
function $compare_int(a, b) {
|
|
32
16
|
return (a >= b) - (a <= b);
|
|
33
17
|
}
|
|
@@ -43,10 +27,18 @@ const _M0FPB12random__seed = () => {
|
|
|
43
27
|
function _M0TPB6Hasher(param0) {
|
|
44
28
|
this.acc = param0;
|
|
45
29
|
}
|
|
30
|
+
function _M0TPC16string10StringView(param0, param1, param2) {
|
|
31
|
+
this.str = param0;
|
|
32
|
+
this.start = param1;
|
|
33
|
+
this.end = param2;
|
|
34
|
+
}
|
|
46
35
|
const _M0FPB19int__to__string__js = (x, radix) => {
|
|
47
36
|
return x.toString(radix);
|
|
48
37
|
};
|
|
49
|
-
function
|
|
38
|
+
function $bound_check(arr, index) {
|
|
39
|
+
if (index < 0 || index >= arr.length) throw new Error("Index out of bounds");
|
|
40
|
+
}
|
|
41
|
+
function _M0TPB8MutLocalGiE(param0) {
|
|
50
42
|
this.val = param0;
|
|
51
43
|
}
|
|
52
44
|
function $make_array_len_and_init(a, b) {
|
|
@@ -55,7 +47,7 @@ function $make_array_len_and_init(a, b) {
|
|
|
55
47
|
return arr;
|
|
56
48
|
}
|
|
57
49
|
const _M0MPB7JSArray4push = (arr, val) => { arr.push(val); };
|
|
58
|
-
function
|
|
50
|
+
function _M0TPB8MutLocalGORPC16string10StringViewE(param0) {
|
|
59
51
|
this.val = param0;
|
|
60
52
|
}
|
|
61
53
|
function _M0TPB3MapGssE(param0, param1, param2, param3, param4, param5, param6) {
|
|
@@ -90,6 +82,9 @@ _M0DTPC16option6OptionGRPB5ArrayGsEE4Some.prototype.$tag = 1;
|
|
|
90
82
|
function _M0TPC13ref3RefGsE(param0) {
|
|
91
83
|
this.val = param0;
|
|
92
84
|
}
|
|
85
|
+
function _M0TPC13ref3RefGiE(param0) {
|
|
86
|
+
this.val = param0;
|
|
87
|
+
}
|
|
93
88
|
function _M0TP36kazuph5reviw4core13ReviwQuestion(param0, param1, param2, param3, param4) {
|
|
94
89
|
this.id = param0;
|
|
95
90
|
this.question = param1;
|
|
@@ -214,6 +209,7 @@ function _M0TP36kazuph5reviw4core12ReviewResult(param0, param1, param2, param3,
|
|
|
214
209
|
this.decision = param6;
|
|
215
210
|
this.action = param7;
|
|
216
211
|
}
|
|
212
|
+
const _M0FP36kazuph5reviw6server21json__strip__decision = (s) => { try { const o = JSON.parse(s); delete o.decision; delete o.action; return JSON.stringify(o); } catch(e) { return s; } };
|
|
217
213
|
const _M0FP36kazuph5reviw6server12set__timeout = (cb, ms) => setTimeout(cb, ms);
|
|
218
214
|
const _M0FP36kazuph5reviw6server15js__stdio__pipe = () => ({ stdio: "pipe" });
|
|
219
215
|
const _M0FP36kazuph5reviw6server15try__call__bool = (fn) => { try { return fn(); } catch(e) { return false; } };
|
|
@@ -314,144 +310,147 @@ function _M0TP36kazuph5reviw6server13ServerContext(param0, param1, param2, param
|
|
|
314
310
|
this.finished = param9;
|
|
315
311
|
}
|
|
316
312
|
const _M0FP092moonbitlang_2fcore_2fbuiltin_2fStringBuilder_24as_24_40moonbitlang_2fcore_2fbuiltin_2eLogger = { method_0: _M0IPB13StringBuilderPB6Logger13write__string, method_1: _M0IP016_24default__implPB6Logger16write__substringGRPB13StringBuilderE, method_2: _M0IPB13StringBuilderPB6Logger11write__view, method_3: _M0IPB13StringBuilderPB6Logger11write__char };
|
|
317
|
-
const
|
|
318
|
-
const
|
|
319
|
-
const
|
|
320
|
-
const
|
|
321
|
-
const
|
|
322
|
-
const
|
|
323
|
-
const
|
|
324
|
-
const
|
|
325
|
-
const
|
|
326
|
-
const
|
|
327
|
-
const
|
|
328
|
-
const
|
|
329
|
-
const
|
|
330
|
-
const
|
|
331
|
-
const
|
|
332
|
-
const
|
|
333
|
-
const
|
|
334
|
-
const
|
|
335
|
-
const
|
|
336
|
-
const
|
|
337
|
-
const
|
|
338
|
-
const
|
|
339
|
-
const
|
|
340
|
-
const
|
|
341
|
-
const
|
|
342
|
-
const
|
|
343
|
-
const
|
|
344
|
-
const
|
|
345
|
-
const
|
|
346
|
-
const
|
|
347
|
-
const
|
|
348
|
-
const
|
|
349
|
-
const
|
|
350
|
-
const
|
|
351
|
-
const
|
|
352
|
-
const
|
|
353
|
-
const
|
|
354
|
-
const
|
|
355
|
-
const
|
|
356
|
-
const
|
|
357
|
-
const
|
|
358
|
-
const
|
|
359
|
-
const
|
|
360
|
-
const
|
|
361
|
-
const
|
|
362
|
-
const
|
|
363
|
-
const
|
|
364
|
-
const
|
|
365
|
-
const
|
|
366
|
-
const
|
|
367
|
-
const
|
|
368
|
-
const
|
|
369
|
-
const
|
|
370
|
-
const
|
|
371
|
-
const
|
|
372
|
-
const
|
|
373
|
-
const
|
|
374
|
-
const
|
|
375
|
-
const
|
|
376
|
-
const
|
|
377
|
-
const
|
|
378
|
-
const
|
|
379
|
-
const
|
|
380
|
-
const
|
|
381
|
-
const
|
|
382
|
-
const
|
|
383
|
-
const
|
|
384
|
-
const
|
|
385
|
-
const
|
|
386
|
-
const
|
|
387
|
-
const
|
|
388
|
-
const
|
|
389
|
-
const
|
|
390
|
-
const
|
|
391
|
-
const
|
|
392
|
-
const
|
|
393
|
-
const
|
|
394
|
-
const
|
|
395
|
-
const
|
|
396
|
-
const
|
|
397
|
-
const
|
|
398
|
-
const
|
|
399
|
-
const
|
|
400
|
-
const
|
|
401
|
-
const
|
|
402
|
-
const
|
|
403
|
-
const
|
|
404
|
-
const
|
|
405
|
-
const
|
|
406
|
-
const
|
|
407
|
-
const
|
|
408
|
-
const
|
|
409
|
-
const
|
|
410
|
-
const
|
|
411
|
-
const
|
|
412
|
-
const
|
|
413
|
-
const
|
|
414
|
-
const
|
|
415
|
-
const
|
|
416
|
-
const
|
|
417
|
-
const
|
|
418
|
-
const
|
|
419
|
-
const
|
|
420
|
-
const
|
|
421
|
-
const
|
|
422
|
-
const
|
|
423
|
-
const
|
|
424
|
-
const
|
|
425
|
-
const
|
|
426
|
-
const
|
|
427
|
-
const
|
|
428
|
-
const
|
|
429
|
-
const
|
|
430
|
-
const
|
|
431
|
-
const
|
|
432
|
-
const
|
|
433
|
-
const
|
|
434
|
-
const
|
|
313
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS558 = ":";
|
|
314
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS559 = "#";
|
|
315
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560 = "'";
|
|
316
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561 = "\"";
|
|
317
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562 = "\n";
|
|
318
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563 = "[";
|
|
319
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564 = "]";
|
|
320
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565 = "{";
|
|
321
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566 = "}";
|
|
322
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567 = ",";
|
|
323
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568 = "&";
|
|
324
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569 = "*";
|
|
325
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570 = "!";
|
|
326
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571 = "|";
|
|
327
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572 = ">";
|
|
328
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573 = "%";
|
|
329
|
+
const _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574 = "@";
|
|
330
|
+
const _M0FP36kazuph5reviw4core16split__to__linesN7_2abindS649 = "\n";
|
|
331
|
+
const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS672 = "- ";
|
|
332
|
+
const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS673 = " -";
|
|
333
|
+
const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS674 = " ";
|
|
334
|
+
const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS675 = " ";
|
|
335
|
+
const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS677 = "- ";
|
|
336
|
+
const _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678 = " ";
|
|
337
|
+
const _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS682 = "- ";
|
|
338
|
+
const _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS683 = " ";
|
|
339
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS702 = "<details";
|
|
340
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS703 = "<div";
|
|
341
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS704 = "<section";
|
|
342
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS705 = "<article";
|
|
343
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706 = "<aside";
|
|
344
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707 = "<nav";
|
|
345
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708 = "<header";
|
|
346
|
+
const _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709 = "<footer";
|
|
347
|
+
const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS711 = "#";
|
|
348
|
+
const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS712 = "```";
|
|
349
|
+
const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS713 = ">";
|
|
350
|
+
const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS714 = "- ";
|
|
351
|
+
const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS715 = "* ";
|
|
352
|
+
const _M0FP36kazuph5reviw4core16is__block__startN7_2abindS716 = "<";
|
|
353
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS717 = "graph ";
|
|
354
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS718 = "flowchart ";
|
|
355
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS719 = "sequenceDiagram";
|
|
356
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS720 = "classDiagram";
|
|
357
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721 = "stateDiagram";
|
|
358
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722 = "erDiagram";
|
|
359
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723 = "journey";
|
|
360
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724 = "gantt";
|
|
361
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725 = "pie";
|
|
362
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726 = "gitGraph";
|
|
363
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727 = "mindmap";
|
|
364
|
+
const _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728 = "timeline";
|
|
365
|
+
const _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS729 = "|";
|
|
366
|
+
const _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS730 = "-";
|
|
367
|
+
const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS752 = "|";
|
|
368
|
+
const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS753 = "|";
|
|
369
|
+
const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS754 = "|";
|
|
370
|
+
const _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS751 = "|";
|
|
371
|
+
const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS755 = ".mp4";
|
|
372
|
+
const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS756 = ".webm";
|
|
373
|
+
const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS757 = ".mov";
|
|
374
|
+
const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS758 = ".avi";
|
|
375
|
+
const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759 = ".mkv";
|
|
376
|
+
const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760 = ".m4v";
|
|
377
|
+
const _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761 = ".ogv";
|
|
378
|
+
const _M0FP36kazuph5reviw4core14render__inlineN7_2abindS767 = "javascript:";
|
|
379
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS780 = "expression(";
|
|
380
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS781 = "url(";
|
|
381
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS782 = "-moz-binding";
|
|
382
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS783 = "behavior:";
|
|
383
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784 = "behaviour:";
|
|
384
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785 = "javascript:";
|
|
385
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786 = "vbscript:";
|
|
386
|
+
const _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787 = "@import";
|
|
387
|
+
const _M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS788 = "on";
|
|
388
|
+
const _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS789 = "javascript:";
|
|
389
|
+
const _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS790 = "data:text/html";
|
|
390
|
+
const _M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS806 = ">";
|
|
391
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS808 = "<";
|
|
392
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS810 = "<summary>";
|
|
393
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS811 = "</details>";
|
|
394
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS813 = "</details>";
|
|
395
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814 = "<details";
|
|
396
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS818 = "#";
|
|
397
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS819 = "```";
|
|
398
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS821 = "```";
|
|
399
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822 = ">";
|
|
400
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS824 = ">";
|
|
401
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS829 = "- ";
|
|
402
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS830 = "* ";
|
|
403
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS835 = "- ";
|
|
404
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836 = "* ";
|
|
405
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS832 = "[ ] ";
|
|
406
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833 = "[x] ";
|
|
407
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834 = "[X] ";
|
|
408
|
+
const _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS847 = "|";
|
|
409
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS975 = "@@ ";
|
|
410
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS977 = "@@ ";
|
|
411
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS978 = "diff ";
|
|
412
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979 = "--- ";
|
|
413
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS980 = "+";
|
|
414
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981 = "-";
|
|
415
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982 = " ";
|
|
416
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983 = "diff ";
|
|
417
|
+
const _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984 = "--- ";
|
|
418
|
+
const _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS986 = "a/";
|
|
419
|
+
const _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS987 = "b/";
|
|
420
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS989 = "diff --git ";
|
|
421
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS991 = "new file mode";
|
|
422
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS992 = "deleted file mode";
|
|
423
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS993 = "Binary files";
|
|
424
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS994 = "index ";
|
|
425
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS995 = "--- ";
|
|
426
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS996 = "+++ ";
|
|
427
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS997 = "--- ";
|
|
428
|
+
const _M0FP36kazuph5reviw4core11parse__diffN7_2abindS998 = "+++ ";
|
|
429
|
+
const _M0FP36kazuph5reviw4core27from__string_2econstr_2f572 = 0;
|
|
430
|
+
const _M0FP36kazuph5reviw4core27from__string_2econstr_2f573 = 1;
|
|
431
|
+
const _M0FP36kazuph5reviw4core27from__string_2econstr_2f574 = 2;
|
|
432
|
+
const _M0FP36kazuph5reviw4core27from__string_2econstr_2f576 = 0;
|
|
433
|
+
const _M0FP36kazuph5reviw4core27from__string_2econstr_2f577 = 1;
|
|
435
434
|
const _M0FP36kazuph5reviw6server15active__servers = [];
|
|
436
435
|
const _M0FP36kazuph5reviw6server12all__results = [];
|
|
437
|
-
const
|
|
438
|
-
const
|
|
439
|
-
const
|
|
440
|
-
const
|
|
441
|
-
const
|
|
442
|
-
const
|
|
443
|
-
const
|
|
444
|
-
const
|
|
445
|
-
const
|
|
446
|
-
const
|
|
447
|
-
const
|
|
448
|
-
const _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS569 = "true";
|
|
436
|
+
const _M0FP36kazuph5reviw6server12print__usageN5usageS419 = "Usage: reviw <file...> [options]\n\nOptions:\n --port <n> Base port (default: 4989)\n --host <addr> Bind address (default: 127.0.0.1, use 0.0.0.0 for remote)\n --no-open Don't open browser\n -e, --encoding <enc> Force encoding (e.g. shift-jis, euc-jp)\n -h, --help Show help\n -v, --version Show version\n\nSupported formats: CSV, TSV, Markdown, Diff, Plain text\nPipe stdin for diff: git diff | reviw";
|
|
437
|
+
const _M0FP36kazuph5reviw6server12detect__modeN7_2abindS462 = ".";
|
|
438
|
+
const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS526 = "..";
|
|
439
|
+
const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530 = "scene_";
|
|
440
|
+
const _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS531 = ".jpg";
|
|
441
|
+
const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS566 = "/";
|
|
442
|
+
const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS564 = "..";
|
|
443
|
+
const _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS565 = "video/";
|
|
444
|
+
const _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS568 = "/";
|
|
445
|
+
const _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS567 = "..";
|
|
446
|
+
const _M0FP36kazuph5reviw6server15handle__requestN7_2abindS569 = "/video-timeline?";
|
|
449
447
|
const _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS570 = "true";
|
|
450
|
-
const
|
|
448
|
+
const _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS571 = "true";
|
|
449
|
+
const _M0FP017____moonbit__mainN7_2abindS590 = "-";
|
|
451
450
|
const _M0FP36kazuph5reviw6server15expected__count = _M0MPC13ref3Ref3newGiE(0);
|
|
452
451
|
const _M0FP36kazuph5reviw6server18encoding__override = _M0MPC13ref3Ref3newGsE("");
|
|
453
|
-
const
|
|
454
|
-
const
|
|
452
|
+
const _M0FPB33brute__force__find_2econstr_2f153 = 0;
|
|
453
|
+
const _M0FPB43boyer__moore__horspool__find_2econstr_2f139 = 0;
|
|
455
454
|
const _M0FP36kazuph5reviw6server10bind__host = _M0MPC13ref3Ref3newGsE("127.0.0.1");
|
|
456
455
|
const _M0FP36kazuph5reviw6server13ui__js__cache = _M0MPC13ref3Ref3newGsE("");
|
|
457
456
|
const _M0FPB4seed = _M0FPB12random__seed();
|
|
@@ -493,447 +492,6 @@ function _M0MPC16uint166UInt1623is__trailing__surrogate(self) {
|
|
|
493
492
|
function _M0FPB32code__point__of__surrogate__pair(leading, trailing) {
|
|
494
493
|
return (((Math.imul(leading - 55296 | 0, 1024) | 0) + trailing | 0) - 56320 | 0) + 65536 | 0;
|
|
495
494
|
}
|
|
496
|
-
function _M0MPC15array5Array2atGsE(self, index) {
|
|
497
|
-
const len = self.length;
|
|
498
|
-
if (index >= 0 && index < len) {
|
|
499
|
-
$bound_check(self, index);
|
|
500
|
-
return self[index];
|
|
501
|
-
} else {
|
|
502
|
-
return $panic();
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
function _M0MPC15array5Array2atGcE(self, index) {
|
|
506
|
-
const len = self.length;
|
|
507
|
-
if (index >= 0 && index < len) {
|
|
508
|
-
$bound_check(self, index);
|
|
509
|
-
return self[index];
|
|
510
|
-
} else {
|
|
511
|
-
return $panic();
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
function _M0MPC15array5Array2atGRPB5ArrayGsEE(self, index) {
|
|
515
|
-
const len = self.length;
|
|
516
|
-
if (index >= 0 && index < len) {
|
|
517
|
-
$bound_check(self, index);
|
|
518
|
-
return self[index];
|
|
519
|
-
} else {
|
|
520
|
-
return $panic();
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
function _M0MPC15array5Array2atGdE(self, index) {
|
|
524
|
-
const len = self.length;
|
|
525
|
-
if (index >= 0 && index < len) {
|
|
526
|
-
$bound_check(self, index);
|
|
527
|
-
return self[index];
|
|
528
|
-
} else {
|
|
529
|
-
return $panic();
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
function _M0MPB13SourceLocRepr5parse(repr) {
|
|
533
|
-
const _bind = new _M0TPC16string10StringView(repr, 0, repr.length);
|
|
534
|
-
const _data = _bind.str;
|
|
535
|
-
const _start = _bind.start;
|
|
536
|
-
const _end = _start + (_bind.end - _bind.start | 0) | 0;
|
|
537
|
-
let _cursor = _start;
|
|
538
|
-
let accept_state = -1;
|
|
539
|
-
let match_end = -1;
|
|
540
|
-
let match_tag_saver_0 = -1;
|
|
541
|
-
let match_tag_saver_1 = -1;
|
|
542
|
-
let match_tag_saver_2 = -1;
|
|
543
|
-
let match_tag_saver_3 = -1;
|
|
544
|
-
let match_tag_saver_4 = -1;
|
|
545
|
-
let tag_0 = -1;
|
|
546
|
-
let tag_1 = -1;
|
|
547
|
-
let tag_1_1 = -1;
|
|
548
|
-
let tag_1_2 = -1;
|
|
549
|
-
let tag_3 = -1;
|
|
550
|
-
let tag_2 = -1;
|
|
551
|
-
let tag_2_1 = -1;
|
|
552
|
-
let tag_4 = -1;
|
|
553
|
-
_L: {
|
|
554
|
-
if (_cursor < _end) {
|
|
555
|
-
const _p = _cursor;
|
|
556
|
-
if (_data.charCodeAt(_p) === 64) {
|
|
557
|
-
_cursor = _cursor + 1 | 0;
|
|
558
|
-
_L$2: while (true) {
|
|
559
|
-
tag_0 = _cursor;
|
|
560
|
-
if (_cursor < _end) {
|
|
561
|
-
const _p$2 = _cursor;
|
|
562
|
-
const next_char = _data.charCodeAt(_p$2);
|
|
563
|
-
_cursor = _cursor + 1 | 0;
|
|
564
|
-
if (next_char === 58) {
|
|
565
|
-
if (_cursor < _end) {
|
|
566
|
-
_cursor = _cursor + 1 | 0;
|
|
567
|
-
let _tmp = 0;
|
|
568
|
-
_L$3: while (true) {
|
|
569
|
-
const dispatch_15 = _tmp;
|
|
570
|
-
_L$4: {
|
|
571
|
-
_L$5: {
|
|
572
|
-
switch (dispatch_15) {
|
|
573
|
-
case 3: {
|
|
574
|
-
tag_1_2 = tag_1_1;
|
|
575
|
-
tag_1_1 = tag_1;
|
|
576
|
-
tag_1 = _cursor;
|
|
577
|
-
if (_cursor < _end) {
|
|
578
|
-
_L$6: {
|
|
579
|
-
const _p$3 = _cursor;
|
|
580
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
581
|
-
_cursor = _cursor + 1 | 0;
|
|
582
|
-
if (next_char$2 < 58) {
|
|
583
|
-
if (next_char$2 < 48) {
|
|
584
|
-
break _L$6;
|
|
585
|
-
} else {
|
|
586
|
-
tag_1 = _cursor;
|
|
587
|
-
tag_2_1 = tag_2;
|
|
588
|
-
tag_2 = _cursor;
|
|
589
|
-
tag_3 = _cursor;
|
|
590
|
-
if (_cursor < _end) {
|
|
591
|
-
_L$7: {
|
|
592
|
-
const _p$4 = _cursor;
|
|
593
|
-
const next_char$3 = _data.charCodeAt(_p$4);
|
|
594
|
-
_cursor = _cursor + 1 | 0;
|
|
595
|
-
if (next_char$3 < 48) {
|
|
596
|
-
if (next_char$3 === 45) {
|
|
597
|
-
break _L$4;
|
|
598
|
-
} else {
|
|
599
|
-
break _L$7;
|
|
600
|
-
}
|
|
601
|
-
} else {
|
|
602
|
-
if (next_char$3 > 57) {
|
|
603
|
-
if (next_char$3 < 59) {
|
|
604
|
-
_tmp = 3;
|
|
605
|
-
continue _L$3;
|
|
606
|
-
} else {
|
|
607
|
-
break _L$7;
|
|
608
|
-
}
|
|
609
|
-
} else {
|
|
610
|
-
_tmp = 6;
|
|
611
|
-
continue _L$3;
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
_tmp = 0;
|
|
616
|
-
continue _L$3;
|
|
617
|
-
} else {
|
|
618
|
-
break _L;
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
} else {
|
|
622
|
-
if (next_char$2 > 58) {
|
|
623
|
-
break _L$6;
|
|
624
|
-
} else {
|
|
625
|
-
_tmp = 1;
|
|
626
|
-
continue _L$3;
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
_tmp = 0;
|
|
631
|
-
continue _L$3;
|
|
632
|
-
} else {
|
|
633
|
-
break _L;
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
case 2: {
|
|
637
|
-
tag_1 = _cursor;
|
|
638
|
-
tag_2 = _cursor;
|
|
639
|
-
if (_cursor < _end) {
|
|
640
|
-
_L$6: {
|
|
641
|
-
const _p$3 = _cursor;
|
|
642
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
643
|
-
_cursor = _cursor + 1 | 0;
|
|
644
|
-
if (next_char$2 < 58) {
|
|
645
|
-
if (next_char$2 < 48) {
|
|
646
|
-
break _L$6;
|
|
647
|
-
} else {
|
|
648
|
-
_tmp = 2;
|
|
649
|
-
continue _L$3;
|
|
650
|
-
}
|
|
651
|
-
} else {
|
|
652
|
-
if (next_char$2 > 58) {
|
|
653
|
-
break _L$6;
|
|
654
|
-
} else {
|
|
655
|
-
_tmp = 3;
|
|
656
|
-
continue _L$3;
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
_tmp = 0;
|
|
661
|
-
continue _L$3;
|
|
662
|
-
} else {
|
|
663
|
-
break _L;
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
case 0: {
|
|
667
|
-
tag_1 = _cursor;
|
|
668
|
-
if (_cursor < _end) {
|
|
669
|
-
const _p$3 = _cursor;
|
|
670
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
671
|
-
_cursor = _cursor + 1 | 0;
|
|
672
|
-
if (next_char$2 === 58) {
|
|
673
|
-
_tmp = 1;
|
|
674
|
-
continue _L$3;
|
|
675
|
-
} else {
|
|
676
|
-
_tmp = 0;
|
|
677
|
-
continue _L$3;
|
|
678
|
-
}
|
|
679
|
-
} else {
|
|
680
|
-
break _L;
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
case 4: {
|
|
684
|
-
tag_1 = _cursor;
|
|
685
|
-
tag_4 = _cursor;
|
|
686
|
-
if (_cursor < _end) {
|
|
687
|
-
_L$6: {
|
|
688
|
-
const _p$3 = _cursor;
|
|
689
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
690
|
-
_cursor = _cursor + 1 | 0;
|
|
691
|
-
if (next_char$2 < 58) {
|
|
692
|
-
if (next_char$2 < 48) {
|
|
693
|
-
break _L$6;
|
|
694
|
-
} else {
|
|
695
|
-
_tmp = 4;
|
|
696
|
-
continue _L$3;
|
|
697
|
-
}
|
|
698
|
-
} else {
|
|
699
|
-
if (next_char$2 > 58) {
|
|
700
|
-
break _L$6;
|
|
701
|
-
} else {
|
|
702
|
-
tag_1_2 = tag_1_1;
|
|
703
|
-
tag_1_1 = tag_1;
|
|
704
|
-
tag_1 = _cursor;
|
|
705
|
-
if (_cursor < _end) {
|
|
706
|
-
_L$7: {
|
|
707
|
-
const _p$4 = _cursor;
|
|
708
|
-
const next_char$3 = _data.charCodeAt(_p$4);
|
|
709
|
-
_cursor = _cursor + 1 | 0;
|
|
710
|
-
if (next_char$3 < 58) {
|
|
711
|
-
if (next_char$3 < 48) {
|
|
712
|
-
break _L$7;
|
|
713
|
-
} else {
|
|
714
|
-
tag_1 = _cursor;
|
|
715
|
-
tag_2_1 = tag_2;
|
|
716
|
-
tag_2 = _cursor;
|
|
717
|
-
if (_cursor < _end) {
|
|
718
|
-
_L$8: {
|
|
719
|
-
const _p$5 = _cursor;
|
|
720
|
-
const next_char$4 = _data.charCodeAt(_p$5);
|
|
721
|
-
_cursor = _cursor + 1 | 0;
|
|
722
|
-
if (next_char$4 < 58) {
|
|
723
|
-
if (next_char$4 < 48) {
|
|
724
|
-
break _L$8;
|
|
725
|
-
} else {
|
|
726
|
-
_tmp = 5;
|
|
727
|
-
continue _L$3;
|
|
728
|
-
}
|
|
729
|
-
} else {
|
|
730
|
-
if (next_char$4 > 58) {
|
|
731
|
-
break _L$8;
|
|
732
|
-
} else {
|
|
733
|
-
_tmp = 3;
|
|
734
|
-
continue _L$3;
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
_tmp = 0;
|
|
739
|
-
continue _L$3;
|
|
740
|
-
} else {
|
|
741
|
-
break _L$5;
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
} else {
|
|
745
|
-
if (next_char$3 > 58) {
|
|
746
|
-
break _L$7;
|
|
747
|
-
} else {
|
|
748
|
-
_tmp = 1;
|
|
749
|
-
continue _L$3;
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
_tmp = 0;
|
|
754
|
-
continue _L$3;
|
|
755
|
-
} else {
|
|
756
|
-
break _L;
|
|
757
|
-
}
|
|
758
|
-
}
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
_tmp = 0;
|
|
762
|
-
continue _L$3;
|
|
763
|
-
} else {
|
|
764
|
-
break _L;
|
|
765
|
-
}
|
|
766
|
-
}
|
|
767
|
-
case 5: {
|
|
768
|
-
tag_1 = _cursor;
|
|
769
|
-
tag_2 = _cursor;
|
|
770
|
-
if (_cursor < _end) {
|
|
771
|
-
_L$6: {
|
|
772
|
-
const _p$3 = _cursor;
|
|
773
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
774
|
-
_cursor = _cursor + 1 | 0;
|
|
775
|
-
if (next_char$2 < 58) {
|
|
776
|
-
if (next_char$2 < 48) {
|
|
777
|
-
break _L$6;
|
|
778
|
-
} else {
|
|
779
|
-
_tmp = 5;
|
|
780
|
-
continue _L$3;
|
|
781
|
-
}
|
|
782
|
-
} else {
|
|
783
|
-
if (next_char$2 > 58) {
|
|
784
|
-
break _L$6;
|
|
785
|
-
} else {
|
|
786
|
-
_tmp = 3;
|
|
787
|
-
continue _L$3;
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
_tmp = 0;
|
|
792
|
-
continue _L$3;
|
|
793
|
-
} else {
|
|
794
|
-
break _L$5;
|
|
795
|
-
}
|
|
796
|
-
}
|
|
797
|
-
case 6: {
|
|
798
|
-
tag_1 = _cursor;
|
|
799
|
-
tag_2 = _cursor;
|
|
800
|
-
tag_3 = _cursor;
|
|
801
|
-
if (_cursor < _end) {
|
|
802
|
-
_L$6: {
|
|
803
|
-
const _p$3 = _cursor;
|
|
804
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
805
|
-
_cursor = _cursor + 1 | 0;
|
|
806
|
-
if (next_char$2 < 48) {
|
|
807
|
-
if (next_char$2 === 45) {
|
|
808
|
-
break _L$4;
|
|
809
|
-
} else {
|
|
810
|
-
break _L$6;
|
|
811
|
-
}
|
|
812
|
-
} else {
|
|
813
|
-
if (next_char$2 > 57) {
|
|
814
|
-
if (next_char$2 < 59) {
|
|
815
|
-
_tmp = 3;
|
|
816
|
-
continue _L$3;
|
|
817
|
-
} else {
|
|
818
|
-
break _L$6;
|
|
819
|
-
}
|
|
820
|
-
} else {
|
|
821
|
-
_tmp = 6;
|
|
822
|
-
continue _L$3;
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
}
|
|
826
|
-
_tmp = 0;
|
|
827
|
-
continue _L$3;
|
|
828
|
-
} else {
|
|
829
|
-
break _L;
|
|
830
|
-
}
|
|
831
|
-
}
|
|
832
|
-
case 1: {
|
|
833
|
-
tag_1_1 = tag_1;
|
|
834
|
-
tag_1 = _cursor;
|
|
835
|
-
if (_cursor < _end) {
|
|
836
|
-
_L$6: {
|
|
837
|
-
const _p$3 = _cursor;
|
|
838
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
839
|
-
_cursor = _cursor + 1 | 0;
|
|
840
|
-
if (next_char$2 < 58) {
|
|
841
|
-
if (next_char$2 < 48) {
|
|
842
|
-
break _L$6;
|
|
843
|
-
} else {
|
|
844
|
-
_tmp = 2;
|
|
845
|
-
continue _L$3;
|
|
846
|
-
}
|
|
847
|
-
} else {
|
|
848
|
-
if (next_char$2 > 58) {
|
|
849
|
-
break _L$6;
|
|
850
|
-
} else {
|
|
851
|
-
_tmp = 1;
|
|
852
|
-
continue _L$3;
|
|
853
|
-
}
|
|
854
|
-
}
|
|
855
|
-
}
|
|
856
|
-
_tmp = 0;
|
|
857
|
-
continue _L$3;
|
|
858
|
-
} else {
|
|
859
|
-
break _L;
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
default: {
|
|
863
|
-
break _L;
|
|
864
|
-
}
|
|
865
|
-
}
|
|
866
|
-
}
|
|
867
|
-
tag_1 = tag_1_2;
|
|
868
|
-
tag_2 = tag_2_1;
|
|
869
|
-
match_tag_saver_0 = tag_0;
|
|
870
|
-
match_tag_saver_1 = tag_1;
|
|
871
|
-
match_tag_saver_2 = tag_2;
|
|
872
|
-
match_tag_saver_3 = tag_3;
|
|
873
|
-
match_tag_saver_4 = tag_4;
|
|
874
|
-
accept_state = 0;
|
|
875
|
-
match_end = _cursor;
|
|
876
|
-
break _L;
|
|
877
|
-
}
|
|
878
|
-
tag_1_1 = tag_1_2;
|
|
879
|
-
tag_1 = _cursor;
|
|
880
|
-
tag_2 = tag_2_1;
|
|
881
|
-
if (_cursor < _end) {
|
|
882
|
-
_L$5: {
|
|
883
|
-
const _p$3 = _cursor;
|
|
884
|
-
const next_char$2 = _data.charCodeAt(_p$3);
|
|
885
|
-
_cursor = _cursor + 1 | 0;
|
|
886
|
-
if (next_char$2 < 58) {
|
|
887
|
-
if (next_char$2 < 48) {
|
|
888
|
-
break _L$5;
|
|
889
|
-
} else {
|
|
890
|
-
_tmp = 4;
|
|
891
|
-
continue;
|
|
892
|
-
}
|
|
893
|
-
} else {
|
|
894
|
-
if (next_char$2 > 58) {
|
|
895
|
-
break _L$5;
|
|
896
|
-
} else {
|
|
897
|
-
_tmp = 1;
|
|
898
|
-
continue;
|
|
899
|
-
}
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
_tmp = 0;
|
|
903
|
-
continue;
|
|
904
|
-
} else {
|
|
905
|
-
break _L;
|
|
906
|
-
}
|
|
907
|
-
}
|
|
908
|
-
} else {
|
|
909
|
-
break _L;
|
|
910
|
-
}
|
|
911
|
-
} else {
|
|
912
|
-
continue;
|
|
913
|
-
}
|
|
914
|
-
} else {
|
|
915
|
-
break _L;
|
|
916
|
-
}
|
|
917
|
-
}
|
|
918
|
-
} else {
|
|
919
|
-
break _L;
|
|
920
|
-
}
|
|
921
|
-
} else {
|
|
922
|
-
break _L;
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
if (accept_state === 0) {
|
|
926
|
-
const start_line = _M0MPC16string6String4view(_data, match_tag_saver_1 + 1 | 0, match_tag_saver_2);
|
|
927
|
-
const start_column = _M0MPC16string6String4view(_data, match_tag_saver_2 + 1 | 0, match_tag_saver_3);
|
|
928
|
-
const pkg = _M0MPC16string6String4view(_data, _start + 1 | 0, match_tag_saver_0);
|
|
929
|
-
const filename = _M0MPC16string6String4view(_data, match_tag_saver_0 + 1 | 0, match_tag_saver_1);
|
|
930
|
-
const end_line = _M0MPC16string6String4view(_data, match_tag_saver_3 + 1 | 0, match_tag_saver_4);
|
|
931
|
-
const end_column = _M0MPC16string6String4view(_data, match_tag_saver_4 + 1 | 0, match_end);
|
|
932
|
-
return new _M0TPB13SourceLocRepr(pkg, filename, start_line, start_column, end_line, end_column);
|
|
933
|
-
} else {
|
|
934
|
-
return $panic();
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
495
|
function _M0IPB13StringBuilderPB6Logger13write__string(self, str) {
|
|
938
496
|
self.val = `${self.val}${str}`;
|
|
939
497
|
}
|
|
@@ -1015,7 +573,8 @@ function _M0IP016_24default__implPB4Show10to__stringGiE(self) {
|
|
|
1015
573
|
}
|
|
1016
574
|
function _M0IP016_24default__implPB4Show10to__stringGRPB9SourceLocE(self) {
|
|
1017
575
|
const logger = _M0MPB13StringBuilder11new_2einner(0);
|
|
1018
|
-
|
|
576
|
+
const _p = { self: logger, method_table: _M0FP092moonbitlang_2fcore_2fbuiltin_2fStringBuilder_24as_24_40moonbitlang_2fcore_2fbuiltin_2eLogger };
|
|
577
|
+
_p.method_table.method_0(_p.self, self);
|
|
1019
578
|
return logger.val;
|
|
1020
579
|
}
|
|
1021
580
|
function _M0MPB4Iter4nextGcE(self) {
|
|
@@ -1037,7 +596,7 @@ function _M0MPC16string10StringView12view_2einner(self, start_offset, end_offset
|
|
|
1037
596
|
const _Some = end_offset;
|
|
1038
597
|
end_offset$2 = _Some;
|
|
1039
598
|
}
|
|
1040
|
-
return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= (self.end - self.start | 0)) ? new _M0TPC16string10StringView(self.str, self.start + start_offset | 0, self.start + end_offset$2 | 0) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "
|
|
599
|
+
return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= (self.end - self.start | 0)) ? new _M0TPC16string10StringView(self.str, self.start + start_offset | 0, self.start + end_offset$2 | 0) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "builtin/stringview.mbt:113:5-113:36@moonbitlang/core");
|
|
1041
600
|
}
|
|
1042
601
|
function _M0IPC16string10StringViewPB4Show10to__string(self) {
|
|
1043
602
|
return self.str.substring(self.start, self.end);
|
|
@@ -1045,7 +604,7 @@ function _M0IPC16string10StringViewPB4Show10to__string(self) {
|
|
|
1045
604
|
function _M0MPC16string10StringView4iter(self) {
|
|
1046
605
|
const start = self.start;
|
|
1047
606
|
const end = self.end;
|
|
1048
|
-
const index = new
|
|
607
|
+
const index = new _M0TPB8MutLocalGiE(start);
|
|
1049
608
|
const _p = () => {
|
|
1050
609
|
if (index.val < end) {
|
|
1051
610
|
const c1 = self.str.charCodeAt(index.val);
|
|
@@ -1070,8 +629,8 @@ function _M0MPB5Iter23newGicE(f) {
|
|
|
1070
629
|
function _M0MPC16string10StringView5iter2(self) {
|
|
1071
630
|
const start = self.start;
|
|
1072
631
|
const end = self.end;
|
|
1073
|
-
const index = new
|
|
1074
|
-
const char_index = new
|
|
632
|
+
const index = new _M0TPB8MutLocalGiE(start);
|
|
633
|
+
const char_index = new _M0TPB8MutLocalGiE(0);
|
|
1075
634
|
return _M0MPB5Iter23newGicE(() => {
|
|
1076
635
|
if (index.val < end) {
|
|
1077
636
|
const c1 = self.str.charCodeAt(index.val);
|
|
@@ -1101,17 +660,7 @@ function _M0MPC16string6String12view_2einner(self, start_offset, end_offset) {
|
|
|
1101
660
|
const _Some = end_offset;
|
|
1102
661
|
end_offset$2 = _Some;
|
|
1103
662
|
}
|
|
1104
|
-
return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= self.length) ? new _M0TPC16string10StringView(self, start_offset, end_offset$2) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "
|
|
1105
|
-
}
|
|
1106
|
-
function _M0MPC16string6String4view(self, start_offset$46$opt, end_offset) {
|
|
1107
|
-
let start_offset;
|
|
1108
|
-
if (start_offset$46$opt === undefined) {
|
|
1109
|
-
start_offset = 0;
|
|
1110
|
-
} else {
|
|
1111
|
-
const _Some = start_offset$46$opt;
|
|
1112
|
-
start_offset = _Some;
|
|
1113
|
-
}
|
|
1114
|
-
return _M0MPC16string6String12view_2einner(self, start_offset, end_offset);
|
|
663
|
+
return start_offset >= 0 && (start_offset <= end_offset$2 && end_offset$2 <= self.length) ? new _M0TPC16string10StringView(self, start_offset, end_offset$2) : _M0FPB5abortGRPC16string10StringViewE("Invalid index for View", "builtin/stringview.mbt:398:5-398:36@moonbitlang/core");
|
|
1115
664
|
}
|
|
1116
665
|
function _M0IPB13StringBuilderPB6Logger11write__view(self, str) {
|
|
1117
666
|
self.val = `${self.val}${_M0IPC16string10StringViewPB4Show10to__string(str)}`;
|
|
@@ -1174,7 +723,7 @@ function _M0FPB28boyer__moore__horspool__find(haystack, needle) {
|
|
|
1174
723
|
return undefined;
|
|
1175
724
|
}
|
|
1176
725
|
} else {
|
|
1177
|
-
return
|
|
726
|
+
return _M0FPB43boyer__moore__horspool__find_2econstr_2f139;
|
|
1178
727
|
}
|
|
1179
728
|
}
|
|
1180
729
|
function _M0FPB18brute__force__find(haystack, needle) {
|
|
@@ -1185,44 +734,32 @@ function _M0FPB18brute__force__find(haystack, needle) {
|
|
|
1185
734
|
const _p = 0;
|
|
1186
735
|
const needle_first = needle.str.charCodeAt(needle.start + _p | 0);
|
|
1187
736
|
const forward_len = haystack_len - needle_len | 0;
|
|
1188
|
-
let
|
|
737
|
+
let _tmp = 0;
|
|
1189
738
|
while (true) {
|
|
739
|
+
const i = _tmp;
|
|
1190
740
|
if (i <= forward_len) {
|
|
741
|
+
const _p$2 = haystack.str.charCodeAt(haystack.start + i | 0);
|
|
742
|
+
if (_p$2 !== needle_first) {
|
|
743
|
+
_tmp = i + 1 | 0;
|
|
744
|
+
continue;
|
|
745
|
+
}
|
|
746
|
+
let _tmp$2 = 1;
|
|
1191
747
|
while (true) {
|
|
1192
|
-
|
|
1193
|
-
if (
|
|
1194
|
-
const _p$
|
|
1195
|
-
const _p$
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
i = i + 1 | 0;
|
|
748
|
+
const j = _tmp$2;
|
|
749
|
+
if (j < needle_len) {
|
|
750
|
+
const _p$3 = i + j | 0;
|
|
751
|
+
const _p$4 = haystack.str.charCodeAt(haystack.start + _p$3 | 0);
|
|
752
|
+
const _p$5 = needle.str.charCodeAt(needle.start + j | 0);
|
|
753
|
+
if (_p$4 !== _p$5) {
|
|
754
|
+
break;
|
|
755
|
+
}
|
|
756
|
+
_tmp$2 = j + 1 | 0;
|
|
1202
757
|
continue;
|
|
1203
758
|
} else {
|
|
1204
|
-
|
|
1205
|
-
}
|
|
1206
|
-
}
|
|
1207
|
-
if (i <= forward_len) {
|
|
1208
|
-
let _tmp = 1;
|
|
1209
|
-
while (true) {
|
|
1210
|
-
const j = _tmp;
|
|
1211
|
-
if (j < needle_len) {
|
|
1212
|
-
const _p$2 = i + j | 0;
|
|
1213
|
-
const _p$3 = haystack.str.charCodeAt(haystack.start + _p$2 | 0);
|
|
1214
|
-
const _p$4 = needle.str.charCodeAt(needle.start + j | 0);
|
|
1215
|
-
if (_p$3 !== _p$4) {
|
|
1216
|
-
break;
|
|
1217
|
-
}
|
|
1218
|
-
_tmp = j + 1 | 0;
|
|
1219
|
-
continue;
|
|
1220
|
-
} else {
|
|
1221
|
-
return i;
|
|
1222
|
-
}
|
|
759
|
+
return i;
|
|
1223
760
|
}
|
|
1224
|
-
i = i + 1 | 0;
|
|
1225
761
|
}
|
|
762
|
+
_tmp = i + 1 | 0;
|
|
1226
763
|
continue;
|
|
1227
764
|
} else {
|
|
1228
765
|
break;
|
|
@@ -1233,7 +770,7 @@ function _M0FPB18brute__force__find(haystack, needle) {
|
|
|
1233
770
|
return undefined;
|
|
1234
771
|
}
|
|
1235
772
|
} else {
|
|
1236
|
-
return
|
|
773
|
+
return _M0FPB33brute__force__find_2econstr_2f153;
|
|
1237
774
|
}
|
|
1238
775
|
}
|
|
1239
776
|
function _M0MPC16string10StringView4find(self, str) {
|
|
@@ -1323,44 +860,32 @@ function _M0FPB23brute__force__rev__find(haystack, needle) {
|
|
|
1323
860
|
if (haystack_len >= needle_len) {
|
|
1324
861
|
const _p = 0;
|
|
1325
862
|
const needle_first = needle.str.charCodeAt(needle.start + _p | 0);
|
|
1326
|
-
let
|
|
863
|
+
let _tmp = haystack_len - needle_len | 0;
|
|
1327
864
|
while (true) {
|
|
865
|
+
const i = _tmp;
|
|
1328
866
|
if (i >= 0) {
|
|
867
|
+
const _p$2 = haystack.str.charCodeAt(haystack.start + i | 0);
|
|
868
|
+
if (_p$2 !== needle_first) {
|
|
869
|
+
_tmp = i - 1 | 0;
|
|
870
|
+
continue;
|
|
871
|
+
}
|
|
872
|
+
let _tmp$2 = 1;
|
|
1329
873
|
while (true) {
|
|
1330
|
-
|
|
1331
|
-
if (
|
|
1332
|
-
const _p$
|
|
1333
|
-
const _p$
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
i = i - 1 | 0;
|
|
874
|
+
const j = _tmp$2;
|
|
875
|
+
if (j < needle_len) {
|
|
876
|
+
const _p$3 = i + j | 0;
|
|
877
|
+
const _p$4 = haystack.str.charCodeAt(haystack.start + _p$3 | 0);
|
|
878
|
+
const _p$5 = needle.str.charCodeAt(needle.start + j | 0);
|
|
879
|
+
if (_p$4 !== _p$5) {
|
|
880
|
+
break;
|
|
881
|
+
}
|
|
882
|
+
_tmp$2 = j + 1 | 0;
|
|
1340
883
|
continue;
|
|
1341
884
|
} else {
|
|
1342
|
-
|
|
1343
|
-
}
|
|
1344
|
-
}
|
|
1345
|
-
if (i >= 0) {
|
|
1346
|
-
let _tmp = 1;
|
|
1347
|
-
while (true) {
|
|
1348
|
-
const j = _tmp;
|
|
1349
|
-
if (j < needle_len) {
|
|
1350
|
-
const _p$2 = i + j | 0;
|
|
1351
|
-
const _p$3 = haystack.str.charCodeAt(haystack.start + _p$2 | 0);
|
|
1352
|
-
const _p$4 = needle.str.charCodeAt(needle.start + j | 0);
|
|
1353
|
-
if (_p$3 !== _p$4) {
|
|
1354
|
-
break;
|
|
1355
|
-
}
|
|
1356
|
-
_tmp = j + 1 | 0;
|
|
1357
|
-
continue;
|
|
1358
|
-
} else {
|
|
1359
|
-
return i;
|
|
1360
|
-
}
|
|
885
|
+
return i;
|
|
1361
886
|
}
|
|
1362
|
-
i = i - 1 | 0;
|
|
1363
887
|
}
|
|
888
|
+
_tmp = i - 1 | 0;
|
|
1364
889
|
continue;
|
|
1365
890
|
} else {
|
|
1366
891
|
break;
|
|
@@ -1424,7 +949,7 @@ function _M0MPC16string6String8contains(self, str) {
|
|
|
1424
949
|
}
|
|
1425
950
|
function _M0MPC16string6String4iter(self) {
|
|
1426
951
|
const len = self.length;
|
|
1427
|
-
const index = new
|
|
952
|
+
const index = new _M0TPB8MutLocalGiE(0);
|
|
1428
953
|
const _p = () => {
|
|
1429
954
|
if (index.val < len) {
|
|
1430
955
|
const c1 = self.charCodeAt(index.val);
|
|
@@ -1464,7 +989,7 @@ function _M0MPC16string10StringView5split(self, sep) {
|
|
|
1464
989
|
if (sep_len === 0) {
|
|
1465
990
|
return _M0MPB4Iter3mapGcRPC16string10StringViewE(_M0MPC16string10StringView4iter(self), (c) => _M0MPC16string6String12view_2einner(_M0IPC14char4CharPB4Show10to__string(c), 0, undefined));
|
|
1466
991
|
}
|
|
1467
|
-
const remaining = new
|
|
992
|
+
const remaining = new _M0TPB8MutLocalGORPC16string10StringViewE(self);
|
|
1468
993
|
const _p = () => {
|
|
1469
994
|
const _bind = remaining.val;
|
|
1470
995
|
if (_bind === undefined) {
|
|
@@ -1890,91 +1415,6 @@ function _M0IPC16string6StringPB4Hash13hash__combine(self, hasher) {
|
|
|
1890
1415
|
function _M0MPC16double6Double10to__string(self) {
|
|
1891
1416
|
return _M0FPB15ryu__to__string(self);
|
|
1892
1417
|
}
|
|
1893
|
-
function _M0IPB13SourceLocReprPB4Show6output(self, logger) {
|
|
1894
|
-
const pkg = self.pkg;
|
|
1895
|
-
const _data = pkg.str;
|
|
1896
|
-
const _start = pkg.start;
|
|
1897
|
-
const _end = _start + (pkg.end - pkg.start | 0) | 0;
|
|
1898
|
-
let _cursor = _start;
|
|
1899
|
-
let accept_state = -1;
|
|
1900
|
-
let match_end = -1;
|
|
1901
|
-
let match_tag_saver_0 = -1;
|
|
1902
|
-
let tag_0 = -1;
|
|
1903
|
-
let _bind;
|
|
1904
|
-
_L: {
|
|
1905
|
-
_L$2: {
|
|
1906
|
-
_L$3: while (true) {
|
|
1907
|
-
if (_cursor < _end) {
|
|
1908
|
-
const _p = _cursor;
|
|
1909
|
-
const next_char = _data.charCodeAt(_p);
|
|
1910
|
-
_cursor = _cursor + 1 | 0;
|
|
1911
|
-
if (next_char === 47) {
|
|
1912
|
-
_L$4: while (true) {
|
|
1913
|
-
tag_0 = _cursor;
|
|
1914
|
-
if (_cursor < _end) {
|
|
1915
|
-
const _p$2 = _cursor;
|
|
1916
|
-
const next_char$2 = _data.charCodeAt(_p$2);
|
|
1917
|
-
_cursor = _cursor + 1 | 0;
|
|
1918
|
-
if (next_char$2 === 47) {
|
|
1919
|
-
while (true) {
|
|
1920
|
-
if (_cursor < _end) {
|
|
1921
|
-
_cursor = _cursor + 1 | 0;
|
|
1922
|
-
continue;
|
|
1923
|
-
} else {
|
|
1924
|
-
match_tag_saver_0 = tag_0;
|
|
1925
|
-
accept_state = 0;
|
|
1926
|
-
match_end = _cursor;
|
|
1927
|
-
break _L$2;
|
|
1928
|
-
}
|
|
1929
|
-
}
|
|
1930
|
-
} else {
|
|
1931
|
-
continue;
|
|
1932
|
-
}
|
|
1933
|
-
} else {
|
|
1934
|
-
break _L$2;
|
|
1935
|
-
}
|
|
1936
|
-
}
|
|
1937
|
-
} else {
|
|
1938
|
-
continue;
|
|
1939
|
-
}
|
|
1940
|
-
} else {
|
|
1941
|
-
break _L$2;
|
|
1942
|
-
}
|
|
1943
|
-
}
|
|
1944
|
-
break _L;
|
|
1945
|
-
}
|
|
1946
|
-
if (accept_state === 0) {
|
|
1947
|
-
const package_name = _M0MPC16string6String4view(_data, match_tag_saver_0 + 1 | 0, match_end);
|
|
1948
|
-
const module_name = _M0MPC16string6String4view(_data, _start, match_tag_saver_0);
|
|
1949
|
-
_bind = { _0: module_name, _1: package_name };
|
|
1950
|
-
} else {
|
|
1951
|
-
_bind = { _0: pkg, _1: undefined };
|
|
1952
|
-
}
|
|
1953
|
-
}
|
|
1954
|
-
const _module_name = _bind._0;
|
|
1955
|
-
const _package_name = _bind._1;
|
|
1956
|
-
if (_package_name === undefined) {
|
|
1957
|
-
} else {
|
|
1958
|
-
const _Some = _package_name;
|
|
1959
|
-
const _pkg_name = _Some;
|
|
1960
|
-
logger.method_table.method_2(logger.self, _pkg_name);
|
|
1961
|
-
logger.method_table.method_3(logger.self, 47);
|
|
1962
|
-
}
|
|
1963
|
-
logger.method_table.method_2(logger.self, self.filename);
|
|
1964
|
-
logger.method_table.method_3(logger.self, 58);
|
|
1965
|
-
logger.method_table.method_2(logger.self, self.start_line);
|
|
1966
|
-
logger.method_table.method_3(logger.self, 58);
|
|
1967
|
-
logger.method_table.method_2(logger.self, self.start_column);
|
|
1968
|
-
logger.method_table.method_3(logger.self, 45);
|
|
1969
|
-
logger.method_table.method_2(logger.self, self.end_line);
|
|
1970
|
-
logger.method_table.method_3(logger.self, 58);
|
|
1971
|
-
logger.method_table.method_2(logger.self, self.end_column);
|
|
1972
|
-
logger.method_table.method_3(logger.self, 64);
|
|
1973
|
-
logger.method_table.method_2(logger.self, _module_name);
|
|
1974
|
-
}
|
|
1975
|
-
function _M0IPB9SourceLocPB4Show6output(self, logger) {
|
|
1976
|
-
_M0IPB13SourceLocReprPB4Show6output(_M0MPB13SourceLocRepr5parse(self), logger);
|
|
1977
|
-
}
|
|
1978
1418
|
function _M0MPC15array5Array28unsafe__truncate__to__lengthGsE(self, new_len) {
|
|
1979
1419
|
_M0MPB7JSArray11set__length(self, new_len);
|
|
1980
1420
|
}
|
|
@@ -1996,7 +1436,7 @@ function _M0MPC15array5Array6removeGRP36kazuph5reviw6server7JsValueE(self, index
|
|
|
1996
1436
|
_M0MPB7JSArray6splice(self, index, 1);
|
|
1997
1437
|
return value;
|
|
1998
1438
|
} else {
|
|
1999
|
-
return _M0FPB5abortGRP36kazuph5reviw6server7JsValueE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "
|
|
1439
|
+
return _M0FPB5abortGRP36kazuph5reviw6server7JsValueE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "builtin/arraycore_js.mbt:251:5-253:6@moonbitlang/core");
|
|
2000
1440
|
}
|
|
2001
1441
|
}
|
|
2002
1442
|
function _M0MPC15array5Array6removeGsE(self, index) {
|
|
@@ -2006,12 +1446,48 @@ function _M0MPC15array5Array6removeGsE(self, index) {
|
|
|
2006
1446
|
_M0MPB7JSArray6splice(self, index, 1);
|
|
2007
1447
|
return value;
|
|
2008
1448
|
} else {
|
|
2009
|
-
return _M0FPB5abortGRPC16string10StringViewE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "
|
|
1449
|
+
return _M0FPB5abortGRPC16string10StringViewE(`index out of bounds: the len is from 0 to ${_M0IP016_24default__implPB4Show10to__stringGiE(self.length)} but the index is ${_M0IP016_24default__implPB4Show10to__stringGiE(index)}`, "builtin/arraycore_js.mbt:251:5-253:6@moonbitlang/core");
|
|
2010
1450
|
}
|
|
2011
1451
|
}
|
|
2012
1452
|
function _M0MPC15array5Array4copyGsE(self) {
|
|
2013
1453
|
return _M0MPB7JSArray4copy(self);
|
|
2014
1454
|
}
|
|
1455
|
+
function _M0MPC15array5Array2atGsE(self, index) {
|
|
1456
|
+
const len = self.length;
|
|
1457
|
+
if (index >= 0 && index < len) {
|
|
1458
|
+
$bound_check(self, index);
|
|
1459
|
+
return self[index];
|
|
1460
|
+
} else {
|
|
1461
|
+
return $panic();
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
function _M0MPC15array5Array2atGcE(self, index) {
|
|
1465
|
+
const len = self.length;
|
|
1466
|
+
if (index >= 0 && index < len) {
|
|
1467
|
+
$bound_check(self, index);
|
|
1468
|
+
return self[index];
|
|
1469
|
+
} else {
|
|
1470
|
+
return $panic();
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
function _M0MPC15array5Array2atGRPB5ArrayGsEE(self, index) {
|
|
1474
|
+
const len = self.length;
|
|
1475
|
+
if (index >= 0 && index < len) {
|
|
1476
|
+
$bound_check(self, index);
|
|
1477
|
+
return self[index];
|
|
1478
|
+
} else {
|
|
1479
|
+
return $panic();
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
function _M0MPC15array5Array2atGdE(self, index) {
|
|
1483
|
+
const len = self.length;
|
|
1484
|
+
if (index >= 0 && index < len) {
|
|
1485
|
+
$bound_check(self, index);
|
|
1486
|
+
return self[index];
|
|
1487
|
+
} else {
|
|
1488
|
+
return $panic();
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
2015
1491
|
function _M0MPC15array5Array5clearGsE(self) {
|
|
2016
1492
|
_M0MPC15array5Array28unsafe__truncate__to__lengthGsE(self, 0);
|
|
2017
1493
|
}
|
|
@@ -2021,38 +1497,38 @@ function _M0MPC13ref3Ref3newGsE(x) {
|
|
|
2021
1497
|
function _M0MPC13ref3Ref3newGiE(x) {
|
|
2022
1498
|
return new _M0TPC13ref3RefGiE(x);
|
|
2023
1499
|
}
|
|
2024
|
-
function _M0IP36kazuph5reviw4core8FileModePB2Eq5equal(
|
|
2025
|
-
switch (
|
|
1500
|
+
function _M0IP36kazuph5reviw4core8FileModePB2Eq5equal(_x_440, _x_441) {
|
|
1501
|
+
switch (_x_440) {
|
|
2026
1502
|
case 0: {
|
|
2027
|
-
if (
|
|
1503
|
+
if (_x_441 === 0) {
|
|
2028
1504
|
return true;
|
|
2029
1505
|
} else {
|
|
2030
1506
|
return false;
|
|
2031
1507
|
}
|
|
2032
1508
|
}
|
|
2033
1509
|
case 1: {
|
|
2034
|
-
if (
|
|
1510
|
+
if (_x_441 === 1) {
|
|
2035
1511
|
return true;
|
|
2036
1512
|
} else {
|
|
2037
1513
|
return false;
|
|
2038
1514
|
}
|
|
2039
1515
|
}
|
|
2040
1516
|
case 2: {
|
|
2041
|
-
if (
|
|
1517
|
+
if (_x_441 === 2) {
|
|
2042
1518
|
return true;
|
|
2043
1519
|
} else {
|
|
2044
1520
|
return false;
|
|
2045
1521
|
}
|
|
2046
1522
|
}
|
|
2047
1523
|
case 3: {
|
|
2048
|
-
if (
|
|
1524
|
+
if (_x_441 === 3) {
|
|
2049
1525
|
return true;
|
|
2050
1526
|
} else {
|
|
2051
1527
|
return false;
|
|
2052
1528
|
}
|
|
2053
1529
|
}
|
|
2054
1530
|
default: {
|
|
2055
|
-
if (
|
|
1531
|
+
if (_x_441 === 4) {
|
|
2056
1532
|
return true;
|
|
2057
1533
|
} else {
|
|
2058
1534
|
return false;
|
|
@@ -2061,7 +1537,7 @@ function _M0IP36kazuph5reviw4core8FileModePB2Eq5equal(_x_439, _x_440) {
|
|
|
2061
1537
|
}
|
|
2062
1538
|
}
|
|
2063
1539
|
function _M0FP36kazuph5reviw4core20yaml__escape__string(s) {
|
|
2064
|
-
const needs_quote = _M0MPC16string6String8contains(s, new _M0TPC16string10StringView(
|
|
1540
|
+
const needs_quote = _M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS558, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS558.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS559, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS559.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS560.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS561.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS562.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS563.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS564.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS565.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS566.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS567.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS568.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS569.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS570.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS571.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS572.length)) || (_M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS573.length)) || _M0MPC16string6String8contains(s, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574, 0, _M0FP36kazuph5reviw4core20yaml__escape__stringN7_2abindS574.length)))))))))))))))));
|
|
2065
1541
|
if (needs_quote) {
|
|
2066
1542
|
const buf = _M0MPB13StringBuilder11new_2einner(0);
|
|
2067
1543
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 39);
|
|
@@ -2130,9 +1606,15 @@ function _M0MP36kazuph5reviw4core14ReviewDecision10to__string(self) {
|
|
|
2130
1606
|
}
|
|
2131
1607
|
function _M0FP36kazuph5reviw4core16review__to__yaml(result) {
|
|
2132
1608
|
const buf = _M0MPB13StringBuilder11new_2einner(0);
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
1609
|
+
const _bind = result.action;
|
|
1610
|
+
if (_bind === undefined) {
|
|
1611
|
+
} else {
|
|
1612
|
+
const _Some = _bind;
|
|
1613
|
+
const _a = _Some;
|
|
1614
|
+
_M0IPB13StringBuilderPB6Logger13write__string(buf, "action: ");
|
|
1615
|
+
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MP36kazuph5reviw4core12ReviewAction10to__string(_a));
|
|
1616
|
+
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
1617
|
+
}
|
|
2136
1618
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "file: ");
|
|
2137
1619
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core20yaml__escape__string(result.file));
|
|
2138
1620
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
@@ -2140,13 +1622,13 @@ function _M0FP36kazuph5reviw4core16review__to__yaml(result) {
|
|
|
2140
1622
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MP36kazuph5reviw4core8FileMode10to__string(result.mode));
|
|
2141
1623
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
2142
1624
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "comments:\n");
|
|
2143
|
-
const _bind = result.comments;
|
|
2144
|
-
const _bind$
|
|
1625
|
+
const _bind$2 = result.comments;
|
|
1626
|
+
const _bind$3 = _bind$2.length;
|
|
2145
1627
|
let _tmp = 0;
|
|
2146
1628
|
while (true) {
|
|
2147
1629
|
const _ = _tmp;
|
|
2148
|
-
if (_ < _bind$
|
|
2149
|
-
const comment = _bind[_];
|
|
1630
|
+
if (_ < _bind$3) {
|
|
1631
|
+
const comment = _bind$2[_];
|
|
2150
1632
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " - row: ");
|
|
2151
1633
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MPC13int3Int18to__string_2einner(comment.row, 10));
|
|
2152
1634
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
@@ -2177,13 +1659,13 @@ function _M0FP36kazuph5reviw4core16review__to__yaml(result) {
|
|
|
2177
1659
|
}
|
|
2178
1660
|
if (result.mermaid_errors.length > 0) {
|
|
2179
1661
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "mermaid_errors:\n");
|
|
2180
|
-
const _bind$
|
|
2181
|
-
const _bind$
|
|
1662
|
+
const _bind$4 = result.mermaid_errors;
|
|
1663
|
+
const _bind$5 = _bind$4.length;
|
|
2182
1664
|
let _tmp$2 = 0;
|
|
2183
1665
|
while (true) {
|
|
2184
1666
|
const _ = _tmp$2;
|
|
2185
|
-
if (_ < _bind$
|
|
2186
|
-
const err = _bind$
|
|
1667
|
+
if (_ < _bind$5) {
|
|
1668
|
+
const err = _bind$4[_];
|
|
2187
1669
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " - line: ");
|
|
2188
1670
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MPC13int3Int18to__string_2einner(err.line, 10));
|
|
2189
1671
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
@@ -2197,10 +1679,10 @@ function _M0FP36kazuph5reviw4core16review__to__yaml(result) {
|
|
|
2197
1679
|
}
|
|
2198
1680
|
}
|
|
2199
1681
|
}
|
|
2200
|
-
const _bind$
|
|
2201
|
-
if (_bind$
|
|
1682
|
+
const _bind$4 = result.decision;
|
|
1683
|
+
if (_bind$4 === undefined) {
|
|
2202
1684
|
} else {
|
|
2203
|
-
const _Some = _bind$
|
|
1685
|
+
const _Some = _bind$4;
|
|
2204
1686
|
const _d = _Some;
|
|
2205
1687
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "decision: ");
|
|
2206
1688
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MP36kazuph5reviw4core14ReviewDecision10to__string(_d));
|
|
@@ -2213,15 +1695,21 @@ function _M0FP36kazuph5reviw4core17reviews__to__yaml(results) {
|
|
|
2213
1695
|
return _M0FP36kazuph5reviw4core16review__to__yaml(_M0MPC15array5Array2atGsE(results, 0));
|
|
2214
1696
|
} else {
|
|
2215
1697
|
const buf = _M0MPB13StringBuilder11new_2einner(0);
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
1698
|
+
const _bind = _M0MPC15array5Array2atGsE(results, 0).action;
|
|
1699
|
+
if (_bind === undefined) {
|
|
1700
|
+
} else {
|
|
1701
|
+
const _Some = _bind;
|
|
1702
|
+
const _a = _Some;
|
|
1703
|
+
_M0IPB13StringBuilderPB6Logger13write__string(buf, "action: ");
|
|
1704
|
+
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MP36kazuph5reviw4core12ReviewAction10to__string(_a));
|
|
1705
|
+
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
1706
|
+
}
|
|
2219
1707
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "files:\n");
|
|
2220
|
-
const _bind = results.length;
|
|
1708
|
+
const _bind$2 = results.length;
|
|
2221
1709
|
let _tmp = 0;
|
|
2222
1710
|
while (true) {
|
|
2223
1711
|
const _ = _tmp;
|
|
2224
|
-
if (_ < _bind) {
|
|
1712
|
+
if (_ < _bind$2) {
|
|
2225
1713
|
const result = results[_];
|
|
2226
1714
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " - file: ");
|
|
2227
1715
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core20yaml__escape__string(result.file));
|
|
@@ -2230,13 +1718,13 @@ function _M0FP36kazuph5reviw4core17reviews__to__yaml(results) {
|
|
|
2230
1718
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MP36kazuph5reviw4core8FileMode10to__string(result.mode));
|
|
2231
1719
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
2232
1720
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " comments:\n");
|
|
2233
|
-
const _bind$
|
|
2234
|
-
const _bind$
|
|
1721
|
+
const _bind$3 = result.comments;
|
|
1722
|
+
const _bind$4 = _bind$3.length;
|
|
2235
1723
|
let _tmp$2 = 0;
|
|
2236
1724
|
while (true) {
|
|
2237
1725
|
const _$2 = _tmp$2;
|
|
2238
|
-
if (_$2 < _bind$
|
|
2239
|
-
const comment = _bind$
|
|
1726
|
+
if (_$2 < _bind$4) {
|
|
1727
|
+
const comment = _bind$3[_$2];
|
|
2240
1728
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " - row: ");
|
|
2241
1729
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MPC13int3Int18to__string_2einner(comment.row, 10));
|
|
2242
1730
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
@@ -2262,13 +1750,13 @@ function _M0FP36kazuph5reviw4core17reviews__to__yaml(results) {
|
|
|
2262
1750
|
}
|
|
2263
1751
|
if (result.mermaid_errors.length > 0) {
|
|
2264
1752
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " mermaid_errors:\n");
|
|
2265
|
-
const _bind$
|
|
2266
|
-
const _bind$
|
|
1753
|
+
const _bind$5 = result.mermaid_errors;
|
|
1754
|
+
const _bind$6 = _bind$5.length;
|
|
2267
1755
|
let _tmp$3 = 0;
|
|
2268
1756
|
while (true) {
|
|
2269
1757
|
const _$2 = _tmp$3;
|
|
2270
|
-
if (_$2 < _bind$
|
|
2271
|
-
const err = _bind$
|
|
1758
|
+
if (_$2 < _bind$6) {
|
|
1759
|
+
const err = _bind$5[_$2];
|
|
2272
1760
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " - line: ");
|
|
2273
1761
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MPC13int3Int18to__string_2einner(err.line, 10));
|
|
2274
1762
|
_M0IPB13StringBuilderPB6Logger11write__char(buf, 10);
|
|
@@ -2282,10 +1770,10 @@ function _M0FP36kazuph5reviw4core17reviews__to__yaml(results) {
|
|
|
2282
1770
|
}
|
|
2283
1771
|
}
|
|
2284
1772
|
}
|
|
2285
|
-
const _bind$
|
|
2286
|
-
if (_bind$
|
|
1773
|
+
const _bind$5 = result.decision;
|
|
1774
|
+
if (_bind$5 === undefined) {
|
|
2287
1775
|
} else {
|
|
2288
|
-
const _Some = _bind$
|
|
1776
|
+
const _Some = _bind$5;
|
|
2289
1777
|
const _d = _Some;
|
|
2290
1778
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, " decision: ");
|
|
2291
1779
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0MP36kazuph5reviw4core14ReviewDecision10to__string(_d));
|
|
@@ -2366,7 +1854,7 @@ function _M0FP36kazuph5reviw4core16parse__int__safe(s) {
|
|
|
2366
1854
|
}
|
|
2367
1855
|
function _M0FP36kazuph5reviw4core16split__to__lines(input) {
|
|
2368
1856
|
const result = [];
|
|
2369
|
-
const _it = _M0MPC16string6String5split(input, new _M0TPC16string10StringView(
|
|
1857
|
+
const _it = _M0MPC16string6String5split(input, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16split__to__linesN7_2abindS649, 0, _M0FP36kazuph5reviw4core16split__to__linesN7_2abindS649.length));
|
|
2370
1858
|
while (true) {
|
|
2371
1859
|
const _bind = _M0MPB4Iter4nextGRPC16string10StringViewE(_it);
|
|
2372
1860
|
if (_bind === undefined) {
|
|
@@ -2420,26 +1908,26 @@ function _M0MP36kazuph5reviw4core8FileMode15from__extension(ext) {
|
|
|
2420
1908
|
function _M0MP36kazuph5reviw4core12ReviewAction12from__string(s) {
|
|
2421
1909
|
switch (s) {
|
|
2422
1910
|
case "handoff": {
|
|
2423
|
-
return
|
|
1911
|
+
return _M0FP36kazuph5reviw4core27from__string_2econstr_2f572;
|
|
2424
1912
|
}
|
|
2425
1913
|
case "final_approve": {
|
|
2426
|
-
return
|
|
1914
|
+
return _M0FP36kazuph5reviw4core27from__string_2econstr_2f573;
|
|
2427
1915
|
}
|
|
2428
1916
|
case "final_request_changes": {
|
|
2429
|
-
return
|
|
1917
|
+
return _M0FP36kazuph5reviw4core27from__string_2econstr_2f574;
|
|
2430
1918
|
}
|
|
2431
1919
|
default: {
|
|
2432
|
-
return
|
|
1920
|
+
return undefined;
|
|
2433
1921
|
}
|
|
2434
1922
|
}
|
|
2435
1923
|
}
|
|
2436
1924
|
function _M0MP36kazuph5reviw4core14ReviewDecision12from__string(s) {
|
|
2437
1925
|
switch (s) {
|
|
2438
1926
|
case "approve": {
|
|
2439
|
-
return
|
|
1927
|
+
return _M0FP36kazuph5reviw4core27from__string_2econstr_2f576;
|
|
2440
1928
|
}
|
|
2441
1929
|
case "request_changes": {
|
|
2442
|
-
return
|
|
1930
|
+
return _M0FP36kazuph5reviw4core27from__string_2econstr_2f577;
|
|
2443
1931
|
}
|
|
2444
1932
|
default: {
|
|
2445
1933
|
return undefined;
|
|
@@ -2541,10 +2029,10 @@ function _M0FP36kazuph5reviw4core23parse__single__question(lines, start, end) {
|
|
|
2541
2029
|
if (i < end) {
|
|
2542
2030
|
const line = _M0MPC15array5Array2atGsE(lines, i);
|
|
2543
2031
|
const trimmed = _M0FP36kazuph5reviw4core4trim(line);
|
|
2544
|
-
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(
|
|
2032
|
+
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS672, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS672.length)) && _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS673, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS673.length))) {
|
|
2545
2033
|
break;
|
|
2546
2034
|
}
|
|
2547
|
-
if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
2035
|
+
if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS674, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS674.length)) && !_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS675, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS675.length))) {
|
|
2548
2036
|
break;
|
|
2549
2037
|
}
|
|
2550
2038
|
const content_colon = _M0FP36kazuph5reviw4core15index__of__char(trimmed, 58);
|
|
@@ -2569,7 +2057,7 @@ function _M0FP36kazuph5reviw4core23parse__single__question(lines, start, end) {
|
|
|
2569
2057
|
if (i < end) {
|
|
2570
2058
|
const opt_line = _M0MPC15array5Array2atGsE(lines, i);
|
|
2571
2059
|
const opt_trimmed = _M0FP36kazuph5reviw4core4trim(opt_line);
|
|
2572
|
-
if (_M0MPC16string6String11has__prefix(opt_trimmed, new _M0TPC16string10StringView(
|
|
2060
|
+
if (_M0MPC16string6String11has__prefix(opt_trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS677, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS677.length)) && _M0MPC16string6String11has__prefix(opt_line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678, 0, _M0FP36kazuph5reviw4core23parse__single__questionN7_2abindS678.length))) {
|
|
2573
2061
|
_M0MPC15array5Array4pushGsE(options, _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(opt_trimmed, 2)));
|
|
2574
2062
|
i = i + 1 | 0;
|
|
2575
2063
|
} else {
|
|
@@ -2609,12 +2097,12 @@ function _M0FP36kazuph5reviw4core23parse__reviw__questions(lines, start, end) {
|
|
|
2609
2097
|
if (i < end) {
|
|
2610
2098
|
const item_line = _M0MPC15array5Array2atGsE(lines, i);
|
|
2611
2099
|
const trimmed = _M0FP36kazuph5reviw4core4trim(item_line);
|
|
2612
|
-
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(
|
|
2100
|
+
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS682, 0, _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS682.length))) {
|
|
2613
2101
|
const q = _M0FP36kazuph5reviw4core23parse__single__question(lines, i, end);
|
|
2614
2102
|
_M0MPC15array5Array4pushGsE(questions, q._0);
|
|
2615
2103
|
i = q._1;
|
|
2616
2104
|
} else {
|
|
2617
|
-
if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(item_line, new _M0TPC16string10StringView(
|
|
2105
|
+
if (trimmed.length === 0 || !_M0MPC16string6String11has__prefix(item_line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS683, 0, _M0FP36kazuph5reviw4core23parse__reviw__questionsN7_2abindS683.length))) {
|
|
2618
2106
|
break;
|
|
2619
2107
|
} else {
|
|
2620
2108
|
i = i + 1 | 0;
|
|
@@ -2764,7 +2252,7 @@ function _M0FP36kazuph5reviw4core20is__horizontal__rule(line) {
|
|
|
2764
2252
|
}
|
|
2765
2253
|
function _M0FP36kazuph5reviw4core22is__html__block__start(line) {
|
|
2766
2254
|
const t = _M0FP36kazuph5reviw4core4trim(line);
|
|
2767
|
-
return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(
|
|
2255
|
+
return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS702, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS702.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS703, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS703.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS704, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS704.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS705, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS705.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS706.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS707.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS708.length)) || _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709, 0, _M0FP36kazuph5reviw4core22is__html__block__startN7_2abindS709.length))))))));
|
|
2768
2256
|
}
|
|
2769
2257
|
function _M0FP36kazuph5reviw4core23is__ordered__list__item(line) {
|
|
2770
2258
|
const chars = _M0MPC16string6String9to__array(line);
|
|
@@ -2783,15 +2271,15 @@ function _M0FP36kazuph5reviw4core23is__ordered__list__item(line) {
|
|
|
2783
2271
|
return i < (chars.length - 1 | 0) && (_M0MPC15array5Array2atGcE(chars, i) === 46 && _M0MPC15array5Array2atGcE(chars, i + 1 | 0) === 32);
|
|
2784
2272
|
}
|
|
2785
2273
|
function _M0FP36kazuph5reviw4core16is__block__start(line) {
|
|
2786
|
-
return _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
2274
|
+
return _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS711, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS711.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS712, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS712.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS713, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS713.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS714, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS714.length)) || (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS715, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS715.length)) || (_M0FP36kazuph5reviw4core23is__ordered__list__item(line) || (_M0FP36kazuph5reviw4core20is__horizontal__rule(line) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core16is__block__startN7_2abindS716, 0, _M0FP36kazuph5reviw4core16is__block__startN7_2abindS716.length)) && _M0FP36kazuph5reviw4core22is__html__block__start(line)))))));
|
|
2787
2275
|
}
|
|
2788
2276
|
function _M0FP36kazuph5reviw4core20is__mermaid__content(text) {
|
|
2789
2277
|
const t = _M0FP36kazuph5reviw4core4trim(text);
|
|
2790
|
-
return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(
|
|
2278
|
+
return _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS717, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS717.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS718, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS718.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS719, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS719.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS720, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS720.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS721.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS722.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS723.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS724.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS725.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS726.length)) || (_M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS727.length)) || _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728, 0, _M0FP36kazuph5reviw4core20is__mermaid__contentN7_2abindS728.length))))))))))));
|
|
2791
2279
|
}
|
|
2792
2280
|
function _M0FP36kazuph5reviw4core20is__table__separator(line) {
|
|
2793
2281
|
const t = _M0FP36kazuph5reviw4core4trim(line);
|
|
2794
|
-
if (!_M0MPC16string6String8contains(t, new _M0TPC16string10StringView(
|
|
2282
|
+
if (!_M0MPC16string6String8contains(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS729, 0, _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS729.length)) || !_M0MPC16string6String8contains(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS730, 0, _M0FP36kazuph5reviw4core20is__table__separatorN7_2abindS730.length))) {
|
|
2795
2283
|
return false;
|
|
2796
2284
|
}
|
|
2797
2285
|
const chars = _M0MPC16string6String9to__array(t);
|
|
@@ -2846,8 +2334,8 @@ function _M0FP36kazuph5reviw4core18make__heading__key(text, counter) {
|
|
|
2846
2334
|
function _M0FP36kazuph5reviw4core17parse__table__row(line) {
|
|
2847
2335
|
const result = [];
|
|
2848
2336
|
const t = _M0FP36kazuph5reviw4core4trim(line);
|
|
2849
|
-
const inner = _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(
|
|
2850
|
-
const _it = _M0MPC16string6String5split(inner, new _M0TPC16string10StringView(
|
|
2337
|
+
const inner = _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS752, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS752.length)) && _M0MPC16string6String11has__suffix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS753, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS753.length)) ? _M0FP36kazuph5reviw4core18safe__slice__range(t, 1, t.length - 1 | 0) : _M0MPC16string6String11has__prefix(t, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS754, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS754.length)) ? _M0FP36kazuph5reviw4core11safe__slice(t, 1) : t;
|
|
2338
|
+
const _it = _M0MPC16string6String5split(inner, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS751, 0, _M0FP36kazuph5reviw4core17parse__table__rowN7_2abindS751.length));
|
|
2851
2339
|
while (true) {
|
|
2852
2340
|
const _bind = _M0MPB4Iter4nextGRPC16string10StringViewE(_it);
|
|
2853
2341
|
if (_bind === undefined) {
|
|
@@ -2863,7 +2351,7 @@ function _M0FP36kazuph5reviw4core17parse__table__row(line) {
|
|
|
2863
2351
|
}
|
|
2864
2352
|
function _M0FP36kazuph5reviw4core14is__video__url(url) {
|
|
2865
2353
|
const lower = _M0MPC16string6String9to__lower(url);
|
|
2866
|
-
return _M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(
|
|
2354
|
+
return _M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS755, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS755.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS756, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS756.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS757, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS757.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS758, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS758.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS759.length)) || (_M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS760.length)) || _M0MPC16string6String11has__suffix(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761, 0, _M0FP36kazuph5reviw4core14is__video__urlN7_2abindS761.length)))))));
|
|
2867
2355
|
}
|
|
2868
2356
|
function _M0FP36kazuph5reviw4core14render__inline(text) {
|
|
2869
2357
|
const chars = _M0MPC16string6String9to__array(text);
|
|
@@ -2962,7 +2450,7 @@ function _M0FP36kazuph5reviw4core14render__inline(text) {
|
|
|
2962
2450
|
const link_text = _M0FP36kazuph5reviw4core18safe__slice__range(text, text_start, text_end);
|
|
2963
2451
|
const link_url = _M0FP36kazuph5reviw4core18safe__slice__range(text, url_start, url_end);
|
|
2964
2452
|
const lower_url = _M0MPC16string6String9to__lower(link_url);
|
|
2965
|
-
if (_M0MPC16string6String11has__prefix(lower_url, new _M0TPC16string10StringView(
|
|
2453
|
+
if (_M0MPC16string6String11has__prefix(lower_url, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14render__inlineN7_2abindS767, 0, _M0FP36kazuph5reviw4core14render__inlineN7_2abindS767.length))) {
|
|
2966
2454
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core12escape__html(link_text));
|
|
2967
2455
|
} else {
|
|
2968
2456
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<a href=\"");
|
|
@@ -3159,18 +2647,18 @@ function _M0FP36kazuph5reviw4core17is__allowed__attr(name) {
|
|
|
3159
2647
|
}
|
|
3160
2648
|
function _M0FP36kazuph5reviw4core18is__dangerous__css(value) {
|
|
3161
2649
|
const lower = _M0MPC16string6String9to__lower(value);
|
|
3162
|
-
return _M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(
|
|
2650
|
+
return _M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS780, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS780.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS781, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS781.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS782, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS782.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS783, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS783.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS784.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS785.length)) || (_M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS786.length)) || _M0MPC16string6String8contains(lower, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787, 0, _M0FP36kazuph5reviw4core18is__dangerous__cssN7_2abindS787.length))))))));
|
|
3163
2651
|
}
|
|
3164
2652
|
function _M0FP36kazuph5reviw4core24is__event__handler__attr(name) {
|
|
3165
|
-
return _M0MPC16string6String11has__prefix(name, new _M0TPC16string10StringView(
|
|
2653
|
+
return _M0MPC16string6String11has__prefix(name, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS788, 0, _M0FP36kazuph5reviw4core24is__event__handler__attrN7_2abindS788.length));
|
|
3166
2654
|
}
|
|
3167
2655
|
function _M0FP36kazuph5reviw4core13is__safe__url(url) {
|
|
3168
2656
|
const lower = _M0MPC16string6String9to__lower(url);
|
|
3169
2657
|
const trimmed = _M0FP36kazuph5reviw4core4trim(lower);
|
|
3170
|
-
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(
|
|
2658
|
+
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS789, 0, _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS789.length))) {
|
|
3171
2659
|
return false;
|
|
3172
2660
|
}
|
|
3173
|
-
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(
|
|
2661
|
+
if (_M0MPC16string6String11has__prefix(trimmed, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS790, 0, _M0FP36kazuph5reviw4core13is__safe__urlN7_2abindS790.length))) {
|
|
3174
2662
|
return false;
|
|
3175
2663
|
}
|
|
3176
2664
|
return true;
|
|
@@ -3509,7 +2997,7 @@ function _M0FP36kazuph5reviw4core14sanitize__html(input) {
|
|
|
3509
2997
|
if (!_M0FP36kazuph5reviw4core16is__allowed__tag(tag_name) && tag_name.length > 0) {
|
|
3510
2998
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<");
|
|
3511
2999
|
const tag_content = _M0FP36kazuph5reviw4core18safe__slice__range(input, tag_start + 1 | 0, tag_end);
|
|
3512
|
-
const trimmed_content = _M0MPC16string6String11has__suffix(tag_content, new _M0TPC16string10StringView(
|
|
3000
|
+
const trimmed_content = _M0MPC16string6String11has__suffix(tag_content, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS806, 0, _M0FP36kazuph5reviw4core14sanitize__htmlN7_2abindS806.length)) ? _M0FP36kazuph5reviw4core18safe__slice__range(tag_content, 0, tag_content.length - 1 | 0) : tag_content;
|
|
3513
3001
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core12escape__html(trimmed_content));
|
|
3514
3002
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, ">");
|
|
3515
3003
|
i = tag_end;
|
|
@@ -3553,7 +3041,7 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3553
3041
|
i = i + 1 | 0;
|
|
3554
3042
|
continue;
|
|
3555
3043
|
}
|
|
3556
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
3044
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS808, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS808.length)) && _M0FP36kazuph5reviw4core22is__html__block__start(line)) {
|
|
3557
3045
|
const tag_name = _M0FP36kazuph5reviw4core24extract__html__tag__name(line);
|
|
3558
3046
|
if (tag_name === "details") {
|
|
3559
3047
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<details>\n");
|
|
@@ -3561,13 +3049,13 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3561
3049
|
while (true) {
|
|
3562
3050
|
if (i < len) {
|
|
3563
3051
|
const current = _M0FP36kazuph5reviw4core4trim(_M0MPC15array5Array2atGsE(lines, i));
|
|
3564
|
-
if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(
|
|
3052
|
+
if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS810, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS810.length))) {
|
|
3565
3053
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core14sanitize__html(_M0MPC15array5Array2atGsE(lines, i)));
|
|
3566
3054
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "\n");
|
|
3567
3055
|
i = i + 1 | 0;
|
|
3568
3056
|
break;
|
|
3569
3057
|
} else {
|
|
3570
|
-
if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(
|
|
3058
|
+
if (_M0MPC16string6String11has__prefix(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS811, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS811.length))) {
|
|
3571
3059
|
break;
|
|
3572
3060
|
}
|
|
3573
3061
|
}
|
|
@@ -3582,14 +3070,14 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3582
3070
|
while (true) {
|
|
3583
3071
|
if (i < len && depth > 0) {
|
|
3584
3072
|
const current = _M0MPC15array5Array2atGsE(lines, i);
|
|
3585
|
-
if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(
|
|
3073
|
+
if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS813, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS813.length))) {
|
|
3586
3074
|
depth = depth - 1 | 0;
|
|
3587
3075
|
if (depth === 0) {
|
|
3588
3076
|
i = i + 1 | 0;
|
|
3589
3077
|
break;
|
|
3590
3078
|
}
|
|
3591
3079
|
}
|
|
3592
|
-
if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(
|
|
3080
|
+
if (_M0MPC16string6String8contains(current, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS814.length))) {
|
|
3593
3081
|
depth = depth + 1 | 0;
|
|
3594
3082
|
}
|
|
3595
3083
|
_M0MPC15array5Array4pushGsE(inner_lines, current);
|
|
@@ -3634,7 +3122,7 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3634
3122
|
}
|
|
3635
3123
|
continue;
|
|
3636
3124
|
}
|
|
3637
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
3125
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS818, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS818.length))) {
|
|
3638
3126
|
const level = _M0FP36kazuph5reviw4core21count__heading__level(line);
|
|
3639
3127
|
if (level >= 1 && level <= 6) {
|
|
3640
3128
|
const content = _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(line, level + 1 | 0));
|
|
@@ -3660,14 +3148,14 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3660
3148
|
i = i + 1 | 0;
|
|
3661
3149
|
continue;
|
|
3662
3150
|
}
|
|
3663
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
3151
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS819, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS819.length))) {
|
|
3664
3152
|
const lang = _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(line, 3));
|
|
3665
3153
|
const code_block_start_line = i + 1 | 0;
|
|
3666
3154
|
i = i + 1 | 0;
|
|
3667
3155
|
const code_buf = _M0MPB13StringBuilder11new_2einner(0);
|
|
3668
3156
|
let code_first = true;
|
|
3669
3157
|
while (true) {
|
|
3670
|
-
if (i < len && !_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(
|
|
3158
|
+
if (i < len && !_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS821, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS821.length))) {
|
|
3671
3159
|
if (!code_first) {
|
|
3672
3160
|
_M0IPB13StringBuilderPB6Logger13write__string(code_buf, "\n");
|
|
3673
3161
|
}
|
|
@@ -3709,10 +3197,10 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3709
3197
|
}
|
|
3710
3198
|
continue;
|
|
3711
3199
|
}
|
|
3712
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
3200
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS822.length))) {
|
|
3713
3201
|
const quote_lines = [];
|
|
3714
3202
|
while (true) {
|
|
3715
|
-
if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(
|
|
3203
|
+
if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS824, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS824.length))) {
|
|
3716
3204
|
const content = _M0FP36kazuph5reviw4core4trim(_M0FP36kazuph5reviw4core11safe__slice(_M0MPC15array5Array2atGsE(lines, i), 1));
|
|
3717
3205
|
_M0MPC15array5Array4pushGsE(quote_lines, content);
|
|
3718
3206
|
i = i + 1 | 0;
|
|
@@ -3740,16 +3228,16 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3740
3228
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</blockquote>\n");
|
|
3741
3229
|
continue;
|
|
3742
3230
|
}
|
|
3743
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
3231
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS829, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS829.length)) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS830, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS830.length))) {
|
|
3744
3232
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<ul>\n");
|
|
3745
3233
|
while (true) {
|
|
3746
|
-
if (i < len && (_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(
|
|
3234
|
+
if (i < len && (_M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS835, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS835.length)) || _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS836.length)))) {
|
|
3747
3235
|
const item_text = _M0FP36kazuph5reviw4core11safe__slice(_M0MPC15array5Array2atGsE(lines, i), 2);
|
|
3748
|
-
if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(
|
|
3236
|
+
if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS832, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS832.length))) {
|
|
3749
3237
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<li class=\"task-list-item\"><input type=\"checkbox\" disabled /> ");
|
|
3750
3238
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core14render__inline(_M0FP36kazuph5reviw4core11safe__slice(item_text, 4)));
|
|
3751
3239
|
} else {
|
|
3752
|
-
if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(
|
|
3240
|
+
if (_M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS833.length)) || _M0MPC16string6String11has__prefix(item_text, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS834.length))) {
|
|
3753
3241
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<li class=\"task-list-item\"><input type=\"checkbox\" checked disabled /> ");
|
|
3754
3242
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core14render__inline(_M0FP36kazuph5reviw4core11safe__slice(item_text, 4)));
|
|
3755
3243
|
} else {
|
|
@@ -3806,7 +3294,7 @@ function _M0FP36kazuph5reviw4core23render__markdown__lines(lines) {
|
|
|
3806
3294
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</tr>\n</thead>\n<tbody>\n");
|
|
3807
3295
|
i = i + 2 | 0;
|
|
3808
3296
|
while (true) {
|
|
3809
|
-
if (i < len && _M0MPC16string6String8contains(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(
|
|
3297
|
+
if (i < len && _M0MPC16string6String8contains(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS847, 0, _M0FP36kazuph5reviw4core23render__markdown__linesN7_2abindS847.length))) {
|
|
3810
3298
|
const cells = _M0FP36kazuph5reviw4core17parse__table__row(_M0MPC15array5Array2atGsE(lines, i));
|
|
3811
3299
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<tr>\n");
|
|
3812
3300
|
const _bind$2 = cells.length;
|
|
@@ -4070,7 +3558,7 @@ function _M0FP36kazuph5reviw4core26build__page__start_2einner(buf, filename, fil
|
|
|
4070
3558
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github.min.css\" id=\"hljs-theme-light\">");
|
|
4071
3559
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<script src=\"https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js\"></script>");
|
|
4072
3560
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<style>");
|
|
4073
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "/* Dark theme (default) */\n:root {\n color-scheme: dark;\n --bg: #0f172a;\n --bg-gradient: radial-gradient(circle at 20% 20%, #1e293b 0%, #0b1224 35%, #0b1224 60%, #0f172a 100%);\n --panel: #111827;\n --panel-alpha: rgba(15, 23, 42, 0.9);\n --panel-solid: #0b1224;\n --card-bg: rgba(11, 18, 36, 0.95);\n --input-bg: rgba(15, 23, 42, 0.6);\n --border: #1f2937;\n --accent: #60a5fa;\n --accent-2: #f472b6;\n --text: #e5e7eb;\n --text-inverse: #0b1224;\n --muted: #94a3b8;\n --comment: #0f766e;\n --badge: #22c55e;\n --table-bg: rgba(15, 23, 42, 0.7);\n --row-even: rgba(30, 41, 59, 0.4);\n --row-odd: rgba(15, 23, 42, 0.2);\n --selected-bg: rgba(96,165,250,0.15);\n --hover-bg: rgba(96,165,250,0.08);\n --shadow-color: rgba(0,0,0,0.35);\n --code-bg: #1e293b;\n --error: #dc3545;\n}\n/* Light theme */\n[data-theme=\"light\"] {\n color-scheme: light;\n --bg: #f8fafc;\n --bg-gradient: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);\n --panel: #ffffff;\n --panel-alpha: rgba(255, 255, 255, 0.95);\n --panel-solid: #ffffff;\n --card-bg: rgba(255, 255, 255, 0.98);\n --input-bg: #f1f5f9;\n --border: #e2e8f0;\n --accent: #3b82f6;\n --accent-2: #ec4899;\n --text: #1e293b;\n --text-inverse: #ffffff;\n --muted: #64748b;\n --comment: #14b8a6;\n --badge: #22c55e;\n --table-bg: #ffffff;\n --row-even: #f8fafc;\n --row-odd: #ffffff;\n --selected-bg: rgba(59,130,246,0.12);\n --hover-bg: rgba(59,130,246,0.06);\n --shadow-color: rgba(0,0,0,0.1);\n --code-bg: #f1f5f9;\n --error: #dc3545;\n}\n* { box-sizing: border-box; }\nbody {\n margin: 0;\n font-family: \"Inter\", \"Hiragino Sans\", system-ui, -apple-system, sans-serif;\n background: var(--bg-gradient);\n color: var(--text);\n min-height: 100vh;\n transition: background 200ms ease, color 200ms ease;\n}\nheader {\n position: sticky;\n top: 0;\n z-index: 5;\n padding: 12px 16px;\n background: var(--panel-alpha);\n backdrop-filter: blur(8px);\n border-bottom: 1px solid var(--border);\n display: flex;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n transition: background 200ms ease, border-color 200ms ease;\n}\nheader .meta { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }\nheader .actions { display: flex; gap: 8px; align-items: center; }\nheader h1 { display: flex; flex-direction: column; margin: 0; line-height: 1.3; }\nheader h1 .title-path { font-size: 11px; font-weight: 400; color: var(--muted); }\nheader h1 .title-file { font-size: 16px; font-weight: 700; }\nheader .badge {\n background: var(--selected-bg);\n color: var(--text);\n padding: 6px 10px;\n border-radius: 8px;\n font-size: 12px;\n border: 1px solid var(--border);\n}\nheader button {\n background: linear-gradient(135deg, #38bdf8, #6366f1);\n color: var(--text-inverse);\n border: none;\n border-radius: 10px;\n padding: 10px 14px;\n font-weight: 700;\n cursor: pointer;\n box-shadow: 0 10px 30px var(--shadow-color);\n transition: transform 120ms ease, box-shadow 120ms ease;\n}\nheader button:hover { transform: translateY(-1px); box-shadow: 0 16px 36px var(--shadow-color); }\nheader button:active { transform: translateY(0); }\n/* Theme toggle button */\n.theme-toggle {\n background: var(--selected-bg);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 8px 10px;\n font-size: 16px;\n cursor: pointer;\n transition: background 120ms ease, transform 120ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n height: 38px;\n}\n.theme-toggle:hover { background: var(--hover-bg); transform: scale(1.05); }\n\n.wrap { padding: 12px 16px 12px; }\n.toolbar {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n margin: 10px 0 12px;\n color: var(--muted);\n font-size: 13px;\n}\n.toolbar button {\n background: rgba(96,165,250,0.12);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 8px 10px;\n font-size: 13px;\n cursor: pointer;\n}\n.toolbar button:hover { background: rgba(96,165,250,0.2); }\n\n.table-box {\n background: var(--table-bg);\n border: 1px solid var(--border);\n border-radius: 12px;\n overflow: auto;\n max-height: calc(100vh - 110px);\n box-shadow: 0 20px 50px var(--shadow-color);\n transition: background 200ms ease, border-color 200ms ease;\n}\ntable {\n border-collapse: collapse;\n width: 100%;\n min-width: 540px;\n table-layout: fixed;\n}\nthead th {\n position: sticky;\n top: 0;\n z-index: 3;\n background: var(--panel-solid) !important;\n color: var(--muted);\n font-size: 12px;\n text-align: center;\n padding: 0;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n white-space: nowrap;\n transition: background 200ms ease;\n}\nthead th:not(.selected) {\n background: var(--panel-solid) !important;\n}\nthead th:first-child,\ntbody th {\n width: 28px;\n min-width: 28px;\n max-width: 28px;\n}\nthead th .th-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 8px 6px;\n position: relative;\n height: 100%;\n}\nthead th.filtered .th-inner {\n background: linear-gradient(135deg, rgba(96,165,250,0.18), rgba(34,197,94,0.18));\n color: #e5e7eb;\n border-radius: 6px;\n box-shadow: inset 0 -1px 0 rgba(255,255,255,0.05);\n}\nthead th.filtered .th-inner::after {\n content: 'FILTER';\n font-size: 10px;\n color: #c7d2fe;\n background: rgba(99,102,241,0.24);\n border: 1px solid rgba(99,102,241,0.45);\n padding: 1px 6px;\n border-radius: 999px;\n position: absolute;\n bottom: 4px;\n right: 6px;\n}\n.resizer {\n position: absolute;\n right: 2px;\n top: 0;\n width: 6px;\n height: 100%;\n cursor: col-resize;\n user-select: none;\n touch-action: none;\n opacity: 0.6;\n}\n.resizer::after {\n content: '';\n position: absolute;\n top: 10%;\n bottom: 10%;\n left: 2px;\n width: 2px;\n background: rgba(96,165,250,0.6);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 120ms ease;\n}\nthead th:hover .resizer::after { opacity: 1; }\n\n.freeze {\n position: sticky !important;\n background: var(--panel-solid);\n z-index: 4;\n}\n.freeze-row {\n position: sticky !important;\n background: var(--panel-solid);\n}\n.freeze-row.freeze {\n z-index: 6;\n}\nth.freeze-row {\n z-index: 6;\n}\ntbody th {\n position: sticky;\n left: 0;\n z-index: 2;\n background: var(--panel-solid);\n color: var(--muted);\n text-align: right;\n padding: 8px 10px;\n font-size: 12px;\n border-right: 1px solid var(--border);\n border-bottom: 1px solid var(--border);\n transition: background 200ms ease;\n}\ntd {\n padding: 10px 10px;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n background: var(--row-odd);\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n cursor: pointer;\n transition: background 120ms ease, box-shadow 120ms ease;\n position: relative;\n white-space: pre-wrap;\n word-break: break-word;\n max-width: 320px;\n}\ntr:nth-child(even) td:not(.selected):not(.has-comment) { background: var(--row-even); }\ntd:hover:not(.selected) { background: var(--hover-bg); box-shadow: inset 0 0 0 1px rgba(96,165,250,0.25); }\ntd.has-comment { background: rgba(34,197,94,0.12); box-shadow: inset 0 0 0 1px rgba(34,197,94,0.35); }\ntd.selected, tbody th.selected { background: rgba(99,102,241,0.22) !important; box-shadow: inset 0 0 0 1px rgba(99,102,241,0.45); }\n.preview-highlight { background: rgba(167,139,250,0.18) !important; box-shadow: inset 0 0 0 2px rgba(139,92,246,0.35); border-radius: 4px; transition: background 150ms ease, box-shadow 150ms ease; padding-left: 8px; margin-left: -8px; }\nthead th.selected { background: #c7d2fe !important; box-shadow: inset 0 0 0 1px rgba(99,102,241,0.45); }\n[data-theme=\"dark\"] thead th.selected { background: #3730a3 !important; }\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging td, body.dragging tbody th { cursor: crosshair; }\ntbody th { cursor: pointer; }\ntd .dot {\n position: absolute;\n right: 6px;\n top: 6px;\n width: 8px;\n height: 8px;\n border-radius: 99px;\n background: var(--badge);\n box-shadow: 0 0 0 4px rgba(34,197,94,0.15);\n}\n.floating {\n position: fixed;\n z-index: 10;\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 12px;\n padding: 12px;\n width: min(420px, calc(100vw - 32px));\n box-shadow: 0 20px 40px var(--shadow-color);\n display: none;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.card-close-x {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 28px;\n height: 28px;\n padding: 0;\n background: transparent;\n border: none;\n color: var(--muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: background 120ms ease, color 120ms ease;\n}\n.card-close-x:hover { background: var(--border); color: var(--text);\n}\n.floating header {\n position: static;\n background: transparent;\n backdrop-filter: none;\n border: none;\n padding: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.floating h2 { font-size: 14px; margin: 0; color: var(--text); }\n.floating button {\n margin-left: 8px;\n background: var(--accent);\n color: var(--text-inverse);\n border: 1px solid var(--accent);\n padding: 6px 10px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 120ms ease, opacity 120ms ease;\n}\n.floating button.icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n}\n.floating button:hover { opacity: 0.85; }\n.copy-btn-float {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n background: var(--panel-solid) !important;\n border: 1px solid var(--border) !important;\n color: var(--muted) !important;\n opacity: 0.7;\n}\n.copy-btn-float:hover { opacity: 1 !important; }\n.card-actions-split {\n display: flex;\n justify-content: space-between !important;\n align-items: center;\n margin-top: 8px;\n}\n.danger-text {\n background: transparent !important;\n border: none !important;\n color: #ef4444 !important;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n padding: 4px 8px;\n}\n.danger-text:hover { color: #dc2626 !important; text-decoration: underline; }\n.floating textarea {\n width: 100%;\n min-height: 70px;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n padding: 10px;\n font-size: 13px;\n line-height: 1.4;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.floating textarea:focus {\n outline: none;\n border-color: var(--accent);\n}\n.floating .actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 10px;\n}\n.floating .actions button.primary {\n background: linear-gradient(135deg, #22c55e, #16a34a);\n color: var(--text-inverse);\n border: none;\n font-weight: 700;\n box-shadow: 0 10px 30px rgba(22,163,74,0.35);\n}\n.comment-list {\n position: fixed;\n right: 14px;\n bottom: 14px;\n width: 320px;\n max-height: 60vh;\n overflow: auto;\n border: 1px solid var(--border);\n border-radius: 12px;\n background: var(--card-bg);\n box-shadow: 0 18px 40px var(--shadow-color);\n padding: 12px;\n backdrop-filter: blur(6px);\n transition: opacity 120ms ease, transform 120ms ease, background 200ms ease;\n}\n.comment-list h3 { margin: 0 0 8px 0; font-size: 13px; color: var(--muted); }\n.comment-list ol {\n margin: 0;\n padding-left: 18px;\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n}\n.comment-list li { margin-bottom: 6px; }\n.comment-list .hint { color: var(--muted); font-size: 12px; }\n.pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; background: var(--selected-bg); border: 1px solid var(--border); font-size: 12px; color: var(--text); cursor: pointer; transition: background 150ms ease, border-color 150ms ease; }\n.pill:hover { background: var(--hover-bg); border-color: var(--accent); }\n.pill strong { color: var(--text); font-weight: 700; }\n.comment-list.collapsed {\n opacity: 0;\n pointer-events: none;\n transform: translateY(8px) scale(0.98);\n}\n.md-preview {\n background: var(--input-bg);\n border: 1px solid var(--border);\n border-radius: 12px;\n padding: 14px;\n margin-bottom: 12px;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.md-layout {\n display: flex;\n gap: 16px;\n align-items: stretch;\n margin-top: 8px;\n height: calc(100vh - 80px);\n}\n.md-left {\n flex: 1;\n min-width: 200px;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-left .md-preview {\n max-height: none;\n}\n.md-right {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-right .table-box {\n max-width: none;\n min-width: 0;\n max-height: none;\n overflow: visible;\n}\n/* Ensure thead is opaque in md-right to prevent content showing through */\n.md-right thead th {\n background: var(--panel-solid) !important;\n}\n.md-right thead th.selected {\n background: #c7d2fe !important;\n}\n[data-theme=\"dark\"] .md-right thead th {\n background: var(--panel-solid) !important;\n}\n[data-theme=\"dark\"] .md-right thead th.selected {\n background: #3730a3 !important;\n}\n\n/* === Media Sidebar === */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden {\n display: none;\n}\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar {\n width: 4px;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-track {\n background: transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 4px;\n}\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover {\n border-color: var(--accent);\n transform: scale(1.05);\n box-shadow: 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb.active {\n border-color: var(--accent);\n box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n.media-sidebar-thumb svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg {\n width: 100% !important;\n height: 100% !important;\n max-width: 100%;\n max-height: 100%;\n display: block;\n}\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img {\n max-width: none;\n max-height: none;\n border-radius: 0;\n}\n.media-sidebar-viewer-content video {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 8px;\n background: #000;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap {\n width: 100%;\n overflow: auto;\n display: flex;\n justify-content: center;\n background: var(--panel);\n border-radius: 8px;\n padding: 16px;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap svg {\n width: 100% !important;\n height: auto !important;\n max-height: calc(100vh - 200px);\n}\n\n/* === Sidebar Rich Viewer: Mermaid zoom/pan/minimap === */\n.sidebar-mermaid-controls {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n margin-bottom: 8px;\n width: 100%;\n box-sizing: border-box;\n}\n.sidebar-mermaid-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 5px;\n padding: 4px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n line-height: 1;\n transition: background 0.15s ease;\n}\n.sidebar-mermaid-controls button:hover { background: var(--hover-bg); }\n.sidebar-mermaid-controls .sidebar-zoom-info {\n font-size: 11px;\n color: var(--muted);\n min-width: 40px;\n text-align: center;\n user-select: none;\n}\n.sidebar-mermaid-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n background: var(--panel);\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.sidebar-mermaid-viewport:active { cursor: grabbing; }\n.sidebar-mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.sidebar-mermaid-wrapper svg {\n display: block;\n}\n.sidebar-minimap {\n position: absolute;\n top: 12px;\n right: 8px;\n bottom: auto;\n left: auto;\n width: 140px;\n height: 100px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 6px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0,0,0,0.12);\n z-index: 3;\n}\n.sidebar-minimap-content {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px;\n}\n.sidebar-minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.sidebar-minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n\n/* === Sidebar Rich Viewer: Image zoom/pan === */\n.sidebar-image-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.sidebar-image-viewport.panning { cursor: grabbing; }\n.sidebar-image-viewport img {\n transform-origin: 0 0;\n max-width: none !important;\n max-height: none !important;\n border-radius: 0 !important;\n user-select: none;\n -webkit-user-drag: none;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 10px;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(0, 0, 0, 0.65);\n color: #fff;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n pointer-events: none;\n z-index: 3;\n backdrop-filter: blur(4px);\n transition: opacity 0.3s ease;\n user-select: none;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-image-hint {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n color: var(--muted);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.4s ease;\n text-align: center;\n z-index: 2;\n}\n\n/* === Sidebar Rich Viewer: Video container (timeline uses shared .video-timeline classes) === */\n.sidebar-video-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.sidebar-video-container video {\n width: 100%;\n border-radius: 8px 8px 0 0;\n background: #000;\n max-height: calc(100vh - 260px);\n}\n\n.media-sidebar-viewer-label {\n margin-top: 12px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n word-break: break-all;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 8px;\n left: 8px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 6px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n z-index: 2;\n transition: background 0.15s ease;\n}\n.media-sidebar-viewer-close:hover {\n background: var(--hover-bg);\n}\n.sidebar-viewer-settings-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n background: rgba(0,0,0,0.5);\n border: none;\n border-radius: 8px;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n font-size: 16px;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-viewer-settings-btn:hover {\n background: rgba(0,0,0,0.8);\n}\n.sidebar-viewer-settings-btn + .video-settings-panel {\n position: absolute;\n top: 44px;\n right: 8px;\n}\n\n.media-sidebar-toggle {\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 0.15s ease, border-color 0.15s ease;\n display: none;\n}\n.media-sidebar-toggle.has-media {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.media-sidebar-toggle:hover {\n background: var(--hover-bg);\n border-color: var(--accent);\n}\n.media-sidebar-toggle .toggle-count {\n font-size: 10px;\n font-weight: 700;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 1px 5px;\n border-radius: 8px;\n line-height: 1.4;\n}\n.view-toggle {\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n.view-toggle:hover { background: rgba(96,165,250,0.2); }\n.view-toggle.active { background: var(--accent); color: #fff; }\n@media (max-width: 1200px) {\n .media-sidebar-viewer.open {\n width: 40vw;\n max-width: calc(100vw - 350px);\n }\n}\n@media (max-width: 900px) {\n .media-sidebar-thumbs {\n width: 72px;\n }\n .media-sidebar-thumb {\n width: 56px;\n height: 42px;\n }\n .media-sidebar-viewer.open {\n width: 35vw;\n max-width: calc(100vw - 300px);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .media-sidebar,\n .media-sidebar-viewer,\n .media-sidebar-thumb {\n transition: none !important;\n }\n}\n\n.md-preview h1, .md-preview h2, .md-preview h3, .md-preview h4 {\n margin: 0.4em 0 0.2em;\n}\n/* Heading toggle feature */\n.md-preview .md-heading-toggle {\n margin: 0;\n}\n.md-preview .heading-toggle-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6em;\n transition: transform 150ms ease;\n color: var(--muted);\n flex-shrink: 0;\n cursor: pointer;\n padding: 4px 8px;\n margin: -4px 0 -4px -8px;\n border-radius: 4px;\n}\n.md-preview .heading-toggle-icon:hover {\n background: var(--hover-bg);\n color: var(--accent);\n}\n.md-preview .md-heading-toggle.collapsed .heading-toggle-icon {\n transform: rotate(-90deg);\n}\n.md-preview details.heading-toggle {\n margin: 0.2em 0;\n}\n.md-preview details.heading-toggle > summary {\n list-style: none;\n cursor: default;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.md-preview details.heading-toggle > summary::-webkit-details-marker {\n display: none;\n}\n.md-preview details.heading-toggle > summary > .md-heading-toggle {\n flex: 1;\n}\n.md-preview details.heading-toggle:not([open]) > .toggle-content {\n display: none;\n}\n.md-preview .heading-section-content {\n /* Content wrapper for collapsible sections */\n}\n.md-preview .heading-section-content.hidden {\n display: none;\n}\n.md-preview p { margin: 0.3em 0; line-height: 1.5; }\n.md-preview img { max-width: 100%; height: auto; border-radius: 8px; }\n.md-preview video.video-preview { max-width: 100%; height: auto; border-radius: 8px; background: #000; }\n.md-preview table video.video-preview {\n display: block;\n width: 100%;\n height: auto;\n}\n.md-preview code { background: rgba(255,255,255,0.08); padding: 2px 4px; border-radius: 4px; }\n.md-preview pre {\n background: var(--code-bg);\n padding: 12px 16px;\n border-radius: 8px;\n overflow: auto;\n border: 1px solid var(--border);\n}\n.md-preview pre code {\n background: none;\n padding: 0;\n font-size: 13px;\n line-height: 1.5;\n}\n.md-preview pre code.hljs {\n background: transparent;\n padding: 0;\n}\n/* YAML Frontmatter table */\n.frontmatter-table {\n margin-bottom: 20px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--border);\n background: var(--panel);\n}\n.frontmatter-table table {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n}\n.frontmatter-table thead th {\n background: linear-gradient(135deg, rgba(147, 51, 234, 0.15), rgba(96, 165, 250, 0.15));\n color: var(--text);\n font-size: 12px;\n font-weight: 600;\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n}\n.frontmatter-table tbody th {\n background: rgba(147, 51, 234, 0.08);\n color: #c084fc;\n font-weight: 500;\n font-size: 12px;\n padding: 8px 10px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n}\n.frontmatter-table tbody td {\n padding: 8px 14px;\n font-size: 13px;\n border-bottom: 1px solid var(--border);\n word-break: break-word;\n}\n.frontmatter-table tbody tr:last-child th,\n.frontmatter-table tbody tr:last-child td {\n border-bottom: none;\n}\n.frontmatter-table .fm-tag {\n display: inline-block;\n background: rgba(96, 165, 250, 0.15);\n color: var(--accent);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n margin-right: 4px;\n margin-bottom: 4px;\n}\n.frontmatter-table pre {\n margin: 0;\n background: var(--code-bg);\n padding: 8px;\n border-radius: 4px;\n font-size: 11px;\n}\n/* Reviw questions preview cards */\n.reviw-questions-preview {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.reviw-q-card {\n background: var(--code-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 10px 12px;\n}\n.reviw-q-card.resolved {\n border-left: 3px solid #22c55e;\n}\n.reviw-q-card.pending {\n border-left: 3px solid #f59e0b;\n}\n.reviw-q-header {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-q-header strong {\n color: var(--accent);\n}\n.reviw-q-question {\n font-size: 13px;\n color: var(--text);\n margin-bottom: 6px;\n}\n.reviw-q-options {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 6px;\n}\n.reviw-q-answer {\n font-size: 12px;\n color: #22c55e;\n background: rgba(34, 197, 94, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n}\n[data-theme=\"light\"] .frontmatter-table tbody th {\n color: #7c3aed;\n}\n/* Table scroll container and indicator */\n.table-scroll-container {\n position: relative;\n margin: 16px 0;\n}\n.table-scroll-wrapper {\n overflow-x: auto;\n border-radius: 8px;\n}\n.scroll-hint {\n text-align: right;\n font-size: 12px;\n color: var(--accent);\n padding: 4px 8px;\n margin-bottom: 4px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 200ms ease;\n}\n.table-scroll-container.can-scroll .scroll-hint {\n opacity: 0.8;\n visibility: visible;\n}\n.table-scroll-container.scrolled-end .scroll-hint {\n opacity: 0;\n visibility: hidden;\n}\n/* Markdown tables in preview */\n.md-preview table:not(.frontmatter-table table) {\n min-width: 100%;\n width: max-content;\n border-collapse: collapse;\n border: 1px solid var(--border);\n border-radius: 8px;\n}\n.md-preview table:not(.frontmatter-table table) th,\n.md-preview table:not(.frontmatter-table table) td {\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n word-break: break-word;\n overflow-wrap: anywhere;\n width: auto;\n}\n/* Force equal column widths when colgroup is not specified */\n.md-preview table:not(.frontmatter-table table) colgroup ~ * th,\n.md-preview table:not(.frontmatter-table table) colgroup ~ * td {\n width: auto;\n}\n.md-preview table:not(.frontmatter-table table) td:has(video),\n.md-preview table:not(.frontmatter-table table) td:has(img) {\n padding: 4px;\n line-height: 0;\n}\n.md-preview table:not(.frontmatter-table table) td video,\n.md-preview table:not(.frontmatter-table table) td img {\n width: 100%;\n max-width: 100%;\n height: auto;\n}\n.md-preview table:not(.frontmatter-table table) th {\n background: var(--panel);\n font-weight: 600;\n font-size: 13px;\n}\n.md-preview table:not(.frontmatter-table table) td {\n font-size: 13px;\n}\n.md-preview table:not(.frontmatter-table table) tr:last-child td {\n border-bottom: none;\n}\n.md-preview table:not(.frontmatter-table table) tr:hover td {\n background: var(--hover-bg);\n}\n/* Source table (右ペイン) */\n.table-box table {\n table-layout: fixed;\n width: 100%;\n}\n.table-box th,\n.table-box td {\n word-break: break-word;\n min-width: 140px;\n}\n.table-box th:first-child,\n.table-box td:first-child {\n min-width: 320px;\n max-width: 480px;\n}\n/* Image fullscreen overlay */\n.image-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1001;\n display: none;\n flex-direction: column;\n}\n.image-fullscreen-overlay.visible {\n display: flex;\n}\n.image-fs-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.image-fs-content:active { cursor: grabbing; }\n.image-fs-content .image-fs-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.image-fs-content .image-fs-wrapper img {\n display: block;\n}\n/* Video fullscreen overlay */\n.video-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.95);\n z-index: 1001;\n display: none;\n justify-content: center;\n align-items: center;\n}\n.video-fullscreen-overlay.visible {\n display: flex;\n}\n.video-close-btn {\n position: absolute;\n top: 14px;\n right: 14px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-close-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-container {\n width: 90vw;\n height: 90vh;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.video-container video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n}\n/* Video Timeline - shared base styles (used by both fullscreen and sidebar) */\n.video-timeline {\n background: rgba(0, 0, 0, 0.85);\n display: flex;\n overflow-x: auto;\n backdrop-filter: blur(8px);\n height: 80px;\n padding: 8px;\n gap: 4px;\n}\n.video-timeline::-webkit-scrollbar {\n height: 6px;\n}\n.video-timeline::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.5);\n}\n/* Fullscreen-specific video timeline positioning */\n.video-container .video-timeline {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 5;\n}\n/* Sidebar-specific video timeline sizing */\n.sidebar-video-container .video-timeline {\n width: 100%;\n height: 72px;\n padding: 6px;\n gap: 3px;\n border-radius: 0 0 8px 8px;\n background: rgba(0, 0, 0, 0.88);\n}\n.sidebar-video-container .video-timeline::-webkit-scrollbar { height: 5px; }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.08); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.25); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.4); }\n.timeline-thumb {\n height: 64px;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: 4px;\n flex-shrink: 0;\n transition: border-color 0.2s, transform 0.15s;\n opacity: 0.85;\n}\n.sidebar-video-container .timeline-thumb {\n height: 52px;\n opacity: 0.8;\n}\n.timeline-thumb:hover {\n border-color: rgba(59, 130, 246, 0.5);\n opacity: 1;\n transform: scale(1.05);\n}\n.timeline-thumb.active {\n border-color: #3b82f6;\n opacity: 1;\n box-shadow: 0 0 12px rgba(59, 130, 246, 0.5);\n}\n.sidebar-video-container .timeline-thumb.active {\n box-shadow: 0 0 8px rgba(59, 130, 246, 0.4);\n}\n.timeline-loading {\n color: rgba(255, 255, 255, 0.6);\n font-size: 12px;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.sidebar-video-container .timeline-loading {\n font-size: 11px;\n padding: 6px 10px;\n gap: 6px;\n color: rgba(255, 255, 255, 0.5);\n}\n.timeline-loading::before {\n content: '';\n width: 14px;\n height: 14px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top-color: #3b82f6;\n border-radius: 50%;\n animation: timeline-spin 0.8s linear infinite;\n}\n.sidebar-video-container .timeline-loading::before {\n width: 12px;\n height: 12px;\n border-width: 2px;\n border-color: rgba(255, 255, 255, 0.25);\n border-top-color: #3b82f6;\n}\n@keyframes timeline-spin {\n to { transform: rotate(360deg); }\n}\n.timeline-time {\n position: absolute;\n bottom: 2px;\n right: 4px;\n font-size: 9px;\n color: #fff;\n background: rgba(0, 0, 0, 0.7);\n padding: 1px 4px;\n border-radius: 2px;\n pointer-events: none;\n}\n.sidebar-video-container .timeline-time {\n font-size: 8px;\n right: 3px;\n padding: 1px 3px;\n}\n.timeline-thumb-wrapper {\n position: relative;\n flex-shrink: 0;\n}\n/* Video threshold settings panel */\n.video-settings-btn {\n position: absolute;\n top: 14px;\n right: 64px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-settings-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-settings-panel {\n position: absolute;\n top: 60px;\n right: 14px;\n background: rgba(0, 0, 0, 0.9);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n padding: 16px;\n z-index: 15;\n min-width: 280px;\n display: none;\n backdrop-filter: blur(8px);\n}\n.video-settings-panel.visible {\n display: block;\n}\n.video-settings-panel h4 {\n margin: 0 0 8px;\n color: #fff;\n font-size: 14px;\n font-weight: 500;\n}\n.video-settings-desc {\n margin: 0 0 12px;\n color: rgba(255, 255, 255, 0.6);\n font-size: 11px;\n line-height: 1.4;\n}\n.video-settings-buttons {\n display: flex;\n gap: 6px;\n margin-bottom: 12px;\n}\n.video-settings-buttons button {\n flex: 1;\n padding: 8px 4px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.8);\n font-size: 11px;\n cursor: pointer;\n transition: all 120ms ease;\n}\n.video-settings-buttons button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n}\n.video-settings-buttons button.selected {\n background: #3b82f6;\n border-color: #3b82f6;\n color: #fff;\n}\n.video-settings-actions {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n}\n.video-settings-actions button {\n flex: 1;\n padding: 8px 12px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n cursor: pointer;\n transition: background 120ms ease;\n}\n.video-settings-actions .reset-btn {\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n}\n.video-settings-actions .reset-btn:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n/* Video Shortcuts Help */\n.video-shortcuts-help {\n opacity: 0.85;\n transition: opacity 0.2s;\n}\n.video-shortcuts-help:hover {\n opacity: 1;\n}\n.video-shortcuts-help .shortcuts-title {\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 10px;\n color: rgba(255, 255, 255, 0.7);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.video-shortcuts-help .shortcuts-title::before {\n content: '\\u2328';\n font-size: 14px;\n}\n.video-shortcuts-help .shortcut-item {\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n.video-shortcuts-help .shortcut-item:last-child {\n margin-bottom: 0;\n}\n.video-shortcuts-help kbd {\n display: inline-block;\n background: rgba(255, 255, 255, 0.15);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 10px;\n font-weight: 500;\n min-width: 18px;\n text-align: center;\n margin-right: 2px;\n}\n/* Reviw Questions Modal */\n.reviw-questions-overlay {\n display: none;\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 1100;\n justify-content: center;\n align-items: center;\n}\n.reviw-questions-overlay.visible {\n display: flex;\n}\n.reviw-questions-modal {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: 16px;\n width: 90%;\n max-width: 600px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n box-shadow: 0 25px 80px rgba(0, 0, 0, 0.5);\n}\n.reviw-questions-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-questions-header h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text);\n}\n.reviw-questions-header h2 span {\n font-size: 14px;\n color: var(--text-dim);\n font-weight: 400;\n}\n.reviw-questions-close {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--text-dim);\n font-size: 18px;\n cursor: pointer;\n border-radius: 8px;\n transition: all 150ms ease;\n}\n.reviw-questions-close:hover {\n background: var(--border);\n color: var(--text);\n}\n.reviw-questions-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.reviw-questions-footer {\n padding: 12px 20px;\n border-top: 1px solid var(--border);\n display: flex;\n justify-content: flex-end;\n}\n.reviw-questions-later {\n padding: 8px 16px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text-dim);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-questions-later:hover {\n background: var(--border);\n color: var(--text);\n}\n/* Question Item */\n.reviw-question-item {\n margin-bottom: 20px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-question-item:last-child {\n margin-bottom: 0;\n padding-bottom: 0;\n border-bottom: none;\n}\n.reviw-question-text {\n font-size: 14px;\n color: var(--text);\n margin-bottom: 12px;\n line-height: 1.5;\n}\n.reviw-question-options {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n.reviw-question-option {\n padding: 8px 14px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-question-option:hover {\n border-color: var(--accent);\n background: rgba(96, 165, 250, 0.1);\n}\n.reviw-question-option.selected {\n border-color: var(--accent);\n background: var(--accent);\n color: var(--text-inverse);\n}\n.reviw-question-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n border-radius: 8px;\n font-size: 13px;\n resize: vertical;\n min-height: 60px;\n}\n.reviw-question-input:focus {\n outline: none;\n border-color: var(--accent);\n}\n.reviw-question-input::placeholder {\n color: var(--text-dim);\n}\n.reviw-check-mark {\n color: #22c55e;\n font-weight: bold;\n}\n.reviw-question-item.answered {\n border-color: #22c55e;\n background: rgba(34, 197, 94, 0.05);\n}\n.reviw-question-submit {\n margin-top: 10px;\n padding: 8px 16px;\n border: none;\n background: var(--accent);\n color: var(--text-inverse);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 150ms ease;\n}\n.reviw-question-submit:hover {\n filter: brightness(1.1);\n}\n.reviw-question-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n/* Resolved Section */\n.reviw-resolved-section {\n margin-top: 16px;\n border-top: 1px solid var(--border);\n padding-top: 12px;\n}\n.reviw-resolved-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n color: var(--text-dim);\n font-size: 13px;\n cursor: pointer;\n padding: 4px 0;\n}\n.reviw-resolved-toggle:hover {\n color: var(--text);\n}\n.reviw-resolved-toggle .arrow {\n transition: transform 150ms ease;\n}\n.reviw-resolved-toggle.open .arrow {\n transform: rotate(90deg);\n}\n.reviw-resolved-list {\n display: none;\n margin-top: 12px;\n}\n.reviw-resolved-list.visible {\n display: block;\n}\n.reviw-resolved-item {\n padding: 10px 12px;\n background: var(--input-bg);\n border-radius: 8px;\n margin-bottom: 8px;\n opacity: 0.7;\n}\n.reviw-resolved-item:last-child {\n margin-bottom: 0;\n}\n.reviw-resolved-q {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-resolved-a {\n font-size: 13px;\n color: var(--text);\n}\n/* Notice Bar */\n.reviw-questions-bar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n font-size: 13px;\n z-index: 1050;\n justify-content: center;\n align-items: center;\n gap: 12px;\n}\n.reviw-questions-bar.visible {\n display: flex;\n}\n.reviw-questions-bar button {\n padding: 4px 12px;\n border: 1px solid rgba(255, 255, 255, 0.3);\n background: rgba(255, 255, 255, 0.1);\n color: var(--text-inverse);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n transition: all 150ms ease;\n}\n.reviw-questions-bar button:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n/* Adjust layout when bar is visible */\nbody.has-questions-bar header {\n top: 36px;\n}\nbody.has-questions-bar .toolbar,\nbody.has-questions-bar .table-wrap {\n margin-top: 36px;\n}\n/* Copy notification toast */\n.copy-toast {\n position: fixed;\n bottom: 60px;\n left: 50%;\n transform: translateX(-50%) translateY(20px);\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 1000;\n}\n.copy-toast.visible {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n}\n@media (max-width: 960px) {\n .md-layout { flex-direction: column; }\n .md-left { max-width: 100%; flex: 1 1 0; min-height: 0; }\n .md-right { display: none; }\n .media-sidebar { display: none; }\n .media-sidebar-toggle { display: none !important; }\n}\n.md-layout.preview-only .md-right { display: none; }\n.md-layout.preview-only .md-left { flex: 1 1 0; min-height: 0; max-width: 100%; }\n.filter-menu {\n position: absolute;\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 10px;\n box-shadow: 0 14px 30px var(--shadow-color);\n padding: 8px;\n display: none;\n z-index: 12;\n width: 180px;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.filter-menu button {\n width: 100%;\n display: block;\n margin: 4px 0;\n padding: 8px 10px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n color: var(--text);\n cursor: pointer;\n font-size: 13px;\n text-align: left;\n}\n.filter-menu button:hover { background: var(--hover-bg); }\n.modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0,0,0,0.6);\n display: none;\n align-items: center;\n justify-content: center;\n z-index: 100;\n}\n.modal-overlay.visible { display: flex; }\n/* Submit modal: top-right position, no blocking overlay */\n#submit-modal {\n background: transparent;\n pointer-events: none;\n align-items: flex-start;\n justify-content: flex-end;\n}\n#submit-modal.visible { display: flex; }\n#submit-modal .modal-dialog {\n pointer-events: auto;\n margin: 60px 20px 20px 20px; /* top margin avoids header button overlap */\n}\n.modal-dialog {\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 14px;\n padding: 20px;\n width: 90%;\n max-width: 480px;\n box-shadow: 0 20px 40px var(--shadow-color);\n transition: background 200ms ease, border-color 200ms ease;\n}\n.modal-dialog h3 { margin: 0 0 12px; font-size: 18px; color: var(--accent); }\n.modal-summary { color: var(--muted); font-size: 13px; margin-bottom: 12px; }\n.modal-dialog label { display: block; font-size: 13px; margin-bottom: 6px; color: var(--muted); }\n.modal-dialog textarea {\n width: 100%;\n min-height: 100px;\n background: var(--input-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n color: var(--text);\n padding: 10px;\n font-size: 14px;\n resize: vertical;\n box-sizing: border-box;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.modal-dialog textarea:focus { outline: none; border-color: var(--accent); }\n.modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 16px; }\n.modal-actions button {\n padding: 8px 16px;\n border-radius: 8px;\n border: 1px solid var(--border);\n background: var(--selected-bg);\n color: var(--text);\n cursor: pointer;\n font-size: 14px;\n}\n.modal-actions button:hover { background: var(--hover-bg); }\n.modal-actions button.primary { background: var(--accent); color: var(--text-inverse); border-color: var(--accent); }\n.image-attach-area { margin: 12px 0; }\n.image-attach-area label { display: block; font-size: 12px; color: var(--muted); margin-bottom: 6px; }\n.image-attach-area.image-attach-small { margin: 8px 0; }\n.image-attach-area.image-attach-small label { font-size: 11px; }\n.image-preview-list { display: flex; flex-wrap: wrap; gap: 8px; min-height: 24px; }\n.image-preview-item { position: relative; }\n.image-preview-item img { max-width: 80px; max-height: 60px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; }\n.image-preview-item .remove-image { position: absolute; top: -6px; right: -6px; width: 18px; height: 18px; border-radius: 50%; background: var(--error, #ef4444); color: #fff; border: none; cursor: pointer; font-size: 12px; line-height: 1; display: flex; align-items: center; justify-content: center; }\n.image-preview-item .remove-image:hover { background: #dc2626; }\n.modal-actions button.primary:hover { background: #7dd3fc; }\n.modal-actions-decision { justify-content: space-between; align-items: center; }\n.kbd-hint { display: inline-block; font-size: 10px; padding: 1px 5px; border-radius: 3px; background: rgba(255,255,255,0.15); margin-left: 6px; font-family: system-ui; opacity: 0.8; }\n[data-theme=\"light\"] .kbd-hint { background: rgba(0,0,0,0.08); }\n.decision-btn { padding: 8px 16px; border-radius: 8px; border: 1px solid var(--border); cursor: pointer; font-size: 14px; font-weight: 600; transition: all 0.15s ease; }\n.decision-approve { background: #166534; color: #bbf7d0; border-color: #22c55e; }\n.decision-approve:hover { background: #15803d; }\n.decision-request-changes { background: #92400e; color: #fef3c7; border-color: #f59e0b; }\n.decision-request-changes:hover { background: #a16207; }\n[data-theme=\"light\"] .decision-approve { background: #dcfce7; color: #166534; border-color: #22c55e; }\n[data-theme=\"light\"] .decision-approve:hover { background: #bbf7d0; }\n[data-theme=\"light\"] .decision-request-changes { background: #fef9c3; color: #92400e; border-color: #f59e0b; }\n[data-theme=\"light\"] .decision-request-changes:hover { background: #fef3c7; }\n.comment-sent-badge { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 4px; margin-left: 6px; vertical-align: middle; }\n.comment-sent-badge.sent { background: #166534; color: #bbf7d0; }\n.comment-sent-badge.failed { background: #7f1d1d; color: #fecaca; }\n[data-theme=\"light\"] .comment-sent-badge.sent { background: #dcfce7; color: #166534; }\n[data-theme=\"light\"] .comment-sent-badge.failed { background: #fee2e2; color: #991b1b; }\n\n/* Send to AI fixed bottom bar */\n.send-to-ai-bar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 10; background: var(--panel-solid); border-top: 1px solid var(--border); padding: 8px 16px; }\n.send-to-ai-inner { display: flex; align-items: center; gap: 10px; max-width: 1200px; margin: 0 auto; }\n.sse-status { font-size: 12px; flex-shrink: 0; }\n.send-to-ai-input { flex: 1; min-width: 120px; height: 34px; padding: 0 10px; border-radius: 0; border: none; border-bottom: 1px solid var(--border); background: transparent; color: var(--text); font-size: 13px; outline: none; box-sizing: border-box; }\n.send-to-ai-input:focus { border-bottom-color: var(--accent); }\n.send-to-ai-btn.sent { background: #16a34a; pointer-events: none; }\n.send-to-ai-btn.sent:hover { background: #16a34a; }\n.send-to-ai-btn:disabled { opacity: 0.4; cursor: not-allowed; }\n#send-and-exit:disabled { opacity: 0.4; cursor: not-allowed; }\n.send-to-ai-btn { height: 34px; padding: 0 20px; border-radius: 6px; border: none; background: #2563eb; color: #fff; font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.15s ease; flex-shrink: 0; box-sizing: border-box; }\n.send-to-ai-btn:hover { background: #1d4ed8; }\n.send-to-ai-btn:active { background: #1e40af; }\n[data-theme=\"light\"] .send-to-ai-btn { background: #3b82f6; }\n[data-theme=\"light\"] .send-to-ai-btn:hover { background: #2563eb; }\n/* Ensure content is not hidden behind the fixed Send to AI bar */\nbody { padding-bottom: 72px; }\n.md-left, .md-right, .text-view, .diff-view, .table-box { padding-bottom: 72px !important; }\n\n.modal-checkboxes { margin: 12px 0; }\n.modal-checkboxes label {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n color: var(--text);\n margin-bottom: 8px;\n cursor: pointer;\n}\n.modal-checkboxes input[type=\"checkbox\"] {\n margin-top: 2px;\n accent-color: var(--accent);\n}\n\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging .diff-line { cursor: crosshair; }\n@media (max-width: 840px) {\n header { flex-direction: column; align-items: flex-start; }\n .comment-list { width: calc(100% - 24px); right: 12px; }\n}\n/* Mermaid diagram styles */\n.mermaid-container {\n position: relative;\n margin: 16px 0;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 16px;\n overflow: hidden;\n}\n.mermaid-container .mermaid {\n display: flex;\n justify-content: center;\n}\n.mermaid-container .mermaid svg {\n max-width: 100%;\n height: auto;\n cursor: pointer;\n pointer-events: auto;\n}\n.mermaid-error-banner {\n background: #fff3f3;\n color: #c33;\n border: 1px solid #e88;\n border-radius: 4px;\n padding: 6px 10px;\n margin-bottom: 8px;\n font-size: 12px;\n font-weight: 500;\n}\n[data-theme=\"dark\"] .mermaid-error-banner {\n background: #3a1a1a;\n color: #f88;\n border-color: #744;\n}\n.mermaid-fullscreen-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 12px;\n z-index: 2;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.mermaid-fullscreen-btn:hover { background: var(--hover-bg); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1000;\n display: none;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 20px;\n background: var(--panel-alpha);\n border-bottom: 1px solid var(--border);\n}\n.fullscreen-header h3 { margin: 0; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 8px; align-items: center; }\n.fullscreen-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 12px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n}\n.fullscreen-controls button:hover { background: var(--hover-bg); }\n.fullscreen-controls .zoom-info { font-size: 12px; color: var(--muted); min-width: 50px; text-align: center; }\n.fullscreen-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.fullscreen-content:active { cursor: grabbing; }\n.fullscreen-content .mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n padding: 40px;\n}\n.fullscreen-content .mermaid svg {\n display: block;\n}\n/* Minimap */\n.minimap {\n position: absolute;\n top: 70px;\n right: 20px;\n width: 200px;\n height: 150px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n}\n.minimap-content {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px;\n}\n.minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n/* Error toast */\n.mermaid-error-toast {\n position: fixed;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--error);\n color: white;\n padding: 12px 24px;\n border-radius: 8px;\n font-size: 13px;\n max-width: 80%;\n z-index: 2000;\n display: none;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n white-space: pre-wrap;\n font-family: monospace;\n}\n.mermaid-error-toast.visible { display: block; }\n\n/* History Panel - Push layout */\nbody { transition: margin-right 0.25s ease; }\nbody.history-open { margin-right: 320px; }\nbody.history-open header { right: 320px; }\nheader { transition: right 0.25s ease; right: 0; }\n\n.history-toggle {\n background: var(--selected-bg);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 8px;\n font-size: 14px;\n cursor: pointer;\n width: 34px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.history-toggle:hover { background: var(--border); }\n.history-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 320px;\n height: 100vh;\n background: var(--panel-solid);\n border-left: 1px solid var(--border);\n z-index: 90;\n transform: translateX(100%);\n transition: transform 0.25s ease;\n display: flex;\n flex-direction: column;\n}\n.history-panel.open { transform: translateX(0); }\n.history-panel-header {\n padding: 16px;\n border-bottom: 1px solid var(--border);\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.history-panel-header h3 { margin: 0; font-size: 14px; font-weight: 600; }\n.history-panel-close {\n background: transparent;\n border: none;\n color: var(--muted);\n cursor: pointer;\n font-size: 18px;\n padding: 4px;\n}\n.history-panel-close:hover { color: var(--text); }\n.history-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.history-empty {\n color: var(--muted);\n font-size: 13px;\n text-align: center;\n padding: 40px 20px;\n}\n.history-date-group { margin-bottom: 16px; }\n.history-date {\n font-size: 11px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 8px;\n text-transform: uppercase;\n}\n.history-item {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n margin-bottom: 8px;\n overflow: hidden;\n}\n.history-item-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 10px;\n background: var(--selected-bg);\n cursor: pointer;\n}\n.history-item-header:hover { background: var(--hover-bg); }\n.history-item-file {\n font-size: 12px;\n font-weight: 600;\n color: var(--text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 180px;\n}\n.history-item-time { font-size: 10px; color: var(--muted); }\n.history-item-body {\n display: none;\n padding: 10px;\n font-size: 12px;\n border-top: 1px solid var(--border);\n}\n.history-item.expanded .history-item-body { display: block; }\n.history-summary {\n color: var(--text);\n margin-bottom: 8px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--border);\n}\n.history-summary-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 4px;\n}\n.history-summary-text { white-space: pre-wrap; line-height: 1.4; }\n.history-comments-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 6px;\n}\n.history-comment {\n padding: 6px 0;\n border-bottom: 1px solid var(--border);\n}\n.history-comment:last-child { border-bottom: none; }\n.history-comment-line {\n font-size: 10px;\n color: var(--accent);\n font-weight: 600;\n margin-bottom: 2px;\n}\n.history-comment-quote {\n background: rgba(0, 0, 0, 0.3);\n border-left: 2px solid var(--accent);\n padding: 4px 8px;\n margin: 4px 0;\n font-family: 'SF Mono', Monaco, Consolas, monospace;\n font-size: 11px;\n color: var(--muted);\n white-space: pre-wrap;\n word-break: break-all;\n max-height: 80px;\n overflow-y: auto;\n}\n.history-comment-text {\n color: var(--text);\n line-height: 1.4;\n white-space: pre-wrap;\n}\n.history-badge {\n display: inline-block;\n background: var(--accent);\n color: var(--text-inverse);\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 10px;\n margin-left: 6px;\n}\n/* Table scroll container */\n.table-container {\n overflow-x: auto;\n margin: 16px 0;\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.table-container table {\n margin: 0;\n border: none;\n border-radius: 0;\n}\n.table-container::-webkit-scrollbar {\n height: 6px;\n}\n.table-container::-webkit-scrollbar-track {\n background: var(--bg);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb:hover {\n background: var(--muted);\n}\n/* Media sidebar */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden { display: none; }\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar { width: 4px; }\n.media-sidebar-thumbs::-webkit-scrollbar-track { background: transparent; }\n.media-sidebar-thumbs::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover { border-color: var(--accent); transform: scale(1.05); box-shadow: 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb.active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }\n.media-sidebar-thumb svg { width: 100%; height: 100%; display: block; }\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video { width: 100%; height: 100%; object-fit: cover; }\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg { width: 100% !important; height: 100% !important; max-width: 100%; max-height: 100%; display: block; }\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 4px;\n left: 4px;\n z-index: 10;\n background: rgba(0,0,0,0.5);\n border: none;\n color: #fff;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n cursor: pointer;\n font-size: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img { max-width: none; max-height: none; border-radius: 0; }\n.media-sidebar-viewer-content video { max-width: 100%; max-height: 100vh; border-radius: 0; background: #000; }\n.media-sidebar-viewer-label {\n margin-top: 8px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 12px;\n right: 12px;\n background: rgba(0,0,0,0.7);\n color: #fff;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n pointer-events: none;\n transition: opacity 0.3s ease;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-maximize-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-maximize-btn:hover { background: rgba(0,0,0,0.8); }\n.sidebar-mermaid-viewport { overflow: hidden; position: relative; cursor: grab; }\n.sidebar-mermaid-wrapper { position: absolute; left: 0; top: 0; transform-origin: 0 0; }\n.sidebar-video-container { width: 100%; }\n.sidebar-video-container video { width: 100%; max-height: calc(100vh - 200px); border-radius: 8px; background: #000; }\n/* Video timeline */\n.video-timeline {\n display: flex;\n gap: 8px;\n padding: 8px;\n overflow-x: auto;\n background: var(--panel);\n border-radius: 8px;\n margin-top: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.timeline-loading { color: var(--muted); font-size: 12px; padding: 8px; }\n.timeline-thumb-wrapper {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n}\n.timeline-thumb {\n width: 80px;\n height: 60px;\n object-fit: cover;\n border-radius: 4px;\n border: 2px solid transparent;\n transition: border-color 0.2s ease;\n}\n.timeline-thumb.active { border-color: var(--accent); }\n.timeline-thumb:hover { border-color: var(--accent); opacity: 0.8; }\n.timeline-time { font-size: 10px; color: var(--muted); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.9);\n z-index: 1000;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: rgba(0,0,0,0.8);\n border-bottom: 1px solid rgba(255,255,255,0.1);\n}\n.fullscreen-header h3 { margin: 0; color: #fff; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 6px; align-items: center; }\n.fullscreen-controls button {\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n color: #fff;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n}\n.fullscreen-controls button:hover { background: rgba(255,255,255,0.2); }\n.fullscreen-controls .zoom-info { color: #fff; font-size: 12px; min-width: 40px; text-align: center; }\n@media (max-width: 960px) {\n .media-sidebar { display: none !important; }\n .media-sidebar-toggle { display: none !important; }\n}\n.video-overlay-wrapper {\n position: relative;\n display: inline-block;\n}\n.video-fs-overlay-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.video-fs-overlay-btn:hover { background: rgba(0,0,0,0.8); }\n@media (max-width: 600px) {\n .minimap { display: none !important; }\n .fullscreen-header { padding: 8px 12px; }\n .fullscreen-controls { gap: 4px; }\n .fullscreen-controls button { padding: 6px 8px; font-size: 11px; }\n .fullscreen-controls .zoom-info { font-size: 11px; min-width: 32px; }\n .history-panel { width: 100vw; }\n body.history-open header { right: 0; }\n}");
|
|
3561
|
+
_M0IPB13StringBuilderPB6Logger13write__string(buf, "/* Dark theme (default) — warm-modern with copper accent */\n:root {\n color-scheme: dark;\n --bg: #14110f;\n --bg-gradient: radial-gradient(120% 80% at 15% 0%, #26201b 0%, #1a1612 40%, #14110f 80%);\n --panel: #1c1815;\n --panel-alpha: rgba(20, 17, 15, 0.82);\n --panel-solid: #1a1612;\n --card-bg: rgba(28, 24, 21, 0.96);\n --input-bg: rgba(32, 27, 23, 0.75);\n --border: #2e2822;\n --border-strong: #3a322b;\n --accent: #d7a67a;\n --accent-strong: #e7b98b;\n --accent-2: #a8765a;\n --accent-soft: rgba(215, 166, 122, 0.14);\n --text: #f1ebe1;\n --text-inverse: #1a1612;\n --muted: #9f9488;\n --comment: #b78a5a;\n --badge: #6bbf86;\n --table-bg: rgba(28, 24, 21, 0.72);\n --row-even: rgba(46, 40, 34, 0.5);\n --row-odd: rgba(28, 24, 21, 0.25);\n --selected-bg: rgba(215, 166, 122, 0.16);\n --hover-bg: rgba(215, 166, 122, 0.08);\n --shadow-color: rgba(0,0,0,0.45);\n --shadow-soft: 0 10px 30px rgba(0,0,0,0.35);\n --shadow-card: 0 20px 40px rgba(0,0,0,0.4);\n --code-bg: #23201c;\n --error: #e06862;\n --success: #6bbf86;\n --warning: #e8b574;\n --radius-sm: 8px;\n --radius-md: 12px;\n --radius-lg: 16px;\n --radius-pill: 999px;\n --font-display: \"Inter\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Sans\", system-ui, -apple-system, sans-serif;\n}\n/* Light theme — warm beige / tan palette (no blue) */\n[data-theme=\"light\"] {\n color-scheme: light;\n --bg: #f6efe1;\n --bg-gradient: linear-gradient(180deg, #fbf6ea 0%, #efe6d3 100%);\n --panel: #fffaf0;\n --panel-alpha: rgba(255, 250, 240, 0.92);\n --panel-solid: #fffaf0;\n --card-bg: rgba(255, 252, 244, 0.98);\n --input-bg: #f4ead7;\n --border: #e4d6bc;\n --border-strong: #d1bf9e;\n --accent: #a8785a;\n --accent-strong: #8c5f43;\n --accent-2: #c89a70;\n --accent-soft: rgba(168, 120, 90, 0.12);\n --text: #3b2d20;\n --text-inverse: #fffaf0;\n --muted: #87735b;\n --comment: #a8785a;\n --badge: #4d9d63;\n --table-bg: #fffaf0;\n --row-even: #f6ecd8;\n --row-odd: #fffaf0;\n --selected-bg: rgba(168, 120, 90, 0.12);\n --hover-bg: rgba(168, 120, 90, 0.06);\n --shadow-color: rgba(60, 40, 20, 0.08);\n --shadow-soft: 0 6px 18px rgba(60, 40, 20, 0.08);\n --shadow-card: 0 18px 36px rgba(60, 40, 20, 0.12);\n --code-bg: #f4ead7;\n --error: #c9564f;\n --success: #4d9d63;\n --warning: #c58a40;\n}\n* { box-sizing: border-box; }\n:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }\nbody {\n margin: 0;\n font-family: var(--font-display, \"Inter\", \"Hiragino Kaku Gothic ProN\", \"Hiragino Sans\", system-ui, -apple-system, sans-serif);\n background: var(--bg-gradient);\n color: var(--text);\n min-height: 100vh;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n letter-spacing: -0.005em;\n transition: background 240ms ease, color 240ms ease;\n}\nheader {\n position: sticky;\n top: 0;\n z-index: 5;\n padding: 14px 20px;\n background: var(--panel-alpha);\n backdrop-filter: saturate(140%) blur(18px);\n -webkit-backdrop-filter: saturate(140%) blur(18px);\n border-bottom: 1px solid var(--border);\n display: flex;\n gap: 14px;\n align-items: center;\n justify-content: space-between;\n transition: background 240ms ease, border-color 240ms ease;\n}\nheader .meta { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }\nheader .actions { display: flex; gap: 6px; align-items: center; }\nheader h1 { display: flex; flex-direction: column; margin: 0; line-height: 1.3; }\nheader h1 .title-path { font-size: 11px; font-weight: 500; color: var(--muted); letter-spacing: 0.02em; }\nheader h1 .title-file { font-size: 16px; font-weight: 700; letter-spacing: -0.01em; }\nheader .badge {\n background: var(--accent-soft);\n color: var(--accent-strong);\n padding: 5px 12px;\n border-radius: var(--radius-pill);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.02em;\n border: 1px solid transparent;\n}\n/* Default header icon buttons (ghost) */\nheader button {\n background: transparent;\n color: var(--text);\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0 12px;\n height: 34px;\n min-width: 34px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n box-shadow: none;\n transition: background 160ms ease, border-color 160ms ease, transform 120ms ease, color 160ms ease;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\nheader button:hover { background: var(--hover-bg); border-color: var(--border); transform: none; box-shadow: none; }\nheader button:active { transform: translateY(0); background: var(--selected-bg); }\n/* Primary submit button */\nheader button.submit-exit-btn {\n background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);\n color: var(--text-inverse);\n border: none;\n padding: 0 18px;\n font-weight: 700;\n letter-spacing: 0.01em;\n box-shadow: var(--shadow-soft);\n}\nheader button.submit-exit-btn:hover {\n background: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent) 100%);\n border: none;\n transform: translateY(-1px);\n box-shadow: var(--shadow-card);\n}\nheader button.submit-exit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n/* Theme toggle button */\n.theme-toggle {\n background: transparent;\n color: var(--muted);\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n font-size: 15px;\n cursor: pointer;\n transition: background 160ms ease, transform 160ms ease, color 160ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n}\n.theme-toggle:hover { background: var(--hover-bg); color: var(--text); transform: rotate(-12deg); }\n/* SSE status dot (header) */\n.sse-dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n margin-right: 2px;\n border-radius: 50%;\n position: relative;\n cursor: default;\n flex-shrink: 0;\n}\n.sse-dot::before {\n content: \"\";\n display: block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--muted);\n box-shadow: 0 0 0 0 currentColor;\n transition: background 200ms ease;\n}\n.sse-dot-connected::before { background: var(--success); box-shadow: 0 0 8px rgba(107, 191, 134, 0.45); }\n.sse-dot-reconnecting::before { background: var(--error); animation: sseBlink 1.1s ease-in-out infinite; }\n.sse-dot-sending::before { background: var(--warning); animation: sseBlink 0.9s ease-in-out infinite; }\n.sse-dot-label { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }\n@keyframes sseBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }\n\n.wrap { padding: 12px 16px 12px; }\n.toolbar {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n margin: 10px 0 12px;\n color: var(--muted);\n font-size: 13px;\n}\n.toolbar button {\n background: var(--accent-soft);\n color: var(--text);\n border: 1px solid var(--border);\n border-radius: var(--radius-sm);\n padding: 8px 12px;\n font-size: 13px;\n cursor: pointer;\n transition: background 160ms ease, border-color 160ms ease;\n}\n.toolbar button:hover { background: var(--hover-bg); border-color: var(--border-strong); }\n\n.table-box {\n background: var(--table-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n overflow: auto;\n max-height: calc(100vh - 110px);\n box-shadow: var(--shadow-soft);\n transition: background 240ms ease, border-color 240ms ease;\n}\ntable {\n border-collapse: collapse;\n width: 100%;\n min-width: 540px;\n table-layout: fixed;\n}\n.table-box thead th,\n.md-right thead th,\n#csv-table thead th {\n position: sticky;\n top: 0;\n z-index: 3;\n background: var(--panel-solid) !important;\n color: var(--muted);\n font-size: 12px;\n text-align: center;\n padding: 0;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n white-space: nowrap;\n transition: background 200ms ease;\n}\n.table-box thead th:not(.selected),\n.md-right thead th:not(.selected),\n#csv-table thead th:not(.selected) {\n background: var(--panel-solid) !important;\n}\n.md-right thead th:first-child,\n.md-right tbody th {\n width: 28px;\n min-width: 28px;\n max-width: 28px;\n}\nthead th .th-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n padding: 8px 6px;\n position: relative;\n height: 100%;\n}\nthead th.filtered .th-inner {\n background: var(--accent-soft);\n color: var(--accent-strong);\n border-radius: 6px;\n box-shadow: inset 0 -1px 0 rgba(255,255,255,0.04);\n}\nthead th.filtered .th-inner::after {\n content: 'FILTER';\n font-size: 10px;\n color: var(--accent-strong);\n background: var(--accent-soft);\n border: 1px solid var(--border-strong);\n padding: 1px 6px;\n border-radius: var(--radius-pill);\n position: absolute;\n bottom: 4px;\n right: 6px;\n}\n.resizer {\n position: absolute;\n right: 2px;\n top: 0;\n width: 6px;\n height: 100%;\n cursor: col-resize;\n user-select: none;\n touch-action: none;\n opacity: 0.6;\n}\n.resizer::after {\n content: '';\n position: absolute;\n top: 10%;\n bottom: 10%;\n left: 2px;\n width: 2px;\n background: var(--accent);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 120ms ease;\n}\nthead th:hover .resizer::after { opacity: 1; }\n\n.freeze {\n position: sticky !important;\n background: var(--panel-solid);\n z-index: 4;\n}\n.freeze-row {\n position: sticky !important;\n background: var(--panel-solid);\n}\n.freeze-row.freeze {\n z-index: 6;\n}\nth.freeze-row {\n z-index: 6;\n}\ntbody th {\n position: sticky;\n left: 0;\n z-index: 2;\n background: var(--panel-solid);\n color: var(--muted);\n text-align: right;\n padding: 8px 10px;\n font-size: 12px;\n border-right: 1px solid var(--border);\n border-bottom: 1px solid var(--border);\n transition: background 200ms ease;\n}\ntd {\n padding: 10px 10px;\n border-bottom: 1px solid var(--border);\n border-right: 1px solid var(--border);\n background: var(--row-odd);\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n cursor: pointer;\n transition: background 120ms ease, box-shadow 120ms ease;\n position: relative;\n white-space: pre-wrap;\n word-break: break-word;\n max-width: 320px;\n}\ntr:nth-child(even) td:not(.selected):not(.has-comment) { background: var(--row-even); }\ntd:hover:not(.selected) { background: var(--hover-bg); box-shadow: inset 0 0 0 1px var(--accent-soft); }\ntd.has-comment { background: rgba(77, 157, 99, 0.12); box-shadow: inset 0 0 0 1px rgba(77, 157, 99, 0.32); }\n[data-theme=\"dark\"] td.has-comment { background: rgba(107, 191, 134, 0.14); box-shadow: inset 0 0 0 1px rgba(107, 191, 134, 0.32); }\ntd.selected, tbody th.selected { background: var(--selected-bg) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; }\n.preview-highlight { background: var(--selected-bg) !important; box-shadow: inset 0 0 0 2px var(--accent); border-radius: 4px; transition: background 150ms ease, box-shadow 150ms ease; padding-left: 8px; margin-left: -8px; }\nthead th.selected { background: var(--accent-soft) !important; color: var(--accent-strong); box-shadow: inset 0 0 0 1px var(--accent); }\n[data-theme=\"dark\"] thead th.selected { background: var(--accent-soft) !important; color: var(--accent-strong); }\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging td, body.dragging tbody th { cursor: crosshair; }\ntbody th { cursor: pointer; }\ntd .dot {\n position: absolute;\n right: 6px;\n top: 6px;\n width: 8px;\n height: 8px;\n border-radius: 99px;\n background: var(--badge);\n box-shadow: 0 0 0 4px rgba(77, 157, 99, 0.18);\n}\n.floating {\n position: fixed;\n z-index: 10;\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 16px;\n width: min(440px, calc(100vw - 32px));\n box-shadow: var(--shadow-card);\n backdrop-filter: blur(24px);\n -webkit-backdrop-filter: blur(24px);\n display: none;\n transition: background 240ms ease, border-color 240ms ease;\n}\n.card-close-x {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 28px;\n height: 28px;\n padding: 0;\n background: transparent;\n border: none;\n color: var(--muted);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: background 120ms ease, color 120ms ease;\n}\n.card-close-x:hover { background: var(--border); color: var(--text);\n}\n.floating header {\n position: static;\n background: transparent;\n backdrop-filter: none;\n border: none;\n padding: 0 0 8px 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.floating h2 { font-size: 14px; font-weight: 600; margin: 0; color: var(--text); letter-spacing: -0.005em; }\n.floating button {\n margin-left: 8px;\n background: var(--accent);\n color: var(--text-inverse);\n border: 1px solid var(--accent);\n padding: 7px 12px;\n border-radius: var(--radius-sm);\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n transition: background 160ms ease, opacity 160ms ease, transform 120ms ease;\n}\n.floating button.icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n}\n.floating button:hover { opacity: 0.85; }\n.copy-btn-float {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 2;\n background: var(--panel-solid) !important;\n border: 1px solid var(--border) !important;\n color: var(--muted) !important;\n opacity: 0.7;\n}\n.copy-btn-float:hover { opacity: 1 !important; }\n.card-actions-split {\n display: flex;\n justify-content: space-between !important;\n align-items: center;\n margin-top: 8px;\n}\n.danger-text {\n background: transparent !important;\n border: none !important;\n color: #ef4444 !important;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n padding: 4px 8px;\n}\n.danger-text:hover { color: #dc2626 !important; text-decoration: underline; }\n.floating textarea {\n width: 100%;\n min-height: 70px;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n padding: 10px;\n font-size: 13px;\n line-height: 1.4;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.floating textarea:focus {\n outline: none;\n border-color: var(--accent);\n}\n.floating .actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 10px;\n}\n.floating .actions button.primary {\n background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);\n color: var(--text-inverse);\n border: none;\n padding: 8px 18px;\n font-weight: 700;\n letter-spacing: 0.01em;\n box-shadow: var(--shadow-soft);\n}\n.floating .actions button.primary:hover {\n background: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent) 100%);\n box-shadow: var(--shadow-card);\n}\n.comment-list {\n position: fixed;\n right: 14px;\n bottom: 14px;\n width: 320px;\n max-height: 60vh;\n overflow: auto;\n border: 1px solid var(--border);\n border-radius: 12px;\n background: var(--card-bg);\n box-shadow: 0 18px 40px var(--shadow-color);\n padding: 12px;\n backdrop-filter: blur(6px);\n transition: opacity 120ms ease, transform 120ms ease, background 200ms ease;\n}\n.comment-list h3 { margin: 0 0 8px 0; font-size: 13px; color: var(--muted); }\n.comment-list ol {\n margin: 0;\n padding-left: 18px;\n color: var(--text);\n font-size: 13px;\n line-height: 1.45;\n}\n.comment-list li { margin-bottom: 6px; }\n.comment-list .hint { color: var(--muted); font-size: 12px; }\n.pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: var(--radius-pill); background: var(--accent-soft); border: 1px solid transparent; font-size: 12px; font-weight: 500; color: var(--accent-strong); cursor: pointer; transition: background 160ms ease, border-color 160ms ease, transform 120ms ease; }\n.pill:hover { background: var(--hover-bg); border-color: var(--border-strong); transform: translateY(-1px); }\n.pill strong { color: var(--accent-strong); font-weight: 700; }\n.comment-list.collapsed {\n opacity: 0;\n pointer-events: none;\n transform: translateY(8px) scale(0.98);\n}\n.md-preview {\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 20px 24px;\n margin-bottom: 12px;\n box-shadow: var(--shadow-soft);\n line-height: 1.65;\n transition: background 240ms ease, border-color 240ms ease;\n}\n.md-layout {\n display: flex;\n gap: 16px;\n align-items: stretch;\n margin-top: 8px;\n height: calc(100vh - 80px);\n}\n.md-left {\n flex: 1;\n min-width: 200px;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-left .md-preview {\n max-height: none;\n}\n.md-right {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n overflow-x: auto;\n overscroll-behavior: contain;\n}\n.md-right .table-box {\n max-width: none;\n min-width: 0;\n max-height: none;\n overflow: visible;\n}\n/* Ensure thead is opaque in md-right to prevent content showing through */\n.md-right thead th {\n background: var(--panel-solid) !important;\n}\n.md-right thead th.selected {\n background: var(--accent-soft) !important;\n color: var(--accent-strong);\n}\n[data-theme=\"dark\"] .md-right thead th {\n background: var(--panel-solid) !important;\n}\n[data-theme=\"dark\"] .md-right thead th.selected {\n background: var(--accent-soft) !important;\n color: var(--accent-strong);\n}\n\n/* === Media Sidebar === */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden {\n display: none;\n}\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar {\n width: 4px;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-track {\n background: transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 4px;\n}\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover {\n border-color: var(--accent);\n transform: scale(1.05);\n box-shadow: 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb.active {\n border-color: var(--accent);\n box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color);\n}\n.media-sidebar-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n.media-sidebar-thumb svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg {\n width: 100% !important;\n height: 100% !important;\n max-width: 100%;\n max-height: 100%;\n display: block;\n}\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img {\n max-width: none;\n max-height: none;\n border-radius: 0;\n}\n.media-sidebar-viewer-content video {\n max-width: 100%;\n max-height: 100vh;\n border-radius: 8px;\n background: #000;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap {\n width: 100%;\n overflow: auto;\n display: flex;\n justify-content: center;\n background: var(--panel);\n border-radius: 8px;\n padding: 16px;\n}\n.media-sidebar-viewer-content .viewer-mermaid-wrap svg {\n width: 100% !important;\n height: auto !important;\n max-height: calc(100vh - 200px);\n}\n\n/* === Sidebar Rich Viewer: Mermaid zoom/pan/minimap === */\n.sidebar-mermaid-controls {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 10px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n margin-bottom: 8px;\n width: 100%;\n box-sizing: border-box;\n}\n.sidebar-mermaid-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 5px;\n padding: 4px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n line-height: 1;\n transition: background 0.15s ease;\n}\n.sidebar-mermaid-controls button:hover { background: var(--hover-bg); }\n.sidebar-mermaid-controls .sidebar-zoom-info {\n font-size: 11px;\n color: var(--muted);\n min-width: 40px;\n text-align: center;\n user-select: none;\n}\n.sidebar-mermaid-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n background: var(--panel);\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.sidebar-mermaid-viewport:active { cursor: grabbing; }\n.sidebar-mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.sidebar-mermaid-wrapper svg {\n display: block;\n}\n.sidebar-minimap {\n position: absolute;\n top: 12px;\n right: 8px;\n bottom: auto;\n left: auto;\n width: 140px;\n height: 100px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 6px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0,0,0,0.12);\n z-index: 3;\n}\n.sidebar-minimap-content {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px;\n}\n.sidebar-minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.sidebar-minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n\n/* === Sidebar Rich Viewer: Image zoom/pan === */\n.sidebar-image-viewport {\n width: 100%;\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.sidebar-image-viewport.panning { cursor: grabbing; }\n.sidebar-image-viewport img {\n transform-origin: 0 0;\n max-width: none !important;\n max-height: none !important;\n border-radius: 0 !important;\n user-select: none;\n -webkit-user-drag: none;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 10px;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(0, 0, 0, 0.65);\n color: #fff;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n pointer-events: none;\n z-index: 3;\n backdrop-filter: blur(4px);\n transition: opacity 0.3s ease;\n user-select: none;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-image-hint {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 11px;\n color: var(--muted);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.4s ease;\n text-align: center;\n z-index: 2;\n}\n\n/* === Sidebar Rich Viewer: Video container (timeline uses shared .video-timeline classes) === */\n.sidebar-video-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.sidebar-video-container video {\n width: 100%;\n border-radius: 8px 8px 0 0;\n background: #000;\n max-height: calc(100vh - 260px);\n}\n\n.media-sidebar-viewer-label {\n margin-top: 12px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n word-break: break-all;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 8px;\n left: 8px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 6px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n z-index: 2;\n transition: background 0.15s ease;\n}\n.media-sidebar-viewer-close:hover {\n background: var(--hover-bg);\n}\n.sidebar-viewer-settings-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n background: rgba(0,0,0,0.5);\n border: none;\n border-radius: 8px;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n font-size: 16px;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-viewer-settings-btn:hover {\n background: rgba(0,0,0,0.8);\n}\n.sidebar-viewer-settings-btn + .video-settings-panel {\n position: absolute;\n top: 44px;\n right: 8px;\n}\n\n.media-sidebar-toggle {\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0 10px;\n height: 34px;\n min-width: 34px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 160ms ease, border-color 160ms ease;\n display: none;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n.media-sidebar-toggle.has-media {\n display: inline-flex;\n}\n.media-sidebar-toggle:hover {\n background: var(--hover-bg);\n border-color: var(--border);\n}\n.media-sidebar-toggle .toggle-count {\n font-size: 10px;\n font-weight: 700;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 1px 6px;\n border-radius: var(--radius-pill);\n line-height: 1.4;\n}\n.view-toggle {\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0 10px;\n height: 34px;\n min-width: 34px;\n cursor: pointer;\n color: var(--text);\n font-size: 14px;\n transition: background 160ms ease, border-color 160ms ease, color 160ms ease;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.view-toggle:hover { background: var(--hover-bg); border-color: var(--border); }\n.view-toggle.active { background: var(--accent-soft); color: var(--accent-strong); border-color: transparent; }\n@media (max-width: 1200px) {\n .media-sidebar-viewer.open {\n width: 40vw;\n max-width: calc(100vw - 350px);\n }\n}\n@media (max-width: 900px) {\n .media-sidebar-thumbs {\n width: 72px;\n }\n .media-sidebar-thumb {\n width: 56px;\n height: 42px;\n }\n .media-sidebar-viewer.open {\n width: 35vw;\n max-width: calc(100vw - 300px);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .media-sidebar,\n .media-sidebar-viewer,\n .media-sidebar-thumb {\n transition: none !important;\n }\n}\n\n.md-preview h1, .md-preview h2, .md-preview h3, .md-preview h4 {\n margin: 0.4em 0 0.2em;\n}\n/* Heading toggle feature */\n.md-preview .md-heading-toggle {\n margin: 0;\n}\n.md-preview .heading-toggle-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 0.6em;\n transition: transform 150ms ease;\n color: var(--muted);\n flex-shrink: 0;\n cursor: pointer;\n padding: 4px 8px;\n margin: -4px 0 -4px -8px;\n border-radius: 4px;\n}\n.md-preview .heading-toggle-icon:hover {\n background: var(--hover-bg);\n color: var(--accent);\n}\n.md-preview .md-heading-toggle.collapsed .heading-toggle-icon {\n transform: rotate(-90deg);\n}\n.md-preview details.heading-toggle {\n margin: 0.2em 0;\n}\n.md-preview details.heading-toggle > summary {\n list-style: none;\n cursor: default;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.md-preview details.heading-toggle > summary::-webkit-details-marker {\n display: none;\n}\n.md-preview details.heading-toggle > summary > .md-heading-toggle {\n flex: 1;\n}\n.md-preview details.heading-toggle:not([open]) > .toggle-content {\n display: none;\n}\n.md-preview .heading-section-content {\n /* Content wrapper for collapsible sections */\n}\n.md-preview .heading-section-content.hidden {\n display: none;\n}\n.md-preview p { margin: 0.3em 0; line-height: 1.5; }\n.md-preview img { max-width: 100%; height: auto; border-radius: 8px; }\n.md-preview video.video-preview { max-width: 100%; height: auto; border-radius: 8px; background: #000; }\n.md-preview table video.video-preview {\n display: block;\n width: 100%;\n height: auto;\n}\n.md-preview code { background: rgba(255,255,255,0.08); padding: 2px 4px; border-radius: 4px; }\n.md-preview pre {\n background: var(--code-bg);\n padding: 12px 16px;\n border-radius: 8px;\n overflow: auto;\n border: 1px solid var(--border);\n}\n.md-preview pre code {\n background: none;\n padding: 0;\n font-size: 13px;\n line-height: 1.5;\n}\n.md-preview pre code.hljs {\n background: transparent;\n padding: 0;\n}\n/* YAML Frontmatter table */\n.frontmatter-table {\n margin-bottom: 20px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid var(--border);\n background: var(--panel);\n}\n.frontmatter-table table {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n}\n.frontmatter-table thead th {\n background: linear-gradient(135deg, rgba(147, 51, 234, 0.15), rgba(96, 165, 250, 0.15));\n color: var(--text);\n font-size: 12px;\n font-weight: 600;\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n}\n.frontmatter-table tbody th {\n background: rgba(147, 51, 234, 0.08);\n color: #c084fc;\n font-weight: 500;\n font-size: 12px;\n padding: 8px 10px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n}\n.frontmatter-table tbody td {\n padding: 8px 14px;\n font-size: 13px;\n border-bottom: 1px solid var(--border);\n word-break: break-word;\n}\n.frontmatter-table tbody tr:last-child th,\n.frontmatter-table tbody tr:last-child td {\n border-bottom: none;\n}\n.frontmatter-table .fm-tag {\n display: inline-block;\n background: rgba(96, 165, 250, 0.15);\n color: var(--accent);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 11px;\n margin-right: 4px;\n margin-bottom: 4px;\n}\n.frontmatter-table pre {\n margin: 0;\n background: var(--code-bg);\n padding: 8px;\n border-radius: 4px;\n font-size: 11px;\n}\n/* Reviw questions preview cards */\n.reviw-questions-preview {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.reviw-q-card {\n background: var(--code-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 10px 12px;\n}\n.reviw-q-card.resolved {\n border-left: 3px solid #22c55e;\n}\n.reviw-q-card.pending {\n border-left: 3px solid #f59e0b;\n}\n.reviw-q-header {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-q-header strong {\n color: var(--accent);\n}\n.reviw-q-question {\n font-size: 13px;\n color: var(--text);\n margin-bottom: 6px;\n}\n.reviw-q-options {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 6px;\n}\n.reviw-q-answer {\n font-size: 12px;\n color: #22c55e;\n background: rgba(34, 197, 94, 0.1);\n padding: 4px 8px;\n border-radius: 4px;\n}\n[data-theme=\"light\"] .frontmatter-table tbody th {\n color: #7c3aed;\n}\n/* Table scroll container and indicator */\n.table-scroll-container {\n position: relative;\n margin: 16px 0;\n}\n.table-scroll-wrapper {\n overflow-x: auto;\n border-radius: 8px;\n}\n.scroll-hint {\n text-align: right;\n font-size: 12px;\n color: var(--accent);\n padding: 4px 8px;\n margin-bottom: 4px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 200ms ease;\n}\n.table-scroll-container.can-scroll .scroll-hint {\n opacity: 0.8;\n visibility: visible;\n}\n.table-scroll-container.scrolled-end .scroll-hint {\n opacity: 0;\n visibility: hidden;\n}\n/* Markdown tables in preview — blends with md-preview panel */\n.md-preview table:not(.frontmatter-table table) {\n min-width: 100%;\n width: max-content;\n border-collapse: collapse;\n border: none;\n background: transparent;\n margin: 12px 0 16px;\n}\n.md-preview table:not(.frontmatter-table table) th,\n.md-preview table:not(.frontmatter-table table) td {\n padding: 10px 16px;\n text-align: left;\n border-bottom: 1px solid var(--border);\n vertical-align: top;\n word-break: break-word;\n overflow-wrap: anywhere;\n width: auto;\n}\n/* Force equal column widths when colgroup is not specified */\n.md-preview table:not(.frontmatter-table table) colgroup ~ * th,\n.md-preview table:not(.frontmatter-table table) colgroup ~ * td {\n width: auto;\n}\n.md-preview table:not(.frontmatter-table table) td:has(video),\n.md-preview table:not(.frontmatter-table table) td:has(img) {\n padding: 4px;\n line-height: 0;\n}\n.md-preview table:not(.frontmatter-table table) td video,\n.md-preview table:not(.frontmatter-table table) td img {\n width: 100%;\n max-width: 100%;\n height: auto;\n}\n.md-preview table:not(.frontmatter-table table) thead th {\n background: transparent;\n color: var(--accent-strong);\n font-weight: 700;\n font-size: 11px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n border-bottom: 2px solid var(--accent);\n padding-top: 8px;\n padding-bottom: 10px;\n}\n.md-preview table:not(.frontmatter-table table) tbody td {\n font-size: 13px;\n color: var(--text);\n}\n.md-preview table:not(.frontmatter-table table) tr:last-child td {\n border-bottom: none;\n}\n.md-preview table:not(.frontmatter-table table) tbody tr:hover td {\n background: var(--hover-bg);\n}\n/* Source table (右ペイン) */\n.table-box table {\n table-layout: fixed;\n width: 100%;\n}\n.table-box th,\n.table-box td {\n word-break: break-word;\n min-width: 140px;\n}\n.table-box th:first-child,\n.table-box td:first-child {\n min-width: 320px;\n max-width: 480px;\n}\n/* Image fullscreen overlay */\n.image-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1001;\n display: none;\n flex-direction: column;\n}\n.image-fullscreen-overlay.visible {\n display: flex;\n}\n.image-fs-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.image-fs-content:active { cursor: grabbing; }\n.image-fs-content .image-fs-wrapper {\n position: absolute;\n transform-origin: 0 0;\n}\n.image-fs-content .image-fs-wrapper img {\n display: block;\n}\n/* Video fullscreen overlay */\n.video-fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.95);\n z-index: 1001;\n display: none;\n justify-content: center;\n align-items: center;\n}\n.video-fullscreen-overlay.visible {\n display: flex;\n}\n.video-close-btn {\n position: absolute;\n top: 14px;\n right: 14px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-close-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-container {\n width: 90vw;\n height: 90vh;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.video-container video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 8px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n}\n/* Video Timeline - shared base styles (used by both fullscreen and sidebar) */\n.video-timeline {\n background: rgba(0, 0, 0, 0.85);\n display: flex;\n overflow-x: auto;\n backdrop-filter: blur(8px);\n height: 80px;\n padding: 8px;\n gap: 4px;\n}\n.video-timeline::-webkit-scrollbar {\n height: 6px;\n}\n.video-timeline::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 3px;\n}\n.video-timeline::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.5);\n}\n/* Fullscreen-specific video timeline positioning */\n.video-container .video-timeline {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 5;\n}\n/* Sidebar-specific video timeline sizing */\n.sidebar-video-container .video-timeline {\n width: 100%;\n height: 72px;\n padding: 6px;\n gap: 3px;\n border-radius: 0 0 8px 8px;\n background: rgba(0, 0, 0, 0.88);\n}\n.sidebar-video-container .video-timeline::-webkit-scrollbar { height: 5px; }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.08); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.25); }\n.sidebar-video-container .video-timeline::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.4); }\n.timeline-thumb {\n height: 64px;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: 4px;\n flex-shrink: 0;\n transition: border-color 0.2s, transform 0.15s;\n opacity: 0.85;\n}\n.sidebar-video-container .timeline-thumb {\n height: 52px;\n opacity: 0.8;\n}\n.timeline-thumb:hover {\n border-color: rgba(59, 130, 246, 0.5);\n opacity: 1;\n transform: scale(1.05);\n}\n.timeline-thumb.active {\n border-color: #3b82f6;\n opacity: 1;\n box-shadow: 0 0 12px rgba(59, 130, 246, 0.5);\n}\n.sidebar-video-container .timeline-thumb.active {\n box-shadow: 0 0 8px rgba(59, 130, 246, 0.4);\n}\n.timeline-loading {\n color: rgba(255, 255, 255, 0.6);\n font-size: 12px;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.sidebar-video-container .timeline-loading {\n font-size: 11px;\n padding: 6px 10px;\n gap: 6px;\n color: rgba(255, 255, 255, 0.5);\n}\n.timeline-loading::before {\n content: '';\n width: 14px;\n height: 14px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top-color: #3b82f6;\n border-radius: 50%;\n animation: timeline-spin 0.8s linear infinite;\n}\n.sidebar-video-container .timeline-loading::before {\n width: 12px;\n height: 12px;\n border-width: 2px;\n border-color: rgba(255, 255, 255, 0.25);\n border-top-color: #3b82f6;\n}\n@keyframes timeline-spin {\n to { transform: rotate(360deg); }\n}\n.timeline-time {\n position: absolute;\n bottom: 2px;\n right: 4px;\n font-size: 9px;\n color: #fff;\n background: rgba(0, 0, 0, 0.7);\n padding: 1px 4px;\n border-radius: 2px;\n pointer-events: none;\n}\n.sidebar-video-container .timeline-time {\n font-size: 8px;\n right: 3px;\n padding: 1px 3px;\n}\n.timeline-thumb-wrapper {\n position: relative;\n flex-shrink: 0;\n}\n/* Video threshold settings panel */\n.video-settings-btn {\n position: absolute;\n top: 14px;\n right: 64px;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 50%;\n cursor: pointer;\n color: #fff;\n font-size: 18px;\n z-index: 10;\n backdrop-filter: blur(4px);\n transition: background 120ms ease, transform 120ms ease;\n}\n.video-settings-btn:hover {\n background: rgba(0, 0, 0, 0.75);\n transform: scale(1.04);\n}\n.video-settings-panel {\n position: absolute;\n top: 60px;\n right: 14px;\n background: rgba(0, 0, 0, 0.9);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 12px;\n padding: 16px;\n z-index: 15;\n min-width: 280px;\n display: none;\n backdrop-filter: blur(8px);\n}\n.video-settings-panel.visible {\n display: block;\n}\n.video-settings-panel h4 {\n margin: 0 0 8px;\n color: #fff;\n font-size: 14px;\n font-weight: 500;\n}\n.video-settings-desc {\n margin: 0 0 12px;\n color: rgba(255, 255, 255, 0.6);\n font-size: 11px;\n line-height: 1.4;\n}\n.video-settings-buttons {\n display: flex;\n gap: 6px;\n margin-bottom: 12px;\n}\n.video-settings-buttons button {\n flex: 1;\n padding: 8px 4px;\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.8);\n font-size: 11px;\n cursor: pointer;\n transition: all 120ms ease;\n}\n.video-settings-buttons button:hover {\n background: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n}\n.video-settings-buttons button.selected {\n background: #3b82f6;\n border-color: #3b82f6;\n color: #fff;\n}\n.video-settings-actions {\n display: flex;\n gap: 8px;\n margin-top: 8px;\n}\n.video-settings-actions button {\n flex: 1;\n padding: 8px 12px;\n border: none;\n border-radius: 6px;\n font-size: 12px;\n cursor: pointer;\n transition: background 120ms ease;\n}\n.video-settings-actions .reset-btn {\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n}\n.video-settings-actions .reset-btn:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n/* Video Shortcuts Help */\n.video-shortcuts-help {\n opacity: 0.85;\n transition: opacity 0.2s;\n}\n.video-shortcuts-help:hover {\n opacity: 1;\n}\n.video-shortcuts-help .shortcuts-title {\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 10px;\n color: rgba(255, 255, 255, 0.7);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.video-shortcuts-help .shortcuts-title::before {\n content: '\\u2328';\n font-size: 14px;\n}\n.video-shortcuts-help .shortcut-item {\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n.video-shortcuts-help .shortcut-item:last-child {\n margin-bottom: 0;\n}\n.video-shortcuts-help kbd {\n display: inline-block;\n background: rgba(255, 255, 255, 0.15);\n border: 1px solid rgba(255, 255, 255, 0.25);\n border-radius: 4px;\n padding: 2px 6px;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 10px;\n font-weight: 500;\n min-width: 18px;\n text-align: center;\n margin-right: 2px;\n}\n/* Reviw Questions Modal */\n.reviw-questions-overlay {\n display: none;\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 1100;\n justify-content: center;\n align-items: center;\n}\n.reviw-questions-overlay.visible {\n display: flex;\n}\n.reviw-questions-modal {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: 16px;\n width: 90%;\n max-width: 600px;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n box-shadow: 0 25px 80px rgba(0, 0, 0, 0.5);\n}\n.reviw-questions-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-questions-header h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--text);\n}\n.reviw-questions-header h2 span {\n font-size: 14px;\n color: var(--text-dim);\n font-weight: 400;\n}\n.reviw-questions-close {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--text-dim);\n font-size: 18px;\n cursor: pointer;\n border-radius: 8px;\n transition: all 150ms ease;\n}\n.reviw-questions-close:hover {\n background: var(--border);\n color: var(--text);\n}\n.reviw-questions-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n}\n.reviw-questions-footer {\n padding: 12px 20px;\n border-top: 1px solid var(--border);\n display: flex;\n justify-content: flex-end;\n}\n.reviw-questions-later {\n padding: 8px 16px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text-dim);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-questions-later:hover {\n background: var(--border);\n color: var(--text);\n}\n/* Question Item */\n.reviw-question-item {\n margin-bottom: 20px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--border);\n}\n.reviw-question-item:last-child {\n margin-bottom: 0;\n padding-bottom: 0;\n border-bottom: none;\n}\n.reviw-question-text {\n font-size: 14px;\n color: var(--text);\n margin-bottom: 12px;\n line-height: 1.5;\n}\n.reviw-question-options {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n}\n.reviw-question-option {\n padding: 8px 14px;\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n.reviw-question-option:hover {\n border-color: var(--accent);\n background: rgba(96, 165, 250, 0.1);\n}\n.reviw-question-option.selected {\n border-color: var(--accent);\n background: var(--accent);\n color: var(--text-inverse);\n}\n.reviw-question-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid var(--border);\n background: var(--input-bg);\n color: var(--text);\n border-radius: 8px;\n font-size: 13px;\n resize: vertical;\n min-height: 60px;\n}\n.reviw-question-input:focus {\n outline: none;\n border-color: var(--accent);\n}\n.reviw-question-input::placeholder {\n color: var(--text-dim);\n}\n.reviw-check-mark {\n color: #22c55e;\n font-weight: bold;\n}\n.reviw-question-item.answered {\n border-color: #22c55e;\n background: rgba(34, 197, 94, 0.05);\n}\n.reviw-question-submit {\n margin-top: 10px;\n padding: 8px 16px;\n border: none;\n background: var(--accent);\n color: var(--text-inverse);\n border-radius: 8px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 150ms ease;\n}\n.reviw-question-submit:hover {\n filter: brightness(1.1);\n}\n.reviw-question-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n/* Resolved Section */\n.reviw-resolved-section {\n margin-top: 16px;\n border-top: 1px solid var(--border);\n padding-top: 12px;\n}\n.reviw-resolved-toggle {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n color: var(--text-dim);\n font-size: 13px;\n cursor: pointer;\n padding: 4px 0;\n}\n.reviw-resolved-toggle:hover {\n color: var(--text);\n}\n.reviw-resolved-toggle .arrow {\n transition: transform 150ms ease;\n}\n.reviw-resolved-toggle.open .arrow {\n transform: rotate(90deg);\n}\n.reviw-resolved-list {\n display: none;\n margin-top: 12px;\n}\n.reviw-resolved-list.visible {\n display: block;\n}\n.reviw-resolved-item {\n padding: 10px 12px;\n background: var(--input-bg);\n border-radius: 8px;\n margin-bottom: 8px;\n opacity: 0.7;\n}\n.reviw-resolved-item:last-child {\n margin-bottom: 0;\n}\n.reviw-resolved-q {\n font-size: 12px;\n color: var(--text-dim);\n margin-bottom: 4px;\n}\n.reviw-resolved-a {\n font-size: 13px;\n color: var(--text);\n}\n/* Notice Bar */\n.reviw-questions-bar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n font-size: 13px;\n z-index: 1050;\n justify-content: center;\n align-items: center;\n gap: 12px;\n}\n.reviw-questions-bar.visible {\n display: flex;\n}\n.reviw-questions-bar button {\n padding: 4px 12px;\n border: 1px solid rgba(255, 255, 255, 0.3);\n background: rgba(255, 255, 255, 0.1);\n color: var(--text-inverse);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n transition: all 150ms ease;\n}\n.reviw-questions-bar button:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n/* Adjust layout when bar is visible */\nbody.has-questions-bar header {\n top: 36px;\n}\nbody.has-questions-bar .toolbar,\nbody.has-questions-bar .table-wrap {\n margin-top: 36px;\n}\n/* Copy notification toast */\n.copy-toast {\n position: fixed;\n bottom: 60px;\n left: 50%;\n transform: translateX(-50%) translateY(20px);\n background: var(--accent);\n color: var(--text-inverse);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 200ms ease, transform 200ms ease;\n z-index: 1000;\n}\n.copy-toast.visible {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n}\n@media (max-width: 960px) {\n .md-layout { flex-direction: column; }\n .md-left { max-width: 100%; flex: 1 1 0; min-height: 0; }\n .md-right { display: none; }\n .media-sidebar { display: none; }\n .media-sidebar-toggle { display: none !important; }\n}\n.md-layout.preview-only .md-right { display: none; }\n.md-layout.preview-only .md-left { flex: 1 1 0; min-height: 0; max-width: 100%; }\n.filter-menu {\n position: absolute;\n background: var(--panel-solid);\n border: 1px solid var(--border);\n border-radius: 10px;\n box-shadow: 0 14px 30px var(--shadow-color);\n padding: 8px;\n display: none;\n z-index: 12;\n width: 180px;\n transition: background 200ms ease, border-color 200ms ease;\n}\n.filter-menu button {\n width: 100%;\n display: block;\n margin: 4px 0;\n padding: 8px 10px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 8px;\n color: var(--text);\n cursor: pointer;\n font-size: 13px;\n text-align: left;\n}\n.filter-menu button:hover { background: var(--hover-bg); }\n.modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0,0,0,0.6);\n display: none;\n align-items: center;\n justify-content: center;\n z-index: 100;\n}\n.modal-overlay.visible { display: flex; }\n/* Submit modal: top-right position, no blocking overlay */\n#submit-modal {\n background: transparent;\n pointer-events: none;\n align-items: flex-start;\n justify-content: flex-end;\n}\n#submit-modal.visible { display: flex; }\n#submit-modal .modal-dialog {\n pointer-events: auto;\n margin: 60px 20px 20px 20px; /* top margin avoids header button overlap */\n}\n.modal-dialog {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 24px;\n width: 90%;\n max-width: 480px;\n box-shadow: var(--shadow-card);\n backdrop-filter: blur(24px);\n -webkit-backdrop-filter: blur(24px);\n transition: background 240ms ease, border-color 240ms ease;\n}\n.modal-dialog h3 { margin: 0 0 14px; font-size: 18px; font-weight: 700; color: var(--text); letter-spacing: -0.01em; }\n.modal-summary { color: var(--muted); font-size: 13px; margin-bottom: 14px; line-height: 1.5; }\n.modal-dialog label { display: block; font-size: 12px; font-weight: 600; margin-bottom: 8px; color: var(--muted); letter-spacing: 0.02em; text-transform: uppercase; }\n.modal-dialog textarea {\n width: 100%;\n min-height: 100px;\n background: var(--input-bg);\n border: 1px solid var(--border);\n border-radius: var(--radius-sm);\n color: var(--text);\n padding: 12px 14px;\n font-size: 14px;\n font-family: inherit;\n line-height: 1.5;\n resize: vertical;\n box-sizing: border-box;\n transition: background 200ms ease, border-color 200ms ease, box-shadow 200ms ease;\n}\n.modal-dialog textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }\n.modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 18px; }\n.modal-actions button {\n padding: 9px 16px;\n border-radius: var(--radius-sm);\n border: 1px solid var(--border);\n background: transparent;\n color: var(--text);\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: background 160ms ease, border-color 160ms ease, transform 120ms ease;\n}\n.modal-actions button:hover { background: var(--hover-bg); border-color: var(--border-strong); }\n.modal-actions button.primary { background: var(--accent); color: var(--text-inverse); border-color: var(--accent); }\n.image-attach-area { margin: 12px 0; }\n.image-attach-area label { display: block; font-size: 12px; color: var(--muted); margin-bottom: 6px; }\n.image-attach-area.image-attach-small { margin: 8px 0; }\n.image-attach-area.image-attach-small label { font-size: 11px; }\n.image-preview-list { display: flex; flex-wrap: wrap; gap: 8px; min-height: 24px; }\n.image-preview-item { position: relative; }\n.image-preview-item img { max-width: 80px; max-height: 60px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; }\n.image-preview-item .remove-image { position: absolute; top: -6px; right: -6px; width: 18px; height: 18px; border-radius: 50%; background: var(--error, #ef4444); color: #fff; border: none; cursor: pointer; font-size: 12px; line-height: 1; display: flex; align-items: center; justify-content: center; }\n.image-preview-item .remove-image:hover { background: #dc2626; }\n.modal-actions button.primary:hover { background: #7dd3fc; }\n.modal-actions-decision { justify-content: space-between; align-items: center; }\n.kbd-hint { display: inline-block; font-size: 10px; padding: 1px 5px; border-radius: 3px; background: rgba(255,255,255,0.15); margin-left: 6px; font-family: system-ui; opacity: 0.8; }\n[data-theme=\"light\"] .kbd-hint { background: rgba(0,0,0,0.08); }\n.decision-btn { padding: 9px 16px; border-radius: var(--radius-sm); border: 1px solid var(--border); cursor: pointer; font-size: 13px; font-weight: 700; letter-spacing: 0.01em; transition: background 160ms ease, border-color 160ms ease, transform 120ms ease, box-shadow 160ms ease; }\n.decision-btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-soft); }\n.decision-approve { background: rgba(107, 191, 134, 0.14); color: var(--success); border-color: rgba(107, 191, 134, 0.42); }\n.decision-approve:hover { background: rgba(107, 191, 134, 0.22); border-color: var(--success); }\n.decision-request-changes { background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%); color: var(--text-inverse); border-color: transparent; }\n.decision-request-changes:hover { background: linear-gradient(135deg, var(--accent-strong) 0%, var(--accent) 100%); }\n[data-theme=\"light\"] .decision-approve { background: rgba(77, 157, 99, 0.14); color: var(--success); border-color: rgba(77, 157, 99, 0.38); }\n[data-theme=\"light\"] .decision-approve:hover { background: rgba(77, 157, 99, 0.22); }\n.comment-sent-badge { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 4px; margin-left: 6px; vertical-align: middle; }\n.comment-sent-badge.sent { background: #166534; color: #bbf7d0; }\n.comment-sent-badge.failed { background: #7f1d1d; color: #fecaca; }\n[data-theme=\"light\"] .comment-sent-badge.sent { background: #dcfce7; color: #166534; }\n[data-theme=\"light\"] .comment-sent-badge.failed { background: #fee2e2; color: #991b1b; }\n\n/* Submit & Exit disabled state */\n#send-and-exit:disabled { opacity: 0.4; cursor: not-allowed; }\n\n.modal-checkboxes { margin: 12px 0; }\n.modal-checkboxes label {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n font-size: 12px;\n color: var(--text);\n margin-bottom: 8px;\n cursor: pointer;\n}\n.modal-checkboxes input[type=\"checkbox\"] {\n margin-top: 2px;\n accent-color: var(--accent);\n}\n\nbody.dragging { user-select: none; cursor: crosshair; }\nbody.dragging .diff-line { cursor: crosshair; }\n\n/* === Diff viewer === */\n.diff-view {\n margin: 20px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 0;\n box-shadow: var(--shadow-soft);\n overflow: hidden;\n font-family: \"JetBrains Mono\", \"SF Mono\", \"Menlo\", \"Consolas\", ui-monospace, monospace;\n font-size: 13px;\n line-height: 1.55;\n}\n.diff-file-header {\n padding: 12px 20px;\n background: var(--accent-soft);\n color: var(--accent-strong);\n font-weight: 700;\n font-size: 13px;\n border-bottom: 1px solid var(--border);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.diff-file-header:not(:first-child) { border-top: 1px solid var(--border); }\n.diff-label {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: var(--radius-pill);\n background: var(--accent);\n color: var(--text-inverse);\n}\n.diff-label.new { background: rgba(77, 157, 99, 0.18); color: var(--success); }\n.diff-label.deleted { background: rgba(201, 86, 79, 0.18); color: var(--error); }\n.diff-label.binary { background: var(--accent-soft); color: var(--muted); }\n.diff-hunk-header {\n padding: 6px 20px;\n background: var(--input-bg);\n color: var(--muted);\n font-size: 12px;\n border-bottom: 1px solid var(--border);\n}\n.diff-line {\n display: flex;\n padding: 0 20px;\n white-space: pre;\n min-height: 20px;\n border-left: 3px solid transparent;\n transition: background 120ms ease;\n}\n.diff-line:hover { background: var(--hover-bg); }\n.diff-line.addition {\n background: rgba(77, 157, 99, 0.10);\n border-left-color: var(--success);\n color: var(--text);\n}\n.diff-line.deletion {\n background: rgba(201, 86, 79, 0.10);\n border-left-color: var(--error);\n color: var(--text);\n}\n[data-theme=\"dark\"] .diff-line.addition { background: rgba(107, 191, 134, 0.10); }\n[data-theme=\"dark\"] .diff-line.deletion { background: rgba(224, 104, 98, 0.12); }\n.diff-line .line-num {\n display: inline-block;\n width: 44px;\n min-width: 44px;\n text-align: right;\n padding-right: 10px;\n color: var(--muted);\n font-size: 11px;\n user-select: none;\n}\n.diff-line .line-content {\n flex: 1;\n padding-left: 4px;\n}\n.diff-line.addition .line-content::before { content: \"+ \"; color: var(--success); font-weight: 700; }\n.diff-line.deletion .line-content::before { content: \"- \"; color: var(--error); font-weight: 700; }\n.diff-line:not(.addition):not(.deletion) .line-content::before { content: \" \"; }\n.diff-line.has-comment { outline: 2px dashed var(--accent); outline-offset: -2px; }\n\n/* === Plain text viewer === */\n.text-view {\n margin: 20px;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: var(--radius-lg);\n padding: 16px 0;\n box-shadow: var(--shadow-soft);\n font-family: \"JetBrains Mono\", \"SF Mono\", \"Menlo\", \"Consolas\", ui-monospace, monospace;\n font-size: 13px;\n line-height: 1.65;\n}\n.text-line {\n display: flex;\n padding: 0 20px;\n white-space: pre-wrap;\n word-break: break-word;\n transition: background 120ms ease;\n cursor: text;\n}\n.text-line:hover { background: var(--hover-bg); }\n.text-line.has-comment { background: var(--selected-bg); border-left: 3px solid var(--accent); padding-left: 17px; }\n.text-line .line-num {\n display: inline-block;\n width: 44px;\n min-width: 44px;\n text-align: right;\n padding-right: 14px;\n color: var(--muted);\n font-size: 11px;\n user-select: none;\n}\n.text-line .line-content { flex: 1; color: var(--text); }\n\n@media (max-width: 840px) {\n header { flex-direction: column; align-items: flex-start; }\n .comment-list { width: calc(100% - 24px); right: 12px; }\n}\n/* Mermaid diagram styles */\n.mermaid-container {\n position: relative;\n margin: 16px 0;\n background: var(--panel);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 16px;\n overflow: hidden;\n}\n.mermaid-container .mermaid {\n display: flex;\n justify-content: center;\n}\n.mermaid-container .mermaid svg {\n max-width: 100%;\n height: auto;\n cursor: pointer;\n pointer-events: auto;\n}\n.mermaid-error-banner {\n background: #fff3f3;\n color: #c33;\n border: 1px solid #e88;\n border-radius: 4px;\n padding: 6px 10px;\n margin-bottom: 8px;\n font-size: 12px;\n font-weight: 500;\n}\n[data-theme=\"dark\"] .mermaid-error-banner {\n background: #3a1a1a;\n color: #f88;\n border-color: #744;\n}\n.mermaid-fullscreen-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 10px;\n cursor: pointer;\n color: var(--text);\n font-size: 12px;\n z-index: 2;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.mermaid-fullscreen-btn:hover { background: var(--hover-bg); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg);\n z-index: 1000;\n display: none;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 20px;\n background: var(--panel-alpha);\n border-bottom: 1px solid var(--border);\n}\n.fullscreen-header h3 { margin: 0; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 8px; align-items: center; }\n.fullscreen-controls button {\n background: var(--selected-bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 6px 12px;\n cursor: pointer;\n color: var(--text);\n font-size: 13px;\n}\n.fullscreen-controls button:hover { background: var(--hover-bg); }\n.fullscreen-controls .zoom-info { font-size: 12px; color: var(--muted); min-width: 50px; text-align: center; }\n.fullscreen-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n cursor: grab;\n touch-action: none;\n}\n.fullscreen-content:active { cursor: grabbing; }\n.fullscreen-content .mermaid-wrapper {\n position: absolute;\n transform-origin: 0 0;\n padding: 40px;\n}\n.fullscreen-content .mermaid svg {\n display: block;\n}\n/* Minimap */\n.minimap {\n position: absolute;\n top: 70px;\n right: 20px;\n width: 200px;\n height: 150px;\n background: var(--panel-alpha);\n border: 1px solid var(--border);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n}\n.minimap-content {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px;\n}\n.minimap-content svg {\n max-width: 100%;\n max-height: 100%;\n opacity: 0.6;\n}\n.minimap-viewport {\n position: absolute;\n border: 2px solid var(--accent);\n background: rgba(102, 126, 234, 0.2);\n pointer-events: none;\n border-radius: 2px;\n}\n/* Error toast */\n.mermaid-error-toast {\n position: fixed;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--error);\n color: white;\n padding: 12px 24px;\n border-radius: 8px;\n font-size: 13px;\n max-width: 80%;\n z-index: 2000;\n display: none;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n white-space: pre-wrap;\n font-family: monospace;\n}\n.mermaid-error-toast.visible { display: block; }\n\n/* History Panel - Push layout */\nbody { transition: margin-right 0.28s cubic-bezier(0.2, 0.8, 0.2, 1); }\nbody.history-open { margin-right: 340px; }\nbody.history-open header { right: 340px; }\nheader { transition: right 0.28s cubic-bezier(0.2, 0.8, 0.2, 1); right: 0; }\n\n.history-toggle {\n background: transparent;\n color: var(--text);\n border: 1px solid transparent;\n border-radius: var(--radius-sm);\n padding: 0;\n font-size: 14px;\n cursor: pointer;\n width: 34px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 160ms ease, border-color 160ms ease;\n}\n.history-toggle:hover { background: var(--hover-bg); border-color: var(--border); }\n.history-panel {\n position: fixed;\n top: 0;\n right: 0;\n width: 340px;\n height: 100vh;\n background: var(--panel-alpha);\n border-left: 1px solid var(--border);\n backdrop-filter: saturate(140%) blur(24px);\n -webkit-backdrop-filter: saturate(140%) blur(24px);\n box-shadow: -20px 0 40px rgba(0, 0, 0, 0.08);\n z-index: 90;\n transform: translateX(100%);\n transition: transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1);\n display: flex;\n flex-direction: column;\n}\n.history-panel.open { transform: translateX(0); }\n.history-panel-header {\n padding: 16px;\n border-bottom: 1px solid var(--border);\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.history-panel-header h3 { margin: 0; font-size: 14px; font-weight: 600; }\n.history-panel-close {\n background: transparent;\n border: none;\n color: var(--muted);\n cursor: pointer;\n font-size: 18px;\n padding: 4px;\n}\n.history-panel-close:hover { color: var(--text); }\n.history-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.history-empty {\n color: var(--muted);\n font-size: 13px;\n text-align: center;\n padding: 40px 20px;\n}\n.history-date-group { margin-bottom: 16px; }\n.history-date {\n font-size: 11px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 8px;\n text-transform: uppercase;\n}\n.history-item {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n margin-bottom: 8px;\n overflow: hidden;\n}\n.history-item-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 10px;\n background: var(--selected-bg);\n cursor: pointer;\n}\n.history-item-header:hover { background: var(--hover-bg); }\n.history-item-file {\n font-size: 12px;\n font-weight: 600;\n color: var(--text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 180px;\n}\n.history-item-time { font-size: 10px; color: var(--muted); }\n.history-item-body {\n display: none;\n padding: 10px;\n font-size: 12px;\n border-top: 1px solid var(--border);\n}\n.history-item.expanded .history-item-body { display: block; }\n.history-summary {\n color: var(--text);\n margin-bottom: 8px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--border);\n}\n.history-summary-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 4px;\n}\n.history-summary-text { white-space: pre-wrap; line-height: 1.4; }\n.history-comments-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--muted);\n margin-bottom: 6px;\n}\n.history-comment {\n padding: 6px 0;\n border-bottom: 1px solid var(--border);\n}\n.history-comment:last-child { border-bottom: none; }\n.history-comment-line {\n font-size: 10px;\n color: var(--accent);\n font-weight: 600;\n margin-bottom: 2px;\n}\n.history-comment-quote {\n background: rgba(0, 0, 0, 0.3);\n border-left: 2px solid var(--accent);\n padding: 4px 8px;\n margin: 4px 0;\n font-family: 'SF Mono', Monaco, Consolas, monospace;\n font-size: 11px;\n color: var(--muted);\n white-space: pre-wrap;\n word-break: break-all;\n max-height: 80px;\n overflow-y: auto;\n}\n.history-comment-text {\n color: var(--text);\n line-height: 1.4;\n white-space: pre-wrap;\n}\n.history-badge {\n display: inline-block;\n background: var(--accent);\n color: var(--text-inverse);\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 10px;\n margin-left: 6px;\n}\n/* Table scroll container */\n.table-container {\n overflow-x: auto;\n margin: 16px 0;\n border-radius: 8px;\n border: 1px solid var(--border);\n}\n.table-container table {\n margin: 0;\n border: none;\n border-radius: 0;\n}\n.table-container::-webkit-scrollbar {\n height: 6px;\n}\n.table-container::-webkit-scrollbar-track {\n background: var(--bg);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 3px;\n}\n.table-container::-webkit-scrollbar-thumb:hover {\n background: var(--muted);\n}\n/* Media sidebar */\n.media-sidebar {\n display: flex;\n flex-shrink: 0;\n height: calc(100vh - 80px);\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n position: relative;\n z-index: 10;\n max-width: 60%;\n}\n.media-sidebar.hidden { display: none; }\n.media-sidebar-thumbs {\n width: 96px;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n gap: 8px;\n background: var(--panel);\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.media-sidebar-thumbs::-webkit-scrollbar { width: 4px; }\n.media-sidebar-thumbs::-webkit-scrollbar-track { background: transparent; }\n.media-sidebar-thumbs::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }\n.media-sidebar-thumb {\n width: 80px;\n height: 60px;\n border-radius: 6px;\n border: 2px solid var(--border);\n overflow: hidden;\n cursor: pointer;\n position: relative;\n flex-shrink: 0;\n background: var(--bg);\n transition: border-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;\n}\n.media-sidebar-thumb:hover { border-color: var(--accent); transform: scale(1.05); box-shadow: 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb.active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent), 0 2px 8px var(--shadow-color); }\n.media-sidebar-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }\n.media-sidebar-thumb svg { width: 100%; height: 100%; display: block; }\n.media-sidebar-thumb-video {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #000;\n}\n.media-sidebar-thumb-video video { width: 100%; height: 100%; object-fit: cover; }\n.media-sidebar-thumb-video::after {\n content: '';\n position: absolute;\n width: 24px;\n height: 24px;\n background: rgba(255,255,255,0.85);\n border-radius: 50%;\n}\n.media-sidebar-thumb-video::before {\n content: '';\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 0 5px 9px;\n border-color: transparent transparent transparent #000;\n margin-left: 2px;\n}\n.media-sidebar-thumb-mermaid {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 2px;\n background: var(--panel);\n overflow: hidden;\n}\n.media-sidebar-thumb-mermaid svg { width: 100% !important; height: 100% !important; max-width: 100%; max-height: 100%; display: block; }\n.media-sidebar-thumb-index {\n position: absolute;\n top: 2px;\n left: 2px;\n background: rgba(0,0,0,0.6);\n color: #fff;\n font-size: 9px;\n font-weight: 600;\n padding: 1px 4px;\n border-radius: 3px;\n line-height: 1.2;\n pointer-events: none;\n z-index: 1;\n}\n.media-sidebar-viewer {\n width: 0;\n overflow: hidden;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n background: var(--bg);\n position: relative;\n}\n.media-sidebar-viewer.open {\n width: 45vw;\n max-width: calc(100vw - 400px);\n overflow: hidden;\n padding: 0;\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n}\n.media-sidebar-viewer-close {\n position: absolute;\n top: 4px;\n left: 4px;\n z-index: 10;\n background: rgba(0,0,0,0.5);\n border: none;\n color: #fff;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n cursor: pointer;\n font-size: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.media-sidebar-viewer-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n padding: 0;\n}\n.media-sidebar-viewer-content img { max-width: none; max-height: none; border-radius: 0; }\n.media-sidebar-viewer-content video { max-width: 100%; max-height: 100vh; border-radius: 0; background: #000; }\n.media-sidebar-viewer-label {\n margin-top: 8px;\n font-size: 12px;\n color: var(--muted);\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n.sidebar-zoom-indicator {\n position: absolute;\n bottom: 12px;\n right: 12px;\n background: rgba(0,0,0,0.7);\n color: #fff;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 11px;\n pointer-events: none;\n transition: opacity 0.3s ease;\n}\n.sidebar-zoom-indicator.hidden { opacity: 0; }\n.sidebar-maximize-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.sidebar-maximize-btn:hover { background: rgba(0,0,0,0.8); }\n.sidebar-mermaid-viewport { overflow: hidden; position: relative; cursor: grab; }\n.sidebar-mermaid-wrapper { position: absolute; left: 0; top: 0; transform-origin: 0 0; }\n.sidebar-video-container { width: 100%; }\n.sidebar-video-container video { width: 100%; max-height: calc(100vh - 200px); border-radius: 8px; background: #000; }\n/* Video timeline */\n.video-timeline {\n display: flex;\n gap: 8px;\n padding: 8px;\n overflow-x: auto;\n background: var(--panel);\n border-radius: 8px;\n margin-top: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n.timeline-loading { color: var(--muted); font-size: 12px; padding: 8px; }\n.timeline-thumb-wrapper {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n}\n.timeline-thumb {\n width: 80px;\n height: 60px;\n object-fit: cover;\n border-radius: 4px;\n border: 2px solid transparent;\n transition: border-color 0.2s ease;\n}\n.timeline-thumb.active { border-color: var(--accent); }\n.timeline-thumb:hover { border-color: var(--accent); opacity: 0.8; }\n.timeline-time { font-size: 10px; color: var(--muted); }\n/* Fullscreen overlay */\n.fullscreen-overlay {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.9);\n z-index: 1000;\n flex-direction: column;\n}\n.fullscreen-overlay.visible { display: flex; }\n.fullscreen-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: rgba(0,0,0,0.8);\n border-bottom: 1px solid rgba(255,255,255,0.1);\n}\n.fullscreen-header h3 { margin: 0; color: #fff; font-size: 14px; }\n.fullscreen-controls { display: flex; gap: 6px; align-items: center; }\n.fullscreen-controls button {\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n color: #fff;\n padding: 6px 12px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n}\n.fullscreen-controls button:hover { background: rgba(255,255,255,0.2); }\n.fullscreen-controls .zoom-info { color: #fff; font-size: 12px; min-width: 40px; text-align: center; }\n@media (max-width: 960px) {\n .media-sidebar { display: none !important; }\n .media-sidebar-toggle { display: none !important; }\n}\n.video-overlay-wrapper {\n position: relative;\n display: inline-block;\n}\n.video-fs-overlay-btn {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 36px;\n height: 36px;\n padding: 0;\n background: rgba(0,0,0,0.6);\n border: 1px solid rgba(255,255,255,0.3);\n color: #fff;\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n transition: background 120ms ease;\n}\n.video-fs-overlay-btn:hover { background: rgba(0,0,0,0.8); }\n@media (max-width: 600px) {\n .minimap { display: none !important; }\n .fullscreen-header { padding: 8px 12px; }\n .fullscreen-controls { gap: 4px; }\n .fullscreen-controls button { padding: 6px 8px; font-size: 11px; }\n .fullscreen-controls .zoom-info { font-size: 11px; min-width: 32px; }\n .history-panel { width: 100vw; }\n body.history-open header { right: 0; }\n}");
|
|
4074
3562
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</style></head><body>");
|
|
4075
3563
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<header><div class=\"meta\">");
|
|
4076
3564
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<h1>");
|
|
@@ -4106,11 +3594,12 @@ function _M0FP36kazuph5reviw4core26build__page__start_2einner(buf, filename, fil
|
|
|
4106
3594
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<span class=\"badge\">Click to comment / ESC to cancel</span>");
|
|
4107
3595
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"pill\" id=\"pill-comments\" title=\"Toggle comment panel\">Comments <strong id=\"comment-count\">0</strong></button>");
|
|
4108
3596
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</div><div class=\"actions\">");
|
|
3597
|
+
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<span class=\"sse-dot sse-dot-connected\" id=\"sse-status\" role=\"status\" aria-live=\"polite\" title=\"Connected\"><span class=\"sse-dot-label\">Connected</span></span>");
|
|
4109
3598
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"media-sidebar-toggle\" id=\"media-sidebar-toggle\" title=\"Media Gallery\" aria-label=\"Toggle media gallery\">🖼<span class=\"toggle-count\" id=\"media-toggle-count\"></span></button>");
|
|
4110
3599
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"view-toggle\" id=\"view-toggle\" title=\"Hide source panel\">📝</button>");
|
|
4111
3600
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"history-toggle\" id=\"history-toggle\" title=\"Review History\">☰</button>");
|
|
4112
3601
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"theme-toggle\" id=\"theme-toggle\" title=\"Toggle theme\"><span id=\"theme-icon\">🌙</span></button>");
|
|
4113
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button id=\"send-and-exit\">Submit & Exit</button>");
|
|
3602
|
+
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button id=\"send-and-exit\" class=\"submit-exit-btn\">Submit & Exit</button>");
|
|
4114
3603
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</div></header>");
|
|
4115
3604
|
}
|
|
4116
3605
|
function _M0FP36kazuph5reviw4core23build__questions__modal(buf, questions) {
|
|
@@ -4389,14 +3878,6 @@ function _M0FP36kazuph5reviw4core21build__script__footer(buf, port, mode, filena
|
|
|
4389
3878
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, _M0FP36kazuph5reviw4core18escape__js__string(filename));
|
|
4390
3879
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "\";</script></body></html>");
|
|
4391
3880
|
}
|
|
4392
|
-
function _M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf) {
|
|
4393
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"send-to-ai-bar\" id=\"send-to-ai-bar\">");
|
|
4394
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"send-to-ai-inner\">");
|
|
4395
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<span class=\"sse-status\" id=\"sse-status\">🟢 Connected</span>");
|
|
4396
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<input type=\"text\" class=\"send-to-ai-input\" id=\"send-to-ai-summary\" placeholder=\"Comment to AI (optional)\" />");
|
|
4397
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<button class=\"send-to-ai-btn\" id=\"send-to-ai-btn\">📤 Send to AI</button>");
|
|
4398
|
-
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</div></div>");
|
|
4399
|
-
}
|
|
4400
3881
|
function _M0FP36kazuph5reviw4core20build__submit__modal(buf) {
|
|
4401
3882
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"modal-overlay\" id=\"submit-modal\">");
|
|
4402
3883
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<div class=\"modal-dialog\">");
|
|
@@ -4586,7 +4067,6 @@ function _M0FP36kazuph5reviw4core29build__markdown__html_2einner(md, filename, p
|
|
|
4586
4067
|
_M0FP36kazuph5reviw4core20build__comment__card(buf);
|
|
4587
4068
|
_M0FP36kazuph5reviw4core27build__comment__list__aside(buf);
|
|
4588
4069
|
_M0FP36kazuph5reviw4core20build__submit__modal(buf);
|
|
4589
|
-
_M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
|
|
4590
4070
|
_M0FP36kazuph5reviw4core22build__recovery__modal(buf);
|
|
4591
4071
|
_M0FP36kazuph5reviw4core26build__mermaid__fullscreen(buf);
|
|
4592
4072
|
_M0FP36kazuph5reviw4core24build__image__fullscreen(buf);
|
|
@@ -4732,7 +4212,6 @@ function _M0FP36kazuph5reviw4core16build__csv__html(data, filename, port) {
|
|
|
4732
4212
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</tbody></table></div>");
|
|
4733
4213
|
_M0FP36kazuph5reviw4core20build__comment__card(buf);
|
|
4734
4214
|
_M0FP36kazuph5reviw4core20build__submit__modal(buf);
|
|
4735
|
-
_M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
|
|
4736
4215
|
_M0FP36kazuph5reviw4core21build__history__panel(buf);
|
|
4737
4216
|
_M0FP36kazuph5reviw4core22build__recovery__modal(buf);
|
|
4738
4217
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "<script>const DATA = ");
|
|
@@ -4869,7 +4348,6 @@ function _M0FP36kazuph5reviw4core17build__diff__html(data, filename, port) {
|
|
|
4869
4348
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</div>");
|
|
4870
4349
|
_M0FP36kazuph5reviw4core20build__comment__card(buf);
|
|
4871
4350
|
_M0FP36kazuph5reviw4core20build__submit__modal(buf);
|
|
4872
|
-
_M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
|
|
4873
4351
|
_M0FP36kazuph5reviw4core21build__history__panel(buf);
|
|
4874
4352
|
_M0FP36kazuph5reviw4core22build__recovery__modal(buf);
|
|
4875
4353
|
_M0FP36kazuph5reviw4core21build__script__footer(buf, port, "diff", filename);
|
|
@@ -4902,7 +4380,6 @@ function _M0FP36kazuph5reviw4core17build__text__html(lines, filename, port) {
|
|
|
4902
4380
|
_M0IPB13StringBuilderPB6Logger13write__string(buf, "</div>");
|
|
4903
4381
|
_M0FP36kazuph5reviw4core20build__comment__card(buf);
|
|
4904
4382
|
_M0FP36kazuph5reviw4core20build__submit__modal(buf);
|
|
4905
|
-
_M0FP36kazuph5reviw4core24build__send__to__ai__bar(buf);
|
|
4906
4383
|
_M0FP36kazuph5reviw4core21build__history__panel(buf);
|
|
4907
4384
|
_M0FP36kazuph5reviw4core22build__recovery__modal(buf);
|
|
4908
4385
|
_M0FP36kazuph5reviw4core21build__script__footer(buf, port, "text", filename);
|
|
@@ -4987,23 +4464,23 @@ function _M0FP36kazuph5reviw4core14collect__hunks(lines, start, len) {
|
|
|
4987
4464
|
while (true) {
|
|
4988
4465
|
if (i < len) {
|
|
4989
4466
|
const line = _M0MPC15array5Array2atGsE(lines, i);
|
|
4990
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
4467
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS975, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS975.length))) {
|
|
4991
4468
|
const header = _M0FP36kazuph5reviw4core19parse__hunk__header(line);
|
|
4992
4469
|
const hunk_lines = [];
|
|
4993
4470
|
i = i + 1 | 0;
|
|
4994
4471
|
while (true) {
|
|
4995
4472
|
if (i < len) {
|
|
4996
4473
|
const l = _M0MPC15array5Array2atGsE(lines, i);
|
|
4997
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4474
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS977, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS977.length)) || (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS978, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS978.length)) || _M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS979.length)))) {
|
|
4998
4475
|
break;
|
|
4999
4476
|
}
|
|
5000
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4477
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS980, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS980.length))) {
|
|
5001
4478
|
_M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(1, _M0FP36kazuph5reviw4core11safe__slice(l, 1)));
|
|
5002
4479
|
} else {
|
|
5003
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4480
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS981.length))) {
|
|
5004
4481
|
_M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(2, _M0FP36kazuph5reviw4core11safe__slice(l, 1)));
|
|
5005
4482
|
} else {
|
|
5006
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4483
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS982.length))) {
|
|
5007
4484
|
_M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(0, _M0FP36kazuph5reviw4core11safe__slice(l, 1)));
|
|
5008
4485
|
} else {
|
|
5009
4486
|
_M0MPC15array5Array4pushGsE(hunk_lines, new _M0TP36kazuph5reviw4core8DiffLine(0, l));
|
|
@@ -5018,7 +4495,7 @@ function _M0FP36kazuph5reviw4core14collect__hunks(lines, start, len) {
|
|
|
5018
4495
|
}
|
|
5019
4496
|
_M0MPC15array5Array4pushGsE(hunks, new _M0TP36kazuph5reviw4core8DiffHunk(header._0, header._1, header._2, header._3, header._4, hunk_lines));
|
|
5020
4497
|
} else {
|
|
5021
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
4498
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS983.length)) || _M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984, 0, _M0FP36kazuph5reviw4core14collect__hunksN7_2abindS984.length))) {
|
|
5022
4499
|
break;
|
|
5023
4500
|
} else {
|
|
5024
4501
|
i = i + 1 | 0;
|
|
@@ -5058,7 +4535,7 @@ function _M0FP36kazuph5reviw4core19extract__git__paths(line) {
|
|
|
5058
4535
|
}
|
|
5059
4536
|
}
|
|
5060
4537
|
function _M0FP36kazuph5reviw4core19strip__diff__prefix(path) {
|
|
5061
|
-
return _M0MPC16string6String11has__prefix(path, new _M0TPC16string10StringView(
|
|
4538
|
+
return _M0MPC16string6String11has__prefix(path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS986, 0, _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS986.length)) || _M0MPC16string6String11has__prefix(path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS987, 0, _M0FP36kazuph5reviw4core19strip__diff__prefixN7_2abindS987.length)) ? _M0FP36kazuph5reviw4core11safe__slice(path, 2) : path;
|
|
5062
4539
|
}
|
|
5063
4540
|
function _M0FP36kazuph5reviw4core11parse__diff(input) {
|
|
5064
4541
|
const files = [];
|
|
@@ -5068,7 +4545,7 @@ function _M0FP36kazuph5reviw4core11parse__diff(input) {
|
|
|
5068
4545
|
while (true) {
|
|
5069
4546
|
if (i < len) {
|
|
5070
4547
|
const line = _M0MPC15array5Array2atGsE(lines, i);
|
|
5071
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
4548
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS989, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS989.length))) {
|
|
5072
4549
|
const paths = _M0FP36kazuph5reviw4core19extract__git__paths(line);
|
|
5073
4550
|
let is_new = false;
|
|
5074
4551
|
let is_deleted = false;
|
|
@@ -5077,19 +4554,19 @@ function _M0FP36kazuph5reviw4core11parse__diff(input) {
|
|
|
5077
4554
|
while (true) {
|
|
5078
4555
|
if (i < len) {
|
|
5079
4556
|
const l = _M0MPC15array5Array2atGsE(lines, i);
|
|
5080
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4557
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS991, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS991.length))) {
|
|
5081
4558
|
is_new = true;
|
|
5082
4559
|
i = i + 1 | 0;
|
|
5083
4560
|
} else {
|
|
5084
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4561
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS992, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS992.length))) {
|
|
5085
4562
|
is_deleted = true;
|
|
5086
4563
|
i = i + 1 | 0;
|
|
5087
4564
|
} else {
|
|
5088
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4565
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS993, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS993.length))) {
|
|
5089
4566
|
is_binary = true;
|
|
5090
4567
|
i = i + 1 | 0;
|
|
5091
4568
|
} else {
|
|
5092
|
-
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(
|
|
4569
|
+
if (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS994, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS994.length)) || (_M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS995, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS995.length)) || _M0MPC16string6String11has__prefix(l, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS996, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS996.length)))) {
|
|
5093
4570
|
i = i + 1 | 0;
|
|
5094
4571
|
} else {
|
|
5095
4572
|
break;
|
|
@@ -5106,11 +4583,11 @@ function _M0FP36kazuph5reviw4core11parse__diff(input) {
|
|
|
5106
4583
|
i = result._1;
|
|
5107
4584
|
_M0MPC15array5Array4pushGsE(files, new _M0TP36kazuph5reviw4core8DiffFile(paths._0, paths._1, is_new, is_deleted, is_binary, result._0));
|
|
5108
4585
|
} else {
|
|
5109
|
-
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(
|
|
4586
|
+
if (_M0MPC16string6String11has__prefix(line, new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS997, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS997.length))) {
|
|
5110
4587
|
const old_path = _M0FP36kazuph5reviw4core19strip__diff__prefix(_M0FP36kazuph5reviw4core11safe__slice(line, 4));
|
|
5111
4588
|
let new_path = "";
|
|
5112
4589
|
i = i + 1 | 0;
|
|
5113
|
-
if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(
|
|
4590
|
+
if (i < len && _M0MPC16string6String11has__prefix(_M0MPC15array5Array2atGsE(lines, i), new _M0TPC16string10StringView(_M0FP36kazuph5reviw4core11parse__diffN7_2abindS998, 0, _M0FP36kazuph5reviw4core11parse__diffN7_2abindS998.length))) {
|
|
5114
4591
|
new_path = _M0FP36kazuph5reviw4core19strip__diff__prefix(_M0FP36kazuph5reviw4core11safe__slice(_M0MPC15array5Array2atGsE(lines, i), 4));
|
|
5115
4592
|
i = i + 1 | 0;
|
|
5116
4593
|
}
|
|
@@ -5231,13 +4708,13 @@ function _M0FP36kazuph5reviw4core21csv__data__from__flat(flat) {
|
|
|
5231
4708
|
}
|
|
5232
4709
|
}
|
|
5233
4710
|
function _M0FP36kazuph5reviw6server10os__tmpdir() {
|
|
5234
|
-
return tmpdir$
|
|
4711
|
+
return tmpdir$1949();
|
|
5235
4712
|
}
|
|
5236
4713
|
function _M0FP36kazuph5reviw6server10path__join(_tmp, _tmp$2) {
|
|
5237
|
-
return join$
|
|
4714
|
+
return join$1952(_tmp, _tmp$2);
|
|
5238
4715
|
}
|
|
5239
4716
|
function _M0FP36kazuph5reviw6server17write__file__sync(_tmp, _tmp$2) {
|
|
5240
|
-
return writeFileSync$
|
|
4717
|
+
return writeFileSync$1956(_tmp, _tmp$2);
|
|
5241
4718
|
}
|
|
5242
4719
|
function _M0FP36kazuph5reviw6server19write__file__secure(path, data) {
|
|
5243
4720
|
_M0FP36kazuph5reviw6server15try__call__void(() => {
|
|
@@ -5252,7 +4729,7 @@ function _M0FP36kazuph5reviw6server15init__live__log() {
|
|
|
5252
4729
|
_M0FP36kazuph5reviw6server14console__error(`[REVIW_LIVE] ${path}`);
|
|
5253
4730
|
}
|
|
5254
4731
|
function _M0FP36kazuph5reviw6server22fs__append__file__sync(_tmp, _tmp$2) {
|
|
5255
|
-
return appendFileSync$
|
|
4732
|
+
return appendFileSync$1959(_tmp, _tmp$2);
|
|
5256
4733
|
}
|
|
5257
4734
|
function _M0FP36kazuph5reviw6server17append__live__log(json_line) {
|
|
5258
4735
|
if (_M0FP36kazuph5reviw6server15live__log__path.val.length > 0) {
|
|
@@ -5265,10 +4742,10 @@ function _M0FP36kazuph5reviw6server17append__live__log(json_line) {
|
|
|
5265
4742
|
}
|
|
5266
4743
|
}
|
|
5267
4744
|
function _M0FP36kazuph5reviw6server12exists__sync(_tmp) {
|
|
5268
|
-
return existsSync$
|
|
4745
|
+
return existsSync$1961(_tmp);
|
|
5269
4746
|
}
|
|
5270
4747
|
function _M0FP36kazuph5reviw6server12unlink__sync(_tmp) {
|
|
5271
|
-
return unlinkSync$
|
|
4748
|
+
return unlinkSync$1963(_tmp);
|
|
5272
4749
|
}
|
|
5273
4750
|
function _M0FP36kazuph5reviw6server18cleanup__live__log() {
|
|
5274
4751
|
if (_M0FP36kazuph5reviw6server15live__log__path.val.length > 0 && _M0FP36kazuph5reviw6server12exists__sync(_M0FP36kazuph5reviw6server15live__log__path.val)) {
|
|
@@ -5281,7 +4758,7 @@ function _M0FP36kazuph5reviw6server18cleanup__live__log() {
|
|
|
5281
4758
|
}
|
|
5282
4759
|
}
|
|
5283
4760
|
function _M0FP36kazuph5reviw6server16read__file__sync(_tmp, _tmp$2) {
|
|
5284
|
-
return readFileSync$
|
|
4761
|
+
return readFileSync$1966(_tmp, _tmp$2);
|
|
5285
4762
|
}
|
|
5286
4763
|
function _M0FP36kazuph5reviw6server12load__ui__js() {
|
|
5287
4764
|
if (_M0FP36kazuph5reviw6server13ui__js__cache.val.length > 0) {
|
|
@@ -5299,7 +4776,7 @@ function _M0FP36kazuph5reviw6server12load__ui__js() {
|
|
|
5299
4776
|
}
|
|
5300
4777
|
}
|
|
5301
4778
|
function _M0FP36kazuph5reviw6server11os__homedir() {
|
|
5302
|
-
return homedir$
|
|
4779
|
+
return homedir$1968();
|
|
5303
4780
|
}
|
|
5304
4781
|
function _M0FP36kazuph5reviw6server9lock__dir() {
|
|
5305
4782
|
const override_dir = _M0FP36kazuph5reviw6server13get__env__var("REVIW_LOCK_DIR");
|
|
@@ -5310,7 +4787,7 @@ function _M0FP36kazuph5reviw6server10lock__path(port) {
|
|
|
5310
4787
|
return _M0FP36kazuph5reviw6server10path__join(dir, `${_M0IP016_24default__implPB4Show10to__stringGiE(port)}.lock`);
|
|
5311
4788
|
}
|
|
5312
4789
|
function _M0FP36kazuph5reviw6server11mkdir__sync(_tmp, _tmp$2) {
|
|
5313
|
-
return mkdirSync$
|
|
4790
|
+
return mkdirSync$1971(_tmp, _tmp$2);
|
|
5314
4791
|
}
|
|
5315
4792
|
function _M0FP36kazuph5reviw6server17ensure__lock__dir() {
|
|
5316
4793
|
const dir = _M0FP36kazuph5reviw6server9lock__dir();
|
|
@@ -5379,7 +4856,7 @@ function _M0FP36kazuph5reviw6server21find__available__port(base) {
|
|
|
5379
4856
|
return base;
|
|
5380
4857
|
}
|
|
5381
4858
|
function _M0FP36kazuph5reviw6server13path__dirname(_tmp) {
|
|
5382
|
-
return dirname$
|
|
4859
|
+
return dirname$1978(_tmp);
|
|
5383
4860
|
}
|
|
5384
4861
|
function _M0FP36kazuph5reviw6server21get__package__version() {
|
|
5385
4862
|
let dir = _M0FP36kazuph5reviw6server16get__script__dir();
|
|
@@ -5425,17 +4902,17 @@ function _M0FP36kazuph5reviw6server11parse__port(s) {
|
|
|
5425
4902
|
return n === 0 ? 4989 : n;
|
|
5426
4903
|
}
|
|
5427
4904
|
function _M0FP36kazuph5reviw6server12print__usage() {
|
|
5428
|
-
_M0FP36kazuph5reviw6server12console__log(
|
|
4905
|
+
_M0FP36kazuph5reviw6server12console__log(_M0FP36kazuph5reviw6server12print__usageN5usageS419);
|
|
5429
4906
|
}
|
|
5430
4907
|
function _M0FP36kazuph5reviw6server17read__stdin__sync() {
|
|
5431
4908
|
return _M0FP36kazuph5reviw6server16read__file__sync("/dev/stdin", "utf-8");
|
|
5432
4909
|
}
|
|
5433
4910
|
function _M0FP36kazuph5reviw6server13path__extname(_tmp) {
|
|
5434
|
-
return extname$
|
|
4911
|
+
return extname$1985(_tmp);
|
|
5435
4912
|
}
|
|
5436
4913
|
function _M0FP36kazuph5reviw6server12detect__mode(file_path) {
|
|
5437
4914
|
const ext = _M0FP36kazuph5reviw6server13path__extname(file_path);
|
|
5438
|
-
const ext_lower = _M0MPC16string6String11has__prefix(ext, new _M0TPC16string10StringView(
|
|
4915
|
+
const ext_lower = _M0MPC16string6String11has__prefix(ext, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server12detect__modeN7_2abindS462, 0, _M0FP36kazuph5reviw6server12detect__modeN7_2abindS462.length)) ? _M0MPC16string6String9to__lower(_M0FP36kazuph5reviw4core11safe__slice(ext, 1)) : _M0MPC16string6String9to__lower(ext);
|
|
5439
4916
|
return _M0MP36kazuph5reviw4core8FileMode15from__extension(ext_lower);
|
|
5440
4917
|
}
|
|
5441
4918
|
function _M0FP36kazuph5reviw6server16detect__encoding(buf) {
|
|
@@ -5533,7 +5010,7 @@ function _M0FP36kazuph5reviw6server16detect__encoding(buf) {
|
|
|
5533
5010
|
return "utf-8";
|
|
5534
5011
|
}
|
|
5535
5012
|
function _M0FP36kazuph5reviw6server18read__file__buffer(_tmp) {
|
|
5536
|
-
return readFileSync$
|
|
5013
|
+
return readFileSync$1966(_tmp);
|
|
5537
5014
|
}
|
|
5538
5015
|
function _M0FP36kazuph5reviw6server12decode__file(path, override_enc) {
|
|
5539
5016
|
const buf = _M0FP36kazuph5reviw6server18read__file__buffer(path);
|
|
@@ -5575,13 +5052,13 @@ function _M0FP36kazuph5reviw6server22load__and__build__html(ctx) {
|
|
|
5575
5052
|
return _M0FP36kazuph5reviw4core16build__csv__html(data, ctx.filename, ctx.port);
|
|
5576
5053
|
}
|
|
5577
5054
|
function _M0FP36kazuph5reviw6server14path__basename(_tmp) {
|
|
5578
|
-
return basename$
|
|
5055
|
+
return basename$1995(_tmp);
|
|
5579
5056
|
}
|
|
5580
5057
|
function _M0FP36kazuph5reviw6server13path__resolve(_tmp) {
|
|
5581
|
-
return resolve$
|
|
5058
|
+
return resolve$1997(_tmp);
|
|
5582
5059
|
}
|
|
5583
5060
|
function _M0FP36kazuph5reviw6server25http__create__server__raw(_tmp) {
|
|
5584
|
-
return createServer$
|
|
5061
|
+
return createServer$2002(_tmp);
|
|
5585
5062
|
}
|
|
5586
5063
|
function _M0FP36kazuph5reviw6server14create__server(handler) {
|
|
5587
5064
|
return _M0FP36kazuph5reviw6server25http__create__server__raw(handler);
|
|
@@ -5720,7 +5197,7 @@ function _M0FP36kazuph5reviw6server22cancel__pending__close(ctx) {
|
|
|
5720
5197
|
}
|
|
5721
5198
|
}
|
|
5722
5199
|
function _M0FP36kazuph5reviw6server22write__file__sync__buf(_tmp, _tmp$2) {
|
|
5723
|
-
return writeFileSync$
|
|
5200
|
+
return writeFileSync$1956(_tmp, _tmp$2);
|
|
5724
5201
|
}
|
|
5725
5202
|
function _M0FP36kazuph5reviw6server16base64__to__file(data, dir, index) {
|
|
5726
5203
|
const ext = _M0FP36kazuph5reviw6server20extract__base64__ext(data);
|
|
@@ -5754,7 +5231,7 @@ function _M0FP36kazuph5reviw6server20ensure__history__dir() {
|
|
|
5754
5231
|
}
|
|
5755
5232
|
}
|
|
5756
5233
|
function _M0FP36kazuph5reviw6server20crypto__create__hash(_tmp) {
|
|
5757
|
-
return createHash$
|
|
5234
|
+
return createHash$2023(_tmp);
|
|
5758
5235
|
}
|
|
5759
5236
|
function _M0FP36kazuph5reviw6server14crypto__sha256(s) {
|
|
5760
5237
|
return _M0FP36kazuph5reviw6server27hash__update__digest__hex16(_M0FP36kazuph5reviw6server20crypto__create__hash("sha256"), s);
|
|
@@ -5808,7 +5285,7 @@ function _M0FP36kazuph5reviw6server13save__history(file_path, entry_json) {
|
|
|
5808
5285
|
_M0FP36kazuph5reviw6server11chmod__sync(hp, 384);
|
|
5809
5286
|
}
|
|
5810
5287
|
function _M0FP36kazuph5reviw6server13unwatch__file(_tmp) {
|
|
5811
|
-
return unwatchFile$
|
|
5288
|
+
return unwatchFile$2028(_tmp);
|
|
5812
5289
|
}
|
|
5813
5290
|
function _M0FP36kazuph5reviw6server14handle__submit(ctx, body) {
|
|
5814
5291
|
if (ctx.finished) {
|
|
@@ -5939,7 +5416,7 @@ function _M0FP36kazuph5reviw6server23schedule__close__submit(ctx, draft) {
|
|
|
5939
5416
|
return undefined;
|
|
5940
5417
|
}
|
|
5941
5418
|
_M0FP36kazuph5reviw6server22cancel__pending__close(ctx);
|
|
5942
|
-
const draft_body = draft.length > 0 ? draft : "{\"summary\":\"\",\"comments\":[]}";
|
|
5419
|
+
const draft_body = draft.length > 0 ? _M0FP36kazuph5reviw6server21json__strip__decision(draft) : "{\"summary\":\"\",\"comments\":[]}";
|
|
5943
5420
|
ctx.pending_close_timer = _M0FP36kazuph5reviw6server12set__timeout(() => {
|
|
5944
5421
|
ctx.pending_close_timer = _M0FP36kazuph5reviw6server8js__null();
|
|
5945
5422
|
let _tmp;
|
|
@@ -5953,7 +5430,7 @@ function _M0FP36kazuph5reviw6server23schedule__close__submit(ctx, draft) {
|
|
|
5953
5430
|
return undefined;
|
|
5954
5431
|
}
|
|
5955
5432
|
_M0FP36kazuph5reviw6server14handle__submit(ctx, draft_body);
|
|
5956
|
-
},
|
|
5433
|
+
}, 5000);
|
|
5957
5434
|
}
|
|
5958
5435
|
function _M0FP36kazuph5reviw6server22handle__session__close(ctx, body) {
|
|
5959
5436
|
if (ctx.finished) {
|
|
@@ -6022,7 +5499,7 @@ function _M0FP36kazuph5reviw6server21handle__session__open(ctx, body) {
|
|
|
6022
5499
|
_M0MPB3Map3setGssE(ctx.active_tab_instances, tab_id, instance_id);
|
|
6023
5500
|
}
|
|
6024
5501
|
function _M0FP36kazuph5reviw6server17child__exec__sync(_tmp, _tmp$2) {
|
|
6025
|
-
return execSync$
|
|
5502
|
+
return execSync$2041(_tmp, _tmp$2);
|
|
6026
5503
|
}
|
|
6027
5504
|
function _M0FP36kazuph5reviw6server15command__exists(cmd) {
|
|
6028
5505
|
return _M0FP36kazuph5reviw6server15try__call__bool(() => {
|
|
@@ -6031,7 +5508,7 @@ function _M0FP36kazuph5reviw6server15command__exists(cmd) {
|
|
|
6031
5508
|
});
|
|
6032
5509
|
}
|
|
6033
5510
|
function _M0FP36kazuph5reviw6server17fs__mkdtemp__sync(_tmp) {
|
|
6034
|
-
return mkdtempSync$
|
|
5511
|
+
return mkdtempSync$2044(_tmp);
|
|
6035
5512
|
}
|
|
6036
5513
|
function _M0FP36kazuph5reviw6server15make__temp__dir() {
|
|
6037
5514
|
return _M0FP36kazuph5reviw6server17fs__mkdtemp__sync(`${_M0FP36kazuph5reviw6server10os__tmpdir()}/reviw-`);
|
|
@@ -6040,13 +5517,13 @@ function _M0FP36kazuph5reviw6server18read__file__base64(path) {
|
|
|
6040
5517
|
return _M0FP36kazuph5reviw6server17try__call__string(() => _M0FP36kazuph5reviw6server15buf__to__base64(_M0FP36kazuph5reviw6server18read__file__buffer(path)), "");
|
|
6041
5518
|
}
|
|
6042
5519
|
function _M0FP36kazuph5reviw6server22fs__readdir__sync__raw(_tmp) {
|
|
6043
|
-
return readdirSync$
|
|
5520
|
+
return readdirSync$2054(_tmp);
|
|
6044
5521
|
}
|
|
6045
5522
|
function _M0FP36kazuph5reviw6server13readdir__sync(path) {
|
|
6046
5523
|
return _M0FP36kazuph5reviw6server24try__call__array__string(() => _M0FP36kazuph5reviw6server22fs__readdir__sync__raw(path));
|
|
6047
5524
|
}
|
|
6048
5525
|
function _M0FP36kazuph5reviw6server12fs__rm__sync(_tmp, _tmp$2) {
|
|
6049
|
-
return rmSync$
|
|
5526
|
+
return rmSync$2063(_tmp, _tmp$2);
|
|
6050
5527
|
}
|
|
6051
5528
|
function _M0FP36kazuph5reviw6server18rm__dir__recursive(path) {
|
|
6052
5529
|
_M0FP36kazuph5reviw6server15try__call__void(() => {
|
|
@@ -6054,13 +5531,13 @@ function _M0FP36kazuph5reviw6server18rm__dir__recursive(path) {
|
|
|
6054
5531
|
});
|
|
6055
5532
|
}
|
|
6056
5533
|
function _M0FP36kazuph5reviw6server12child__spawn(_tmp, _tmp$2, _tmp$3) {
|
|
6057
|
-
return spawn$
|
|
5534
|
+
return spawn$2069(_tmp, _tmp$2, _tmp$3);
|
|
6058
5535
|
}
|
|
6059
5536
|
function _M0FP36kazuph5reviw6server12spawn__async(cmd, args_json) {
|
|
6060
5537
|
return _M0FP36kazuph5reviw6server12child__spawn(cmd, _M0FP36kazuph5reviw6server15js__parse__json(args_json), _M0FP36kazuph5reviw6server21js__spawn__opts__pipe());
|
|
6061
5538
|
}
|
|
6062
5539
|
function _M0FP36kazuph5reviw6server18child__spawn__sync(_tmp, _tmp$2, _tmp$3) {
|
|
6063
|
-
return spawnSync$
|
|
5540
|
+
return spawnSync$2074(_tmp, _tmp$2, _tmp$3);
|
|
6064
5541
|
}
|
|
6065
5542
|
function _M0FP36kazuph5reviw6server19spawn__sync__stdout(cmd, args_json) {
|
|
6066
5543
|
return _M0FP36kazuph5reviw6server17try__call__string(() => _M0FP36kazuph5reviw6server15js__obj__stdout(_M0FP36kazuph5reviw6server18child__spawn__sync(cmd, _M0FP36kazuph5reviw6server15js__parse__json(args_json), _M0FP36kazuph5reviw6server27js__spawn__opts__utf8__pipe())), "");
|
|
@@ -6068,7 +5545,7 @@ function _M0FP36kazuph5reviw6server19spawn__sync__stdout(cmd, args_json) {
|
|
|
6068
5545
|
function _M0FP36kazuph5reviw6server23handle__video__timeline(ctx, url, res) {
|
|
6069
5546
|
const video_path = _M0FP36kazuph5reviw6server19parse__query__param(url, "path");
|
|
6070
5547
|
const scene_str = _M0FP36kazuph5reviw6server19parse__query__param(url, "scene");
|
|
6071
|
-
if (_M0MPC16string6String8contains(video_path, new _M0TPC16string10StringView(
|
|
5548
|
+
if (_M0MPC16string6String8contains(video_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS526, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS526.length))) {
|
|
6072
5549
|
_M0FP36kazuph5reviw6server16res__write__head(res, 400, "text/plain");
|
|
6073
5550
|
_M0FP36kazuph5reviw6server8res__end(res, "Invalid path");
|
|
6074
5551
|
return undefined;
|
|
@@ -6113,7 +5590,7 @@ function _M0FP36kazuph5reviw6server23handle__video__timeline(ctx, url, res) {
|
|
|
6113
5590
|
const _ = _tmp;
|
|
6114
5591
|
if (_ < _bind) {
|
|
6115
5592
|
const file = files[_];
|
|
6116
|
-
if (_M0MPC16string6String11has__prefix(file, new _M0TPC16string10StringView(
|
|
5593
|
+
if (_M0MPC16string6String11has__prefix(file, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS530.length)) && _M0MPC16string6String11has__suffix(file, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS531, 0, _M0FP36kazuph5reviw6server23handle__video__timelineN7_2abindS531.length))) {
|
|
6117
5594
|
_M0MPC15array5Array4pushGsE(scene_files, file);
|
|
6118
5595
|
}
|
|
6119
5596
|
_tmp = _ + 1 | 0;
|
|
@@ -6274,13 +5751,13 @@ function _M0FP36kazuph5reviw6server9index__of(s, target) {
|
|
|
6274
5751
|
return -1;
|
|
6275
5752
|
}
|
|
6276
5753
|
function _M0FP36kazuph5reviw6server14fs__stat__sync(_tmp) {
|
|
6277
|
-
return statSync$
|
|
5754
|
+
return statSync$2092(_tmp);
|
|
6278
5755
|
}
|
|
6279
5756
|
function _M0FP36kazuph5reviw6server14is__file__sync(path) {
|
|
6280
5757
|
return _M0FP36kazuph5reviw6server18js__stat__is__file(_M0FP36kazuph5reviw6server14fs__stat__sync(path));
|
|
6281
5758
|
}
|
|
6282
5759
|
function _M0FP36kazuph5reviw6server30fs__create__read__stream__opts(_tmp, _tmp$2) {
|
|
6283
|
-
return createReadStream$
|
|
5760
|
+
return createReadStream$2096(_tmp, _tmp$2);
|
|
6284
5761
|
}
|
|
6285
5762
|
function _M0FP36kazuph5reviw6server17pipe__file__range(file_path, res, content_type, range_header) {
|
|
6286
5763
|
const stat = _M0FP36kazuph5reviw6server14fs__stat__sync(file_path);
|
|
@@ -6295,7 +5772,7 @@ function _M0FP36kazuph5reviw6server17pipe__file__range(file_path, res, content_t
|
|
|
6295
5772
|
_M0FP36kazuph5reviw6server8js__pipe(stream, res);
|
|
6296
5773
|
}
|
|
6297
5774
|
function _M0FP36kazuph5reviw6server24fs__create__read__stream(_tmp) {
|
|
6298
|
-
return createReadStream$
|
|
5775
|
+
return createReadStream$2096(_tmp);
|
|
6299
5776
|
}
|
|
6300
5777
|
function _M0FP36kazuph5reviw6server24pipe__file__to__response(file_path, res, content_type) {
|
|
6301
5778
|
const stat = _M0FP36kazuph5reviw6server14fs__stat__sync(file_path);
|
|
@@ -6308,8 +5785,8 @@ function _M0FP36kazuph5reviw6server24pipe__file__to__response(file_path, res, co
|
|
|
6308
5785
|
function _M0FP36kazuph5reviw6server19serve__static__file(ctx, url, req, res) {
|
|
6309
5786
|
const qmark = _M0FP36kazuph5reviw6server9index__of(url, 63);
|
|
6310
5787
|
const url_path = qmark >= 0 ? _M0FP36kazuph5reviw4core18safe__slice__range(url, 0, qmark) : url;
|
|
6311
|
-
const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(
|
|
6312
|
-
if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(
|
|
5788
|
+
const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS566, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS566.length)) ? _M0FP36kazuph5reviw4core11safe__slice(url_path, 1) : url_path;
|
|
5789
|
+
if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS564, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS564.length))) {
|
|
6313
5790
|
_M0FP36kazuph5reviw6server16res__write__head(res, 403, "text/plain");
|
|
6314
5791
|
_M0FP36kazuph5reviw6server8res__end(res, "Forbidden");
|
|
6315
5792
|
return undefined;
|
|
@@ -6326,7 +5803,7 @@ function _M0FP36kazuph5reviw6server19serve__static__file(ctx, url, req, res) {
|
|
|
6326
5803
|
if (_M0FP36kazuph5reviw6server12exists__sync(resolved_static) && _M0FP36kazuph5reviw6server14is__file__sync(resolved_static)) {
|
|
6327
5804
|
const ext = _M0MPC16string6String9to__lower(_M0FP36kazuph5reviw6server13path__extname(resolved_static));
|
|
6328
5805
|
const content_type = _M0FP36kazuph5reviw6server15get__mime__type(ext);
|
|
6329
|
-
const is_video = _M0MPC16string6String11has__prefix(content_type, new _M0TPC16string10StringView(
|
|
5806
|
+
const is_video = _M0MPC16string6String11has__prefix(content_type, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS565, 0, _M0FP36kazuph5reviw6server19serve__static__fileN7_2abindS565.length));
|
|
6330
5807
|
const range = _M0FP36kazuph5reviw6server18req__range__header(req);
|
|
6331
5808
|
if (is_video && range.length > 0) {
|
|
6332
5809
|
_M0FP36kazuph5reviw6server17pipe__file__range(resolved_static, res, content_type, range);
|
|
@@ -6344,8 +5821,8 @@ function _M0FP36kazuph5reviw6server19serve__static__file(ctx, url, req, res) {
|
|
|
6344
5821
|
function _M0FP36kazuph5reviw6server25serve__static__file__head(ctx, url, res) {
|
|
6345
5822
|
const qmark = _M0FP36kazuph5reviw6server9index__of(url, 63);
|
|
6346
5823
|
const url_path = qmark >= 0 ? _M0FP36kazuph5reviw4core18safe__slice__range(url, 0, qmark) : url;
|
|
6347
|
-
const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(
|
|
6348
|
-
if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(
|
|
5824
|
+
const relative_path = _M0MPC16string6String11has__prefix(url_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS568, 0, _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS568.length)) ? _M0FP36kazuph5reviw4core11safe__slice(url_path, 1) : url_path;
|
|
5825
|
+
if (_M0MPC16string6String8contains(relative_path, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS567, 0, _M0FP36kazuph5reviw6server25serve__static__file__headN7_2abindS567.length))) {
|
|
6349
5826
|
_M0FP36kazuph5reviw6server16res__write__head(res, 403, "text/plain");
|
|
6350
5827
|
_M0FP36kazuph5reviw6server8res__end(res, "");
|
|
6351
5828
|
return undefined;
|
|
@@ -6407,7 +5884,7 @@ function _M0FP36kazuph5reviw6server15handle__request(ctx, req, res) {
|
|
|
6407
5884
|
_M0FP36kazuph5reviw6server8res__end(res, history_json);
|
|
6408
5885
|
return;
|
|
6409
5886
|
} else {
|
|
6410
|
-
if (http_method === "GET" && _M0MPC16string6String11has__prefix(url, new _M0TPC16string10StringView(
|
|
5887
|
+
if (http_method === "GET" && _M0MPC16string6String11has__prefix(url, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server15handle__requestN7_2abindS569, 0, _M0FP36kazuph5reviw6server15handle__requestN7_2abindS569.length))) {
|
|
6411
5888
|
_M0FP36kazuph5reviw6server23handle__video__timeline(ctx, url, res);
|
|
6412
5889
|
return;
|
|
6413
5890
|
} else {
|
|
@@ -6505,13 +5982,13 @@ function _M0FP36kazuph5reviw6server28try__activate__existing__tab(url) {
|
|
|
6505
5982
|
}
|
|
6506
5983
|
const chrome_script = `set found to false\ntell application \"System Events\"\n if exists process \"Google Chrome\" then\n tell application \"Google Chrome\"\n set targetUrl to \"${url}\"\n repeat with w in windows\n set tabIndex to 1\n repeat with t in tabs of w\n if URL of t starts with targetUrl then\n set active tab index of w to tabIndex\n set index of w to 1\n activate\n set found to true\n exit repeat\n end if\n set tabIndex to tabIndex + 1\n end repeat\n if found then exit repeat\n end repeat\n end tell\n end if\nend tell\nfound`;
|
|
6507
5984
|
const chrome_result = _M0FP36kazuph5reviw6server19spawn__sync__result("osascript", `[\"-e\", ${_M0FP36kazuph5reviw6server19json__encode__value(chrome_script)}]`);
|
|
6508
|
-
if (_M0MPC16string6String8contains(chrome_result, new _M0TPC16string10StringView(
|
|
5985
|
+
if (_M0MPC16string6String8contains(chrome_result, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS570, 0, _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS570.length))) {
|
|
6509
5986
|
_M0FP36kazuph5reviw6server12console__log(`Activated existing Chrome tab: ${url}`);
|
|
6510
5987
|
return true;
|
|
6511
5988
|
}
|
|
6512
5989
|
const safari_script = `set found to false\ntell application \"System Events\"\n if exists process \"Safari\" then\n tell application \"Safari\"\n set targetUrl to \"${url}\"\n repeat with w in windows\n repeat with t in tabs of w\n if URL of t starts with targetUrl then\n set current tab of w to t\n set index of w to 1\n activate\n set found to true\n exit repeat\n end if\n end repeat\n if found then exit repeat\n end repeat\n end tell\n end if\nend tell\nfound`;
|
|
6513
5990
|
const safari_result = _M0FP36kazuph5reviw6server19spawn__sync__result("osascript", `[\"-e\", ${_M0FP36kazuph5reviw6server19json__encode__value(safari_script)}]`);
|
|
6514
|
-
if (_M0MPC16string6String8contains(safari_result, new _M0TPC16string10StringView(
|
|
5991
|
+
if (_M0MPC16string6String8contains(safari_result, new _M0TPC16string10StringView(_M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS571, 0, _M0FP36kazuph5reviw6server28try__activate__existing__tabN7_2abindS571.length))) {
|
|
6515
5992
|
_M0FP36kazuph5reviw6server12console__log(`Activated existing Safari tab: ${url}`);
|
|
6516
5993
|
return true;
|
|
6517
5994
|
}
|
|
@@ -6589,7 +6066,7 @@ function _M0FP36kazuph5reviw6server19start__http__server(ctx, no_open) {
|
|
|
6589
6066
|
_M0FP36kazuph5reviw6server11try__listen(ctx, ctx.port, 0, no_open);
|
|
6590
6067
|
}
|
|
6591
6068
|
function _M0FP36kazuph5reviw6server11watch__file(_tmp, _tmp$2) {
|
|
6592
|
-
return watchFile$
|
|
6069
|
+
return watchFile$2130(_tmp, _tmp$2);
|
|
6593
6070
|
}
|
|
6594
6071
|
function _M0FP36kazuph5reviw6server19start__file__server(file_path, port, no_open) {
|
|
6595
6072
|
const resolved = _M0FP36kazuph5reviw6server13path__resolve(file_path);
|
|
@@ -6687,7 +6164,7 @@ function _M0FP36kazuph5reviw6server20start__stdin__server(content, port, no_open
|
|
|
6687
6164
|
_M0FP36kazuph5reviw6server18encoding__override.val = _M0MPC15array5Array2atGsE(args, i);
|
|
6688
6165
|
}
|
|
6689
6166
|
} else {
|
|
6690
|
-
if (!_M0MPC16string6String11has__prefix(arg, new _M0TPC16string10StringView(
|
|
6167
|
+
if (!_M0MPC16string6String11has__prefix(arg, new _M0TPC16string10StringView(_M0FP017____moonbit__mainN7_2abindS590, 0, _M0FP017____moonbit__mainN7_2abindS590.length))) {
|
|
6691
6168
|
_M0MPC15array5Array4pushGsE(files, arg);
|
|
6692
6169
|
}
|
|
6693
6170
|
}
|