@hyperdreamer/pi-webui 1.18.2 → 1.18.4

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 (91) hide show
  1. package/THIRD_PARTY_NOTICES.md +11 -19
  2. package/dist/client/assets/{CodeViewer-tfs15HW0.js → CodeViewer-CYojGDIc.js} +2 -2
  3. package/dist/client/assets/UnifiedDiffViewer-BI0F9560.js +39 -0
  4. package/dist/client/assets/index-BjFly-I4.js +7766 -0
  5. package/dist/client/assets/mathjaxEngine-BcmydUwn.js +19 -0
  6. package/dist/client/index.html +1 -1
  7. package/dist/client/mathjax/fonts/MathJax_AMS-Regular.woff +0 -0
  8. package/dist/client/mathjax/fonts/MathJax_Calligraphic-Bold.woff +0 -0
  9. package/dist/client/mathjax/fonts/MathJax_Calligraphic-Regular.woff +0 -0
  10. package/dist/client/mathjax/fonts/MathJax_Fraktur-Bold.woff +0 -0
  11. package/dist/client/mathjax/fonts/MathJax_Fraktur-Regular.woff +0 -0
  12. package/dist/client/mathjax/fonts/MathJax_Main-Bold.woff +0 -0
  13. package/dist/client/mathjax/fonts/MathJax_Main-Italic.woff +0 -0
  14. package/dist/client/mathjax/fonts/MathJax_Main-Regular.woff +0 -0
  15. package/dist/client/mathjax/fonts/MathJax_Math-BoldItalic.woff +0 -0
  16. package/dist/client/mathjax/fonts/MathJax_Math-Italic.woff +0 -0
  17. package/dist/client/mathjax/fonts/MathJax_Math-Regular.woff +0 -0
  18. package/dist/client/mathjax/fonts/MathJax_SansSerif-Bold.woff +0 -0
  19. package/dist/client/mathjax/fonts/MathJax_SansSerif-Italic.woff +0 -0
  20. package/dist/client/mathjax/fonts/MathJax_SansSerif-Regular.woff +0 -0
  21. package/dist/client/mathjax/fonts/MathJax_Script-Regular.woff +0 -0
  22. package/dist/client/mathjax/fonts/MathJax_Size1-Regular.woff +0 -0
  23. package/dist/client/mathjax/fonts/MathJax_Size2-Regular.woff +0 -0
  24. package/dist/client/mathjax/fonts/MathJax_Size3-Regular.woff +0 -0
  25. package/dist/client/mathjax/fonts/MathJax_Size4-Regular.woff +0 -0
  26. package/dist/client/mathjax/fonts/MathJax_Typewriter-Regular.woff +0 -0
  27. package/dist/client/mathjax/fonts/MathJax_Vector-Bold.woff +0 -0
  28. package/dist/client/mathjax/fonts/MathJax_Vector-Regular.woff +0 -0
  29. package/dist/client/mathjax/fonts/MathJax_Zero.woff +0 -0
  30. package/package.json +7 -5
  31. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  32. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  33. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  34. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  35. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  36. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  37. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  38. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  39. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  40. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  41. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  42. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  43. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  44. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  45. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  46. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  47. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  48. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  49. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  50. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  51. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  52. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  53. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  54. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  55. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  56. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  57. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  58. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  59. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  60. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  61. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  62. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  63. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  64. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  65. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  66. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  67. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  68. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  69. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  70. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  71. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  72. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  73. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  74. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  75. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  76. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  77. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  78. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  79. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  80. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  81. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  82. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  83. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  84. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  85. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  86. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  87. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  88. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  89. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  90. package/dist/client/assets/UnifiedDiffViewer-DS0blQID.js +0 -39
  91. package/dist/client/assets/index-D_OsIibT.js +0 -8022
@@ -54,7 +54,7 @@
54
54
  html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
55
55
  body { min-height: 100dvh; }
56
56
  </style>
