prreviewbuddy 0.36.4 → 0.36.10

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.
Files changed (129) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/server.js +146 -23
  3. package/package.json +1 -1
  4. package/static/{chunk-IsizPYbz.js → chunk-2cPIwDyu.js} +1 -1
  5. package/static/chunk-745C7DWL.js +36 -0
  6. package/static/chunk-AdYjtsZU.js +1 -0
  7. package/static/{chunk-BokiwdgS.js → chunk-B-z83rju.js} +7 -7
  8. package/static/{chunk-DQT7Z75O.js → chunk-B0sWk9pb.js} +6 -6
  9. package/static/chunk-B2PgDgse.js +1 -0
  10. package/static/{chunk-CZus5tIC.js → chunk-B2kMZj3m.js} +1 -1
  11. package/static/{chunk-D5VxBvZv.js → chunk-B6QMLbPb.js} +6 -6
  12. package/static/chunk-BFC1myXj.js +1 -0
  13. package/static/{chunk-D289T3W2.js → chunk-BKQNYMf0.js} +3 -3
  14. package/static/{chunk-CNXFALfL.js → chunk-BLYKMRgX.js} +24 -24
  15. package/static/chunk-BNE4vRAl.js +1 -0
  16. package/static/{chunk-nKL3T2Rn.js → chunk-BOGxj-MG.js} +3 -3
  17. package/static/chunk-BOvsFOI6.js +1 -0
  18. package/static/chunk-BWjKdrB5.js +1 -0
  19. package/static/chunk-BXViO-2h.js +1 -0
  20. package/static/chunk-BYOwaDjH.js +1 -0
  21. package/static/chunk-BYPUwVJd.js +8 -0
  22. package/static/chunk-BeqgAIrQ.js +44 -0
  23. package/static/{chunk-CqbP8tav.js → chunk-BgAz67x8.js} +5 -5
  24. package/static/{chunk-pzXl7dPH.js → chunk-Bh1X0--a.js} +1 -1
  25. package/static/chunk-BhOdd-9U.js +3 -0
  26. package/static/chunk-BnjxR4X6.js +1 -0
  27. package/static/chunk-Br7K6EJO.js +1 -0
  28. package/static/{chunk-MLIlWKCY.js → chunk-BsaS8BTP.js} +1 -1
  29. package/static/chunk-BsjqnLg3.js +1 -0
  30. package/static/chunk-BtIQNnN0.js +1 -0
  31. package/static/{chunk-D3k4QmBl.js → chunk-BveIbUwm.js} +9 -9
  32. package/static/chunk-BwpXVz85.js +2 -0
  33. package/static/chunk-Bz6J7zHc.js +1 -0
  34. package/static/chunk-BzbQS41l.js +1 -0
  35. package/static/chunk-C3nvJp0N.js +1 -0
  36. package/static/{chunk-Cp5EDur4.js → chunk-C3zyi6X6.js} +7 -7
  37. package/static/chunk-CAnKkQXq.js +1 -0
  38. package/static/chunk-CBrdyqSx.js +1 -0
  39. package/static/{chunk-oZJp8_Oh.js → chunk-CFLfawWY.js} +1 -1
  40. package/static/chunk-CG_wK_-W.js +1 -0
  41. package/static/{chunk-Crk3W7xi.js → chunk-CLNPO3K2.js} +1 -1
  42. package/static/{chunk-CeiETtR3.js → chunk-CN9Gw02i.js} +32 -32
  43. package/static/{chunk-lpcXIlNC.js → chunk-CNECTSY3.js} +7 -7
  44. package/static/{chunk-oxFaA6rD.js → chunk-CNG5uajc.js} +7 -7
  45. package/static/chunk-COmCkMOw.js +292 -0
  46. package/static/chunk-CP0rg-5b.js +1 -0
  47. package/static/{chunk-7inUl5Il.js → chunk-CUxm3YXF.js} +1 -1
  48. package/static/{chunk-DtQPBrIL.js → chunk-CVHEykQZ.js} +6 -6
  49. package/static/{chunk-CUsQ7lH1.js → chunk-CVKo9lqM.js} +7 -7
  50. package/static/{chunk-DBVuY2lB.js → chunk-CWJTY3LS.js} +8 -8
  51. package/static/chunk-Cfkwpbl8.js +1 -0
  52. package/static/chunk-Cjc271yU.js +1 -0
  53. package/static/chunk-CqHdAlCp.js +1 -0
  54. package/static/{chunk-BVDh-dl-.js → chunk-CqXMuRFL.js} +4 -4
  55. package/static/chunk-Cuz7gAE5.js +1 -0
  56. package/static/chunk-Cv3JjNkX.js +1 -0
  57. package/static/{chunk-BHBwEv5G.js → chunk-D1rSZHoG.js} +1 -1
  58. package/static/chunk-D2NZorQR.js +1 -0
  59. package/static/chunk-D2pwppYQ.js +1 -0
  60. package/static/chunk-D3KKoC5L.js +1 -0
  61. package/static/chunk-D95j_xjm.js +1 -0
  62. package/static/chunk-DDhk861e.js +1 -0
  63. package/static/chunk-DFxPlKZ4.js +1 -0
  64. package/static/chunk-DJ4Pz6CG.js +2 -0
  65. package/static/{chunk-LHD4D-55.js → chunk-DN473Oml.js} +1 -1
  66. package/static/{chunk-DfMSIask.js → chunk-DOebnhRz.js} +1 -1
  67. package/static/chunk-DYSi9-67.js +1 -0
  68. package/static/chunk-DYi0PdOM.js +24 -0
  69. package/static/{chunk-BoTbRR8S.js → chunk-DdkvfxwB.js} +3 -3
  70. package/static/chunk-DecH1K7C.js +62 -0
  71. package/static/chunk-Dgyv2z85.js +1 -0
  72. package/static/chunk-DhhofPvG.js +1 -0
  73. package/static/chunk-DijMHRDA.js +1 -0
  74. package/static/chunk-Dlx_va8c.js +1 -0
  75. package/static/{chunk-D87EWWOh.js → chunk-DmCmlw77.js} +6 -6
  76. package/static/chunk-DswuEJGm.js +1 -0
  77. package/static/{chunk-DmHr41SG.js → chunk-DwZ_OKDV.js} +6 -6
  78. package/static/{chunk-BqFMUyVw.js → chunk-Dx2-dNbd.js} +9 -9
  79. package/static/chunk-EIJEcyW-.js +1 -0
  80. package/static/chunk-I02WWcy5.js +41 -0
  81. package/static/chunk-IT8Wx1rP.js +24 -0
  82. package/static/chunk-IyjqRm3v.js +1 -0
  83. package/static/chunk-LbU1hoFO.js +1 -0
  84. package/static/chunk-NzFayA7r.js +1 -0
  85. package/static/{chunk-BVm3MgB2.js → chunk-PhC9V0kv.js} +6 -6
  86. package/static/{chunk-ChQTsUB2.js → chunk-Tk2BGjOK.js} +3 -3
  87. package/static/{chunk-Bd8oAEBF.js → chunk-Wc3Sd0cy.js} +7 -7
  88. package/static/chunk-c-cg1wCO.js +12 -0
  89. package/static/{chunk-IOULrYuo.js → chunk-gyMXflOg.js} +6 -6
  90. package/static/chunk-gzcpVVnB.js +1 -0
  91. package/static/chunk-hePW80VL.js +1 -0
  92. package/static/chunk-i2ycf8WY.js +1 -0
  93. package/static/chunk-j_1H8WHN.js +1 -0
  94. package/static/chunk-nU5620mN.js +1 -0
  95. package/static/chunk-pNSm1SyV.js +1 -0
  96. package/static/chunk-qhed-kSA.js +1 -0
  97. package/static/chunk-rLFTqkRN.js +1 -0
  98. package/static/{chunk-DEKSwylx.js → chunk-tz4nb_gp.js} +4 -4
  99. package/static/chunk-xyBkudn9.js +106 -0
  100. package/static/chunk-yqeNYXbH.js +1 -0
  101. package/static/shell.css +119 -2
  102. package/static/workspace.js +41 -34
  103. package/static/chunk-9-3VOpWX.js +0 -24
  104. package/static/chunk-B0xoFuVi.js +0 -1
  105. package/static/chunk-B80S6zbH.js +0 -44
  106. package/static/chunk-B8V5WPf1.js +0 -292
  107. package/static/chunk-BOfOlrLQ.js +0 -1
  108. package/static/chunk-BSUrFSfn.js +0 -2
  109. package/static/chunk-Bdvr7G0w.js +0 -1
  110. package/static/chunk-Bk4d_k6M.js +0 -62
  111. package/static/chunk-BmkZxg03.js +0 -1
  112. package/static/chunk-Bs98n_vr.js +0 -1
  113. package/static/chunk-BxpAJfRF.js +0 -36
  114. package/static/chunk-C26MXXwi.js +0 -1
  115. package/static/chunk-CMKpUUG0.js +0 -1
  116. package/static/chunk-CQfKfv79.js +0 -1
  117. package/static/chunk-CiB0fz5M.js +0 -1
  118. package/static/chunk-CoIQ0XcM.js +0 -8
  119. package/static/chunk-CqMjOmHM.js +0 -1
  120. package/static/chunk-DHkjHDYG.js +0 -1
  121. package/static/chunk-Dex9JiR1.js +0 -3
  122. package/static/chunk-DfcNMhQb.js +0 -41
  123. package/static/chunk-Dh6xxjov.js +0 -1
  124. package/static/chunk-Dk6P4vVY.js +0 -1
  125. package/static/chunk-DlMt7LBR.js +0 -1
  126. package/static/chunk-DlPtUH2x.js +0 -24
  127. package/static/chunk-DqZGGQx6.js +0 -2
  128. package/static/chunk-H9AITnpH.js +0 -1
  129. package/static/chunk-dQvmgBo8.js +0 -106