57
- <script type="module" crossorigin src="./assets/index-D_OsIibT.js"></script>
57
+ <script type="module" crossorigin src="./assets/index-BjFly-I4.js"></script>
58
58
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-core-vyMPzMNA.js">
59
59
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-languages-DlEQaRIv.js">
60
60
  <link rel="modulepreload" crossorigin href="./assets/vendor-terminal-D8k4UKM2.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperdreamer/pi-webui",
3
- "version": "1.18.2",
3
+ "version": "1.18.4",
4
4
  "description": "Web UI for persistent Pi Coding Agent sessions in real workspaces.",
5
5
  "license": "MIT",
6
6
  "author": "Federico Jaramillo Martinez and HyperDreamer",
@@ -80,18 +80,18 @@
80
80
  "@xterm/xterm": "^6.0.0",
81
81
  "diff": "^9.0.0",
82
82
  "fastify": "^5.10.0",
83
- "katex": "^0.18.4",
84
83
  "lit": "^3.3.3",
85
84
  "marked": "^18.0.6",
85
+ "mathjax-full": "^3.2.2",
86
86
  "node-pty": "^1.1.0",
87
87
  "typebox": "1.3.6",
88
88
  "ws": "^8.21.0"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@changesets/cli": "^2.31.0",
92
- "@earendil-works/pi-agent-core": "^0.84.2",
93
- "@earendil-works/pi-ai": "^0.84.2",
94
- "@earendil-works/pi-coding-agent": "^0.84.2",
92
+ "@earendil-works/pi-agent-core": "^0.84.3",
93
+ "@earendil-works/pi-ai": "^0.84.3",
94
+ "@earendil-works/pi-coding-agent": "^0.84.3",
95
95
  "@eslint/js": "^10.0.1",
96
96
  "@types/node": "^24.13.3",
97
97
  "@types/ws": "^8.18.1",
@@ -99,10 +99,12 @@
99
99
  "globals": "^17.7.0",
100
100
  "jsdom": "^27.4.0",
101
101
  "knip": "^6.25.0",
102
+ "mathjax": "^3.2.2",
102
103
  "tsx": "^4.23.0",
103
104
  "typescript": "^6.0.3",
104
105
  "typescript-eslint": "^8.63.0",
105
106
  "vite": "^8.1.4",
107
+ "vite-plugin-static-copy": "^4.1.1",
106
108
  "vitest": "^4.1.10"
107
109
  },
108
110
  "publishConfig": {
@@ -1,39 +0,0 @@
1
- import{a as e,i as t,o as n,r,s as i,t as a}from"./index-D_OsIibT.js";var o=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}else return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}},s=new class extends o{};function c(e,t,n){return s.diff(e,t,n)}function l(e,t){let n;for(n=0;n<e.length&&n<t.length;n++)if(e[n]!=t[n])return e.slice(0,n);return e.slice(0,n)}function u(e,t){let n;if(!e||!t||e[e.length-1]!=t[t.length-1])return``;for(n=0;n<e.length&&n<t.length;n++)if(e[e.length-(n+1)]!=t[t.length-(n+1)])return e.slice(-n);return e.slice(-n)}function d(e,t,n){if(e.slice(0,t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't start with prefix ${JSON.stringify(t)}; this is a bug`);return n+e.slice(t.length)}function f(e,t,n){if(!t)return e+n;if(e.slice(-t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't end with suffix ${JSON.stringify(t)}; this is a bug`);return e.slice(0,-t.length)+n}function p(e,t){return d(e,t,``)}function m(e,t){return f(e,t,``)}function h(e,t){return t.slice(0,g(e,t))}function g(e,t){let n=0;e.length>t.length&&(n=e.length-t.length);let r=t.length;e.length<t.length&&(r=e.length);let i=Array(r),a=0;i[0]=0;for(let e=1;e<r;e++){for(t[e]==t[a]?i[e]=i[a]:i[e]=a;a>0&&t[e]!=t[a];)a=i[a];t[e]==t[a]&&a++}a=0;for(let r=n;r<e.length;r++){for(;a>0&&e[r]!=t[a];)a=i[a];e[r]==t[a]&&a++}return a}function _(e,t){let n=[];for(let r of Array.from(t.segment(e))){let e=r.segment;n.length&&/\s/.test(n[n.length-1])&&/\s/.test(e)?n[n.length-1]+=e:n.push(e)}return n}function v(e,t){if(t)return b(e,t)[1];let n;for(n=e.length-1;n>=0&&e[n].match(/\s/);n--);return e.substring(n+1)}function y(e,t){if(t)return b(e,t)[0];let n=e.match(/^\s*/);return n?n[0]:``}function b(e,t){if(!t)return[y(e),v(e)];if(t.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);let n=_(e,t),r=n[0],i=n[n.length-1];return[/\s/.test(r)?r:``,/\s/.test(i)?i:``]}var x=`a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}`,S=RegExp(`[${x}]+|\\s+|[^${x}]`,`ug`);new class extends o{equals(e,t,n){return n.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e.trim()===t.trim()}tokenize(e,t={}){let n;if(t.intlSegmenter){let r=t.intlSegmenter;if(r.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);n=_(e,r)}else n=e.match(S)||[];let r=[],i=null;return n.forEach(e=>{/\s/.test(e)?i==null?r.push(e):r.push(r.pop()+e):i!=null&&/\s/.test(i)?r[r.length-1]==i?r.push(r.pop()+e):r.push(i+e):r.push(e),i=e}),r}join(e){return e.map((e,t)=>t==0?e:e.replace(/^\s+/,``)).join(``)}postProcess(e,t){if(!e||t.oneChangePerToken)return e;let n=null,r=null,i=null;return e.forEach(e=>{e.added?r=e:e.removed?i=e:((r||i)&&C(n,i,r,e,t.intlSegmenter),n=e,r=null,i=null)}),(r||i)&&C(n,i,r,null,t.intlSegmenter),e}};function C(e,t,n,r,i){if(t&&n){let[a,o]=b(t.value,i),[s,c]=b(n.value,i);if(e){let r=l(a,s);e.value=f(e.value,s,r),t.value=p(t.value,r),n.value=p(n.value,r)}if(r){let e=u(o,c);r.value=d(r.value,c,e),t.value=m(t.value,e),n.value=m(n.value,e)}}else if(n){if(e){let e=y(n.value,i);n.value=n.value.substring(e.length)}if(r){let e=y(r.value,i);r.value=r.value.substring(e.length)}}else if(e&&r){let n=y(r.value,i),[a,o]=b(t.value,i),s=l(n,a);t.value=p(t.value,s);let c=u(p(n,s),o);t.value=m(t.value,c),r.value=d(r.value,n,c),e.value=f(e.value,n,n.slice(0,n.length-c.length))}else if(r){let e=y(r.value,i),n=h(v(t.value,i),e);t.value=m(t.value,n)}else if(e){let n=h(v(e.value,i),y(t.value,i));t.value=p(t.value,n)}}new class extends o{tokenize(e){let t=RegExp(`(\\r?\\n)|[${x}]+|[^\\S\\n\\r]+|[^${x}]`,`ug`);return e.match(t)||[]}},new class extends o{constructor(){super(...arguments),this.tokenize=w}equals(e,t,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
2
- `))&&(e=e.trim()),(!n.newlineIsToken||!t.includes(`
3
- `))&&(t=t.trim())):n.ignoreNewlineAtEof&&!n.newlineIsToken&&(e.endsWith(`
4
- `)&&(e=e.slice(0,-1)),t.endsWith(`
5
- `)&&(t=t.slice(0,-1))),super.equals(e,t,n)}};function w(e,t){t.stripTrailingCr&&(e=e.replace(/\r\n/g,`
6
- `));let n=[],r=e.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(let e=0;e<r.length;e++){let i=r[e];e%2&&!t.newlineIsToken?n[n.length-1]+=i:n.push(i)}return n}function T(e){return e==`.`||e==`!`||e==`?`}new class extends o{tokenize(e){let t=[],n=0;for(let r=0;r<e.length;r++){if(r==e.length-1){t.push(e.slice(n));break}if(T(e[r])&&e[r+1].match(/\s/)){for(t.push(e.slice(n,r+1)),r=n=r+1;e[r+1]?.match(/\s/);)r++;t.push(e.slice(n,r+1)),n=r+1}}return t}},new class extends o{tokenize(e){return e.split(/([{}:;,]|\s+)/)}},new class extends o{constructor(){super(...arguments),this.tokenize=w}get useLongestToken(){return!0}castInput(e,t){let{undefinedReplacement:n,stringifyReplacer:r=(e,t)=>t===void 0?n:t}=t;return typeof e==`string`?e:JSON.stringify(E(e,null,null,r),null,` `)}equals(e,t,n){return super.equals(e.replace(/,([\r\n])/g,`$1`),t.replace(/,([\r\n])/g,`$1`),n)}};function E(e,t,n,r,i){t||=[],n||=[],r&&(e=r(i===void 0?``:i,e));let a;for(a=0;a<t.length;a+=1)if(t[a]===e)return n[a];let o;if(Object.prototype.toString.call(e)===`[object Array]`){for(t.push(e),o=Array(e.length),n.push(o),a=0;a<e.length;a+=1)o[a]=E(e[a],t,n,r,String(a));return t.pop(),n.pop(),o}if(e&&e.toJSON&&(e=e.toJSON()),typeof e==`object`&&e){t.push(e),o={},n.push(o);let i=[],s;for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&i.push(s);for(i.sort(),a=0;a<i.length;a+=1)s=i[a],o[s]=E(e[s],t,n,r,s);t.pop(),n.pop()}else o=e;return o}new class extends o{tokenize(e){return e.slice()}join(e){return e}removeEmpty(e){return e}};var D=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/,O=5e3,k=20,A=.2,j=.25;function M(e){let t=N(e);return I(t),t}function N(e){let t=P(e),n=[],r,i;for(let e of t){let t=D.exec(e);if(t!==null){r=Number(t[1]),i=Number(t[2]),n.push(F(`hunk`,``,e));continue}if(r!==void 0&&i!==void 0){if(e.startsWith(`+`)){n.push(F(`add`,`+`,e.slice(1),{newLineNumber:i})),i++;continue}if(e.startsWith(`-`)){n.push(F(`remove`,`-`,e.slice(1),{oldLineNumber:r})),r++;continue}if(e.startsWith(` `)){n.push(F(`context`,` `,e.slice(1),{oldLineNumber:r,newLineNumber:i})),r++,i++;continue}if(e.startsWith(`\\`)){n.push(F(`marker`,``,e));continue}}r=void 0,i=void 0,n.push(F(`meta`,``,e))}return n}function P(e){if(e===``)return[];let t=e.replace(/\r\n/g,`
7
- `).replace(/\r/g,`
8
- `).split(`
9
- `);return t.at(-1)===``&&t.pop(),t}function F(e,t,n,r={}){return{kind:e,prefix:t,text:n,spans:n===``?[]:[{text:n,changed:!1}],...r}}function I(e){let t=0;for(;t<e.length;){if(e[t]?.kind!==`remove`){t++;continue}let n=t;for(;e[t]?.kind===`remove`;)t++;let r=t;for(;e[t]?.kind===`add`;)t++;r!==t&&L(e.slice(n,r),e.slice(r,t))}}function L(e,t){if(!(e.length+t.length>k))for(let n of R(e,t)){let e=U(n.removed.text,n.added.text);e!==void 0&&(n.removed.spans=e.removed,n.added.spans=e.added)}}function R(e,t){if(e.length===t.length)return e.map((e,n)=>({removed:e,added:t[n]})).filter(z);if(e.length===1)return B(e[0],t);if(t.length===1)return V(e,t[0]);let n=[],r=Math.min(e.length,t.length);for(let i=0;i<r;i++){let r=e[i],a=t[i];r===void 0||a===void 0||W(r.text,a.text)>=j&&n.push({removed:r,added:a})}return n}function z(e){return e.added!==void 0}function B(e,t){if(e===void 0)return[];let n=H(e.text,t);return n===void 0?[]:[{removed:e,added:n}]}function V(e,t){if(t===void 0)return[];let n=H(t.text,e);return n===void 0?[]:[{removed:n,added:t}]}function H(e,t){let n,r=j;for(let i of t){let t=W(e,i.text);t<=r||(n=i,r=t)}return n}function U(e,t){if(e===t||e.length>O||t.length>O)return;let n=c(e,t),r=G(n,e,t);if(Math.max(e.length,t.length)>=20&&r<A)return;let i=[],a=[];for(let e of n)e.value!==``&&(e.added?a.push({text:e.value,changed:!0}):e.removed?i.push({text:e.value,changed:!0}):(i.push({text:e.value,changed:!1}),a.push({text:e.value,changed:!1})));if(!(!i.some(e=>e.changed)&&!a.some(e=>e.changed)))return{removed:K(i),added:K(a)}}function W(e,t){return e===t?1:e.length>O||t.length>O?0:G(c(e,t),e,t)}function G(e,t,n){let r=Math.max(t.length,n.length);return r===0?1:e.reduce((e,t)=>t.added||t.removed?e:e+t.value.length,0)/r}function K(e){let t=[];for(let n of e){let e=t[t.length-1];e?.changed===n.changed?e.text+=n.text:t.push({...n})}return t}var q=class extends e{constructor(...e){super(...e),this.diff=``}render(){let e=M(this.diff);return e.length===0?n`<p class="empty">No diff.</p>`:n`
10
- <div class="scroller">
11
- <div class="diff-grid" role="table" aria-label="Unified diff">
12
- ${e.map(e=>this.renderLine(e))}
13
- </div>
14
- </div>
15
- `}renderLine(e){let t=e.kind;return n`
16
- <div class="line" role="row">
17
- <span class=${`cell line-number old ${t}`} role="cell">${Y(e.oldLineNumber)}</span>
18
- <span class=${`cell line-number new ${t}`} role="cell">${Y(e.newLineNumber)}</span>
19
- <span class=${`cell prefix ${t}`} role="cell">${e.prefix}</span>
20
- <span class=${`cell content ${t}`} role="cell">${J(e.spans)}</span>
21
- </div>
22
- `}static{this.styles=i`
23
- :host { display: block; min-height: 0; height: 100%; color: var(--pi-text); background: var(--pi-bg); }
24
- .empty { box-sizing: border-box; margin: 0; padding: 10px; color: var(--pi-muted); }
25
- .scroller { height: 100%; min-height: 0; overflow: auto; background: var(--pi-bg); }
26
- .diff-grid { display: grid; grid-template-columns: max-content max-content 2ch max-content; width: max-content; min-width: 100%; padding: 6px 0; font: 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; line-height: 1.45; }
27
- .line { display: contents; }
28
- .cell { min-height: 1.45em; white-space: pre; }
29
- .line-number { min-width: 4ch; padding: 0 8px; border-right: 1px solid var(--pi-border-muted); color: var(--pi-dim); text-align: right; user-select: none; }
30
- .prefix { padding: 0 4px; color: var(--pi-dim); text-align: center; user-select: none; }
31
- .content { padding: 0 12px 0 4px; }
32
- .meta { color: var(--pi-dim); }
33
- .hunk { background: color-mix(in srgb, var(--pi-accent) 9%, transparent); color: var(--pi-accent); }
34
- .add { background: color-mix(in srgb, var(--pi-success) 12%, transparent); }
35
- .remove { background: color-mix(in srgb, var(--pi-danger) 12%, transparent); }
36
- .marker { color: var(--pi-dim); }
37
- .content.add .inline-change { border-radius: 2px; background: color-mix(in srgb, var(--pi-success) 36%, transparent); color: var(--pi-text); }
38
- .content.remove .inline-change { border-radius: 2px; background: color-mix(in srgb, var(--pi-danger) 36%, transparent); color: var(--pi-text); }
39
- `}};a([r()],q.prototype,`diff`,void 0),q=a([t(`unified-diff-viewer`)],q);function J(e){return e.map(e=>n`<span class=${e.changed?`inline-change`:``}>${e.text}</span>`)}function Y(e){return e===void 0?``:String(e)}export{q as UnifiedDiffViewer};