package/CHANGELOG.md CHANGED
@@ -1,5 +1,59 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.36.10
4
+
5
+ **Syntax highlighting in the file viewer.** Code opened in the review is now coloured by language:
6
+ Ruby, JavaScript, TypeScript, JSX, TSX, JSON, YAML, Markdown, HTML, CSS, SCSS, SQL, Python, Java,
7
+ Kotlin, Go, Rust, shell scripts, Dockerfiles and Terraform. Added, deleted and cited lines keep
8
+ their shading, with the colours inside it. Other files show as plain text, as before.
9
+
10
+ Colouring loads in the background once the review opens, and only for the languages that review
11
+ changed, so a file usually opens already coloured. When it isn't ready yet, the text shows straight
12
+ away and the colour follows. A very long line is coloured as far as it is shown, and in full once you
13
+ press Show full line.
14
+
15
+ ## 0.36.9
16
+
17
+ A file opened from the review guide, an issue, a question or a KISS finding now joins onto the link
18
+ that opened it, the way a row in the Files tab already did. The file name and its code read as one
19
+ card, and the file name stays exactly where it was when the code opens.
20
+
21
+ ## 0.36.8
22
+
23
+ **Expand the file viewer.** A new Expand button beside Open in VS Code makes a file's code as tall
24
+ as the review column allows, with the review path and Ask panel left where they are. Collapse
25
+ returns it to its usual size, and the line you were reading stays in view both ways. The button
26
+ only appears when the file is longer than the viewer.
27
+
28
+ An open file row and its code now read as one card, joined with no gap between them.
29
+
30
+ The first press of **Show more of this file** on a file opened from its row now shows more. It
31
+ used to ask for the 600 lines already on screen and change nothing.
32
+
33
+ ## 0.36.7
34
+
35
+ **Step between the changes in a file.** The file viewer now has Previous and Next beside the
36
+ version caption, with a count such as `2 of 6`. A replaced line and its removal count as one
37
+ change. Next goes to the first change below where you are, including the line a finding opened
38
+ you on, and brings a change outside the lines on screen into view. A removed block is shown by its
39
+ marker and stays collapsed.
40
+
41
+ ## 0.36.6
42
+
43
+ A very long line in the file viewer, such as minified code or generated data, is now cut short
44
+ after 1,000 characters with a **Show full line** control beside it. Opening a file no longer lays
45
+ out tens of thousands of characters at once. The whole line is still there, one click away.
46
+
47
+ ## 0.36.5
48
+
49
+ **The file viewer shows where lines were removed.** A file could say `+9 −1` while the viewer only
50
+ ever shaded the nine, because it shows the file as reviewed and a removed line is not in it. Now a
51
+ small `− 1 deleted line` marker sits exactly where the removal happened, and clicking it shows the
52
+ old lines in place, above whatever replaced them. It is still the whole file rather than a diff.
53
+
54
+ If the recorded change for a file cannot be read reliably, the viewer says `change details
55
+ unavailable` and marks nothing, rather than shading lines in the wrong place.
56
+
3
57
  ## 0.36.4
4
58
 
5
59
  The search box and filters on the reviews list now sit over the list itself, sharing its column,
package/dist/server.js CHANGED
@@ -6158,7 +6158,8 @@ function windowOnto(content, workspace, path, options, source, sourceSha, checko
6158
6158
  const all = content.split("\n");
6159
6159
  if (all.length > 0 && all[all.length - 1] === "") all.pop();
6160
6160
  const totalLines = all.length;
6161
- const added = addedLinesFor(workspace, path);
6161
+ const changes = changesFor(workspace, path);
6162
+ const known = changes.state === "known" ? changes.changes : NO_CHANGES;
6162
6163
  const steps = Math.max(0, Math.floor(options.expand ?? 0));
6163
6164
  const span = steps > 0 ? 600 * steps : options.line ? 25 : 600;
6164
6165
  let from = 1;
@@ -6174,7 +6175,10 @@ function windowOnto(content, workspace, path, options, source, sourceSha, checko
6174
6175
  from,
6175
6176
  to,
6176
6177
  lines: all.slice(from - 1, to),
6177
- addedLines: added.filter((n) => n >= from && n <= to),
6178
+ addedLines: known.addedLines.filter((n) => n >= from && n <= to),
6179
+ deletions: known.deletions.filter((block) => block.beforeLine >= from && block.beforeLine <= to || to === totalLines && block.beforeLine === totalLines + 1),
6180
+ changes: changes.state,
6181
+ changeAnchors: changeAnchors(known),
6178
6182
  truncated: from > 1 || to < totalLines,
6179
6183
  source,
6180
6184
  ...sourceSha ? { sourceSha } : {},
@@ -6182,34 +6186,153 @@ function windowOnto(content, workspace, path, options, source, sourceSha, checko
6182
6186
  };
6183
6187
  }
6184
6188
  /**
6185
- * Which lines of the *current* file this change added, from the patch we already hold.
6189
+ * One anchor per run of changed rows, as the rows are drawn.
6190
+ *
6191
+ * Grouped by what sits next to what on screen rather than by kind, so a replacement (a marker
6192
+ * directly above its green lines) is one change and not two. Each item gets a position in drawing
6193
+ * order: a marker before line n is 2n - 1 and line n itself is 2n. Two items are one run when
6194
+ * nothing is drawn between them, which is a step of 1, or a step of 2 between two added lines.
6195
+ * A step of 2 between two markers has an unchanged line between them.
6196
+ */
6197
+ function changeAnchors(changes) {
6198
+ const items = [...changes.deletions.map((block) => ({
6199
+ key: 2 * block.beforeLine - 1,
6200
+ line: block.beforeLine,
6201
+ deletion: true
6202
+ })), ...changes.addedLines.map((line) => ({
6203
+ key: 2 * line,
6204
+ line,
6205
+ deletion: false
6206
+ }))].sort((a, b) => a.key - b.key);
6207
+ const anchors = [];
6208
+ let previous;
6209
+ for (const item of items) {
6210
+ const step = previous ? item.key - previous.key : Infinity;
6211
+ if (!(step === 1 || step === 2 && !item.deletion && !previous.deletion)) anchors.push({
6212
+ line: item.line,
6213
+ deletion: item.deletion
6214
+ });
6215
+ previous = item;
6216
+ }
6217
+ return anchors;
6218
+ }
6219
+ var NO_CHANGES = {
6220
+ addedLines: [],
6221
+ deletions: [],
6222
+ additions: 0,
6223
+ deletionCount: 0
6224
+ };
6225
+ /**
6226
+ * What this change did to one file, from the patch we already hold.
6186
6227
  *
6187
6228
  * Read out of the stored change set rather than by running git again: the review describes one
6188
6229
  * specific state of the working tree, and a second `git diff` could answer about a different one.
6230
+ *
6231
+ * The parsed totals are checked against numstat, which git produced in a separate invocation. When
6232
+ * they disagree nothing is marked at all, because a position that might be wrong is worse than
6233
+ * no position.
6189
6234
  */
6190
- function addedLinesFor(workspace, path) {
6235
+ function changesFor(workspace, path) {
6191
6236
  const file = workspace.changeSet.data.files.find((entry) => entry.name === path);
6192
- if (!file?.patch) return [];
6193
- return addedLinesFromPatch(file.patch);
6194
- }
6195
- var HUNK = /^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/;
6196
- function addedLinesFromPatch(patch) {
6197
- const added = [];
6198
- let lineNumber = 0;
6199
- for (const line of patch.split("\n")) {
6200
- const hunk = HUNK.exec(line);
6201
- if (hunk) {
6202
- lineNumber = Number(hunk[1]);
6203
- continue;
6237
+ if (!file) return {
6238
+ state: "known",
6239
+ changes: NO_CHANGES
6240
+ };
6241
+ if (!file.patch) return file.additions + file.deletions === 0 ? {
6242
+ state: "known",
6243
+ changes: NO_CHANGES
6244
+ } : {
6245
+ state: "unavailable",
6246
+ reason: "no-patch"
6247
+ };
6248
+ const changes = parsePatch(file.patch);
6249
+ if (!changes) return {
6250
+ state: "unavailable",
6251
+ reason: "malformed"
6252
+ };
6253
+ if (changes.additions !== file.additions || changes.deletionCount !== file.deletions) return {
6254
+ state: "unavailable",
6255
+ reason: "count-mismatch"
6256
+ };
6257
+ return {
6258
+ state: "known",
6259
+ changes
6260
+ };
6261
+ }
6262
+ var HUNK = /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;
6263
+ /**
6264
+ * One file's patch, read once into everything the viewer marks.
6265
+ *
6266
+ * Each hunk body is consumed by the counts in its header rather than by looking at first
6267
+ * characters, because inside a hunk `+++ x` is an added line reading `++ x`, not a file header.
6268
+ * Skipping it by prefix dropped the line and shifted every number after it.
6269
+ *
6270
+ * A zero count in the header names the line *before* the range, so `+9,0` means "between new lines
6271
+ * 9 and 10" and the cursor starts at 10.
6272
+ *
6273
+ * `null` when the body does not match its header: a stray line, or a patch that stops mid-hunk.
6274
+ */
6275
+ function parsePatch(patch) {
6276
+ const addedLines = [];
6277
+ const deletions = [];
6278
+ let deletionCount = 0;
6279
+ const lines = patch.split("\n");
6280
+ if (lines[lines.length - 1] === "") lines.pop();
6281
+ let i = 0;
6282
+ while (i < lines.length && !HUNK.test(lines[i])) i += 1;
6283
+ while (i < lines.length) {
6284
+ const header = HUNK.exec(lines[i]);
6285
+ if (!header) return null;
6286
+ i += 1;
6287
+ const oldCount = header[2] === void 0 ? 1 : Number(header[2]);
6288
+ const newCount = header[4] === void 0 ? 1 : Number(header[4]);
6289
+ let oldLine = oldCount === 0 ? Number(header[1]) + 1 : Number(header[1]);
6290
+ let newLine = newCount === 0 ? Number(header[3]) + 1 : Number(header[3]);
6291
+ let oldLeft = oldCount;
6292
+ let newLeft = newCount;
6293
+ let open = null;
6294
+ while (oldLeft > 0 || newLeft > 0) {
6295
+ if (i >= lines.length) return null;
6296
+ const line = lines[i];
6297
+ i += 1;
6298
+ const mark = line[0];
6299
+ if (mark === "\\") continue;
6300
+ if (mark === " " && oldLeft > 0 && newLeft > 0) {
6301
+ open = null;
6302
+ oldLine += 1;
6303
+ newLine += 1;
6304
+ oldLeft -= 1;
6305
+ newLeft -= 1;
6306
+ } else if (mark === "+" && newLeft > 0) {
6307
+ open = null;
6308
+ addedLines.push(newLine);
6309
+ newLine += 1;
6310
+ newLeft -= 1;
6311
+ } else if (mark === "-" && oldLeft > 0) {
6312
+ if (!open) {
6313
+ open = {
6314
+ beforeLine: newLine,
6315
+ lines: []
6316
+ };
6317
+ deletions.push(open);
6318
+ }
6319
+ open.lines.push({
6320
+ oldLine,
6321
+ text: line.slice(1)
6322
+ });
6323
+ deletionCount += 1;
6324
+ oldLine += 1;
6325
+ oldLeft -= 1;
6326
+ } else return null;
6204
6327
  }
6205
- if (lineNumber === 0) continue;
6206
- if (line.startsWith("+++")) continue;
6207
- if (line.startsWith("+")) {
6208
- added.push(lineNumber);
6209
- lineNumber += 1;
6210
- } else if (line.startsWith("-") || line.startsWith("\\")) {} else lineNumber += 1;
6328
+ while (i < lines.length && lines[i].startsWith("\\")) i += 1;
6211
6329
  }
6212
- return added;
6330
+ return {
6331
+ addedLines,
6332
+ deletions,
6333
+ additions: addedLines.length,
6334
+ deletionCount
6335
+ };
6213
6336
  }
6214
6337
  //#endregion
6215
6338
  //#region ../../packages/review-harness/src/workspace/editor.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prreviewbuddy",
3
- "version": "0.36.4",
3
+ "version": "0.36.10",
4
4
  "description": "Review a branch or pull request in an isolated checkout, from your terminal, with the coding agent you already have installed.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://prreviewbuddy.com",
@@ -1,4 +1,4 @@
1
- import"./chunk-CQfKfv79.js";import{n as e}from"./chunk-DsF7k-Jl.js";import{H as t,K as n,U as r,a as i,c as a,s as o,v as s,w as c,x as l,y as u}from"./chunk-CeiETtR3.js";import{p as d}from"./chunk-DqZGGQx6.js";import{t as f}from"./chunk-Dy-Kn_BL.js";import{f as p}from"./chunk-B80S6zbH.js";var m=(function(){var t=e(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),n=[1,4],r=[1,14],i=[1,12],a=[1,13],o=[6,7,8],s=[1,20],c=[1,18],l=[1,19],u=[6,7,11],d=[1,6,13,14],f=[1,23],p=[1,24],m=[1,6,7,11,13,14],h={trace:e(function(){},`trace`),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:`error`,6:`SPACELINE`,7:`NL`,8:`ISHIKAWA`,11:`EOF`,13:`SPACELIST`,14:`TEXT`},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:e(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 6:case 7:return r;case 15:r.addNode(a[s-1].length,a[s].trim());break;case 16:r.addNode(0,a[s].trim())}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],8:n},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:n},{6:r,7:[1,10],9:9,12:11,13:i,14:a},t(o,[2,3]),{1:[2,2]},t(o,[2,4]),t(o,[2,5]),{1:[2,6],6:r,12:15,13:i,14:a},{6:r,9:16,12:11,13:i,14:a},{6:s,7:c,10:17,11:l},t(u,[2,18],{14:[1,21]}),t(u,[2,16]),t(u,[2,17]),{6:s,7:c,10:22,11:l},{1:[2,7],6:r,12:15,13:i,14:a},t(d,[2,14],{7:f,11:p}),t(m,[2,8]),t(m,[2,9]),t(m,[2,10]),t(u,[2,15]),t(d,[2,13],{7:f,11:p}),t(m,[2,11]),t(m,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:e(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:e(function(t){var n=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(t,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}e(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=n.symbols_[e]||e),e}e(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{n as e}from"./chunk-DsF7k-Jl.js";import"./chunk-BWjKdrB5.js";import{H as t,K as n,U as r,a as i,c as a,s as o,v as s,w as c,x as l,y as u}from"./chunk-CN9Gw02i.js";import{p as d}from"./chunk-DJ4Pz6CG.js";import{t as f}from"./chunk-Dy-Kn_BL.js";import{f as p}from"./chunk-BeqgAIrQ.js";var m=(function(){var t=e(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),n=[1,4],r=[1,14],i=[1,12],a=[1,13],o=[6,7,8],s=[1,20],c=[1,18],l=[1,19],u=[6,7,11],d=[1,6,13,14],f=[1,23],p=[1,24],m=[1,6,7,11,13,14],h={trace:e(function(){},`trace`),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:`error`,6:`SPACELINE`,7:`NL`,8:`ISHIKAWA`,11:`EOF`,13:`SPACELIST`,14:`TEXT`},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:e(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 6:case 7:return r;case 15:r.addNode(a[s-1].length,a[s].trim());break;case 16:r.addNode(0,a[s].trim())}},`anonymous`),table:[{3:1,4:2,5:3,6:[1,5],8:n},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:n},{6:r,7:[1,10],9:9,12:11,13:i,14:a},t(o,[2,3]),{1:[2,2]},t(o,[2,4]),t(o,[2,5]),{1:[2,6],6:r,12:15,13:i,14:a},{6:r,9:16,12:11,13:i,14:a},{6:s,7:c,10:17,11:l},t(u,[2,18],{14:[1,21]}),t(u,[2,16]),t(u,[2,17]),{6:s,7:c,10:22,11:l},{1:[2,7],6:r,12:15,13:i,14:a},t(d,[2,14],{7:f,11:p}),t(m,[2,8]),t(m,[2,9]),t(m,[2,10]),t(u,[2,15]),t(d,[2,13],{7:f,11:p}),t(m,[2,11]),t(m,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:e(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:e(function(t){var n=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(t,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;this.parseError=typeof g.yy.parseError==`function`?g.yy.parseError:Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}e(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=n.symbols_[e]||e),e}e(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};h.lexer=(function(){return{EOF:1,parseError:e(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:e(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:e(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:e(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:e(function(){return this._more=!0,this},`more`),reject:e(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:e(function(e){this.unput(this.match.slice(e))},`less`),pastInput:e(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:e(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:e(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`